人工智能-机器学习-软件测试数据的高效生成及测试方法研究
本论文研究的主要内容是解决软件测试数据的高效生成和测试方法问题。软件测试是软件开发过程中非常重要的一环,但软件测试技术的发展相对滞后,面临着很多棘手的问题,其中一个很重要的问题就是如何生成高质量的测试数据。为了解决这个问题,本论文选择性地研究了几个主要方面,包括组合测试用例集的生成和精简、结构化测试中对大程序的测试相关问题、基于Anti-model的测试技术的研究。
本论文研究了组合测试用例集的生成和精简问题。提出了基于树模型和输入参数关系的全组合测试用例集的精简和生成方法。该方法首先是用解空间树来表示多输入参数的组合测试用例,并且给出了解空间树和输入参数之间的关系;然后分析了输入参数之间的依赖关系,总结了依赖关系的几种分类,说明了如何利用依赖关系来剪裁解空间树的冗余无效的枝叶;最后给出了生成解空间树、裁剪冗余无效枝叶和生成组合测试用例集的算法。实验表明该方法在一定的范围中具有较好的性能和实际的应用性。
本论文讨论了利用输入关系精简成对组合用例集的方法。为了剔除组合测试用例集中的无效用例,提高用例集的生成效率,系统地分析了成对组合测试用例集中的无效用例存在情况,研究了成对输入关系集的获取,提出了成对组合测试用例集的精简方法,并给出了判断用例是否为无效用例的具体算法。
另外,本论文研究了基于LP来求解小的组合测试用例集的方法。首先建立了组合测试LP优化模型,其主要的目标是提高获取用例集时LP的求解效率;然后给出了化解大LP为小LP求解测试集、0/1整型LP来求解非最小测试集和非0/1整型规划求解测试集的三种直接获得用例集的方法;最后提出了利用三个精简输入输出关系规则来精简LP求解用例集的约束数和变量数。在实验分析中,我们在耗时、用例集的大小和方法可用性这三个方面比较了这些方法,并得出了中断0/MLP程序来求得替代的用例集是可行且综合性能比较好的结论。
此外,本论文还提出了基于圈复杂度的大程序分割测试方法。文中分析了难以对圈复杂度大的程序进行测试的原因,给出了基于程序分割的变量影响度和圈复杂度的算法,讨论了程序分割的方式和原则,也讨论了分割对几种测试数据生成算法性能的影响以及分割对程序元素的覆盖率影响。通过分割程序可以降低每个程II序片段的圈复杂度,从而降低测试的难度,而且从每个片段来说,分割会使得测试效率提高。
本论文还研究了基于Anti-model的测试技术。文中以基于组件的测试为具体的叙述对象,提出了基于组件的系统测试框架及过程,并将测试数据分为几个方面。在没有源代码或者只有较少的系统信息的情况下,本方法可以更好地解决测试问题。