在用户界面上执行突变测试是好的做法吗?

我和我的队友很难理解是否可以/应该在引用 Swing 类的 JUnit 测试上进行突变测试。

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

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

由于我们刚刚开始了解测试世界,因此非常感谢实际处理这些事情的人的建议。

非常感谢。


慕盖茨4494581
浏览 86回答 1
1回答

蝴蝶刀刀

突变测试用于测试您的测试覆盖率,而不是您的代码。所以当你的测试失败时没关系,你的测试覆盖率是可以接受的。问题是 UI 测试很难编码,而且它们不是很稳定(至少几年前是这样,尤其是对于 Linux)。所以变异测试没有为他们提供额外的价值。UI 代码中的任何小变化都可能提供无法解释的堆栈跟踪,因此您不能说您的测试是否好,或者 Swing 是否太复杂并且可以轻松搞定(Swing 会抛出大量异常,因此任何小变化都可能引发其中之一他们)。我的建议是标准的:将您的 UI 代码与业务逻辑分开,并为您的业务类提供正常测试。在这种情况下,您的变异测试可能是合理的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java