【问题标题】:Automated Testing Framework自动化测试框架
【发布时间】:2012-02-25 17:56:30
【问题描述】:
我正在尝试为我们工作中的一些内部 Web 服务 (java) 构建一个自动化测试框架。每个服务都有一组 API (3-5),虽然这可能相对容易实现,但问题在于一些不表现为纯函数的 API,例如:像 persistX 这样的东西,它可以在数据库中存储一些东西,并且在失败的情况下返回异常。
因为这里没有输出,所以没有简单的方法来验证。
所以我想知道这是否可以概括一点,比如在测试 API 时,用户可以向某种框架提供一个简单的插件或脚本来验证测试。如果有人可以告诉我一些更好的想法或任何相同的资源,这只是一个想法。
谢谢
【问题讨论】:
标签:
java
testing
frameworks
automated-tests
【解决方案1】:
我推荐robot framework。它是一个用python编写的关键字驱动框架。因此,您可以使用 jython 在 JVM 中运行它,这意味着您可以使用 java 代码(当然也可以是 python)对其进行扩展。我已经成功地使用它来调用 API,然后通过查看数据库或查询文件系统来验证结果。
它也适用于 .NET 平台,具有用于测试前端的 selenium 模块、jenkins 插件和其他几个工具。它非常可扩展和灵活。
【解决方案2】:
您正在查看的是黑盒和白盒测试的应用以及支持两者的工具。
对于返回正确响应的 Web 服务,您可以通过验证返回响应中的数据来执行黑盒测试。 SoapUI 是最好的工具。
对于不表现为纯函数的 API,您可以通过验证其副作用(如持久性、事件生成、日志记录等)来进行白盒测试。为此,您喜欢可编程工具和 SoapUI可能是也可能不是正确的选择。
我们在工作中和在评估多个工具/框架(SoapUI、RSSPec、Robotframework)之后,我选择了Spock。为什么是斯波克?
- 它允许您以 BDD 风格编写意图揭示测试
- 我们是 Java 商店,我们也希望使用同样熟悉的语言进行自动化,但使用简化的语法糖。 spock 都是基于 groovy 的。
- 出色的 Webdriver/Selenium 2 支持(包括 PageFactory)与 Geb
- 它建立在 JUNIT 之上,因此可以利用 JUNIT 的所有插件(代码覆盖率、hudson/jenkins 集成等)
- 大量的 Web 服务 API 和 XML DSL(对于简单的场景无需使用 XPATH)
- 简化设置(与 robotsframework 不同,它不需要 python、jython 设置)
等等……