第三章 模块(单元)测试
模块测试是对系统中的单个子模块、子程序进行测试的过程, 一开始并不是对整个程序进行测试, 将注意力集中在构成程序的较小模块的测试上面,发现软件问题。
目的 : 将模块的功能与定义模块的功能说明书进行比较,不是为了说明模块符合其规格说明,而是为了揭示出模块与其规格说明书存在着矛盾。
三个方面来探讨模块测试 :
- 测试用例的设计方式
- 模块测试及集成的顺序
- 对执行模块测试的建议
1.测试用例的设计
测试输入 : 模块的规格说明书和模块的源代码,规格说明书一般都规定了模块的输入和输出以及模块的功能
模块测试的设计:总体上是面向白盒测试,对模块内部的程序流程和逻辑有清晰的认识;然后使用黑盒测试方法对照模块的规格说明书进行测试
例子: 增加薪水的模块
功能描述 :给销售额最高的部门的雇员增加薪水2000,但是如果符合该条件的员工的工资目前达到或超过15000或者是管理人员,则只增加1000
输入情况如下表所示,部门销售额信息和员工信息,如果模块正确完成功能,返回错误码0,如果部门雇员表或者部门表中不存在任何信息,模块将返回错误代码1
如果某个符合条件的部门中未发现任何雇员,模块将返回错误码2
输入参数 : dsize和esize 分别代表部门数量和雇员数量
部门表
部门 |
销售额 |
---|---|
雇员表
姓名 |
工号 |
部门 |
薪水 |
---|---|---|---|
源代码:
1 |
|
1.1 测试逻辑分析
第一步:列举代码的逻辑判断 :
9 if (dsize <= 0 || esize <= 0)
14 if (SALES(i) >= MAXSALES)
18 if (SALES(i) == MAXSALES)
22 if (getDeptNameInDeptTable(i).equals(getDeptNameInEmpTable(j)))
24 if(getSalary(j) >= SALARY_LIMIT || isManager(j))
32 if (!has)
分析逻辑判断,使用判定覆盖准则,设计充足的测试用例
判定 |
正确结果 |
错误结果 |
---|---|---|
9 | dsize<=0 或者 esize <=0 | dsiz>0 且 esize>0 |
14 | 至少发生一次 | 把较低的销售额排在后面 |
18 | 至少发生一次 | 并非所有部门的销售额相同 |
22 | 最大销售额的的部门能找到一名雇员 | 雇员表的中有一名员工不符合部门部门条件 |
24 | 符合条件的雇员薪水大于15000或者是管理者 | 某符合条件的雇员不是管理管理且薪水低于15000 |
32 | 符合条件的部门没有雇员 | 符合条件的部门至少有一名雇员 |
1.2 测试用例设计
白盒测试角度的条件覆盖 :
测试用例 |
输入 |
预期输出 |
分析 |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | dsize=esize=0 | ERRCODE = 1 | |||||||||||||||||||
2 | dsize=esize=3 EMPTAB
DEPTTAB
|
ERRCODE = 2 | 分析 : 用例1和用例2 , 覆盖逻辑判断中的所有情况,做到了条件覆盖,但是还有部分代码没有执行,没有加薪资,没有出现 ERRCODE =0的返回结果,需要出现多重条件覆盖的, |
||||||||||||||||||
3 | dsize=0 esize >0 |
ERRCODE = 1 | |||||||||||||||||||
4 | esize =0 dsize >0 | ERRCODE = 1 | |||||||||||||||||||
5 | dsize=esize=3 EMPTAB
DEPTTAB
|
ERRCODE = 0 | 分析 :白盒测试满足了条件覆盖,但是还是有些情况没有覆盖到,多个销售额第一的部门,而且每个部门都有人, |
黑盒测试的边界输入:
- esize为1,0,65535(最大指)
- dsize为1,0,65535(最大值)
- 某销售额最高的部门有1名雇员,没有雇员,有65535名雇员
- 销售额最高的部门有1个,多个
- 符合条件的雇员为管理人员,薪水<15000和≥15000
- 符合条件的雇员不是管理人员的薪水<15000和≥15000
输出边界
ERRCODE = 0, 1, 2
筛选 : 将不切实际的去处掉(危险动作,但是部门不太可能有6万多个,所以去处)
输入 :
- esize为1,0
- dsize为1,0,
- 某销售额最高的部门有1名雇员,没有雇员,2-3名
- 销售额最高的部门有1个,2-3个
- 符合条件的雇员为管理人员,薪水<15000和≥15000
- 符合条件的雇员不是管理人员的薪水<15000和≥15000
对比上面表格设计的测试用例,没有覆盖的情况做添加 ;
增量测试和非增量测试
软件测试先独立的测试每个模块,然后将这些模块组装成完整的程序再测测试—非增量测试
先将下一步要测试的模块组装到测试完成的模块集合中,然后再进行测试 - 增量测试
增量测试的两种模式 : 自顶向下,自底向上
结论:
- 增量测试比非增量测试,工作量要少
- 增量测试可以较早的发现模块中接口不匹配、不正确假设或变成错误
- 增量测试,调试更加容易一下
- 增量测试会将测试进行的更加彻底,底层模块反复测试
- 所以相对来说增量测试会好一些。
自顶向下测试和自底向上测试
各有优势,一个优势就是另个劣势,一个劣势就是另个优势
多数: 自底向上,可靠性强 ; 方便定位 ;