在用户界面上执行突变测试是好的做法吗?
Is it good practice to perform mutation testing on user interfaces?
我和我的队友很难理解是否可以/应该在引用 Swing 的 JUnit 测试上进行变异测试 类。
更准确地说,我们目前正在使用 Junit 4 和 Assertj Swing 来测试大学测试作业(使用 TDD)的界面。
我们还使用 PITEST 作为突变测试框架。
我们使用 Eclipse 的 WindowBuilder 插件构建了 Swing 类,因此我们无法控制 类 的结构。
单元测试都是绿色的,但是当 运行 坑时,这些 类 中的坑会抛出大量异常,测试会惨败。
您可以在 travis 上看到 maven 日志。
由于我们刚刚开始了解测试世界,因此非常感谢实际处理这些事情的人的建议。
非常感谢。
突变测试用于测试您的测试覆盖率,而不是您的代码。所以当你的测试失败时没关系,你的测试覆盖率是可以接受的。
问题是 UI 测试很难编码,而且它们不是很稳定(至少几年前是这样,尤其是 Linux)。所以变异测试没有为他们提供额外的价值。 UI 代码中的任何小改动都可能提供无法解释的堆栈跟踪,因此您无法判断您的测试是否良好,或者 Swing 是否过于复杂并且可以轻松搞定(Swing 抛出大量异常,因此任何小改动可以激怒其中之一)。
我的建议是标准的:将你的UI代码从业务逻辑中分离出来,为你的业务提供正常的测试类。在这种情况下,您的突变测试可能是合理的。
我和我的队友很难理解是否可以/应该在引用 Swing 的 JUnit 测试上进行变异测试 类。
更准确地说,我们目前正在使用 Junit 4 和 Assertj Swing 来测试大学测试作业(使用 TDD)的界面。 我们还使用 PITEST 作为突变测试框架。
我们使用 Eclipse 的 WindowBuilder 插件构建了 Swing 类,因此我们无法控制 类 的结构。 单元测试都是绿色的,但是当 运行 坑时,这些 类 中的坑会抛出大量异常,测试会惨败。 您可以在 travis 上看到 maven 日志。
由于我们刚刚开始了解测试世界,因此非常感谢实际处理这些事情的人的建议。
非常感谢。
突变测试用于测试您的测试覆盖率,而不是您的代码。所以当你的测试失败时没关系,你的测试覆盖率是可以接受的。
问题是 UI 测试很难编码,而且它们不是很稳定(至少几年前是这样,尤其是 Linux)。所以变异测试没有为他们提供额外的价值。 UI 代码中的任何小改动都可能提供无法解释的堆栈跟踪,因此您无法判断您的测试是否良好,或者 Swing 是否过于复杂并且可以轻松搞定(Swing 抛出大量异常,因此任何小改动可以激怒其中之一)。
我的建议是标准的:将你的UI代码从业务逻辑中分离出来,为你的业务提供正常的测试类。在这种情况下,您的突变测试可能是合理的。