基于业务流转的MUSA操作剖面构造方法改进

发表于:2012-10-26 10:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:劳天 陈辉    来源:51Testing软件测试网原创

  摘要:为了保证软件在使用中能达到较高的可靠性要求,研究了基于MUSA模型的可靠性操作剖面构造方法以及测试数据生成方法,并对算法进行了改进。首先介绍了软件可靠性的概念,以及几种可靠性操作剖面的构造方法,接着以GEMS项目管理软件为例,在传统MUSA操作剖面构造方法中加入业务流转的元素,对比试验表明改进后的操作剖面构造方式更为接近软件实际的使用方式,由操作剖面构造的测试数据更具有实际测试价值。

  关键词:软件可靠性;MUSA;操作剖面;业务流转

  1、引言

  近年来,随着软件技术的发展,软件在人们日常生活中发挥着重要作用,人们不仅关心软件的功能是否正确,也越来越关注它的软件可靠性。在软件可靠性测试中,操作剖面的构造方法是软件可靠性测试的基础。1992年Musa提出一整套操作剖面的构造方法,这种方法已经得到广泛应用,但近年来软件的规模越来越大,业务逻辑越来越复杂,各操作存在很强的逻辑制约关系,由于传统的MUSA操作剖面构造方式是层次型的,并且每个剖面的构造都是相对独立的,没有考虑操作间的逻辑关系,采用传统的MUSA操作剖面构造方法将产生大量的无效测试数据,浪费测试资源。针对以上问题,本文提出了基于MUSA改进模型的信息系统操作剖面分析法,在构造操作剖面时,考虑不同操作间的逻辑关系,提高了测试数据的有效性。

  2、传统MUSA操作剖面构造方法

  软件可靠性概念是:在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的缺陷的函数。系统输入将确定是否会遇到已存在的缺陷。确定软件可靠性的基础是软件的操作剖面,Musa给出的操作剖面的定义是:操作及其发生的概率。根据操作剖面生成的测试数据就是一个操作的集合。

  MUSA操作剖面构造方法主要的思路是逐层细化,最终精确到每一个操作的发生概率。其传统的构造方法一般分为5个步骤:

  1)确定客户剖面:软件的客户使购买并使用软件系统的个人、团体或者机构,每一组客户在使用软件的目的上与其他客户有着明显的不同,客户的分类以及概率一般通过市场调查的方式来确定。

  2)确定用户剖面:用户是使用软件的人、组织、机构或其他系统,用户剖面的确定是基于客户剖面基础的,在已经确定的客户组中区分用户的方式也是通过使用软件方式来进行区分,其分类和概率也是通过市场调查的方式来确定。

  3)确定系统模块剖面:系统模块是为了便于分析执行行为,分组而成的一个功能或操作集合。系统模块来源于软件的需求或使用情况分析,其发生概率可以由软件早期版本的统计信息,或者类似软件的统计信息获得,如果是新领域软件,可以通过调查目标客户、询问专家意见等方式进行估计。

  4)确定功能剖面:功能的确定通常是在需求分析阶段,可在在软件的研制任务书和需求规格说明中取得,其概率获取的方式仍然是通过软件早期版本的统计信息、类似软件的统计信息、调查目标客户、询问专家意见等方式进行获取。

  5)确定操作剖面:一般一个功能可以映射出一个或者多个操作,操作之间的差异主要体现在完全不同的处理过程上,其概率确定方式与功能类似。

  MUSA操作剖面构造方法的灵活之处在于可以根据软件性质的不同,对构造步骤进行裁剪。根据其构造步骤可以看出,MUSA构造方法适用于以人工操作为主的软件。

  3、改进的MUSA操作剖面构造方法

  传统的MUSA操作剖面构造方法会构造出多个层次的剖面,每一个剖面都是相对独立的,并在最后一级细化到操作剖面,那么在生成测试数据时,生成的每一条测试数据也都是相对独立的,即与上一次生成的测试数据或下一次即将生成的测试数据都没有任何关系。这样的测试数据虽然拟合了用户操作频度上的实际情况,但是无法拟合用户对软件的使用顺序,而且如果操作上存在先后顺序的制约,那么就会产生无效测试数据。

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/32/n-827732.html

  3.3 生成测试数据

  根据构造的操作剖面,采用随机算法进行测试数据的生成。随机算法的基本原理是:

  假设存在一组元素Ai(i=1,2,…,N),其中每个元素Ai都对应一个概率Pi,Pi>0并且。进行随机抽样。

  1、对概率Pi求前j项和Sj,,形成一个数列{Sj},其中j = 1,2,….,N,规定S0 =0

  2、给定一个随机数,观察落在哪个区间,若满足Sj-1<<= Sj ,则该随机数与Pj这个概率值对应,则此次随机抽到的元素为Aj。

  使用随机算法进行测试数据生成时,设置唯一的起始操作节点(StartNode),将当前节点(CurrentNode)赋值为起始操作节点(StartNode),并由起始节点(StartNode)开始,生成一个(0,1)之间的随机数,将该随机数与流程图中当前节点(CurrentNode)的后续节点集(NextNode)中的每个节点概率(NodeProb)值相比,根据结果移动当前节点到指定的位置,并将相应的节点压入栈,若当前节点移动到了IsGotoNextFunc属性值为true的节点上时,根据当前节点的FuncID值,找到所属的功能节点,并同样使用随机算法将CunrrentNode移动到下一个功能节点中的操作节点上,重复此操作。直至当前节点移动到终止节点(EndNode)上时结束,将所有栈内节点出栈,便形成了一个完成的测试路径。以下为生成一条路径的算法伪代码:

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号