1、软件测试充分性和测试停止标准 01 软件测试充分性问题02 软件测试原理03 测试停止准则目录CONTENTS软件测试充分性问题01软件测试充分性问题测试充分性问题是软件测试的另一个重要问题。一位有经验的软件开发管理人员在谈到软件测试是曾这样说过:“不充分的测试是愚蠢的,而过度的测试则是一种罪孽。”其原因在于:不充分的测试势必使软件带着一些未揭露的隐藏故障投入运行,这可能使用户承担更大的危险;过度测试则会浪费许多宝贵的资源。测试的一个合理目标就是:开发出足够的测试用例,以保证软件在典型应用和关键系统中不会存在什么问题。软件测试充分性问题充分性准则测试充分性准则是在测试之前,由相关各方根据质量、
2、成本和进度等因素规定的,表现为对测试的要求与软件需求和软件现实有关,具有以下的一些基本性质:空测试对于任何软件测试都是不充分的。对任何软件都存在有限的充分测试数据集,这一性质称为有限性。如果一个测试数据集对一个软件系统的测试是充分的,那么在增加一些测试用例也是充分的,这一性质称为单调性。软件越复杂,需要的测试用例就越多,这一性质称为复杂性。测试得越多,进一步测试所能得到的充分性增长就越少,这一性质称为回报递减律。软件测试充分性问题测试数据充分性公理Weyuker将公理系统应用到软件测试的研究中,给出了几条基于程序的测试数据集充分性公理。非外延性公理:如果有两个功能相同而实现不同的程序,对其中一
3、个是充分的测试数据集对另一个不一定是充分的。多重修改公理:如果两个程序具有相同的语法结构,对一个是充分的测试数据集对另一个不一定是充分的。不可分解公理:对一个程序进行了充分的测试,并不表示对其中的成分都进行了充分的测试。非复合性公理:对程序各单元是充分的测试数据集并不一定对整个程序(集成后)是充分的。软件测试原则02软件测试原则从不同的角度出发,软件测试会派生出两种不同的测试原则:用户希望通过软件测试能充分暴露软件中存在的问题和故障;开发者希望测试能表明软件产品已经正确地实现了用户的需求,没有软件故障存在。软件测试原则1.完全测试程序是不可能的例如,一个程序若有输入量X和Y及输出量Z,在字长为
4、32的计算机上进行。如果X,Y为整数,按功能测试法穷举,测试数据有:232232=264个。如果测试一组数据需要1ms,一年工作36524h,完成所有测试需5亿年。不可行的原因主要有以下几个方面:程序输入量太大;程序输出量太多;软件实现途径太多。软件测试原则2.软件测试是有风险的不能做到完全测试,不测试又会漏掉一些软件故障。我们的目标应该是使有限的测试投资获得最大的收益,即以有限的测试用例检查出尽可能多的软件故障。3.测试无法显示隐藏的软件故障通过测试可以查找并报告发现软件故障,但是不能保证软件故障全部被找到,也无法报告隐藏的软件故障。继续测试,可能还会发现一些。软件测试原则原因可能有以下几种
5、:在典型程序中,某些程序段看来比其他程序段更容易出错,例如,在IBM/370操作系统中,人们注意到一个现象:47%的软件故障(由用户发现的)只与系统中4%的程序模块有关。4.存在的故障数量与发现的故障数成正比程序员怠倦。程序员编写一天代码或许情绪还不错,第二天、第三天可能就会烦躁不安了。一个软件故障很可能是暴露附近更多软件故障的信号。程序员往往犯同样的错误。每个人都有自己的偏好,一个程序员总是反复犯自己容易犯的错误。某些软件故障可能是冰山之巅。某些看似无关的软件故障可能是由一个极其严重的原因造成。软件测试原则5.杀虫剂现象1990年 Boris Beizer在其软件测试技术(第二版)一书中引用
6、了“杀虫剂现象”一词,用于描述软件测试进行的越多,其程序免疫力越强的现象。为了避免杀虫剂现象的发生,应该根据不同的测试方法开发测试用例,对程序的不同部分进行测试,以找出更多的软件故障。6.并非所有软件故障都能修复不修复软件故障的原因可能有以下几种。没有足够的时间。修复风险太大。不值得修复。不算真正的软件故障。软件测试原则7.不要丢弃测试用例除非确实没有用,一般不要丢弃测试用例。8.应避免测试自己编写的程序并不是说程序员不可能测试自己的程序。只是相比之下,如果由他人来进行测试,可能会更有效,更成功。9.软件测试是一项复杂的,具有创造性的和需要高度智慧的挑战性任务随着软件规模和复杂性的增加,测试一个大型软件所要求的创造力,可能超过设计那个软件所要求的创造力。现在,生产低质软件的代价太高了,软件行业也发展到强制使用软件测试人员的时代。测试停止准则03测试停止准则在实际工作中,常用的停止测试的标准有五类。第一类标准:测试超过了预定的时间,停止测试。第二类标准:执行了所有测试用例但没有发现故障,停止测试。第三类标准:使用特定的测试用例方法作为判断测试停止的基础。第四类标准:正面指出测试完成的要求,如发现并修改70个软件故障。第五类标准:根据单位时间内查出故障的数量决定是否停止测试。谢谢