Ongoing progress in computational intelligence (CI) has led to an increased desire to apply CI techniques for the purpose of improving software engineering processes, particularly software testing. Existing state-of-the-art automated software testing techniques focus on utilising search algorithms to discover input values that achieve high execution path coverage. These algorithms are trained on the same code that they intend to test, requiring instrumentation and lengthy search times to test each software component. This paper outlines a novel genetic programming framework, where the evolved solutions are not input values, but micro-programs that can repeatedly generate input values to efficiently explore a software component's input parameter domain. We also argue that our approach can be generalised such as to be applied to many different software systems, and is thus not specific to merely the particular software component on which it was trained.
翻译:计算智能(CI)领域的持续进展促使人们越来越希望将CI技术应用于改进软件工程流程,特别是软件测试。现有最先进的自动化软件测试技术主要利用搜索算法发现能够实现高执行路径覆盖的输入值。这些算法在其意图测试的同一代码上进行训练,需要插桩和漫长的搜索时间才能测试每个软件组件。本文提出了一种新颖的遗传编程框架,其中进化得到的解决方案并非输入值,而是能够反复生成输入值以高效探索软件组件输入参数域的微程序。我们还论证了该方法可推广至众多不同的软件系统,因此并非仅局限于其训练时所针对的特定软件组件。