软件工程视角下组合测试用例优先级技术的实证研究

论文价格:0元/篇 论文用途:仅供参考 编辑:论文网 点击次数:0
论文字数:**** 论文编号:lw202329867 日期:2023-07-22 来源:论文网
本文是一篇软件工程论文研究,本文介绍了组合测试、测试用例优先级技术、深度神经网络以及深度神经网络测试的相关知识。针对深度神经网络测试,研究了组合密集覆盖与对抗样本之间的相关性,以及使用组合密集覆盖标准指导测试用例按照优先级由高到低的顺序排序,通过相关实验证明了使用基于组合密集覆盖的测试用例优先级技术不能改善对抗样本的检测情况。最后本文分析了目前已知的一些组合测试工具的特点,结合这些工具的特点以及目前已经处于报批阶段的《组合测试方法》国家标准,在本课题组现有的研究成果上实现了一种高度规范化、效率化及统一化的组合测试工具。

第一章 绪论

1.1 研究背景及意义
由于计算机技术的飞速发展,作为整个计算机应用核心的软件系统在人们的日常生活中至关重要。尽管这些应用不仅使得人们的生活变得丰富多彩,而且办事效率也极速提高,但是这一切都要基于优良的软件质量。众所周知,软件测试作为软件质量把关的重要方式,是软件开发周期中的重要环节。
现阶段复杂逻辑系统的测试规模通常比较大,在测试资源受限的情况下,测试用这一类系统的所有因素以及各因素取值组合情况几乎是不可能完成的,这使得该类测试具有很大的挑战性。针对上述挑战,组合测试方法是一种能够有效解决上述问题的测试方法。该方法通过构造一组能够覆盖待测系统中任意τ个因素之间相互作用的测试用例,从而在检测到系统中较多缺陷的同时缩小测试用例集的规模。相对于穷尽测试方法而言,组合测试能通过较少的测试用例尽早有效地完成相应测试的这一经验在一些针对开源软件的研究中得到了进一步的证实[1][2]。早在 20 世纪 80 年代,美国和日本的研究者首次将组合测试中测试参数之间组合的思想应用到实验中[3-5]。另外美国 NIST 的研究者们曾在调查中发现在软件开发中大约 70%的故障通常是由 1 个或 2 个参数之间的相互作用而引起的,并且与故障相关的参数通常不超过6 个[6]。如今组合测试作为一种有效的测试技术已经被应用到许多领域中,例如:高速铁路轨道接收机[7]、数据挖掘算法[8]、西门子工业[9]、音乐播放器 MP3[10]等。
为了尽快提高软件测试的效率,有必要将一些重要的测试用例尽早地执行,从而使得待测系统中存在的缺陷被尽早地发现。衡量测试用例重要程度标准的因素很多,包括:需求覆盖率、测试用例的代码、测试用例运行时间、测试用例对需求的满足情况等等。测试用例优先级技术是一种能使得比较重要的测试用例尽早执行,进而尽快提高软件测试效率的测试用例优化技术。对于给定的测试输入,使用组合测试用例优先级技术不仅可以使用尽可能少的测试用例检测出软件中由因素间相互作用而引发的各种故障,而且还能使得优先级较高的测试用例尽早执行。
...........................

1.2 国内外研究现状
1.2.1 组合测试
据文献[16]统计,人们对组合测试的研究主要分为以下 6 个方面:建模类、测试用例生成类、测试用例优化类、度量和评估类、故障特征化及诊断类以及组合测试过程改进与应用类。其中,测试用例优化类主要研究一种使得组合测试用例的运行顺序能够按照一种尽可能经济的方式执行,并且使得待测软件中的故障能够被尽早地发现;度量和评估类主要研究使用覆盖率和错误检测率等指标度量组合测试以及研究评估组合测试质量和使用组合测试的软件质量的方法等;组合测试过程改进与应用类主要研究如何将组合测试运用到实际测试中。另外,在这 6 类研究方向中测试用例生成类研究最多,其次是组合测试过程改进与应用类。
近些年来,一些发达国家(如:美国、加拿大等)对组合测试的研究比较多,他们主要研究的内容集中在测试用例生成和组合测试的应用等方面。

截止目前为止,据统计已知的组合测试用例生成工具总共有 48 种,其中有 8 种工具还未知其是否公开[17]。在已知的一些测试工具中存在以下几点不足之处[18]:(1)价格昂贵;(2)功能较为单一;(3)输入输出格式不友好、无法扩展;(4)测试效果难以保障;(5)用户安全性以及保密性无法保障;(6)缺少相关的测试文档。当然有些测试工具也具有以下优点:(1)具有很强的实用性;(2)便于工具的集成。
...........................

第二章 相关背景知识介绍

2.1 组合测试
在组合测试中,按照测试用例的覆盖力度可以分为固定强度组合测试(即只考虑任意??维因素间的交互作用,其中τ是指定的正整数)和可变强度组合测试(即考虑i(2≤i≤τ)维因素之间的交互作用,其中τ是指定的正整数, i可以为 2 和τ之间的任意不固定的正整数),本文基于前者进行研究,后续将介绍该测试技术的相关概念。一般使用组合测试方式生成测试用例集时是根据待测系统中各个因素间的相互作用生成的。测试用例集对因素间交互作用的不同覆盖能力以及错误检测能力都取决于不同的组合覆盖标准。本小节将对适用于传统软件中组合测试的覆盖标准以及τ维组合覆盖表的有关概念作简单的介绍。
定义 2.2(单因素覆盖标准) 设计测试用例集时,只考虑待测系统中的每个因素的所有可能取值都能被这些测试用例覆盖,而不考虑这些因素之间的交互作用。
定义 2.3(二维组合覆盖标准) 设计测试用例集时,考虑待测系统中的任意两个因素之间的所有取值组合的集合都能被这些测试用例覆盖。
通常情况下,组合测试中至少要考虑待测系统中任意两个因素之间的交互作用,因此下面将依次给出二维组合覆盖表和τ维组合覆盖表的定义,从而进一步给出固定强度组合覆盖表的定义。

............................

2.2 测试用例优先级技术
2.2.1 基本思想
由现阶段人们对组合测试的研究分类情况[16]可知,测试用例优先级技术属于测试用例优化类,其基本思想如下:事先为每个测试用例按一定标准设置重要程度,根据测试用例重要程度逐渐降低的顺序依次选择并执行测试用例。按照该测试用例优先级技术的思想进行测试,能尽早达到预期的覆盖率目标或检错目标,从而在提高测试效率的同时,减少测试成本

由本文的 1.2.1 小节可知,人们研究测试用例的优化主要是为了寻找一种测试序列(即研究测试用例的排序方法),按照优化过的测试序列执行测试用例能尽快检测出系统中的故障。
按照测试用例优先级排序方法是否需要重新生成测试用例划分,包含纯排序方法和重生成方法[19][44]两类。同理按照测试用例技术的实现方式,测试用例优先级技术也可分成两类。这两类技术都基于优先级,一类用于生成测试用例而另一种则是复用已有的测试用例[18]。根据测试用例优先级排序目标划分,包含基于组合覆盖的方法[45][46]和基于测试成本的方法[47][48]。因此按照影响测试用例优先级的一些历史因素上来看,测试用例优先级技术又可以分为两类:一类是基于覆盖率的而另一类是基于非覆盖率的。
定义 2.8(测试用例优先级生成技术) 通常待测系统中不同的因素取值组合具有不同的权重。在设计测试用例集时,考虑测试用例的优先级,从而使得具有较高权重的组合尽可能早地被测试用例集覆盖。
定义 2.9(测试用例优先级复用技术) 在进行回归测试时,可能需要复用已经生成的测试用例。将已经生成的测试用例集中的测试用例按照指定的规则赋予相应的重要程度,然后对原始测试用例集中的测试用例进行复用,即按照赋予的重要程度由高到底的顺序对上述测试用例进行排序,最终能够得到一个新的测试用例执行序列。
.............................


第三章 组合覆盖与对抗样本的相关性研究 .................................... 19
3.1 研究问题 .................................. 19
3.2 实验对象 ............................... 19
第四章 基于组合覆盖的测试用例优先级技术....................................... 31
4.1 研究问题 ........................................ 31
4.2 实验对象 ...................................... 31
第五章 组合测试工具 ............................................... 41
5.1 总体目标 ......................................................... 41
5.2 现有组合测试工具的分析 .................................... 41
5.3 国家标准《组合测试方法》 .......................... 43

第五章 组合测试工具

5.1 总体目标
虽然现有的组合测试工具比较多,但是为了能够实现一个具有高度规范化及统一化的组合测试工具,现阶段已经提出了《组合测试方法》国家标准,该标准目前还处于报批阶段。 本文通过分析现有组合测试工具的特点,并针对《组合测试方法》国家标准的规定的要求,结合本课题组在这个方面的研究成果设计实现了一种既支持控制台命令又支持图形化界面的高度规范化、统一化的组合测试用例生成工具。本文实现的组合测试工具有如下两个总体目标:(1)为方便地比较各种测试用例生成算法以及其各自的算法效果,需要提供一个可配置、可扩展的实验平台;(2)为方便地应用组合测试技术,需要提供一种轻量化、便于使用的测试工具。

...........................

第六章 总结与展望

6.1 总结
随着深度神经网络逐渐被应用到越来越多的安全敏感的领域中,例如:自动驾驶、自动化医疗诊断等等。如果这些领域的系统没有经过全面的测试,那么将会导致很严重的后果。因此如何实现对该类技术的软件进行全面测试,从而满足相关安全标准的要求变得至关重要。 如果将深度神经网络中的每个神经元的输出值当作一种状态,那么测试用例集的规模一般都变得比较大。在测试资源受到限制的情况下,测试该类系统中的每种状态几乎是不可能的,进而使得测试这类系统具有很大的挑战性。针对上述挑战,组合测试方法是一种有效解决上述问题的测试方法。为了使得测试用例集中一些重要的测试用例尽早地执行,可以使用组合测用例优先级技术。

本文首先介绍了组合测试的相关知识,其中着重介绍了固定强度组合测试的相关概念,并简单的概括了增量式组合测试的主要思想,然后从测试用例优先级技术的基本思想,分类以及组合测试用例优先级技术三个方面对测试用例优先级技术做了较为深入的介绍,接着介绍了深度神经网络中的深度神经网络结构、激活函数以及数据集,最后对现有的深度神经网络中的鲁棒性、测试、验证以及一些覆盖标准做了简单的介绍。

后续通过从组合密集覆盖率峰值以及达到组合密集覆盖率峰值时的测试用例集规模这两个角度分析了在深度神经网络测试中,组合密集覆盖与对抗样本之间的相关性。然后利用组合密集覆盖标准指导深度神经网络中测试用例进行优先级排序,证明了使用这种组合测试用例优先级技术不能改善深度神经网络中对抗样本的检测情况。最后本文还根据现阶段已经处于报批阶段的《组合测试方法》国家标准中规定的组合测试工具的输入输出文件格式,结合现有组合测试工具的特点,在本课题组现有的研究成果上实现了一种具有高度规范化、效率化及统一化的组合测试工具。
参考文献(略)

如果您有论文相关需求,可以通过下面的方式联系我们
客服微信:371975100
QQ 909091757 微信 371975100