您好, 访客   登录/注册

黑盒测试中测试用例优先级改进算法分析

来源:用户上传      作者:

  摘要:为了保证程序代码在黑盒测试环境下能够更好地运行,需要对执行测试用例优先级方法进行改进调整。该文对比分析了用于黑盒测试中的测试用例优先级算法和改进算法,将错误检测率作为目标,结合不同情况下优先级调整策略,对现有方法进行改进分析。研究结果表明,改进后的算法具有一定的可行性,可以更好地提高测试用例的错误检测率。
  关键词:黑盒测试;测试用例;优先级;改进算法;错误检测率
  中图分类号:TP311      文献标识码:A
  文章编号:1009-3044(2020)02-0091-02
  软件产业的迅速发展促使各类软件层出不穷,软件产品的质量亟待提高。当软件项目的需求确定后,软件测试工作就应该开始着手进行了。由于软件测试贯穿软件生命周期全过程,所以软件测试所消耗的时间成本较高。但是,国内现在有很多公司一般都是在软件初步完成后,在集成测试阶段才将测试工作交给软件测试人员进行测试。在测试的过程中如果发现存在缺陷,测试人员需要选择合适的测试用例对系统进行回归测试。回归测试在整个软件开发过程中的各个阶段都可能存在,因此消耗的成本也较大。此时就需要测试人员在选择测试用例时,能够按照一定的策略进行排序,从而达到降低成本的目的。针对以上问题,提出一种适用于黑盒测试中的测试用例优先级方法,有针对性进行改进,从而可以更好地提高测试集的错误检测率。
  1 测试用例优先级技术
  1.1 典型测试用例优先级技术
  测试用例优先级技术实际上就是通过排序的方式对测试用例进行优先级排序,从而使高等级的测试用例比低等级的测试用例更具有优势,可以更先一步的执行[1]。测试人员需要按照一定的方式对测试用例进行排序,其设定的目标可以不同。在黑盒测试中,可以采用适当的测试用例排序技术进行排序,使保证的关键功能在设定的时间里能够得到排序与测试,能够提高测试用例的检错率,能够提高测试用例覆盖的速度。
  有相关研究者对测试用例优先级技术进行了方案整改,其中最基本的优先级技术为优先级排序技术与源代码技术。很多技术都比较适用于白盒测试,但是有一些专用的技术是针对黑盒测试的[2]。对于有需求的测试用例优先级技术,可以将软件产品中的各种测试要求作为排序根据,从不同的角度出发,综合考虑用户的优先级顺序。进行黑盒测试的人员,需求是测试用例的第一根据;历史信息作为回归测试后的重要排序准则,与普通的测试相比,存在一些冲突,历史信息记录中存在缺陷检测问题,这些信息可以帮助测试人员更好地进行回归测试,提高检测效率;基于反馈的测试用例,需要与其它的技术相结合,利用执行测试用例中的反馈信息,对测试用例的优先级进行调整。采用反馈技术,对测试用例执行的结果进行反馈,从而动态的调整测试用例的优先级顺序[3]。
  1.2 测试用例排序算法
  目前,解决测试用例排序问题最常见的一种方式是根据反馈机制,采取Total策略,对其进行验证和比较。
  Total策略就是对每一个测试用例需要的数目进行测试,再将测试用例根据大小进行排序,算法形式为:
  totalAlgorithm()
  Tselected=?;              //测试用例集合
  Tcandidate=Statistics(TestCases);     //覆盖情况
  While(Teandidate.size()>0)
  Ttemp=random(maxValue(Teamdidate))     //覆盖最多的测试用例
  2 黑盒测试中的测试用例优先级改进算法
  2.1 测试用例优先级方法
  测试用例优先级方法主要用于黑盒環境的测试,根据测试用例可能会存在的错误类型建立一个关系矩阵,将其设置为R,根据这个关系矩阵,测试用例会将可能出现的错误类型进行分组。采用Escalate和Deescalate两种优先级调整方法,这两种方法是根据关系矩阵对测试用例的顺序进行设置,使其更好的执行,这样可以提高错误检测率。在此方法中,为了保证同一组测试用例中的优先级保持不变,需要输入参数调整优先级的执行顺序。同时,为了更好地将测试用例优先级贯穿于整个软件,首先通过调用关系矩阵,然后根据当前的实际运行情况对算法进行调整。
  2.2 测试用例优先级改进方法
  2.2.1 优先级调整算法
  由于在现有的优先级算法中没有对Escalate方法和Deescalate方法进行详细的讲解,虽然在BBR1和BBR2方法[4]中对两种优先级调整方法进行了说明,但是并没有真正的实行。在BBR1中,由于事先预测的实施方法与执行失败的测试用例之间存在一定的联系,并且其他的测试用例很可能会导致执行失败,所以对于执行失败的测试用例,需要调用其他的方法进行设置。可以通过Escalate方法提高测试用例的优先等级,从而使测试用例可以更早的被执行。在BBR2中,由于可以预测成功的多个测试用例之间是存在关联关系的,并且在执行过程中测试成功的概率较大,所以对于一些可以执行成功的测试用例,通过Deescalate方法可以降低测试用例的优先等级,推迟测试用例的执行时机[5]。在以上两种方法的实验过程中,都验证了其有效性,并且两种测试也是完全可信的。实际上,在测试执行的过程中,完全可以将Escalate方法和Deescalate方法进行融合,使测试用例可以更好地执行,让容易暴露的测试用例优先级提高的同时,降低其他测试用例的执行概率。通过改进后的算法,其测试执行结果需要进行更进一步的考察,根据考察的结果选择合适的调整算法。执行结果的成功与失败,都与选择的算法息息相关。改进后的算法可以将其设置为BBR3,具体的描述方法为:检验当前测试资源是否耗竭、对当前优先级等级最高的测试用例进行设置、调用Escalate和Deescalate两种不同的算法,这些都对测试用例的优先级调整具有一定的帮助。   2.2.2 优先级步调调整值
  在现有的方法中,需要在测试用例中输入一个参数,用来对测试用例的优先级进行调整。同一组内的测试用例不会发生改变,但是这种固定的方式是相对而言的,不适用于所有的测试用例使用,如果使用同一种方法进行测试,很有可能暴露其他的测试用例,需要加大调整力度;对于那些不易暴露的测试用例,可适当降低力度调整的幅度。因此,在改进的方法中,不需要对所有的测试用例提供调整值,仅仅需要从关系矩阵中获取同一测试用例,以维护相互之间的关系,根据测试用例所得到的结果,对其它的测试用例进行适当的调整,如果调整用例是一个错误的关联,可以采用初次测试的信息进行调整。通过对BBR1进行改进,将测试用例初始化后的值存储在range中,当测试用例执行完成后,会增加错误暴露的概率。因此,在range中,对步调值进行适当的调整可以达到更好的效果。在当前所执行的测试用例中,出现错误暴露的概率逐渐减少,在range中找到所在组的步调调整值,当步调调整值为正时,调用已有算法,为没有执行的测试用例进行优先级调整。利用同样的方法,对BBR1和BBR2进行改进[6]。
  1) 算法BBR1。创建0向量,为每一种错误类型的调整步调值进行记录;检查资源输出;执行当前优先级别最高的测试用例;提高/降低测试用例的步调调整值;
  2) 算法BBR2。与BBR1创建方法相同。唯一区别是调用算法不同。
  3 仿真测试
  在进行实验时,不需要对测试用例执行的时间加以关心,采用M1的计算方法对经过优先级调整的测试用例集的错误检测率进行计算,公式为[7]:
  [M1=12in2n-2i+1*fin*infi*100%]
  其中,n表示测试用例个数;fi表示当第i个执行用例失败,f为1;若执行成功,f为0。
  在matlab7.0下对以上三种算法进行模拟实验,根据输入参数实验数據进行随机生成,如表1所示。
  在实验过程中,列举了三种不同的算法,不同的改进算法表示的错误检测率有所差异。通过对BBR1、BBR2和BBR3的实验数据进行分析,可以得出改进后的算法都能够更好地表现出改进效果。如图1所示,将算法应用在不同规模的测试集中,可以获取较为稳定的错误检测率。为了更加准确地对改进后的算法进行比较,本次试验统计了不同算法经过处理后的M1值,如表2所示[8]。
  4 结束语
  该文对黑盒测试中的测试用例优先级算法进行了改进分析,根据测试用例的运行结果,对测试用例的优先级进行调整算法计算。通过matlab仿真实验,模拟根据测试用例的运行结果对测试用例进行维护和调整步调值,并在恰当的时机对当前测试用例进行优先级调整算法计算。对改进前后的算法进行对比实验,得出改进后的算法比原有算法能够得到更高、更好的错误检测率。
  参考文献:
  [1]  曾平红. 基于改进LDA算法的测试用例优先级排序研究[J]. 佳木斯大学学报:自然科学版, 2018, 36(5):693-695.
  [2]  SCC50压缩机数传单元自动化测试方法与系统实现[D]. 大连:大连海事大学, 2017.
  [3]  齐名军. 粒子群优化算法在黑盒测试中的应用[J]. 世界家苑,2014(8).
  [4]  戴如昕,顾春华.用于黑盒测试的测试用例优先级改进算法[J].计算机工程与设计,2010,31(20):4343-4346.
  [5]  郭丽, 曲寅生, 张佑飞. 浅谈黑盒测试中批量程序逻辑分支覆盖完整性分析方法[J]. 中国金融电脑, 2014(9):47-50.
  [6]  任丽霞. 计算机联锁软件的黑盒测试过程分析与实现[J]. 铁路计算机应用, 2018, 27(2):39-43.
  [7]  佘凤. 黑盒测试技术综合策略的探讨[J]. 福建电脑, 2013, 29(9):100-101.
  [8]  何远, 张玉清, 张光华. 基于黑盒遗传算法的Android驱动漏洞挖掘[J]. 计算机学报, 2017, 40(5):1031-1043.
  【通联编辑:光文玲】
转载注明来源:https://www.xzbu.com/8/view-15128079.htm