首页> 外文期刊>Automated software engineering >How verified (or tested) is my code? Falsification-driven verification and testing
【24h】

How verified (or tested) is my code? Falsification-driven verification and testing

机译:我的代码如何验证(或测试)?伪造驱动的验证和测试

获取原文
获取原文并翻译 | 示例
获取外文期刊封面目录资料

摘要

Formal verification has advanced to the point that developers can verify the correctness of small, critical modules. Unfortunately, despite considerable efforts, determining if a “verification” verifies what the author intends is still difficult. Previous approaches are difficult to understand and often limited in applicability. Developers need verification coverage in terms of the software they are verifying, not model checking diagnostics. We propose a methodology to allow developers to determine (and correct) what it is that they have verified, and tools to support that methodology. Our basic approach is based on a novel variation of mutation analysis and the idea of verification driven by falsification. We use the CBMC model checker to show that this approach is applicable not only to simple data structures and sorting routines, and verification of a routine in Mozilla’s JavaScript engine, but to understanding an ongoing effort to verify the Linux kernel read-copy-update mechanism. Moreover, we show that despite the probabilistic nature of random testing and the tendency to incompleteness of testing as opposed to verification, the same techniques, with suitable modifications, apply to automated test generation as well as to formal verification. In essence, it is the number of surviving mutants that drives the scalability of our methods, not the underlying method for detecting faults in a program. From the point of view of a Popperian analysis where an unkilled mutant is a weakness (in terms of its falsifiability) in a “scientific theory” of program behavior, it is only the number of weaknesses to be examined by a user that is important.
机译:正式验证已经发展到可以使开发人员验证小型关键模块的正确性的程度。不幸的是,尽管付出了巨大的努力,但是确定“验证”是否可以验证作者的意图仍然很困难。先前的方法难以理解,并且通常在适用性方面受到限制。开发人员需要他们正在验证的软件方面的验证范围,而不是模型检查诊断。我们提出一种方法,允许开发人员确定(并更正)他们已验证的内容以及支持该方法的工具。我们的基本方法基于突变分析的新颖变体和由伪造驱动的验证思想。我们使用CBMC模型检查器显示该方法不仅适用于简单的数据结构和排序例程,还适用于Mozilla JavaScript引擎中的例程验证,还适用于了解正在进行的验证Linux内核读取复制更新机制的工作。此外,我们表明,尽管随机测试具有概率性质,并且与验证相比,测试不完整,但相同的技术,经过适当的修改,仍适用于自动测试生成和形式验证。从本质上讲,幸存的突变体数量决定了我们方法的可扩展性,而不是检测程序错误的基本方法。从Popperian分析的观点来看,在程序行为的“科学理论”中,未经杀死的突变体是弱点(就其可证伪性而言),只有用户要检查的弱点数才是重要的。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号