文档介绍:第11章软件测试
当今一个软件产品如果没有经过测试是不能交付使用的
软件测试能够有效地发现软件中的绝大多数错误,是保证软件质量的关键技术之一。
随着人们对软件测试重要性的认识越来越深,软件测试阶段在整个软件开发周期中所占的比重也日益增大。
现在有些软件开发机构将研发力量的40%以上投入到软件测试之中;对于某些性命攸关的软件,其测试费用甚至高达所有其他软件工程阶段费用总和的3到5倍。
缺陷(bug)
偏差(variance)
缺点(defect)
问题(problem)
不一致(inconsistency)
错误(error)
异常(anomaly)
谬误(fault)
失败(failure)
事故(incident)
软件开发过程中潜在的、未能
够充分考虑清楚或注意不够之处,
统称为:缺陷
统称为:错误。与软件运行
状态有关,它们是在软件运
行过程中可观测到的软件错误。
这些问题出现的原因是软件
存在着缺陷。
统称为:失败。软件运行给用户造成损失的一类软件故障,它强调软件失败的结果。失败的直接原因是软件系统存在软件错误。
软件故障大体上可分为三种类型:缺陷、错误、失败。
第一类缺陷是软件故障的根源,后两类故障是软件缺陷的直接后果。
为什么会产生错误或缺陷?
软件本身的特点所置:智力产品
相关术语
1)测试(Testing):执行程序或程序片段以发现程序中尚存的错误的过程。
2)验证(Verification):通过在测试或模拟的环境中执行程序来达到发现错误的目的。
3)确认(Validation):试图在一个真实的环境中执行程序以便发现错误。
4)排错(Debugging):对一个已知的程序错误进行诊断并改正的过程。
、目的、原则和研究对象
软件测试是用人工或自动方法来执行并评价软件产品或其部件的过程,以验证它是否满足规定的要求,或是识别出期望结果和实际结果之间有无差别。
目的是希望以最低代价,以尽可能多地找出软件中潜在的各种错误和缺陷。
Myers认为软件测试的目的应该强调如下内容:
1)测试是程序的执行过程,其目的在于发现错误;
2)一个好的测试用例在于能发现至今尚未发现的错误;
3)一个成功的测试是发现了至今尚未发现的错误的测试。
软件测试的基本原则
1)尽早地、不断地进行测试。
2)严格执行测试计划,排除测试的随意性。
3)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
4)一个好的测试用例往往是具有较高的发现至今尚未发现的错误的能力,而不是那些表明程序能够正常工作的测试用例。
5)测试中一个很困难的问题是要判定何时可以终止测试。
6)避免让程序员测试自己的程序。
7)每个测试用例都必须包含测试输入数据和对应的预期输出的描述。
8)应该避免不可再现的测试。
9)设计测试用例应当包含合法的输入条件和非法的输入条件。
10)全面彻底地检查每一个测试结果。
11)在某一程序片段中发现的错误越多,则这个程序段所隐含的尚未发现错误的可能性就越大。
12)让最好的程序员去进行测试的工作。
13)在软件设计中注意确保软件的可测性。
14)设计软件系统要保证将要集成到系统中的每个模块仅集成一次。
15)不要为使测试变得容易而更改程序。
16)测试与其他活动一样,必须一开始就具有很强的目的性。