开发者测试
开发者测试
- 定义
开发者测试(DT),是指开发者所做的测试,有别于专职测试人员进行的测试活动。 DT目标是在软件交付转验收测试前,发现和解决绝大多数代码缺陷,而其理论依据是业界 研究反复揭示的“前端发现问题的代价远小于后端”。
- 开发者测试优势
- 测试环境依赖低
- 功能覆盖成本低、质量高
- 作为防护网,自动化程度高、反馈快,高效可信重构的前提
- 开发者测试能有效降低前端缺陷,代码质量更高,发布周期更快。
First原则
- F:Fast (测试执行要快)
- I:Independent (独立)
- R:Repeatable (可重复)
- S:Self-Validaing (自确认)
- T:Timely (及时)
测试用例写作规范
白盒测试
- 语句覆盖: 所有语句执行一次
- 判定覆盖: 每个分支至少执行一次
- 条件覆盖: 每个条件真假都至少覆盖一次
- 判定/条件覆盖: 条件分支和判断都至少覆盖一次
- 条件组合: 每个判定的条件取值组合至少覆盖一次
- 路径覆盖: 每条路径至少覆盖一次
黑盒测试
-
单因子:
-
等价类 -
边界值: 最小-1,最小,中间,最大,最大+1 -
错误推测发 -
因果图发 -
判定表驱动法 -
多因子
- AC : (计算:所有因子的积) 每个测试因子都要进行组合
- EC : (计算:最多的因子可能) 选定一组因子作为basic因子,每次变更其中一个因子
- BC : (计算:所有因子和 - 因子数量 + 1) 每一个因子的每一个取值只需要用到一次
- N-wise(Pair-wize是N=2(最大两个因子积)) 每两个因子的取值组合至少覆盖一次
Junit
-
注解说明 -
断言 -
@Test(expected=XX.class)
这个参数表示我们期望会出现什么异常,比如在除法中,我们1/0会出现ArithmeticException异常,那这里 @Test(expected=ArithmeticException.class)。在测试这个方法的时候依然能够通过
这个参数表示如果测试方法在执行的timeout内没有完成,就会强制停止。
- @RunWith(Parameterized.class)
Parameterized类是Junit自带的,用于使用多组参数执行同一个testcase
Suite类的作用是使Junit通过这个类将多个相关的测试类看做是一个测试套件一起测试
-
单元测试规则
- 每一个测试方法上使用@Test进行修饰
- 每一个测试方法必须使用public void进行修饰 (BeforeClass和AfterClass用public static void修饰)
- 每一个测试方法不能携带参数
- 测试代码和源代码在两个不同的项目路径下
- 测试类的包应该和被测试类保持一致
- 测试单元中的每个方法必须可以独立测试。
-
Mockito
- 创建Mock对象
Mockito.mock(B.class) @Mock - 设置方法调用的预期
Mockito.when().thenReturn() Mockito.when().thenThrow() - 验证方法调用结果
- 验证方法调用过程
Mockito.verify(mocked,times(3)).add(1) Mockito.verify(mocked,times(3)).add(anyInt())
|