3

我正在研究如何最好地自动化集成测试(我的意思是完全在我们的应用程序中完成用例)

问题

很好地涵盖了“为什么”和“什么”方面。

使用数据库自​​动集成测试 C++ 应用程序的问题意味着 xUnit 框架是创建和执行集成测试的好方法。xUnit 真的非常适合这项任务吗?有需要注意的常见问题吗?遵循的好方法?

有没有更好的方法(可能没有购买 HP / 以前的 Mercury 工具套件)?

我这个项目的特定环境是 Java / SpringSource / Hibernate,但我也对 .Net 平台的建议感兴趣。

4

3 回答 3

3

使用数据库自​​动集成测试 C++ 应用程序的问题意味着 xUnit 框架是创建和执行集成测试的好方法。xUnit 真的非常适合这项任务吗?有需要注意的常见问题吗?遵循的好方法?

JUnit 和 TestNG 最初是单元测试框架,但也可用于集成测试。所以对我来说,答案是肯定的,它们非常适合集成测试,例如测试服务--> 域> 持久性--> 数据库层(实际上我稍后会回来讨论集成测试)。进行涉及数据库的集成测试时,棘手的事情之一就是数据。诸如DbUnit之类的工具可以提供帮助,并且通常用于在运行每个测试之前将数据库置于已知状态(并对数据库内容执行断言)。另一种方法是在事务中运行测试并在测试结束时回滚事务。Spring 可以很容易地做到这一点,unitils也是如此图书馆。无论如何,最佳实践是尽可能避免相互依赖的测试(如您提供的链接中所述),它们只是一场噩梦。

有没有更好的方法(可能没有购买 HP / 以前的 Mercury 工具套件)?

据我所知,此类工具更多是端到端的测试工具,即功能测试工具。因此,如果通过集成测试(对我来说意味着一起测试几个组件)你实际上是指功能测试(这是我对完整用例的理解),我建议看一下:

请特别注意粗体字(实际上都是很棒的工具,但我确信粗体字提供了良好的自动化功能)。而且因为 HTTP 和 SOAP 是标准(当然这不适用于 Swing UI 测试工具),这些工具并不是真正特定于 Java 的(即使测试本身是用 Java/Groovy 为 SoapUI 编写的)。顺便说一句,Selenium 支持许多编程语言)。

于 2009-11-04T20:48:41.293 回答
1

多线程可能是个问题,因为 JUnit 不会在其他线程中发现异常。有一些关于此的 Java Puzzlers。您还需要发明自己的方法来进行统计测试,并且断言方法可能有点粗糙。我还认为 JUnit 的语义有点不清楚(例如,JUnit 对每个测试方法使用一个单独的实例)。由于这些原因,我转向了 TestNG,在我看来,这是一个设计更好的框架。JUnit 是使用极限编程设计的这一事实有时会显示出来。

于 2009-11-04T20:07:48.927 回答
0

如前所述,您可以使用 xUnit 框架来完成,但如果您想要混合使用 Java 和 .Net,或者 Web 应用程序和桌面应用程序,或者为整体情况增加一些复杂性,那么您将无法仅使用一个框架来完成。单元测试框架。因此,您将需要许多测试工具、许多测试环境、许多测试脚本开发人员(例如,一个用于 Java 单元测试,一个用于 .Net 测试)......这将增加复杂性、麻烦和成本......

至于您提到的 HP Quick Test Pro,它应该可以满足您的大部分需求。我的意思是大多数,因为它可能在某些领域不适合(无法通过 Citrix 虚拟化在应用程序上运行脚本),但在大多数情况下,它会完成这项工作。适用于 java/.net/web 等(有专门用途的插件)。QTP 通常在 GUI 对象上运行,因此您可以为用户用例准备测试用例,并且可以以普通用户执行操作的方式执行测试(如果需要,您必须故意将其减慢到用户速度)。
您可能需要一种工具、一种测试环境、一种测试脚本开发人员 (VB)。它很贵,但如果是为了公司,从长远来看应该是更好的选择。
如果您从公司的角度询问,如果您决定将它用于您的整个测试部门/团队,它将与 HP 质量中心配合得很好。除非您使用 IBM 解决方案,否则他们拥有自己的工具套件作为其软件交付平台的一部分,包括Rational Robot

于 2009-11-07T15:04:37.663 回答