2011-12-06 105 views
3

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

我了解一些不同的测试方法(集成,单元​​测试),但我不能似乎找到关于测试的任何好的图书资料一般。他们中的大多数都在某个特定领域(如单元测试)。这对于如何最好地测试软件以及使用哪种方法来说非常困难(对于我来说)。

例如,我也在使用GUI元素,我应该测试它们吗?我是否应该通过使用它来进行测试,然后通过视觉确认一切正常?我知道这取决于它是否至关重要,但是在什么时候你会说“让我们不测试它,因为它不是真的相关/重要”?

所以摘要:如何选择哪种检验方法是最好的,你在哪里画线,当你用它来测试你的软件的方法是什么?

+0

您使用哪种技术? WPF /的WinForms/ASP.net? –

+0

主要是Winforms,它是一个桌面应用程序。也没有真正需要访问数据库/互联网。只需在驱动器上配置文件即可。 –

回答

2

有几种类型的测试,但恕我直言,最重要的是单元测试,组件测试,功能测试和终端到终端的测试。 (JUnit)。

  • Unit tests检查您的类是否按预期工作。这些测试是测试环境的基础,因为它们可以告诉您的方法是否有效。您的目标是100%覆盖率,因为这些是您测试中最重要的部分。
  • Component tests检查几个类如何在代码中一起工作。组件可以是代码中的很多东西,但它基本上不仅仅是单元测试,还不及功能测试。目标覆盖率约为75%。
  • Function tests正在测试您实施的实际功能。例如,如果您想要一个将某些输入数据保存到数据库的按钮,那是程序的功能。那是你测试的。目标覆盖率在50%左右。
  • End-to-end tests正在测试您的整个应用程序。这些可以是相当强大的,你可能不能,也不想测试一切,这个测试是在这里检查整个系统是否工作。目标覆盖率约为25%。

这是非常重要的太顺序。

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

你可能最希望你的测试自动化:这样你就可以测试,而你有一个休息时间或您的服务器可以检验一切,而你是远离工作,然后检查在上午的结果。GUI测试被认为是测试中最难的部分,并且有几个工具可以帮助您,例如Selenium用于浏览器 - 图形用户界面(GUI)测试。 像Model-View-Presenter这样的几种体系结构模式试图分离应用程序的GUI部分,因此可以使用尽可能笨的GUI来避免错误。如果你能够成功地分离你的图形,你将能够嘲笑应用程序的GUI部分,并将其从大部分测试过程中排除出去。

仅供参考,我建议Elfriede Dustin的“有效软件测试”,但我对这个主题的书不熟悉;可能会有更好的。

0

它真的取决于你需要测试的软件。如果您主要关注背后的逻辑(计算),那么您应该编写一些集成测试,这些测试不仅可以测试单独的方法,还可以测试从开始到结束的工作流程,因此请尝试模拟典型用户将执行的操作。我很难想象用户调用某种特定的方法 - 很可能是某些特定的方法顺序。如果计算正确 - 那么GUI的显示错误的可能性很低。除了GUI的自动化是耗时的过程,它需要大量的技巧和能量来构建和维护,因为每一个简单的变化都可能会阻碍一切。我的建议是从编写集成测试开始,使用不同的值来涵盖最常见的场景。

0

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

你应该能够单元测试你的每个类文件(UI代码除外)。这将主要关注基于状态的测试。

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

所以有两件事要重点关注基于状态的测试交互测试

+0

所以你所建议的是从GUI中分离出逻辑,单元测试逻辑,并在点击按钮时指向方法(并通过本地化给出来自GUI的信息)? 我对交互测试有点不确定,应该自动执行这个(ala单元测试)还是自己尝试(即通过测试用例运行)?或者只是调用一个公共方法,例如calculateThis(),它具有来自不同类的多个方法? 无论如何,很好的答案! –

+0

当我说交互测试时,我并不是指自动UI测试。我不喜欢使用某些脚本进行自动UI测试。交互测试是一种使用模拟框架进行的端到端测试,或者使用手工创建。如果您的代码隐藏文件中没有代码,则应该可以执行此操作。另外,我会建议手动使用模拟框架/模拟来嘲弄你的配置文件,以便在单元测试期间不与实际文件交互。 –