Intensive testing using model-based approaches is the standard way of demonstrating the correctness of automotive software. Unfortunately, state-of-the-art techniques leave a crucial and labor intensive task to the test engineer: identifying bugs in failing tests. Our contribution is a model-based classification algorithm for failing tests that assists the engineer when identifying bugs. It consists of three steps. (i) Fault localization replays the test on the model to identify the moment when the two diverge. (ii) Fault explanation then computes the reason for the divergence. The reason is a subset of actions from the test that is sufficient for divergence. (iii) Fault classification groups together tests that fail for similar reasons. Our approach relies on machinery from formal methods: (i) symbolic execution, (ii) Hoare logic and a new relationship between the intermediary assertions constructed for a test, and (iii) a new relationship among Hoare proofs. A crucial aspect in automotive software is timing requirements, for which we develop appropriate Hoare logic theory. We also briefly report on our prototype implementation for the CAN bus Unified Diagnostic Services in an industrial project.
翻译:使用基于模型的方法进行密集测试是证明汽车软件正确性的标准方法。 不幸的是,最先进的技术让测试工程师承担了关键和劳力密集型的任务:在测试失败时找出故障。我们的贡献是测试失败测试的基于模型的分类算法,帮助工程师在识别错误时发现故障。它由三个步骤组成。 (一) 在模型上重新放错地方化的测试,以辨别两种差异的时刻。 (二) 错误解释然后计算出差异的原因。原因在于测试所产生的一系列行动足以造成差异。 (三) 过失分类组由于类似原因失败。我们的方法依靠正规方法的机械:(一) 象征性执行,(二) 霍亚尔逻辑和为测试而设计的中间判断之间的新关系。 (三) Hoare证据的新关系。 汽车软件的一个关键方面是时间要求,我们为此制定了适当的Hoare逻辑理论。我们还简要报告了工业项目中CAN公共汽车统一诊断服务的原型实施情况。