那些使用过Pex的人,您认为 Pex 作为工具的优点和缺点是什么?
另外,作为TDD/单元测试的补充,您认为“自动化探索性测试”的优缺点是什么?
那些使用过Pex的人,您认为 Pex 作为工具的优点和缺点是什么?
另外,作为TDD/单元测试的补充,您认为“自动化探索性测试”的优缺点是什么?
Pex 让您编写参数化单元测试。从这个意义上说,它完全符合 TDD/单元测试流程:编写测试,让 Pex “探索”它,找到一些失败的测试,修复代码,等等。
最大的优势是您可以针对输入类别表达您的测试,而不仅仅是几个硬编码的值。这为编写测试提供了更多的表现力,也迫使你考虑你的代码应该完成的不变量/期望(即更难编写断言)。
我认为 Pex 作为一种探索性测试工具真的很有趣。在这方面,我认为它是我想交给 QA 使用的东西。
作为 TDD 工具,它需要一些工作,因为 TDD 是一项设计活动。但是,我确实喜欢 Peli 前进的方向。对于自动化辅助设计,有话要说。例如,仅仅因为 TDD 是一种设计工具,我就没有理由不能让自动化工具在我设计时指出潜在的边缘情况,对吧?从一开始就建立质量。
查看这篇文章,其中 Peli 在 TDD 风格的工作流程中使用 Pex。http://blog.dotnetwiki.org/TDDingABinaryHeapWithPexPart1.aspx
如果您查找有关编写理论的文献(谷歌 David Saff)——这是一种更通用的编写单元测试的方式,并使用 Pex 作为理论探索者,我发现从我目前的经验来看,生产力发生了一步变化。我刚刚写了一篇博文,详细介绍了我在 TDD 中使用 Pex 的经历:http: //taumuon-jabuka.blogspot.com/2009/01/theory-driven-development-using_11.html
正如我所说 - 我将其视为类固醇的 TDD!它绝不会取代 TDD,而是增强活动。
我真的很喜欢 Pex。它将为您从未梦想过的边缘案例提供测试,特别是如果您的团队很小并且编写方法的人与编写测试的人相同。
它还将提供您的方法将遵守的合同义务。
测试优先的开发使您可以构建代码以实现可测试性。在这方面,Pex 通过您的代码找到巧妙而笨拙的路径,帮助超越简单的覆盖率指标。
Pex with Moles 的主要优点是在进行 Brownfield 开发时能够跟踪副作用:运行 Pex 一次并保存输出,然后应用代码更改,然后再次运行 Pex 以查看损坏的地方。