
蒙特卡罗方法在软件可靠性测试中的应用.docx
4页蒙特卡罗方法在软件可靠性测试中的应用Application of Monte Carlo Method for Software Reliability Testi ng Tech nology天水师范学院数信学院(甘肃天水 741001)马海云兰州交通大学信息与电气工程学院(兰州730070)张忠林徐晓梅摘要:本文探索了运用蒙特卡罗(Monte-carlo)方法进行软件可靠性测试的基本技术,介绍了这一技术在软 件可靠性测试中的基本过程通过实例证明了这种技术的实用性和有效性,提高了软件测试的正确率,缩短 了软件测试的周期Abstract: Exploring the basic technologytouse Monte-Carlo methodtotest software reliability, introducing the basic processof this technology in testing software reliability. Through exampleit prove practicability and validity of this echnology, raising thecorrect percentage oftesting software, shorteningthe periodof softwaretesting.关键词:软件可靠性测试用例蒙特卡罗方法Keywords: Software reliability Testingexample Monte-carlomethod1 引言软件测试在软件生存周期中占有重要地位,这不 仅因为测试阶段占用的时间、花费的人力和成本占软 件开发的很大比重,而且直接影响着软件的质量,是 保证软件可靠性的重要方法之一,其目的是保证发现 软件缺陷(错误)。
目前,测试过程自动化已经成为 测试的发展方向在对传统软件可靠性测试方法学习 的基础上,本文探索出了一种实用性强的蒙特卡罗 (Monte-carlo)测试方法2 Monte-carlo 方 法基本原理蒙特卡罗(Monte-carlo)方法以随机模拟和统计 试验为手段, 是一种从随机变量的概率分布中, 通过 随机选择数字的方法产生一种符合该随机变量概率分4-2006 China Academic Journal中国仪器仪表2 0 0 6年第4期oni 3) 对模拟试验结果进行统计处理(计算频率、6 5Ml righttipnki.nct均值等特征值),给出所求问题的解和解的精度的估计3 软件可靠性测试过程测试分为3个过程:设计测试用例、测试、测试 结果的分析1)设计测试用例:测试用例控制着软件测试的 执行过程,它是对测试大纲中每个测试项目的进一步 实例化本文基于基本路径测试方法设计测试用例, 通过对所产生随机数的筛选,形成最优测试用例集, 再用它进行统计实验在设计测试用例时,对测试输 入数据给出预期的输出数据结果,以提供检验实测结 果的基准2)对被测程序进行测试时,要按建立的测试流 程进行测试,其测试过程为:1)单元测试:通过对单元内部逻辑结构和语句 执行过程的分析,利用基本路径覆盖设计思想,挑选 优化的测试用例进行测试,得出测试数据2)任务测试:包括组装集成测试、确认测试、系 统测试3)输出数据:测试完成后输出的测试值4)评判准则:测试结果数据与预期数据是否相 符5)测试结果的分析:看是否满足评判准则 通过对以上两种概念的比较,可以看出两种概念 完全可以进行融合,因此,本文提出了将蒙特卡罗方 法应用到软件可靠性测试中的技术4 蒙特卡罗测试方法的测试策略蒙特卡罗测试方法侧重于白盒测试,并能将白盒 测试和黑盒测试有效的结合起来。 先选取被测程序, 通过对其内部结构的详尽分析,将它划分为若干结构 清晰、相互独立的单元,建立不同的单元程序流程 然后基于对被测程序整体整合结构的把握建立整合流 程再分别针对不同的单元程序流程和整合流程,基 于基本路径测试方法生成满足测试条件的两类测试用 例集先利用单元测试用例集驱动单元程序运行,获 得输出数据后,进行评判如果测试数据与预期数据相符,则说明测试成功,可以停止测试各单元测试完成后,还需进行组装集 成测试和确认测试,再用整合测试用例集对系统进行 整体测试在进行每一步的测试中,都应满足评判准则 5 实例分析5.1 最优测试用例集的产生 用蒙特卡罗方法进行软件可靠性测试过程中, 在 测试流程建立的情况下,要先产生随机抽样值, 即在 给定运行中各参数统计分布规律的条件下, 在计算机 上产生符合其分布规律的随机数抽样值, 这个过程称 为伪随机数的模拟由于伪随机数的特性会影响测试 用例的覆盖性, 采用产生随机数的另一种方法:类同 余法再对这些生成的随机数通过程序进行简单的处 理,组成初步的满足测试目标随机数集然后针对这 个随机数集采用贪心算法、启发式算法或整数规划等 方法来进行精简, 去掉一些冗余的随机数,生成最优 随机数 [6-8 。 它就是满足评判准则条件的测试用例] 集的来源5.2 一个简单的实例 对两个实数进行加、减、乘、除的任意一种运算,并输出结果在£、t2中输入两个数,在r中存 放这两个数的运算结果, c 中存放运算符, e 中存放 结束标志可以根据这个需求, 设计程序的测试流程图(简 单模型),如图1 所示对流程图中的前 3个分支节点,需要设计足够的 测试用例测试每个分支节点的每条分支以及这些分支 的组合第 1 个分支节点,可取 t1=10.01、 t2=xyz 和 £=10.01、t2=23覆盖它的两个分支第2个分支节点, 可取非法运算符,覆盖一个分支第 3 个分支节点, 执行 “/” 运算,可取 £=10.02、t2=0和 £=10.03、t2=24 覆盖它的两个分支第4个分支节点形成了循环,实 际对循环执行路径覆盖时,通常只验证一次循环体, 其中第一次应先验证“/”运算,以后的测试直接转 入“+”、“-”、“x”运算的测试测试完后,输入结束 标志e="end"退出本次测试,然后按照评判准则对测 试结果进行评判根据测试流程图设计测试用例,如 表 1 所示总 1994-200b Cliiiid Au^duinii' J on mill 卜 hmiic Publishing 1 lousu. All n^lus tvscivcd. IUI[ 4 期0 6 年第中[国仪器仪表结束6 结论本文给出了一种如何利用蒙特卡罗方法进行软件 可靠性测试的新尝试。 该方法提出了要对被测程序分 别建立两类不同的测试流程:单元程序流程和整合流 程,这样可以降低测试的复杂度,加速了测试用例的 生成, 解决了简化测试用例集难度的问题然后基于 基本路径测试方法生成两类不同的测试用例集,再用 它们对被测程序进行测试实践证明,这种测试方法 加速了软件测试的进程,缩短了测试的周期,是一种 行之有效的软件测试方法软件测试是一项复杂的任务,是一门综合的学科 需要不断地进行探索该文提出的这种测试方法在这 一领域中有所创新,达到了最大限度提高测试效率, 降低软件测试成本的目的但随着其应用领域的拓展 和新兴技术的显现,仍然需要不断的发展参考文献1 周苏, 陈敏玲, 陈根才 . 软件工程及其应用. 科学技, 1992 234~236.术出版社 :2 . . ,1985 徐钟济 蒙特卡罗方法 上海科学技术出版社 : 21~25.3 贺平 . 软件测试技术. 机械工业出版社,2004 :239 ~242.4 曾建潮. 软件工程. 武汉理工大学出版社, 2003: 182图1测试流程图输入数据运算符-结束标志预期发生 t /-T的概率预测结果£=10.01 t2=xyz表/:测试用/【例1/8输入非法数t=10.01t=231 2c="nc"/1/8输入非法运算符t =10.02 t =01 2c="/"/1/8除数不能为0t=10.03t=241 2c="/"e="notend"1/80.4179…t=10.03t=241 2c="+"e="notend"1/824.03t=10.03t=241 2c="-"e="notend"1/8-13.97t=10.03t=241 2c="x"e="notend"1/8240.72//e="end"1/8结束~183.5 . .陆银根 用类同余法产生随机数及其检验 数理统 计与管理. 2002,21 (6)6 ChenTY, LauMF.Anewheuristicfortestsuitereduction.InformationandSoftwareTechnology.1998,40(5/6): 347~354.7ChenTY,LauMF.Asimulationstudyonsomeheuristics fortest suite reduction. InformationandSoftware Tech- nology,1998,40 (13): 777~787.8LeeJG,ChungCG.Anoptimalrepresentativesetselection(1): 17~25.作者简介:马海云,在读硕士研究生,天水师范学院数信学院讲师,主要研究方向为软件测试技术。 1( )6 C hina Academic Journal Electronic Publishing I louse. All rights reserved・ http://^ww j 中国仪器仪表2 0 0 6年第4期。
