提问者:小点点

在用户界面上执行变异测试是一种良好的做法吗?


我和我的队友很难理解是否可以/应该对涉及Swing类的JUnit测试进行突变测试。

更准确地说,我们目前正在使用Junit 4和Assertj Swing来测试接口,以完成大学的测试任务(使用TDD)。我们还使用PITEST作为突变测试框架。

我们使用WindowBuilder插件为Eclipse构建Swing类,因此我们对类的结构没有太多控制。单元测试都是绿色的,但当运行pit时,这些类中的pit抛出了大量异常,测试失败得很惨。你可以在travis上看到maven日志。

由于我们才刚刚开始了解测试世界,因此,如果有人能提出建议,真正处理这些事情,我们将不胜感激。

非常感谢你。


共1个答案

匿名用户

突变测试用于测试测试覆盖率,而不是测试代码。因此,当您的测试失败时,一切正常,您的测试覆盖率也可以接受。

问题是UI测试很难编码,也不太稳定(至少几年前是这样,尤其是Linux)。所以突变测试没有为它们提供额外的价值。UI代码中的任何微小变化都可能提供无法解释的堆栈跟踪,所以你不能说你的测试是好的还是Swing太复杂了,可以很容易地得到(Swing抛出大量异常,所以任何微小的变化都可能引发其中一个)。

我的建议是标准的:将您的UI代码与业务逻辑分开,并为您的业务类提供正常测试。在这种情况下,您的突变测试可能是合理的。