一句话:提出首个检查回归测试选择(RTS)工具的框架 RTSCheck,在三个 Java RTS 工具中发现 27 个缺陷。
回归测试选择(RTS)通过只重跑可能受代码变更影响的测试来降低回归测试成本,但工具的正确性和效率至关重要,现有检查却依赖手工编写的有限测试。本文提出 RTSCheck,首个检查 RTS 工具的框架:它向工具输入演化程序(程序修订序列),将输出与受现有 RTS 测试套件启发的规则比对,以发现异常或缺陷。RTSCheck 用三类演化程序来源:AutoEP 自动生成程序及测试,DefectsEP 取自缺陷数据库中的有缺陷与修复后修订,EvoEP 取自真实开源项目历史中的修订序列。作者检查了 Java RTS 工具 Clover、Ekstazi 和 STARTS,发现 27 个缺陷。
Regression test selection (RTS) reduces regression testing costs by re-running only tests that can change behavior due to code changes. Researchers and large software organizations recently developed and adopted several RTS tools to deal with the rapidly growing costs of regression testing. As RTS tools gain adoption, it becomes critical to check that they are correct and efficient. Unfortunately, checking RTS tools currently relies solely on limited tests that RTS tool developers manually write. We present RTSCheck, the first framework for checking RTS tools. RTSCheck feeds evolving programs (i.e., sequences of program revisions) to an RTS tool and checks the output against rules inspired by existing RTS test suites. Violations of these rules are likely due to deviations from expected RTS tool behavior, and indicative of bugs in the tool. RTSCheck uses three components to obtain evolving programs: (1) AutoEP automatically generates evolving programs and corresponding tests, (2) DefectsEP uses buggy and fixed program revisions from bug databases, and (3) EvoEP uses sequences of program revisions from actual open-source projects' histories. We used RTSCheck to check three recently developed RTS tools for Java: Clover, Ekstazi, and STARTS. RTSCheck discovered 27 bugs in these three tools.