论文标题
间歇性地在嵌入式系统域中的测试失败
Intermittently Failing Tests in the Embedded Systems Domain
论文作者
论文摘要
软件测试有时会间歇性失败的测试困扰,并且发现这种失败测试的根本原因通常很困难。该问题已在开源软件的单元测试级别进行了广泛研究,但是在系统测试级别的研究量较少,尤其是对工业嵌入式系统的测试。本文介绍了我们对嵌入式系统域中间歇性失败测试的根本原因的研究,目的是更好地理解,解释和分类潜在的故障。我们调查的主题是当前运行的工业嵌入式系统,以及执行的系统级测试。我们设计并使用了一种新型指标将测试用例分类为间歇性。从超过500万个测试判决中,我们间歇性地确定了测试的失败,并使用多个来源确定了其根本原因。我们发现,所有测试用例中约有1-3%的间歇性失败。通过对案例研究结果和相关工作的分析,我们确定了与测试案例间歇性相关的九个因素。我们发现,始终发生故障测试的修复程序通常删除了其他测试检测到的大量故障,而不是进行间歇性测试的修复。我们还发现,通常需要更多的努力来确定间歇性测试的修复程序,而不是一致的测试。鉴定了导致间歇性和一致测试的根原因之间的重叠。在工业嵌入式系统和开源软件中,间歇性的许多根本原因都是相同的。但是,当将单位测试与系统级测试进行比较时,尤其是对于嵌入式系统时,我们观察到测试环境本身通常是间歇性的原因。
Software testing is sometimes plagued with intermittently failing tests and finding the root causes of such failing tests is often difficult. This problem has been widely studied at the unit testing level for open source software, but there has been far less investigation at the system test level, particularly the testing of industrial embedded systems. This paper describes our investigation of the root causes of intermittently failing tests in the embedded systems domain, with the goal of better understanding, explaining and categorizing the underlying faults. The subject of our investigation is a currently-running industrial embedded system, along with the system level testing that was performed. We devised and used a novel metric for classifying test cases as intermittent. From more than a half million test verdicts, we identified intermittently and consistently failing tests, and identified their root causes using multiple sources. We found that about 1-3% of all test cases were intermittently failing. From analysis of the case study results and related work, we identified nine factors associated with test case intermittence. We found that a fix for a consistently failing test typically removed a larger number of failures detected by other tests than a fix for an intermittent test. We also found that more effort was usually needed to identify fixes for intermittent tests than for consistent tests. An overlap between root causes leading to intermittent and consistent tests was identified. Many root causes of intermittence are the same in industrial embedded systems and open source software. However, when comparing unit testing to system level testing, especially for embedded systems, we observed that the test environment itself is often the cause of intermittence.