论文标题
部分可观测时空混沌系统的无模型预测
Automatically Generating Test Cases for Safety-Critical Software via Symbolic Execution
论文作者
论文摘要
基于象征性执行的自动测试生成对于系统测试安全至关重要的软件可能是有益的,以促进测试工程师追求认证标准规定的严格测试要求,同时控制测试过程的成本。同时,通常会通过编程语言或编码约定的限制,这些惯例禁止语言特征,而语言特征被认为可以降低程序的安全性,例如,它们不允许动态内存分配和可变的长度阵列,限制使用LOOP的方式,限制了使用,禁止的递归以及控制条件的复杂性。事实上,这些语言特征也是基于符号执行的测试生成方法的主要效率阻滞剂。本文贡献了新的证据,证明了生成测试案例的有效性,并为一类重要的工业安全关键系统进行象征性执行。我们特别关注SCADE,这是一种针对安全关键嵌入软件的很大程度上采用的基于模型的开发语言,我们报告了一个案例研究,在该案例研究中,我们利用了符号执行,以自动为SCADE开发的一组安全关键程序生成测试用例。为此,我们介绍了一个新型的测试生成器,我们在最近的一个工业项目中开发了有关SCADE编写的安全关键铁路软件的工业项目,并报告了我们使用该测试生成器测试一组SCADE程序的经验,该程序属于属于高速铁路的机上信号单元的开发。结果在经验上证明了符号执行确实是为我们的案例研究中考虑的安全关键计划生成高质量测试套件的可行方法。
Automated test generation based on symbolic execution can be beneficial for systematically testing safety-critical software, to facilitate test engineers to pursue the strict testing requirements mandated by the certification standards, while controlling at the same time the costs of the testing process. At the same time, the development of safety-critical software is often constrained with programming languages or coding conventions that ban linguistic features which are believed to downgrade the safety of the programs, e.g., they do not allow dynamic memory allocation and variable-length arrays, limit the way in which loops are used, forbid recursion, and bound the complexity of control conditions. As a matter of facts, these linguistic features are also the main efficiency-blockers for the test generation approaches based on symbolic execution at the state of the art. This paper contributes new evidence of the effectiveness of generating test cases with symbolic execution for a significant class of industrial safety critical-systems. We specifically focus on Scade, a largely adopted model-based development language for safety-critical embedded software, and we report on a case study in which we exploited symbolic execution to automatically generate test cases for a set of safety-critical programs developed in Scade. To this end, we introduce a novel test generator that we developed in a recent industrial project on testing safety-critical railway software written in Scade, and we report on our experience of using this test generator for testing a set of Scade programs that belong to the development of an on-board signaling unit for high-speed rail. The results provide empirically evidence that symbolic execution is indeed a viable approach for generating high-quality test suites for the safety-critical programs considered in our case study.