The adoption of agile development approaches has put an increased emphasis on developer testing, resulting in software projects with strong test suites. These suites include a large number of test cases, in which developers embed knowledge about meaningful input data and expected properties in the form of oracles. This article surveys various works that aim at exploiting this knowledge in order to enhance these manually written tests with respect to an engineering goal (e.g., improve coverage of changes or increase the accuracy of fault localization). While these works rely on various techniques and address various goals, we believe they form an emerging and coherent field of research, which we call `test amplification'. We devised a first set of papers from DBLP, looking for all papers containing `test' and `amplification' in their title. We reviewed the 70 papers in this set and selected the 4 papers that fit our definition of test amplification. We use these 4 papers as the seed for our snowballing study, and systematically followed the citation graph. This study is the first that draws a comprehensive picture of the different engineering goals proposed in the literature for test amplification. In particular, we note that the goal of test amplification goes far beyond maximizing coverage only. We believe that this survey will help researchers and practitioners entering this new field to understand more quickly and more deeply the intuitions, concepts and techniques used for test amplification.
翻译:采用敏捷的发展方法使开发者测试更加强调开发者测试,从而产生了具有强大测试套件的软件项目,这些套件包括大量测试案例,其中开发者将关于有意义的投入数据和预期属性的知识嵌入成神器形式,本文章调查了各种旨在利用这种知识的工作,目的是加强这些人工书面测试,以实现工程目标(例如,扩大对变化的覆盖面或提高误差的准确度)。这些工程依靠各种技术并针对各种目标,但我们认为它们形成了一个新兴和连贯的研究领域,我们称之为“测试放大”。我们设计了一组来自DBLP的论文,寻找其标题中包含“测试”和“增刊”的所有文件。我们审查了这套文件中的70份文件,并选择了符合我们测试放大定义的4份文件。我们用这4份文件作为我们的雪球研究的种子,并系统地遵循了图表。本研究报告首次绘制了文献中提议的不同工程目标的全面图,我们称之为“测试放大”。我们设计了一组文件,寻找所有文件的“测试”和“增刊”的论文。我们特别注意到了这个目标,我们用得更深入的实地测试。我们只是理解。