Ionic测试之 TDD 测试开发流程

2018-09-06  本文已影响36人  一只特立独行的道哥

翻译于国外收费教程,如果有不对请指正

Test Development Cycle

讨论Test Driven Development的标准流程时,列了如下几点:

  1. 为想要实现的功能写一个test
  2. 检查一下,这个test失败了
  3. 实现代码来满足这个test
  4. 重复上述过程

过程很简单,但当你头一次创建项目,想要开始写第一个测试的时候,却又没有任何头绪。我要先build啥呢?我要写什么test呢?怎样为一个还不存在的东西写test呢?

通常,可以从一个我们想要实现的指定需求开始。然后走如下的流程:

  1. 为一些指定的需求写一个e2e test
  2. 检查这个e2e test 失败了
  3. 基于这个e2e test的失败信息,决定为了通过测试需要实现什么功能
  4. 为3中决定要实现的功能写一个单元测试
  5. 检查一下unit test失败了
  6. 实现代码来通过unit test
  7. 检查一下此时e2e test通过了没
  8. 如果e2e测试通过了,回到第1步。如果没通过,回到第3步

当构建你的APP时,持续的走这个流程。你的需求决定了你的e2e test, 同时e2e test又决定了unit test。努力让unit test通过,最终e2e test也会通过。一般来说,在e2e test通过之前你需要通过多个不同的unit test(注意,因为e2e test是同时test多个组件,每个组件都有各自的uinit test)。

上述的流程获取已经让你明白了不少,但有可能你还会好奇如何精确地为不存在的东西写一个test。最简单的想法就是—写出你期望他们如何工作的测试。 如果我正在写一个关于doSomething方法的 unit test,就像它已经存在一样,然后我在我的test中调用它。当然,如果不存在,test跑起来的时候就会报错,这些错误会让我们知道,为了通过test,哪些功能需要实现。

Deciding What to Test First

当非要指出要先test什么时,会有点儿尴尬,尤其当你是个testing新手。通常,我喜欢会列出所有我想要创建的e2e test(比如app的需求),然后选择最接近app核心的test。想一下我们将要构建的app的需求,并列下来,然后我来更深入地讲解选择的标准。举个栗子:

这些需求没有特定的顺序。这个课程软件的核心—展示课程给用户,所以考虑如下需求:

用户首先要做的是登录到app,但是与app的核心功能并没有半毛钱关系。访问控制在任何类型的app中都会有,也是我们偏向于稍后处理的东西。

一下的需求与核心功能相关性更强些:

这些需求关系到呈现课程列表给用户。第一步就是显示课程模块列表给用户,因此首先test它是很有必要的。

最后,你选择优先test什么并不重要。重要的是不要被这个决定阻碍,如果你不确定先选哪个好,就随便挑一个吧。

上一篇下一篇

猜你喜欢

热点阅读