我为一个中层团队工作,我一直在使用 SOAP UI 手动测试 Web 服务。我的任务是让回归测试用例自动化。我们现在没有任何自动化团队,因此我可以完全自由地使用我想要的任何工具,并让我的经理知道哪种工具适合..但是我还没有学习自动化测试。任何人有任何关于哪个将是自动化测试中间层的好工具的建议吗?我们有许多服务可以使用 SAP 中的结果来验证结果。例如,如果我在 Midtier 中测试商品的价格,我应该去检查返回的价格是否与 SAP 中的价格相匹配。我一直在手动执行此操作,我登录到 SAP 转到提供的交易代码并检查该商品的价格,
5 回答
我正在处理类似的请求。由于客户已经使用soapUI(OS)自动化了一些服务,我的工作有点困难。
操作系统版本没有数据源、数据循环测试步骤来制作数据驱动的测试套件,但总有一种解决方法。
您甚至可以使用开源版本来实现三种流行的自动化框架。
动作驱动框架 - 要将这个框架应用于soapUI,您必须在服务的设置、执行和验证中确定一些常见的测试步骤。一旦确定,将它们分开在测试套件和/或测试用例中,并简单地调用适当的测试套件/测试步骤。
例如:我有一个测试步骤,验证服务已在数据库中输入了一个订单条目,因此我将创建一个测试套件 + 测试用例,并在其中添加一个 jdbc 测试步骤以根据我提供的数据。查询将被参数化。在实际脚本中,我将执行服务并提取运行 db 查询所需的所有值。这些值将通过运行测试测试步骤传递给可重用的测试用例。
需要记住的几件事是,如果您有大量测试用例/参数并认为需要修改服务,则将参数放入 excel 文件并使用测试套件设置脚本区域中的 groovy 加载它们。
您需要 scriptom api 才能使用 excel 或 Jxl(更复杂的实现)
数据驱动框架,在这个框架中,您基本上确定要在服务上运行的不同场景并使用相关数据填充 excel,然后使用 groovy 和 scriptom 或 jexcel 或 jxl api 循环遍历 excel 中的所有行并执行服务具有不同的数据元素。这种方法可以随心所欲地复杂化,也可以随心所欲地简单化。
关键字驱动的框架——这可能是所有要实现的最复杂的框架,因为它需要您进行大量的规划、开发等工作。我目前正在设计这样一个框架。如果没有保密协议,我会和你分享一些细节。
我也知道您是 groovy 的新手,您应该查看 soapUI 和 groovy 的网站,他们有很多非常好的示例,并记住总是有 stackoverflow 来回答您的问题。
让我知道你是如何通过这项努力做出来的。
我们在一个大型项目中所做的是使用许多连接的遗留系统(200 多个服务):
- 对于每个服务,我们创建了带有正确断言的 SoapUI 项目,这些断言反映了服务的优点(连接性、功能性等)
- 我们设置Hudson来运行服务的 SoapUI 项目列表。记录所有执行的服务(请求、响应)
- 我们创建了 ant 作业来分析记录的响应并创建每日报告(也在 Hudson 上运行)
我们还通过在服务器日志中搜索模式来接触异步服务。这里有一个 SoupUI 项目创建约定(命名、所需的断言等)很重要。
我在类似情况下所做的事情(需要测试一个非常复杂的、往往会出现质量问题的第三方应用程序):我使用常规的 JUnit 4 环境编写了一些单元测试,但我没有测试本地 java 类,而是执行了Web 服务调用并检查响应。如果您需要针对 SAP R/3 后端验证结果,也可以使用http://service.sap.com/connectors提供的 Java 连接器 (JCo) 。缺点是 - 您显然需要知道如何用 Java 编写测试代码。
如果你想自动化你的 web 服务回归测试,你可以使用 Soap-UI Pro。自动化在soapui 中非常简单,我也在做同样的事情。我已经使用soap ui自动化了我的所有航班集成网络服务。您可以将 groovy 脚本语言用于复杂场景。
谢谢,哈努曼
如果您的 Web 服务是 REST,只需先使用 REST 客户端(Chrome 插件)使用 Maven 导出记录。创建Maven项目并添加插件exp:
<plugin>
<groupId>com.restlet.client</groupId>
<artifactId>maven-plugin</artifactId>
<version>2.3.0.1</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<file>API_Testing.json</file>
<selectedEnvironment>Staging</selectedEnvironment>
<licenseKey/>
</configuration>
</execution>
</executions>
</plugin>