REST API和UI的黑/灰盒测试

时间:2014-07-30 19:50:36

标签: testing fitnesse robotframework acceptance-testing

我们正在选择在我们公司开始使用(切换)自动验收测试的系统。 目前,大多数后端测试用例都是由我们以前的Python测试人员编写的,对于新的测试人员来说,它很难使用&保持它;对于UI,我们使用Robot framework

我想使用标准的东西,以便新的“街头典型测试人员”可以开始使用,但它应该非常灵活。

在我之前的工作中,测试人员使用SoapUI甚至Apache JMeter和Groovy脚本,但由于某些原因,我当前公司的人不喜欢它。

我们正在考虑Fitnesse或机器人框架。

要求:

  • 它应该用于后端(REST API,一些数据库检查)和UI测试
  • 它应该使用一种简单的语言,所以即使非程序员/测试人员也能理解测试用例(产品所有者应该能够看到是否涵盖了所有的接受标准)。
  • 它应该支持与Jenkins的集成
  • 它应该支持测试用例的版本控制,这样对于特定的产品版本,我们也可以检查相关的测试用例 现在我们使用TestRail(测试用例管理SW);所以如果它与它集成会很好(至少它可以编程,所以在那里发送测试结果)或完全取代它

我很快就和Fitnesse一起玩了,对我而言,表格形式看起来很难看。另外,初看起来文档并不好(我没有找到可能的“命令”,例如断言,一些循环)和文档,例如: RestFixture更糟糕(没有)。

此外,我没有看到任何数据库检查夹具。所以最后开发人员需要参与编程和维护一些自定义装置,对我来说使用我们自己开发的Python测试套件看起来更糟糕。

任何想法,经验?

谢谢, 拉狄克

PS:我在QA论坛上也问了这个问题,但是它比StackOverflow更不活跃,所以很抱歉这个重复。

2 个答案:

答案 0 :(得分:4)

我之前的情况差不多相似。我们必须在RF,fitnesse和IBM&STSF / STAX之间做出决定

我们选择了Robot Framework,效果很好。

  1. 它应该用于后端(REST API,一些数据库检查)和UI 测试 - 对于REST,RF的requests库以及各种DB库可以一起使用。
  2. 它应该使用简单的语言,所以即使是非程序员/测试人员也可以 了解测试用例(产品所有者应该能够看到 是否涵盖所有接受标准) - RF的目的是做到这一点。
  3. 它应该支持与Jenkins的集成 - RF有一个jenkins插件
  4. 它应该支持测试用例的版本控制,以便特定的 产品版本我们现在也可以查看相关的测试用例 - RF的tags功能适用于此
  5. 存在机器人框架API,因此根据集成要求可编程。

答案 1 :(得分:3)

我无法使用fitnesse,但robot framework符合您要求的所有内容以及更多内容。我选择它作为我的项目,原因如下:

  1. 您可以为基于SOAP - 和REST的服务,数据库验证,web-based UI testing甚至desktop application testing使用单一工具(以及单一报告格式) 。它也可以用于集成和单元测试,尽管通常有更好的工具可用于该工作。
  2. 您可以使用机器人测试来使用Dialogs库或自定义库来实施手动测试。我们看到,当他们运行机器人编写的手动测试时,测试仪吞吐量显着提高,而不是运行用Microsoft Word编写的类似测试。不幸的是,网上关于这个强大功能的内容并不多,但您可以获得所有验收测试的报告,版本控制,标记等功能,包括手动和自动化。
  3. 如果您花时间创建一个好的关键字库,非测试人员可以轻松读取(并且可写!)测试
  4. robot plugin for jenkins可以轻松浏览测试结果
  5. 机器人框架测试套件为plain text files,因此可以将它们与代码一起进行版本控制。
  6. 测试输出是一个非常简单易懂和解析的XML文件。它还可以生成xunit-style output以与其他工具集成。 Robot还提供了将此xml转换为人性化日志和报告的工具。 listener interface可以轻松捕获或流式传输实时测试结果。
  7. 越来越多的tools and editor plugins与Robot配合使用,因此您的团队成员可以使用他们最熟悉的工具。
  8. Robot is very extensible - 关键字库几乎可以用任何语言编写 - 本机在python中编写,如果使用jython运行则使用java,如果使用IronPython运行则使用.NET语言编写。使用remote library interface,您可以用任何可以打开套接字并充当服务器的语言编写关键字。
  9. 对于数据库测试的固定装置,有一个通用java-based database library和一个通用python based database library,可以连接到几乎任何公共数据库。还有一个专门用于与MongoDB交谈的库。

    与您关于版本控制的问题相关,机器人有一个非常强大的tagging mechanism,您可能会发现它很有用。例如,您可以使用他们使用的产品版本标记所有测试。然后,您只需检查一切,但使用机器人command-line options仅选择标记有特定版本的测试。作为标记的附带好处,报告按标记分解通过/失败统计信息。

    机器人不是一个完美的测试系统,但它是一个非常好的测试系统。我认为有许多同样好的测试框架,但我不确定是否存在客观上更好的测试框架。当然,对于你列出的对你很重要的东西,机器人框架会做你需要的一切。