【问题标题】:Which kind of test for which part of the software?对软件的哪个部分进行哪种测试?
【发布时间】:2011-07-01 11:20:36
【问题描述】:
我是 TDD 新手,想知道我需要对软件的哪个部分进行哪种测试。
目前我的团队在 Netbeans 平台上创建了一个相对复杂的编辑器,我必须在其中集成一个外部编辑器并编写自己的东西。
那么我怎样才能为 GUI、自己的代码、集成代码做最好的测试呢?
我在哪里创建编码测试,我应该在哪里使用测试用例和测试人员?
我们正在考虑使用 scala 规范或 junit 进行编码测试。
感谢您的帮助!
【问题讨论】:
标签:
java
unit-testing
testing
scala
tdd
【解决方案1】:
作为一般规则,您应该考虑为您在课堂上编写的每个函数/方法编写一个测试用例。
在我们的 TDD 过程中,我们只需遵循这样的规则,即每个 Java 类必须有一个对应的 JUnit 类,该类包含该 Java 类的每个方法的 @Test 方法。
然后我们用“代码覆盖率”来跟踪它,它会告诉我们我们实际编写的代码有多少已经过测试。为此,我建议查看一个名为 Cobertura (link here) 的工具,它为我们提供了一种简单的可视化方法来检查我们的代码已测试的百分比。它的工作原理是简单地检测您的 JUnit 类为每个 Java 类测试了多少行代码。这将使您很好地了解您的代码中的哪些功能已经过或尚未经过测试。
我们通常的目标是测试大约 80% 的代码(虽然说起来容易做起来难)
考虑首先为您的高优先级功能编写测试用例以帮助您入门。
我们通常不会为 GUI 编写 JUnit。不确定是否有办法,但当应用程序经过通常的测试阶段时,我们将 GUI 留给测试人员进行测试。
希望这会有所帮助。
【解决方案2】:
这是非常主观的,但我建议清晰地分离您的 gui 并针对 gui 和业务层之间的接口编写可靠的单元测试。不要担心自动化 gui 测试。这自然会迫使您在各层之间创建清晰的关注点分离。
【解决方案3】:
GUI 是用于人机交互的,因此自动化 GUI 测试会导致严重失败。如果你想正确地测试 GUI,你只需要人类。
不过,您可以测试您的应用对不同用户操作的反应。尤其是,考虑测试您的应用应如何处理用户错误(例如,当字母被写入仅数字输入字段时)。
如果您不清楚单元测试、功能测试和集成测试之间的区别,请不要太在意。尽可能多地测试你认为必要的东西(同样不要忘记最坏的情况)。如有疑问,请记住,测试太多总比测试少好。