Pex用户:我们对Pex和自动探索性测试的总体印象如何?
那些使用过Pex的人,我们认为Pex作为工具有什么优缺点?
另外,作为TDD /单元测试的补充,我们总体上认为"自动探索性测试"的优缺点是什么?
解决方案
回答
我认为Pex作为一种探索性测试工具确实很有趣。在这方面,我认为这是我想交给质量检查人员使用的东西。
作为TDD工具,它需要一些工作,因为TDD是一项设计活动。但是,我确实喜欢佩利的前进方向。对于自动化辅助设计,有话要说。例如,仅因为TDD是一种设计工具,没有理由我不能在设计时就使用自动化工具指出潜在的边缘情况,对吗?从一开始就提高质量。
查看这篇文章,其中Peli在TDD风格的工作流程中使用Pex。 http://blog.dotnetwiki.org/TDDingABinaryHeapWithPexPart1.aspx
回答
Pex允许我们编写参数化的单元测试。从这个意义上讲,它完全适合TDD /单元测试流程:编写测试,让Pex"探索"它,找到一些失败的测试,修复代码,等等。
最大的优点是,我们可以针对输入类别来表达测试,而不仅仅是几个硬编码的值。这为编写测试提供了更多的表现力,也迫使人们考虑代码应满足的不变性/期望(即编写断言更加困难)。
回答
我真的很喜欢Pex。它会为我们从未想过的版本案例提供测试,尤其是在团队很小且编写方法的人与编写测试的人相同的情况下。
它还将提供方法应遵守的合同义务。
回答
如果我们正在寻找写理论的文献(谷歌David Saff),这是编写单元测试的更通用的方法,并且使用Pex作为理论探索者,那么到目前为止,我发现生产力已经发生了巨大变化。
我刚刚写了一篇博客文章,详细介绍了我在TDD中使用Pex的经历,网址为:http://taumuon-jabuka.blogspot.com/2009/01/theory-driven-development-using_11.html
正如我所说,我将其视为类固醇的TDD!它绝不能替代TDD,但可以增强活动性。
回答
测试优先开发使我们可以构建代码以实现可测试性。在这方面,Pex通过代码找到了聪明而笨拙的路径,从而为简单的覆盖率指标提供了帮助。
带有Moles的Pex的主要功能是能够在进行Brownfield开发时跟踪副作用:运行一次Pex并保存输出,然后应用代码更改,然后再次运行Pex看看有什么坏处。