使用Selenium API进行WebApplication GUI测试是验证应用程序行为的重要方法(当然只有特定程度)。这里的主要问题是对其他应用程序的依赖性,这些资源也被其他应用程序使用。虽然应用程序(测试中)部署在测试平台上,但其他正在测试的应用程序也在那里部署,并且正在使用这些数据库。这样的结果是测试将无法正常工作,因为应用程序会相互干扰并操纵或删除它们所依赖的其他测试数据!
“企业”系统的体系结构不依赖于Web服务,一个应用程序可以从另一个应用程序域中检索数据。 相反,它们通过数据库链接紧密耦合 ,通过自定义的读取,写入执行权限,使每个应用程序都能够通过JPA和EJB检索所需的数据。
我最喜欢的!对于每个应用程序,都存在一个删除RESTful WebService,它充当数据库和相应WebApplication之间的层,以及 依赖 应用程序的通信通道。
第二个是通过执行逻辑顺序执行不同Web应用程序的测试执行,该执行逻辑在执行开始之前也替换数据库(数据库设置)。
可维护性方面可能是最糟糕的一个,但我也想提到这个选项,因为第二个可能导致长时间空闲。因此,对于每个Web应用程序,都存在一个独特的测试执行环境,它提供所有相关数数据库替换的工作方式与第二种方法的描述相同。
答案 0 :(得分:1)
我不太确定这个平台是如何运作的
这里的主要问题是对其他应用程序的依赖性,这些资源也被其他应用程序使用。虽然应用程序(测试中)部署在测试平台上,但其他正在测试的应用程序也在那里部署,并且正在使用这些数据库。
但每个应用程序都应该拥有自己的数据库和专用资源。即使你的integration tests依赖于其他SUT,这也不会影响它的内部运作。毕竟它是一个黑盒子。同样适用于UI测试 - 为什么他们应该(明确地)关注SUT数据库中发生的事情?
因为应用程序会相互干扰并操纵或删除他们所依赖的其他测试数据!
恕我直言,你需要的是更好的测试夹具策略。 Here are解释说:
Fresh fixture
最小夹具
共享夹具
答案 1 :(得分:0)
看起来你已经有了答案。选项#3适用于大型数据库,因为很难“模拟”那么多数据。我一直在为拥有数百万条目的数据库这样做,以确保我们的查询不会影响应用程序性能。
选项#1显然是小型应用程序的最佳选择。它确实需要额外的努力,但在前端和后端之间进行明确的分离是非常有价值的。