论文部分内容阅读
进化测试是近年来兴起的非常重要的一种自动化测试数据生成技术。进化测试的主要思想是将测试数据的生成问题转化成为进化搜索问题,从而实现测试的自动化。进化测试利用进化算法的全局搜索能力,在具有导向性的适值函数的引导下,能够快速高效的自动生成测试数据。适值函数是进化测试中非常重要的一个方面。一个设计良好的适值函数能够为进化搜索提供更好更准确的导向,从而提高进化搜索的效率。因此适值函数一直是进化测试领域的研究热点。许多设计良好的适值函数被应用到进化搜索中。但是对于嵌套if-else结构,由于其特殊的多层嵌套结构,当测试数据在某一层中偏离了目标分支时,嵌套在该层内的其它分支将不再执行而在此时直接计算适值。这种情况导致测试数据在内层未执行的分支上的满足程度信息的丢失。造成了对测试数据的不公平评价。针对这个问题,本文借鉴可测变换的思想,提出分支乐观度的概念。通过分支乐观度来计算测试数据在未执行的分支上的累积分支距离。通过将规格化后的分支乐观度加入到原有的适值函数中,一种针对嵌套if-else结构的适值函数被成功提出。当测试目标的执行涉及到函数调用结构时,现有的适值函数就不再适用。这是由于,现有的适值函数的静态分析仅仅针对测试目标所在的函数内部,而没有考虑测试目标对函数调用的依赖。针对这种涉及函数调用的测试目标,本文通过对函数调用的静态分析,突出在函数调用链上的关键分支认定方法,提出了函数逼近度的概念。函数逼近度用来衡量测试数据在函数调用依赖链上对测试目标的满足程度。最终,本文为涉及函数调用的测试目标提出了一种新的适值函数。通过实验检验证明,本文针对嵌套If-Else结构和函数调用结构提出的两种适值函数都能够更有效的引导进化搜索,提高搜索效率。