使用哪种测试方法?

时间:2011-12-06 09:52:01

标签: c# unit-testing testing

首先,我是测试软件的新手。我想我很绿。仍然为这个项目我需要它来确保所有的计算都正确完成。目前我正在使用单元测试来测试C#中的每个模块,以确保它能够完成它应该做的事情。

我知道一些不同的测试方法(集成,单元​​测试),但我似乎无法在测试中找到任何关于测试的好书或参考资料。大多数em都在一个特定领域(如单元测试)。这种方式很难(对我来说)很好地掌握如何最好地测试软件,以及使用哪种方法。

例如,我也在使用GUI元素,我应该测试它们吗?我应该只是通过使用它来测试它,然后在视觉上确认所有都是有序的吗?我知道这取决于它是否至关重要,但你在哪一点上说“我们不测试那个,因为它不是真的相关/重要”?

总结:如何选择最佳测试方法,以及在使用该方法测试软件时在哪里绘制线条?

3 个答案:

答案 0 :(得分:2)

有几种测试,但最重要的是单元测试,组件测试,功能测试和端到端测试。

  • Unit tests检查您的类是否按预期工作。(JUnit)。这些测试是测试环境的基础,因为它们会告诉您的方法是否有效。您的目标是100%覆盖,因为这些是您测试中最重要的部分。
  • Component tests检查几个类在代码中如何协同工作。组件可以是代码中的很多东西,但它基本上不仅仅是单元测试,而是功能测试。目标覆盖率约为75%。
  • Function tests正在测试您实施的实际功能。例如,如果您想要一个将某些输入数据保存到数据库的按钮,那么这是该程序的功能。这就是你测试的。这里的目标覆盖率约为50%。
  • End-to-end tests正在测试您的整个申请。这些可能非常强大,您可能无法并且不想测试所有内容,此测试用于检查整个系统是否正常工作。目标覆盖率约为25%。

这也是重要的顺序。

虽然这些东西中没有“更好”的东西。您可以运行以检查代码是否按预期工作的任何测试都同样好。

您可能希望自动化大多数测试:因此您可以在休息时进行测试,或者您的服务器可以在您下班时测试所有内容,然后在早上检查结果。

GUI测试被认为是测试中最难的部分,有几种工具可以帮助您实现这一点,例如Selenium用于浏览器GUI测试。 像Model-View-Presenter这样的几种架构模式试图将应用程序的GUI部分分开,并尽可能地使用尽可能简单的GUI来避免错误。如果你能成功地分离你的图形,你将能够模拟出应用程序的gui部分,并在大多数测试过程中将其遗漏。

作为参考,我建议Elfriede Dustin提供“有效的软件测试”,但我不熟悉有关该主题的书籍;可能会有更好的。

答案 1 :(得分:0)

它实际上取决于您需要测试的软件。如果你最感兴趣的是背后的逻辑(计算),那么你应该编写一些集成测试,不仅要测试单独的方法,还要测试从开始到结束的工作流程,所以尝试模拟典型用户会做什么。我很难想象用户会调用一种特定的方法 - 很可能是一些特定的方法序列。如果计算没问题 - 那么GUI显示错误的可能性很小。除了自动化GUI是一个耗时的过程,它需要大量的技能和精力来构建和维护,因为每一个简单的改变都可能会制造一切。我的建议是从编写具有不同值的集成测试开始,这些值将涵盖最常见的场景。

答案 2 :(得分:0)

此答案特定于您所涉及的应用程序类型 - WinForms 对于GUI使用MVC / MVP模式。避免在代码隐藏文件中编写任何代码。这将允许您对UI代码进行单元测试。当我说UI代码时,这意味着您将能够测试您的代码,当单击按钮或需要在UI事件发生时执行任何操作时,将调用该代码。

您应该可以对每个类文件(UI代码除外)进行单元测试。这主要集中在基于状态的测试上。

此外,您还可以为涉及多个类文件的测试编写交互测试用例。这应该涵盖大部分流量。

因此,有两点需要关注基于状态的测试交互测试