一句话:提出 SLEMI,为 Simulink 等 CPS 开发工具设计 EMI 变异差分测试,发现 9 个被确认的 bug。
针对 MathWorks Simulink 等商用信息物理系统(CPS)开发工具中难以发现的缺陷,本文提出 SLEMI:将等价输入变异(EMI)差分测试从过程式语言编译器推广到 CPS 建模仿真工具。作者设计了若干面向 CPS 语言特性的变异技术,处理显式执行时间以及兼具活代码与死代码性质的“zombie code”等过程式语言中没有的特性。评估以 Simulink 为对象,与最相关工具 SLforge 比较:SLforge 仅发现 2 个 bug,而 SLEMI 发现其超集问题,其中 9 个被 MathWorks Support 确认为 bug。
Finding bugs in commercial cyber-physical system development tools (or "model-based design" tools) such as MathWorks's Simulink is important in practice, as these tools are widely used to generate embedded code that gets deployed in safety-critical applications such as cars and planes. Equivalence Modulo Input (EMI) based mutation is a new twist on differential testing that promises lower use of computational resources and has already been successful at finding bugs in compilers for procedural languages. To provide EMI-based mutation for differential testing of cyber-physical system (CPS) development tools, this paper develops several novel mutation techniques. These techniques deal with CPS language features that are not found in procedural languages, such as an explicit notion of execution time and zombie code, which combines properties of live and dead procedural code. In our experiments the most closely related work (SLforge) found two bugs in the Simulink tool. In comparison, SLEMI found a super-set of issues, including 9 confirmed as bugs by MathWorks Support.