蒙特卡罗方法在软件可靠性测试中的应用
软件可靠性
技术论坛
蒙特卡罗方法在软件可靠性
测试中的应用
ApplicationofMonteCarloMethodforSoftware
ReliabilityTestingTechnology
天水师范学院数信学院(甘肃天水741001)马海云
兰州交通大学信息与电气工程学院(兰州730070)张忠林徐晓梅
摘要:本文探索了运用蒙特卡罗(Monte-carlo)方法进行软件可靠性测试的基本技术,介绍了这一技术在软件可靠性测试中的基本过程。通过实例证明了这种技术的实用性和有效性,提高了软件测试的正确率,缩短了软件测试的周期。
Abstract:ExploringthebasictechnologytouseMonte-Carlomethodtotestsoftwarereliability,introducingthebasicprocessofthistechnologyintestingsoftwarereliability.Throughexampleitprovepracticabilityandvalidityofthisechnology,raisingthecorrectpercentageoftestingsoftware,shorteningtheperiodofsoftwaretesting.
关键词:软件可靠性测试用例蒙特卡罗方法
Keywords:SoftwarereliabilityTestingexampleMonte-carlomethod
1引言
软件测试在软件生存周期中占有重要地位,这不仅因为测试阶段占用的时间、花费的人力和成本占软件开发的很大比重,而且直接影响着软件的质量,是保证软件可靠性的重要方法之一,其目的是保证发现软件缺陷(错误)。目前,测试过程自动化已经成为测试的发展方向。在对传统软件可靠性测试方法学习的基础上,本文探索出了一种实用性强的蒙特卡罗(Monte-carlo)测试方法。
布特性的随机数值序列,作为输入变量序列进行特定的模拟试验、求解的方法。在应用时,要求产生的随机数序列应符合该随机变量特定的概率分布。而产生各种特定的、不均匀的概率分布的随机数序列,可行的方法是先产生一种均匀分布的随机数序列,然后再设法转换成特定要求的概率分布的随机数序列,以此作为数字模拟试验的输入变量序列进行模拟求解。基本步骤如下:
(1)建立概率模型,即对所研究的问题构造一个符合其特点的概率模型(随机事件,随机变量等),包括确定性问题,须把具体问题变为概率问题,建立概率模型。
(2)产生随机数序列,作为系统的抽样输入进行大量的数字模拟试验,得到大量的模拟试验值。
(3)对模拟试验结果进行统计处理(计算频率、
2Monte-carlo方法基本原理
蒙特卡罗(Monte-carlo)方法以随机模拟和统计试验为手段,是一种从随机变量的概率分布中,通过随机选择数字的方法产生一种符合该随机变量概率分20064期
65
软件可靠性
技术论坛
均值等特征值),给出所求问题的解和解的精度的估计。
可以停止测试。各单元测试完成后,还需进行组装集成测试和确认测试,再用整合测试用例集对系统进行整体测试。在进行每一步的测试中,都应满足评判准则。
测试分为3个过程:设计测试用例、测试、测试结果的分析。
(1)设计测试用例:测试用例控制着软件测试的执行过程,它是对测试大纲中每个测试项目的进一步实例化。本文基于基本路径测试方法设计测试用例,通过对所产生随机数的筛选,形成最优测试用例集,再用它进行统计实验。在设计测试用例时,对测试输入数据给出预期的输出数据结果,以提供检验实测结果的基准。
(2)对被测程序进行测试时,要按建立的测试流程进行测试,其测试过程为:
1)单元测试:通过对单元内部逻辑结构和语句执行过程的分析,利用基本路径覆盖设计思想,挑选优化的测试用例进行测试,得出测试数据。
2)任务测试:包括组装集成测试、确认测试、系统测试。
(3)输出数据:测试完成后输出的测试值。(4)评判准则:测试结果数据与预期数据是否相符。
(5)测试结果的分析:看是否满足评判准则。通过对以上两种概念的比较,可以看出两种概念完全可以进行融合,因此,本文提出了将蒙特卡罗方法应用到软件可靠性测试中的技术。
5.1最优测试用例集的产生
用蒙特卡罗方法进行软件可靠性测试过程中,在测试流程建立的情况下,要先产生随机抽样值,即在给定运行中各参数统计分布规律的条件下,在计算机上产生符合其分布规律的随机数抽样值,这个过程称为伪随机数的模拟。由于伪随机数的特性会影响测试用例的覆盖性,采用产生随机数的另一种方法:类同余法。再对这些生成的随机数通过程序进行简单的处理,组成初步的满足测试目标随机数集。然后针对这个随机数集采用贪心算法、启发式算法或整数规划等方法来进行精简,去掉一些冗余的随机数,生成最优随机数[6-8]。它就是满足评判准则条件的测试用例集的来源。
5.2一个简单的实例
对两个实数进行加、减、乘、除的任意一种运算,并输出结果。在t1、t2中输入两个数,在r中存放这两个数的运算结果,c中存放运算符,e中存放结束标志。
可以根据这个需求,设计程序的测试流程图(简单模型),如图1所示。
对流程图中的前3个分支节点,需要设计足够的测试用例测试每个分支节点的每条分支以及这些分支的组合。第1个分支节点,可取t1=10.01、t2=xyz和
蒙特卡罗测试方法侧重于白盒测试,并能将白盒测试和黑盒测试有效的结合起来。先选取被测程序,通过对其内部结构的详尽分析,将它划分为若干结构清晰、相互独立的单元,建立不同的单元程序流程。然后基于对被测程序整体整合结构的把握建立整合流程。再分别针对不同的单元程序流程和整合流程,基于基本路径测试方法生成满足测试条件的两类测试用例集。先利用单元测试用例集驱动单元程序运行,获得输出数据后,进行评判。
如果测试数据与预期数据相符,则说明测试成功,
t1=10.01、t2=23覆盖它的两个分支。第2个分支节点,可取非法运算符,覆盖一个分支。第3个分支节点,执行“/”运算,可取t1=10.02、t2=0和t1=10.03、t2=24覆盖它的两个分支。第4个分支节点形成了循环,实际对循环执行路径覆盖时,通常只验证一次循环体,其中第一次应先验证“/”运算,以后的测试直接转入“+”、“-”、“×”运算的测试。测试完后,输入结束标志e="end"退出本次测试,然后按照评判准则对测试结果进行评判。根据测试流程图设计测试用例,如表1所示。
年第4期
3软件可靠性测试过程
5实例分析
4蒙特卡罗测试方法的测试策略
软件可靠性
技术论坛
6结论
本文给出了一种如何利用蒙特卡罗方法进行软件
可靠性测试的新尝试。该方法提出了要对被测程序分别建立两类不同的测试流程:单元程序流程和整合流程,这样可以降低测试的复杂度,加速了测试用例的
生成,解决了简化测试用例集难度的问题。然后基于基本路径测试方法生成两类不同的测试用例集,再用它们对被测程序进行测试。实践证明,这种测试方法加速了软件测试的进程,缩短了测试的周期,是一种行之有效的软件测试方法。
软件测试是一项复杂的任务,是一门综合的学科,需要不断地进行探索。该文提出的这种测试方法在这一领域中有所创新,达到了最大限度提高测试效率,
降低软件测试成本的目的。但随着其应用领域的拓展和新兴技术的显现,仍然需要不断的发展。
参考文献
1周苏,陈敏玲,陈根才.软件工程及其应用.科学技234~236.术出版社,1992:
2徐钟济.蒙特卡罗方法.上海科学技术出版社,1985:21~25.
- 基于PLC控制的航空电镀生产线自动输送
- 中考预测课内外文言文对比阅读2
- 2018-2023年中国商业智能(BI)产业市场
- 中国金融体制改革研究2011new
- 外窗淋水试验方案
- 精益生产(Lean Production)
- 学校安全事故处置和信息报送制度
- Chapter 5 Human Resources Management
- 【小学数学】人教版小学六年级上册数学
- 初中数学解题方法与技巧
- 山东省创伤中心建设与管理指导原则(试
- 函数与数列的极限的强化练习题答案
- 10分钟淋巴按摩消脂
- 网络应急演练预案
- 服装设计入门基础知识
- 初二数学分式计算题练习
- (人教新课标)高二数学必修5第二章 数列
- 最新自主创业项目
- 北京大学 无机化学课件 4第4章 配合物
- 贸易公司业务管理制度




