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

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

我的代码的验证(或测试)程度如何?

DOI:
--
复制
发表时间:
2018
期刊:
International Conference on Automated Software Engineering
影响因子:
--
通讯作者:
J. Holmes
J. Holmes
中科院分区:
--
文献类型:
--
作者:
Alex Groce;Iftekhar Ahmed;Carlos Jensen;P. McKenney;J. Holmes

文献摘要

参考文献

被引文献

相似文献

正式的验证已提出,不幸的是,开发人员可以验证小型,关键的模块的正确性。开发人员需要验证他们正在验证的软件,而不是模型检查诊断。确定他们已经验证的是什么,并支持我们的基本方法。证明这种方法不仅适用于简单的数据结构和分类例程,并适用于Mozilla的JavaScript引擎中的例程,还适用于验证Linux内核的持续努力此外,我们表明,尽管随机测试的概率性质以及测试不完整的趋势,但与验证相反,相同的技术和适当的修改适用于自动化测试以及正式验证从本质上讲,驱动我们方法的可扩展性的是生存突变体的数量,而不是从Popperian分析的角度来检测错误的基础方法。在一个未知的突变体中,在程序行为的“科学理论”中是一个弱点(就其可变性而言),而用户只需要检查弱点的数量才是重要的。
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.
DOI: 10.1109/icst.2011.32
发表时间: 2011-03
期刊: 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation
影响因子: --
作者:
David Schuler;A. Zeller
通讯作者: David Schuler;A. Zeller
检查覆盖率:预言机质量的指标
DOI: 10.1002/stvr.1497
发表时间: 2013
期刊: Software Testing
影响因子: --
作者:
David Schuler;Andreas Zeller
通讯作者: Andreas Zeller
DOI: 10.1109/tse.2014.2372785
发表时间: 2015-05-01
影响因子: 7.4
作者:
Barr, Earl T.;Harman, Mark;Yoo, Shin
通讯作者: Yoo, Shin