我正在研究如何最好地自动化集成测试(我的意思是完全在我们的应用程序中使用完整的用例)
问题
很好地涵盖了“为什么”和“什么”方面。
问题Automated integration testing a C++ app with a database意味着xUnit框架是创建和执行集成测试的好方法。 xUnit非常适合这项任务吗?是否有共同的问题需要注意?一个好的方法可以遵循?
是否有更好的方法(可能没有购买HP /以前的Mercury工具套件)?
我对这个项目的具体环境是Java / SpringSource / Hibernate,但我也对.Net平台的建议感兴趣。
答案 0 :(得分:3)
问题Automated integration testing a C++ app with a database意味着xUnit框架是创建和执行集成测试的好方法。 xUnit非常适合这项任务吗?是否有共同的问题需要注意?一个好的方法可以遵循?
JUnit和TestNG最初是单元测试框架,但也可用于集成测试。所以对我来说,答案是肯定的,它们非常适合集成测试,例如:测试服务 - >域>持久性 - >数据库层(我实际上稍后会回到集成测试)。进行涉及数据库的集成测试时,其中一个棘手的问题是数据。诸如DbUnit之类的工具可以提供帮助,通常用于在运行每个测试之前将数据库置于已知状态(并对数据库内容执行断言)。另一种方法是在事务中运行测试并在测试结束时回滚事务。 Spring允许这样做非常容易,unitils库也是如此。在任何情况下,最佳做法是尽可能避免相互依赖的测试(如您提供的链接中所述),它们只是一场噩梦。
是否有更好的方法(可能没有购买HP /以前的Mercury工具套件)?
据我所知,这些工具是更多的端到端测试工具,即功能测试工具。因此,如果通过集成测试(对我来说意味着将几个组件一起测试)实际上意味着功能测试(这是我对完整用例的理解),我建议你看一下这样的事情:
特别注意粗体的那些(所有这些都是很棒的工具,但我确信粗体的工具提供了良好的自动化功能)。并且因为HTTP和SOAP是标准(当然这不适用于Swing UI测试工具),这些工具并不是特定于Java的(即使测试本身是用Java / Groovy编写的SoapUI)。而BTW,Selenium支持许多programming languages)。
答案 1 :(得分:1)
多线程可能是个问题,因为JUnit不会在其他线程中获取异常。关于这一点,有一些Java Puzzler。您还需要发明自己的统计测试方法,断言方法可能有点粗糙。我还认为JUnit的语义有点不清楚(例如,JUnit每个测试方法使用一个单独的实例)。出于这些原因,我转而使用TestNG,我认为这是一个设计更好的框架。事实上JUnit是使用极端编程设计的,有时会显示出来。
答案 2 :(得分:0)
如前所述,您可以使用xUnit框架来实现,但是如果您想要混合Java和.Net,或者Web应用程序和桌面应用程序,或者为整体图片添加更多复杂性,那么您将无法实现它只有一个单元测试框架。因此,您需要拥有许多测试工具,许多测试环境,许多测试脚本开发人员(例如,一个Java单元测试,一个用于.Net测试)......这将增加复杂性,麻烦,成本... < / p>
至于HP Quick Test Pro,你提到它应该涵盖大多数你的需求。我的意思是大多数,因为可能存在一些不适合的领域(无法通过Citrix虚拟化在应用程序上运行脚本),但在大多数情况下它将完成这项工作。它适用于java / .net / web和其他东西(有专门用途的插件)。 QTP通常在GUI对象上运行,因此您可以为用户用例准备测试用例,并且可以以普通用户执行操作的方式执行测试(如果需要,只需要更快一点,您必须故意将其降低到用户速度)。
您可能需要一个工具,一个测试环境,一个测试脚本开发人员(VB)。这是昂贵的,但如果是公司,从长远来看,它应该是更好的选择
如果您从公司的角度提出要求,如果您决定将其用于整个测试部门/团队,那么它将与惠普质量中心合作。除非您使用IBM解决方案,否则他们将自己的工具套件作为其软件交付平台的一部分,包括Rational Robot