论文部分内容阅读
近年来,随着自动化技术的不断出现,越来越多的公司去关注“测试数据、用例设计自动化”以及“测试结果分析、定位、质量自动化”等。目前,对于大型复杂软件,人工检测很容易漏测,需要一个全自动的测试系统,能够通过计算,快速的覆盖程序所有逻辑,得到输入输出,从而辅助人工生成大量测试用例,同时发现一些软件缺陷。但是,自动化测试的前提是测试用例的自动化生成。因此,尽可能代码全覆盖、简单实用、性价比高的测试用例自动化生成方法的研究将成为目前亟待解决的问题之一。
本文通过阅读大量的国内外参考文献,针对目前自动化测试用例生成技术现状,以及对目前存在的测试用例自动生成算法的比较分析,提出了一种基于代码块覆盖的测试用例自动生成方法,并且设计与实现了一套全自动的测试用例生成工具,完成测试用例的自动化生成。本文主要工作是首先利用插桩技术,对程序进行分块,然后利用遗传算法生成测试用例,最后针对未覆盖的代码块进行再次覆盖,实现了一种基于代码块覆盖的测试用例自动生成方法,提高了测试用例生成的效率和代码的覆盖率,帮助人工测试节省大量时间。主要的研究内容如下:
1、代码插桩技术的研究。因为目前大部分的代码插桩工具大都是商用的,很多技术都不对外公开,大部分使用的都是按行插桩,在有效的代码中插入相同的探针,而且探针的类型都是传统的函数,造成代码膨胀、效率低下。因此,本文设计并实现一种基于代码块的插桩方法,完成针对源程序的自动化代码插桩。
2、改进遗传算法的研究。通过对目前遗传算法生成测试用例技术的分析,研究目前遗传算法的原理以及在生成测试用例方面存在的缺陷和不足之处,提出了改进的思路和具体方法。通过改进的遗传算法,提高了生成测试用例的质量和效率,从实验结果分析,改进的遗传算法较传统的遗传算法在生成测试用例的效率与质量上有很大提高。
3、未覆盖代码块测试用例再生成方法研究。研究针对一些在测试过程中还未覆盖到的代码块。本文利用程序的静态结构分析技术,提出了一个测试用例一旦覆盖了目标代码块的邻域(目标代码块的上层节点),那么它有很大的概率覆盖到该目标块的推测思路,通过一定的计算,求出满足要求的测试用例,再次生成测试用例来实现程序逻辑的全覆盖。
本文提出的方法不仅实现了全自动的测试用例生成工具,井且通过一定的改进算法提高了测试用例的生成效率和质量,井且通过计算的方式,能够精确定位到哪个代码块未被运行到,可以更有针对性的生成测试用例,辅助人工测试节省了大量的时间和成本实验证明,本工具不仅能够生成大量的测试用例,井且在一定程度上能够提高生成测试用例的效率。该方法己申请发明专利,井作为某产品的一部分,即将投入使用。
本文通过阅读大量的国内外参考文献,针对目前自动化测试用例生成技术现状,以及对目前存在的测试用例自动生成算法的比较分析,提出了一种基于代码块覆盖的测试用例自动生成方法,并且设计与实现了一套全自动的测试用例生成工具,完成测试用例的自动化生成。本文主要工作是首先利用插桩技术,对程序进行分块,然后利用遗传算法生成测试用例,最后针对未覆盖的代码块进行再次覆盖,实现了一种基于代码块覆盖的测试用例自动生成方法,提高了测试用例生成的效率和代码的覆盖率,帮助人工测试节省大量时间。主要的研究内容如下:
1、代码插桩技术的研究。因为目前大部分的代码插桩工具大都是商用的,很多技术都不对外公开,大部分使用的都是按行插桩,在有效的代码中插入相同的探针,而且探针的类型都是传统的函数,造成代码膨胀、效率低下。因此,本文设计并实现一种基于代码块的插桩方法,完成针对源程序的自动化代码插桩。
2、改进遗传算法的研究。通过对目前遗传算法生成测试用例技术的分析,研究目前遗传算法的原理以及在生成测试用例方面存在的缺陷和不足之处,提出了改进的思路和具体方法。通过改进的遗传算法,提高了生成测试用例的质量和效率,从实验结果分析,改进的遗传算法较传统的遗传算法在生成测试用例的效率与质量上有很大提高。
3、未覆盖代码块测试用例再生成方法研究。研究针对一些在测试过程中还未覆盖到的代码块。本文利用程序的静态结构分析技术,提出了一个测试用例一旦覆盖了目标代码块的邻域(目标代码块的上层节点),那么它有很大的概率覆盖到该目标块的推测思路,通过一定的计算,求出满足要求的测试用例,再次生成测试用例来实现程序逻辑的全覆盖。
本文提出的方法不仅实现了全自动的测试用例生成工具,井且通过一定的改进算法提高了测试用例的生成效率和质量,井且通过计算的方式,能够精确定位到哪个代码块未被运行到,可以更有针对性的生成测试用例,辅助人工测试节省了大量的时间和成本实验证明,本工具不仅能够生成大量的测试用例,井且在一定程度上能够提高生成测试用例的效率。该方法己申请发明专利,井作为某产品的一部分,即将投入使用。