44、基于属性测试与编译中间语言的研究进展

属性测试与中间语言研究进展

基于属性测试与编译中间语言的研究进展

基于属性测试的验证框架

在软件开发过程中,测试与验证是确保代码质量的重要环节。基于属性的测试(PBT)作为一种有效的测试方法,近年来受到了广泛关注。

在一次案例研究中,研究团队对未以验证为目的编写的现有代码进行了验证。对于约2000行的Coq代码(其中约1000行严格处理生成和不可区分性,另外约1000行是传递使用的定义),验证证明需要约2000行代码。研究团队认为,未来通过更好地利用无点推理和不可计算集库,这个数字有望进一步减少。

在生成测试数据时,研究团队发现了一些问题。最初在生成过程中忘记改变数据类型,而这些问题在证明过程中被发现并修复。修复这些完整性错误对生成器效率影响很小,但能提供更好的测试效果。

相关工作方面,Dybjer等人在依赖类型理论中结合测试和证明的开创性工作,引入了验证生成器的思想,并将满射性(完整性)确定为最重要的验证属性。他们将生成器建模为将自然数的有限二叉树转换为域元素的函数,并从第一原理证明了几个复杂度与红黑树示例生成器相似的生成器的满射性。不过,研究团队在此基础上更进一步,构建了一个用于PBT的通用验证框架。通过像QuickCheck那样分离种子和大小,研究团队对可构造数据的大小有了更多控制。虽然这使得形式验证变得更困难,因为需要在证明中明确考虑大小,但通过如Unsized和SizeMonotonic这样的类型类支持组合大小推理。而且,研究团队的检查器不是固定形状的,而是以模块化的方式构建和验证的。

Wilson曾尝试将PBT引入Coq,创建了一个简化的类似QuickCheck的工具,用于为一小类可测试属性自动生成测试输入。但其工具不支持在Coq中编写生成器,因此无法证明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值