目录
白盒测试学习
1. 概述
- 白盒测试又称为结构测试或逻辑驱动测试,是对软件的过程性细节做细致的检查,把测试对象看作一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
- 白盒测试只测试软件产品的内部结构和处理过程,而不测试软件产品的功能,用于纠正软件系统在描述、表示和规格上的错误,是进一步测试的前提。
2. 静态测试
-
静态白盒测试也称为结构分析,是在不执行软件的条件下,有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。测试对象是文档、代码等非计算机执行的部分。
-
静态白盒测试方法包括代码检查法、静态结构分析法、静态质量度量法,在动态测试前完成。
2.1 代码检查法
1.主要检查:代码和程序设计的一致性、代码结构的合理性、代码编写的标准性、可读性,代码逻辑表达的正确性等方面。
2.主要参考文档为:程序设计文档、程序源代码清单、编码规范、代码缺陷检查表等。
3.优点:能快速找到缺陷,一旦发现错误,能够在代码中对其进行精确定位从而降低错误修正成本。
4.缺点:非常耗费时间且需要知识和经验的积累。
代码检查法包括代码审查、代码走查和桌面检查三种方式。
1)代码审查和走查
代码审查和走查这两种方法的形成、流程一样,规程、方法不同。
- 审查主要由程序作者本人进行,是指在代码审查会议上程序作者逐条语句讲述程序逻辑结构,参与人根据“代码缺陷检查表”分析程序。
- 走查则是主要由参与者进行,是指代码审查会议上的参与者参考“设计规格书”执行代码来完成。
2)桌面检查
由程序员检查自己编写的程序。 其效果逊色于前面所述的方法,但聊胜于无。
2.2 静态结构分析法
主要是以图形的方式表现程序的内部结构,常用以下方法进行源程序的静态分析。
1)通过生成各种图表,来帮助对源程序的静态分析。
-
常用的各种引用表主要有
- ①标号交叉引用表;
- ②变量交叉引用表;
- ③子程序(宏、函数)引用表;
- ④等价表;
- ⑤常数表。
2)静态错误分析
静态错误分析主要用于确定在源程序中是否有某类错误或“危险”结构。
-
主要分析:
- ①类型和单位分析;
- ②引用分析。
3)表达式分析
对表达式进行分析可以发现和纠正在表达式中出现的错误。
-
主要内容:
- ①在表达式中不正确地使用了括号造成的错误;
- ②数组下标越界造成的错误;
- ③除数为0造成错误;
- ④对负数开方或者对 π \pi π求正切值造成错误。
4)接口分析
程序关于接口的静态错误分析主要检查过程、函数过程之间接口的一致性。
2.3 静态质量度量法
根据ISO/IEC9126质量模型作为基础可以构造出质量度量模型。
该模型从上到下分为三层:质量因素、分类标准和度量规则。
度量规则使用了代码行数、注释频度等参数度量软件的各种行为属性,度量规则参数表。
分类标准软件的可维护性用可分析性、可修改性、稳定性和可测性这四个分类标准来评估。
3. 动态测试
3.1 逻辑覆盖测试
- 覆盖项:作为测试基础的一个入口或属性。
- 测试覆盖率用于确定测试所执行到的覆盖项的百分比,可以表示出测试的充分性。
-
测试覆盖率
- 功能点覆盖率:大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系。
- 结构覆盖率:包括语句覆盖率、分支覆盖率、循环覆盖率和路径覆盖率等。
逻辑覆盖法:以程序内部的逻辑结构为基础的用例设计方法,通过对程序逻辑结构的遍历实现程序的覆盖。
根据覆盖目标的不同,逻辑覆盖分为语句覆盖、判定覆盖(分支覆盖)、条件覆盖、判定-条件覆盖(分支-条件覆盖)、条件组合覆盖、路径覆盖六种测试方法。
程序示例:
int logicExample(int x,int y)
{
int magic = 0;
if(x>0&&y>0)
magic = x+y+10; //语句块1
else
magic = x+y-10; //语句块2
if(magic<0)
magic = 0; //语句块3
return magic; //语句块4
}