上星期刚做了黑盒测试的实验,这回要做白盒测试,在这里我想先总结下白盒测试的有关内容和白盒测试的各种方法,便于接下来为实验做好充分准备!!!
一:白盒测试基本概念:
1 白盒测试,又被称为结构测试,一般是用来测试程序的内部结构(数据流,控制流)。并且决定判断结果是否和我们期待的结果相一致。
2. 白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
3. "白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
4. "白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构, 从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。
二:白盒测试类型: 静态分析测试,语句分支覆盖测试等等。
三:软件测试方法:
1.常用的软件方法有两大类:静态测试方法和动态测试方法。
2.其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;
3.而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
4.在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。
四:白盒测试的测试方法:
1.代码检查法
2.静态结构分析法
3.静态质量度量法
4.逻辑覆盖法
5.基本路径法
6.域测试符号测试
7.路径覆盖
8.程序变异
五:白盒测试法的覆盖准则
1.语句覆盖准则(结点执行)
1.1语句覆盖测试的覆盖率=NODE(LT)/NG *100%
1.2语句覆盖每条语句至少执行一次
2.分支覆盖准则(结点,边都执行)
2.1分支覆盖测试的额覆盖率=EDGEL(LT) / EG * 100%
eg:{a,b,c}=
{2,5,3}: b2-4ac>0,and a!=0
=>NODE(LT)=(S,1,2,3,4,5,9,E)
{1,2,1}: b2-4ac=0,and a!=0
=>NODE(LT)=(S,1,2,3,4,6,7,9,E)
{4,2,1}: b2-4ac<0,and a!=0
=>NODE(LT)=(S,1,2,3,4,6,8,9,E)
Test case |
a,b,c |
a!=0 |
mid > 0 |
mid == 0 |
mid < 0 |
Test case 1 |
2,5,3 |
TRUE |
TRUE |
FALSE |
FALSE |
Test case 2 |
1,2,1 |
TRUE |
FALSE |
TRUE |
FALSE |
Test case 3 |
4,2,1 |
TRUE |
FALSE |
FALSE |
TRUE |
Test case 4 |
0,2,1 |
FALSE |
- |
- |
3.谓词测试:
3.1原子谓词覆盖准则
3.2分支-谓词覆盖准则
3.3复合谓词覆盖准则
4.路径覆盖准则(结点,边都执行)
4.1路径覆盖要使程序中每一条可能的路径至少执行一次
PATH(路径): If P=(e1,e2,... ,eq),and H(ei+1)=T(ei), then P is called,q is length 【Example】 path:P={(1,2),(2,3),(3,5)} path length:q=3
eg:
六:测试要求
1.保证一个模块中的所有独立路径至少被使用一次。
八:为什么要做白盒测试,白盒测试优缺点
1.白盒测试是高效测试
尽管白盒测试如此重要,为什么还有许多企业不愿做白盒测试,有一个很重要的原因是:认为白盒测试太低效,不值得去做。
实际上这种观点有许多误解成分,首先,决策者评估各阶段测试的有效性,仅以发现问题的数量为依据,这好比锈蚀斑斑的面包机,
第一次冲水下去,看到大量浊水流出就很有成就感,其实这只是表象,思维方式有不足:把发现问题与解决问题割裂开来了。
2.白盒测试能彻底解决编码阶段引入的问题
不同阶段的测试发现问题的特点各不相同,比如:单元测试阶段,容易发现逻辑问题、边界条件(如上例“小于18”的错误)、
变量未初始化、内存越界等问题,而集成测试容易发现接口错误、任务配合问题等,系统测试容易发现业务流程问题、界面操作问题等。
如果某阶段的测试没做,把问题遗留后面阶段,又如何能保证查错的彻底性。比如使用非法内存,出问题是否表现出来是随机的,
如果操作非法内存当前被系统还认为是有效的,系统并不死机,但某些情况下,操作非法内存会死机,而另一些情况,
非法内存操作将不期望变化的变量改写了,会导致其它莫名其妙的问题。类似这样的问题,在白盒测试阶段很容易发现,
也容易定位解决,但遗留系统测试阶段,就很难去发现、去定位。
缺点:昂贵,无法检测代码中遗漏的路径和数据敏感性错误,不验证规格的正确性
九:白盒测试工具
1.动态工具
动态测试工具类型:
1.1功能确认与接口测试
1.2覆盖测试
动态工具应用实例
Rational PureCoverage 应用:
Rational PureCoverage是面向VC、VB或者Java开发的测试覆盖程度检测工具,
它可以自动检测测试的完整性和那些无法达到的部分。作为一个质量控制工程,
可以使用PureCoverage在每一个测试阶段产生详尽的测试覆盖程度报告
2.静态工具
静态测试工具类型:
1.代码审查
2.一致性检查
3.错误检查
4.接口分析
5.输入/输出规格说明分析检查
6.数据流分析
7.类型分析
8.单元分析
9.复杂度分析
静态工具应用实例
2.1软件质量分析工具:Logiscope的Audit
2.2代码规范性检测工具:Logiscope的RuleChecker