Pex(及其输出)是否适合企业环境?

时间:2012-09-06 12:54:58

标签: c# .net unit-testing pex

我喜欢Pex的想法 - 通过静态代码分析自动生成单元测试 - 但是该工具实际生成的测试是可怕的,丑陋的,与Pex模块紧密耦合,难以阅读和理解等。

这样的工具是否真的适合(在当前状态下)用于企业环境,其中重点必须是易于维护?

或者我误解了Pex的用途?

4 个答案:

答案 0 :(得分:1)

事实上,你误解了预期用途。

Pex是一款白盒测试工具。它根据应测试的代码分析生成测试用例。这样做的原因是检测并测试边缘情况。所以基本上,你甚至不应该改变自动生成的测试。

Pex无法取代您的正常单位测试。这只是一个额外的工具。

答案 1 :(得分:1)

这似乎是一个主观的问题......

我会说是的,在给定框架/ API中编写的测试通常与该框架紧密耦合。 Pex的目的不是生成“可读”测试,而是确保给定约束集的代码覆盖率。如果这对你的产品很有价值,那么它是合适的 - 当然我敢打赌,对于给定的团队和给定的代码库,这将提供价值。

每个企业都不同,但产品和代码决定了测试工具的适用性。我建议有问题的是Pex对给定代码库的价值,无论有关组织如何。

答案 2 :(得分:1)

我在一家大型金融机构使用过pex并建议使用它,但仅限于非常具体的情况。我认为pex擅长它的功能(如其他地方所述,白盒测试以找到边缘情况),但测试没有显着的长寿,因为它们非常紧密耦合。

基本上pex非常适合产生覆盖率。如果您没有测试并希望快速使用,请使用Pex。但是,我建议您不要再使用它,而是通过手写测试强制执行新代码的标准,以满足商定的覆盖率指标。

通过这种方式,pex的脆弱测试随着时间的推移被更换,更灵活,质量更高的测试。

答案 3 :(得分:0)

Pex对于测试不依赖于任何外部的复杂算法非常有用。例如,它无法帮助您在SQL语句或文件访问中查找边缘情况。但是,为了查找边缘情况并增加代码覆盖率,除了正常的单元测试外,它还非常有用。