文档介绍:软件工程
第10讲软件测试
安博测试空间技术中心/
地址:北京市海淀区学院路40号大唐电信测试空间楼
联系电话:010-62303223 62303260 62303230
1
乐山师范学院计算机科学系软件工程课程
内容摘要
软件测试基础
白盒测试
黑盒测试
测试策略
面向对象测试
测试完成标准
调试
本章内容取材自经典教材
《软件工程实践者之路(第6版)》
《Software Engineering:A Practitioner's Approach,5th ed. 》
2
乐山师范学院计算机科学系软件工程课程
软件测试
经过需求分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段。
由于在测试之前的各阶段都可能在软件产品中遗留下许多错误和缺陷,如果不及时找出这些错误和缺陷,并将其改正,这个软件产品就不能正常使用,甚至会导致巨大的损失
目前,程序的正确性证明尚未得到根本的解决,因此,软件测试仍是发现软件错误和缺陷的主要手段
测试是一项非常艰苦的工作,其工作量约占软件开发总工作量的40%以上,特别对一些关系到人的生命安全的软件(如飞行控制软件、核反应堆软件等),其测试工作量可能相当于其他开发阶段工作量总和的3~5倍
3
乐山师范学院计算机科学系软件工程课程
内容摘要
软件测试基础
白盒测试
黑盒测试
测试策略
面向对象测试
测试完成标准
调试
4
乐山师范学院计算机科学系软件工程课程
软件测试基础
测试软件前,需要设计若干个测试用例(test case),一个测试用例由测试输入数据和预期结果组成
本节从3个方面介绍软件测试基础
软件测试的目的
软件测试的基本原则
白盒测试和黑盒测试
5
乐山师范学院计算机科学系软件工程课程
有关软件测试的错误观点1
“软件测试是为了证明程序是正确的,即测试能发现程序中所有的错误”。事实上这是不可能的。要通过测试发现程序中的所有错误,就要穷举所有可能的输入数据。
对于一个输入3个16位字长的整型数据的程序,输入数据的所有组合情况有248 3*1014,如果测试1个数据需1ms,则即使一年工作365×24小时不停地测试,要想把所有数据测试完,大约需1万年。
对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。例如一个小程序的流程图,它包括了一个执行20次的循环,其循环体有5个分支(如下页图)。这个循环的不同执行路径数达520条,如果测试1条路径需要1毫秒,那么即使一年工作365×24小时不停地测试,要想把所有路径测试完,大约需3170年。
6
乐山师范学院计算机科学系软件工程课程
7
乐山师范学院计算机科学系软件工程课程
“程序测试是证明程序正确地执行了预期的功能”。实际上,一个程序不仅要完成它所需完成的功能,而且不应完成它不该做的事。
如不能把边长为0、0、0的三条边判断为等边三角形。
有关软件测试的错误观点2
8
乐山师范学院计算机科学系软件工程课程
软件测试的目的
Glen Myers给出的软件测试目的:
测试是一个为了发现错误而执行程序的过程
一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例
一个成功的测试是指揭示了迄今为至尚未发现的错误的测试
即:软件测试的目的是发现软件中的错误和缺陷,并加以纠正
根据这个测试目的,我们应该排除对测试的错误观点,设计合适的测试用例,用尽可能少的测试用例,来发现尽可能多的软件错误。
9
乐山师范学院计算机科学系软件工程课程
软件测试的原则
Davis提出了一组指导软件测试的基本原则:
所有的测试都应可追溯到客户需求
测试的目的是发现错误,而最严重的错误是那些导致程序无法满足需求的错误
在测试工作真正开始前的较长时间就进行测试计划
现代软件工程主张:测试计划可以在需求模型完成时就开始,测试用例可以在设计模型确定后立即开始
Pareto原则:测试中发现的80%的错误可能来自于20%的程序代码
这表明:如果测试模块A时发现的错误比测试模块B时发现的错误多,那么模块A中潜藏的错误可能仍比模块B中潜藏的错误多,此时不能放松对模块A的测试
10
乐山师范学院计算机科学系软件工程课程