计算机科学
并发
调试
交错
线程(计算)
程序设计语言
单元测试
回归检验
多线程
操作系统
并行计算
嵌入式系统
软件
软件开发
软件建设
作者
Tanakorn Leesatapornwongsa,Xiang Ren,Suman Nath
标识
DOI:10.1145/3540250.3558956
摘要
Flaky tests, which can non-deterministically pass or fail on the same code, impose significant burden on developers by providing misleading signals during regression testing. Microsoft developers consider flaky tests as one of the top two reasons for slowing down software development. In order to debug the root-cause of a flaky behavior, a developer often needs to first reliably reproduce a failed execution. Unfortunately, this is non-trivial. For example, most of the flakiness in unit tests are caused by concurrency, and reproducing their failures requires specific thread interleaving. To address this challenge, we introduce FlakeRepro that helps developers reproduce a failed execution of a flaky test caused by concurrency. FlakeRepro combines static and dynamic analysis to quickly identify an interleaving that makes a flaky test fail with the same original error message. FlakeRepro is efficient: it can reproduce a failed execution after exploring few tens of interleavings. FlakeRepro integrates well with existing systems: it automatically instruments test binaries that can run on existing and unmodified test pipelines.
科研通智能强力驱动
Strongly Powered by AbleSci AI