论文部分内容阅读
软件测试是鉴定软件安全性、完整性和正确性的过程,它是保证软件质量的重要手段,它通过分析实际输出与预期输出的结果,调整测试策略或者更改测试代码。测试需求和测试用例是软件测试两个组成部分,设计测试用例是为了满足测试需求的充分测试,然而随着软件版本的迭代和测试需求的变更,测试用例集的数量将不断扩大,不可避免存在冗余、覆盖度不够高等问题。本文针对这些问题,对传统测试用例集约简方法做出了一些改进,主要贡献如下:1.针对程序切片构造测试需求代码问题,提出了基于结构表的方法构造测试需求代码。传统方法使用图的方式构造程序切片,这种方法需要计算与兴趣点无关的结点,计算难度大。而使用结构表的方式构造程序切片,一定程度上减少了构造程序切片的难度。2.对于测试需求约简问题,提出了一种基于耦合度和测试需求间的关系相结合的方法约简测试需求集。首先,针对测试模块,将测试目标作为程序切片兴趣点,通过结构表的程序分析方法,提取与测试目标有关的测试需求代码。然后通过耦合度公式计算程序模块间是否存在需求冗余,最后根据测试需求间的包含、独立、相交关系,约简具有包含和相交关系的测试需求集,并在其基础上指引测试用例集约简。3.对于测试用例集约简问题,论文提出基于k-medoids算法约简测试用例集。论文使用k-medoids算法将测试用例集进行归类,在选取归类标准时,选择测试用例的覆盖率和圈复杂度作为测试用例的维度进行分类,然后在同一类中根据离中心点的距离,由近及远选取测试用例,对于距离相等的测试用例,选择覆盖测试需求多的测试用例,保证在获取精简测试用例集时优先选择覆盖率高的测试用例。4.论文在选择聚类算法时,将k-medoids算法作为聚类算法,保证在划分测试用例集时,不会因为算法对离群测试用例不敏感影响整个用例集的划分。在对比实验时,论文考察的对比算法分别是传统的G算法、GRE算法、k-means算法等,选择从测试用例集数量、约简前后检错数、约简前后覆盖度等几个方面进行比对,通过实际案例进行分析,考察在选择同样数据集下每个算法在以上几个方面的效果,通过实验说明本方法的有效性和可行性。