Junit - 程序验证与白盒模糊测试?
我知道程序验证是计算机工程的一个分支 - 但它在现实世界代码库中的实际应用受到组合爆炸的限制。
我还了解到,作为设计软件变更的一部分,对于现有 Java 框架的修改,提前考虑算法的白盒、边界和黑盒测试会很有帮助。 (有些人将这种吊床驱动开发称为“编码前思考”。)
假设您采用这种思维并将其嵌入 junit 样式测试中,我假设内容的计算机科学名称严格是“白盒测试/模糊测试”,而不是足以构成“程序验证”。
所以我的问题是 - junit 测试 - 白盒模糊测试还是程序验证?
I understand that program verification is a branch of computer engineering - but that it's practical application to real world code bases is limited by combinatorial explosion.
I also understand that as part of designing your software change, for a modification to an existing Java framework, it's helpful to think about whitebox, boundary and blackbox tests for your algorithm, in advance. (Some people call this hammock driven development - thinking before you code.)
Assuming you take this thinking and embed it in junit style tests, I'm assuming that the Computer Science name for the contents is strictly 'whitebox testing/fuzzing' and not sufficient to comprise 'program verification'.
So my question is - junit tests - whitebox fuzzing or program verification?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
程序验证是在与您的应用程序相关的数学模型上证明数学属性(它可以从编程语言的形式语义或手动导出,例如编写对 Web 服务进行建模的行为类型)。
看一下 pi-calculus 来理解我的意思。
当然,junit与形式化的程序验证无关。
Program verification is done proving mathematical properties on a mathematical model which is related to your application (it can be derived from the formal semantic of the programming language or by hand, like writing behavioral types that models your web service).
Take a look at pi-calculus to understand what I mean.
Of course, junit has nothing to do with formal program verification.