软件动态聚类测试方法

文档序号:6386199阅读:269来源:国知局
专利名称:软件动态聚类测试方法
技术领域
本发明涉及一种软件分类测试方法,特别是软件动态聚类测试方法。
背景技术
随机测试是一种黑箱测试技术,属于分类测试的一种,实现简单但缺陷检测效率往往不高。软件分类测试是一种广泛使用的测试技术。在E.J.Weyuker,B.Jeng,“Analyzing Partition Testing Strategies”,IEEETransactions on Software Engineering,Vol.17,No.4,1991,pp703-711.中Weyuker等认为从输入域被划分的事实来看,语句覆盖测试、分支覆盖测试、路径覆盖测试、数据流测试、变异测试等都可以看作分类测试。极端情况下穷举测试可以看成每个测试用例是一个单独的输入域的分类测试,而随机测试可以看成只有一个输入域的分类测试。
关于分类测试的效率已有很多研究。J.W.Duran,S.C.Ntafos,“Anevaluation of random testing”,IEEE Transactions on Software Engineering,Vol.SE-10,1984.7,pp438-444.,和R.Hamlet,R.Taylor,“Partition testing doesnot inspire confidence”,in Proceedings of 2nd Workshop on Software Testing,Verification and Analysis,1988.7,pp206-215从仿真和实验角度比较了分类测试与随机测试的效果,E.J.Weyuker,B.Jeng,“Analyzing Partition TestingStrategies”,IEEE Transactions on Software Engineering,Vol.17,No.4,1991,pp703-711.和T.Y.Chen,Y.T.Yu,“On the Relationship Between Partition andRandom Testing”,IEEE Transactions on Software Engineering,Vol.20,No.12,1994,pp977-980.从数学分析的角度分析了分类测试的能力。
设计分类测试的难点在于如何划分输入域。如果分类划分不当,不但费时费力,还会降低测试效率。而随机测试虽然实现简单但缺陷检测效率往往不高。

发明内容
本发明的技术解决问题是克服现有技术的不足,提供一种软件动态聚类测试方法,该方法从实践经验出发给出了一种动态聚类的测试策略,不但分类方法简单,而且实验显示有助于提高测试效率。
本发明的技术解决方案是软件动态聚类测试方法,其特点在于假定在软件测试过程中满足单个测试用例有可能检测到多个不同的软件缺陷,则动态聚类测试的步骤为(1)划分测试用例库为3类,第0类称为无效类,第1类为初始类,第2类称为有效类,开始时所有测试用例在第1类,其它两类均为空;(2)如果第2类不为空,则从第2类中随机选取一个测试用例进行测试,否则从第1类中随机选取一个测试用例进行测试;(3)如果从第I类(I=1,2)中选出的测试用例发现缺陷,则把这个测试用例放入第2类;否则将其放入第I-1类,如果I-1<0则放入第0类;(4)如果测试用例发现一个缺陷就立即剔除这个缺陷,如果测试用例发现多个缺陷,则随机选取一个缺陷剔除;(5)如果所有缺陷均已剔除或到达规定的测试步数或满足其它测试停止准则就停止测试,否则转第(2)步。
本发明与现有技术相比的优点在于本发明能够解决分类测试中分类难以确定的问题,又具有随机测试的简便,对于一大类计算型软件都能起到很好的效果。
随机测试是测试方法的基准,通常一种新的测试方法都会与随机测试相比较来说明自己的测试能力。为说明动态聚类方法的效果,定义随机测试策略的测试步骤(1)从测试用例库中按照均匀分布随机选取一个测试用例进行测试;(2)如果这个测试用例发现一个缺陷就立即剔除这个缺陷,如果这个测试用例发现多个缺陷,则随机选取一个缺陷剔除;(3)将测试用例放回测试用例库;(4)如果所有缺陷均已剔除或到达规定的测试步数就停止测试,否则转(1)。
假定被测软件P只有1个缺陷,检测率为θ,测试用例总数为d,能触发缺陷的测试用例数目为m,θ=md.]]>随机测试方法在前n步(1<n<d-m)测试中检测到这个缺陷的概率为Prrandom(n)=Σi=1nmd×(1-md)n-1]]>而动态聚类测试方法在前n步测试中检测到这个缺陷的概率为Prdynamic(n)=md(1+d-md-1+d-md-1·d-1-md-2+K)]]>容易证明Prdynamic(n)>Prrandom(n),这表明在只有一个缺陷时动态聚类策略比纯随机策略更容易发现缺陷。
实验可以证明在软件中含有多个缺陷的情况下,动态聚类与随机测试相比,剔除所有缺陷的总步数的均值和均方差也具有明显优势。


图1为本发明动态聚类测试方法示意图;图2为发明测试用例库的分类示意图。
具体实施例方式
假定被测软件含有若干个缺陷,通常测试前这些缺陷是未知的。假定针对这个软件已经有一个测试用例库,可以对软件进行黑箱测试。可以从用例库中选出测试用例作为输入给被测软件,并得到输出结果。假定能够判断输出是否正确,如果输出有错误则能够定位导致错误的源程序位置,即能够确定缺陷位置,并用一段正确的代码来替代有缺陷的代码,即剔除缺陷。
开始测试前把测试用例库划分为3类,第0类为无效类,第1类为初始类,第2类为有效类。开始时所有测试用例在第1类,其它两类均为空;测试时如果第2类不为空,则从第2类中随机选取一个测试用例进行测试,否则从第1类中随机选取一个测试用例进行测试;如图1所示;如果从第I类(I=1,2)中选出的测试用例发现缺陷,则把这个测试用例放入第2类;否则将其放入第I-1类,如果I-1<0则放入第0类,如图2所示;如果测试用例发现一个缺陷就立即剔除这个缺陷,如果测试用例发现多个缺陷,则随机选取一个缺陷剔除;如果所有缺陷均已剔除或到达规定的测试步数或者满足其它测试停止准则就停止测试,否则继续测试。
具体实施例space软件是为欧洲航天局开发的一个矩阵描述语言(ADL)解释器,从文件中读取ADL描述语句并检查文件内容是否合乎语法规则。如果ADL文件正确,Space将输出一个矩阵数据文件,包含矩阵元素信息、位置、激励,否则将输出错误提示。space软件包含9564行C语言代码,36个缺陷,13498个测试用例,是一个公认的典型测试对象。space软件有两个版本,测试版本(在每个缺陷前设置了bool变量,可以通过变量值控制执行有缺陷代码或正确代码,达到打开或关闭缺陷的目的)和对照版本(已剔除了全部缺陷)。同一个输入分别送给测试版本与对照版本执行,如果输出不同就认为发现缺陷,随机关闭一个经过的缺陷作为剔除一个缺陷。测试开始条件是36个缺陷全部打开,结束条件是剔除全部缺陷。采用本发明的动态聚类测试开始时初始类包含整个测试用例库13498个测试用例。随机选出一个进行测试,如果发现缺陷就剔除,并用这个测试用例继续测试,否则不再使用这个测试用例。编程时通过动态数组来记录有效类、无效类和初始类分别包含哪些测试用例。从开始测试到剔除全部缺陷作为一次测试,分别使用随机测试和动态聚类测试进行400次测试,考察剔除全部36个缺陷所花费的测试步数,动态聚类比随即测试均值提高31.73%,均方差提高19.69%。在整个测试过程中动态聚类方法均占有明显优势。
权利要求
1.软件动态聚类测试方法,其特征在于按下列步骤进行测试(1)划分测试用例库为3类,第0类称为无效类,第1类为初始类,第2类称为有效类,开始时所有测试用例在第1类,其它两类均为空;(2)如果第2类不为空,则从第2类中随机选取一个测试用例进行测试,否则从第1类中随机选取一个测试用例进行测试;(3)如果从第I类(I=1,2)中选出的测试用例发现缺陷,则把这个测试用例放入第2类;否则将其放入第I-1类,如果I-1<0则放入第0类;(4)如果测试用例发现一个缺陷就立即剔除这个缺陷,如果测试用例发现多个缺陷,则随机选取一个缺陷剔除;(5)如果所有缺陷均已剔除或到达规定的测试步数就停止测试,否则转第(2)步。
全文摘要
软件动态聚类测试方法,包括下列步骤(1)划分测试用例库为3类,第0类称为无效类,第1类为初始类,第2类称为有效类。开始时所有测试用例在第1类,其它两类均为空;(2)如果第2类不为空,则从第2类中随机选取一个测试用例进行测试,否则从第1类中随机选取一个测试用例进行测试;(3)如果从第I类(I=1,2)中选出的测试用例发现缺陷,则把这个测试用例放入第2类;否则将其放入第I-1类,如果I-1<0则放入第0类;(4)如果测试用例发现一个缺陷就立即剔除这个缺陷,如果测试用例发现多个缺陷,则随机选取一个缺陷剔除;(5)如果所有缺陷均已剔除或到达规定的测试步数或满足其它测试停止准则就停止测试,否则转第(2)步。本发明能够解决分类测试中分类难以确定的问题,又具有随机测试的简便,对于一大类计算型软件都能起到很好的效果。
文档编号G06F11/36GK1746861SQ200410009530
公开日2006年3月15日 申请日期2004年9月9日 优先权日2004年9月9日
发明者蔡开元, 景涛, 白成刚 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1