论文部分内容阅读
随着信息化的不断深入,软件产品的应用日益广泛,规模越来越大,复杂程度越来越高,软件质量问题日益成为软件技术领域研究的重点和热点问题。软件测试是现阶段保障软件质量的重要手段。软件测试中如:语句覆盖、条件覆盖等都可以归结为面向路径测试数据的生成问题。自动求解该问题将有效地提高软件测试的效率和质量。本文主要研究的是路径测试数据的自动生成方法。路径测试已经被证明是一个NP问题,是对程序进行结构测试的重要方法。令人遗憾的是目前大部分的测试还采用的是人工测试的方法。事实上,测试工作有很大的重复性,极有可能使用计算机进行自动化测试。研究测试数据的自动生成,可以降低手工测试的高额成本,减轻测试人员所必须付出的大量劳动,同时提高测试过程的可信赖程度。路径测试是软件测试的基本问题,因此路径测试数据自动生成方法的研究,对实现软件测试过程自动化,有着十分重要的现实意义。本文首先介绍了路径测试数据的生成步骤。总结了现有的测试方法,并对现有的一些测试数据自动生成的方法如:随机法、静态法、动态法和试探法做了重点介绍。其中,并着重介绍了使用人工智能的试探法,分别分析了如:使用遗传算法、模拟退火算法以及模拟退火遗传遗传混合算法自动求解路径测试数据自动生成问题。蚂蚁算法作为最成功的集群算法之一,已成功解决了诸多NP问题,但在求解路径测试问题上并不多见,故本文选择了使用三种二进制蚂蚁算法:BAA、BAS和BACS进行求解路径测试数据自动生成问题。并对解进行分析讨论。由于蚂蚁求解问题是建立在图的表示基础上的,在应用蚂蚁算法解决问题之前应首先将路径测试输入数据的解空间转化为可以被蚂蚁求解的搜索空间。本文选用的是使用二进制编码将测试的输入空间离散化来构成二进制蚂蚁的搜索空间。由于,二进制蚂蚁搜索空间的特殊性,蚂蚁很容易陷入某些边上是算法停滞,在求解过程中调整算法的一些参数,使算法得到探索与开发的平衡。另外,二进制蚂蚁是对个体蚂蚁的智能要求比较低,因此在二进制蚂蚁算没有启发式信息的概念,从而导致有时算法所产的效果很糟糕,在比较三种蚂蚁算法的求解效果后,在这三种蚂蚁算法求解效果最好的BAS中加入局部搜索来弥补没有启发式信息带来的不足。最后使用三角形分类程序TRITYP和佣金COMMISSION问题作为例子,生成了该程序的测试数据,并对实验数据进行了分析。实验结果表明,加入局部搜索的自适应BAS有着良好的探索与开发的平衡,保证解空间的多样性和算法的求解效率,避免算法陷入局部最优,从而取得良好的求解效果。