我经常听到这样的论点:传统测试的一个缺点是它是不完整的,而合金分析是详尽无遗的(在一定范围内)。但是,第一个是谈论软件,第二个是谈论模型。这不是苹果与橘子的比较吗?
更新:我错了。比较不是这样的:testing code versus analyzing models
。这是一个从苹果到橙子的比较。相反,比较是:
Testing models versus analysis of models.
Testing code versus analysis of code.
这些是苹果对苹果的比较。
因此,无论工件是模型还是代码,您都可以比较两种分析:测试,对应于随机绘制相对少量的案例,不受大小限制,与小范围分析相比,涉及所有案例都在一个小范围内。
感谢Daniel Jackson解决了我的误解。
答案 0 :(得分:2)
首先,当Alloy被发明时,用于分析数据丰富的语言(如Z和VDM)中不是基于证据的模型的现有工具仅用于测试模型。每个场景都是由用户构建的,因此这种方法会产生创建场景的成本和少量的低覆盖率。
其次,Alloy已被用于查找代码中的错误:请参阅Mandana Vaziri,Mana Taghdiri,Greg Dennis,Juan Pablo Galeotti等人的博士论文。在所有这些中,发现了错误的传统测试。
第三,值得注意的是,有限 - 详尽的测试形式正在变得可行。 Sarfraz Khurshid是这项工作的先驱,他的论文是关于生成测试用例,最初是在一个名为TestEra的工具中,基于Alloy,后来(与Darko Marinov等人在一个名为Korat的工具中)交换了一个更加有节制的求解方法约束