我们如何测试我们编写的junit测试用例?我认为手动测试,即创建测试数据,断言预期和实际值没问题。但是最近我遇到了junit测试通过的情况,但是在UI测试期间特定的SUT代码失败了(这意味着junit测试无法防范bug)。如何测试junit测试
回答
我遇到了一个情况,即junit测试通过但 特定的SUT代码失败。
您的单元测试不应该忽略任何方法的功能或其副作用的覆盖范围。这就是代码覆盖率工具如Cobertura发挥作用的地方,并不是测试通过,但我们需要确保每个方法及其副作用都经过了单元测试/正确覆盖。
不,代码覆盖率和安慰剂一样糟糕。你可以有100%的线路覆盖率,但仍然与OP在同一个修复程序中?
像Cobertura这样的工具至少可以找到我们正在做的代码覆盖率有多少百分比,但是如果您不关心测试覆盖率,您会得到更多的错误。
重点是这些覆盖工具不会告诉您您的内部业务需求是否真正达到。
如果你的测试都通过,但实际代码这些测试被用来支付是失败,那么两种情况之一发生:
- 测试套件已不适应覆盖该具体用例,或
- 为覆盖该特定用例而编写的测试不足。
无论如何,你需要重写你的测试。有一个不允许你防止特定异常行为的测试套件会使你的测试套件毫无价值。
你也提到它在UI测试期间显式失败。这可能是由于用户界面和后端测试之间断开了期望。在这种情况下,可以将后端测试与UI的实际输入进行对齐,或者考虑实施涵盖UI工作流程的集成测试。
不应该得到一个downvote,但upvote。 – davidxxx
我们如何测试我们编写的junit测试用例?
您不应该。
单元测试不是绝对可靠的,但测试测试没有意义。
您应该将自动测试视为可执行规范。
一般来说,如果你的规格有误,你会被卡住。 对于自动测试,它是完全一样的东西。
为了避免这种问题,或至少减少它,我喜欢:代码
审查,并与开发团队的同行测试代码。
完成由业务团队验证的集成和业务测试的单元测试。
自动测试的持续改进。
很简单:只要在UI手动测试中检测到一个洞,应该更新自动测试,如果测试存在但缺少一些检查,或者如果缺少测试应该创建新测试。
要验证的单元测试的质量,我个人使用以下技术:
覆盖度量。拥有良好的线路和分支机构覆盖率是个好主意。但通常不可能有100%的线路覆盖率,而覆盖本身并不能保证代码实际上被测试,而只是从测试类中调用。
测试代码审查。我个人更喜欢用清晰的结构“设置 - 运行 - 断言”编写测试。如果缺少“运行”或“断言”步骤,则测试出现问题。
Mutation testing。有一些框架允许你以一种简单的方式修改你的生产代码(在代码上应用mutators),然后在修改的代码上运行你的单元测试,如果没有测试失败,这个代码没有被测试或测试不好。对于Java我使用PIT Mutation Testing。
此外,有时是有意义的应用不仅仅是单元测试,但也有一些其他的测试技术 - 手动测试,集成测试,负载测试等
- 1. Maven.surefire.util.SurefireReflectionException当测试Junit测试
- 2. 如何将JUnit 4测试添加到JUnit 3测试套件
- 3. 如何在JUnit测试
- 4. 如何Junit测试servlet-filters
- 5. 如何编写JUnit测试?
- 6. 如何做jUnit测试
- 7. 如何打包JUnit测试
- 8. 如何JUnit测试IntentService
- 9. 如何测试junit语句?
- 10. JUnit如何找到测试?
- 11. Hangman JUnit测试
- 12. spring junit测试
- 13. RxJava2 JUnit测试
- 14. 春JUnit测试
- 15. JUnit测试AspectJ
- 16. JUnit测试后
- 17. Java JUnit测试
- 18. FragmentActivity Junit测试
- 19. 的JUnit:测试
- 20. JUnit测试
- 21. 用jUnit测试
- 22. Junit REST测试?
- 23. 从jUnit测试
- 24. 测试弹簧3.0.1 JUnit测试
- 25. 用web驱动测试junit测试
- 26. JUnit测试方法,测试add方法
- 27. JUNIT测试用例测试网页
- 28. 编写JUnit测试来测试一组
- 29. Junit测试,创建其他测试
- 30. JUnit测试构造函数测试
[测试驱动开发(https://开头en.wikipedia.org/wiki/Test-driven_development)。事后并没有什么帮助,但是在编写生产代码之前编写测试可以确保测试正在测试你认为他们正在测试的内容。 –
如果您发现需要测试您的测试,某些事情已经绝望地错误。 – Makoto
测试软件的第一条规则:测试只能显示出现错误,而不是缺少错误。测试软件的第二条规则是:除非软件执行简单的逻辑操作,否则详尽的测试实际上是不可行的.http://www.testingexcellence.com/seven-principles-of-software-testing/ – jrook