【24h】

Perception and Practices of Differential Testing

机译:差异测试的认识和实践

获取原文
获取原文并翻译 | 示例

摘要

Tens of thousands engineers are contributing to Google's codebase that spans billions of lines of code. To ensure high code quality, tremendous amount of effort has been made with new testing techniques and frameworks. However, with increasingly complex data structures and software systems, traditional test case based testing strategies cannot scale well to achieve the desired level of test adequacy. Differential (Diff) is one of the new testing techniques adapted to fill this gap. It uses the same input to run two versions of a software system, namely base and test, where base is the verified/tested version of the system while test is the modified version. The output of two runs are then thoroughly compared to find abnormalities that may lead to possible bugs. Over the past few years, differential testing has been quickly adopted by hundreds of teams across all major product areas at Google. Meanwhile, many new differential testing frameworks were developed to simplify the creation, maintenance, and analysis of diff tests. Curious by this emerging popularity, we conducted the first empirical study on differential testing in practice at large scale. In this study, we investigated common practices and usage of diff tests. We further explore the features of diff tests that users value the most and the pain points of using diff tests. Through this user study, we discovered that differential testing does not replace fine-grained testing techniques such as unit tests. Instead it supplements existing testing suites. It helps users verify the impact on unmodified and unfamiliar components in the absence of a test oracle. In terms of limitations, diff tests often take long time to run and appear to generate noisy and flaky outcomes. Finally, we highlight problems (including smart data differencing, sampling, and traceability) to guide future research in differential testing.
机译:成千上万的工程师正在为跨越数十亿行代码的Google代码库做出贡献。为了确保高质量的代码,新的测试技术和框架已经付出了巨大的努力。但是,随着数据结构和软件系统的日益复杂,基于传统测试案例的测试策略无法很好地扩展以达到所需的测试充分性水平。差分(Diff)是适合填补这一空白的新测试技术之一。它使用相同的输入来运行软件系统的两个版本,即基本版本和测试版本,其中基本版本是系统的经过验证/测试的版本,而测试版本是修改版本。然后将两次运行的输出进行彻底比较,以发现可能导致错误的异常。在过去的几年中,差异测试已被Google所有主要产品领域的数百个团队迅速采用。同时,开发了许多新的差异测试框架来简化差异测试的创建,维护和分析。对这种新兴的流行感到好奇,我们在实践中进行了首次关于差异测试的实证研究。在这项研究中,我们调查了差异测试的常见做法和用法。我们将进一步探讨用户最重视的差异测试的功能以及使用差异测试的痛点。通过此用户研究,我们发现差异测试不能替代细粒度的测试技术,例如单元测试。相反,它补充了现有的测试套件。它可以帮助用户在没有测试Oracle的情况下验证对未修改和不熟悉的组件的影响。在局限性方面,差异测试通常需要花费很长时间才能运行,并且看起来会产生嘈杂和不稳定的结果。最后,我们重点介绍了问题(包括智能数据区分,采样和可追溯性),以指导将来进行差异测试的研究。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号