一句话:提出将 SFOL 需求片段翻译为 Simulink 在线定量测试预言的方法,支持连续与不确定 CPS 行为。
针对 CPS 测试中自动化在线断言的需求,论文要求 oracle 能在线检测、处理时间与幅值连续行为、给出定量满意度并容忍环境不确定性。作者选取 Signal First Order Logic (SFOL) 的一个片段来规约需求,为其定义定量语义,并可靠地翻译为 Simulink 测试预言。在 11 个工业案例上评估表明:该需求语言可表达全部 98 条需求,所需时间与工作量可接受;对大型模型,相比离线检查测试输出,可显著减少测试执行时间。
Test automation requires automated oracles to assess test outputs. For cyber physical systems (CPS), oracles, in addition to be automated, should ensure some key objectives: (i) they should check test outputs in an online manner to stop expensive test executions as soon as a failure is detected; (ii) they should handle time- and magnitude-continuous CPS behaviors; (iii) they should provide a quantitative degree of satisfaction or failure measure instead of binary pass/fail outputs; and (iv) they should be able to handle uncertainties due to CPS interactions with the environment. We propose an automated approach to translate CPS requirements specified in a logic-based language into test oracles specified in Simulink - a widely-used development and simulation language for CPS. Our approach achieves the objectives noted above through the identification of a fragment of Signal First Order logic (SFOL) to specify requirements, the definition of a quantitative semantics for this fragment and a sound translation of the fragment into Simulink. The results from applying our approach on 11 industrial case studies show that: (i) our requirements language can express all the 98 requirements of our case studies; (ii) the time and effort required by our approach are acceptable, showing potentials for the adoption of our work in practice, and (iii) for large models, our approach can dramatically reduce the test execution time compared to when test outputs are checked in an offline manner.
@inproceedings{paperbot5083,
title = {Generating automated and online test oracles for Simulink models with continuous and uncertain behaviors},
author = {Claudio Menghi and Shiva Nejati and Khouloud Gaaloul and Lionel C. Briand},
booktitle = {FSE},
year = {2019},
doi = {10.1145/3338906.3338920}
}