我想编写一个自动化测试套件的REST API。 当我们完成新的服务,我们想检查,以确保所有先前创建的服务都按预期工作。 上最好的工具,任何建议使用做到这一点? 我知道像Apigee有相应的工具,使您可以在同一时间测试1个服务,但我们想换一种方式与按钮的点击测试所有的服务。
Answer 1:
在我的工作中,我们最近整理了几个用Java编写的测试,我们建立了一些RESTful API中测试套件。 我们的服务可以调用它们依赖于其他RESTful API中。 我们把它分成两间套房。
- 套房1 -测试孤立每个服务
- 嘲笑任何对等服务的API取决于使用restito 。 其他选择包括其他驱动器 , wiremock和Betamax录像机 。
- 测试我们正在测试的服务和嘲笑都在一个JVM上运行
- 启动在码头服务
我肯定会推荐这样做。 它工作真的很适合我们。 其主要优点有:
- 对服务嘲笑,所以你不需要执行任何复杂的数据设置。 每次测试之前,你只需使用restito来定义你想怎么等服务的行为,就像你在单元测试类的Mockito。
- 你可以问嘲笑等服务,如果他们被称为。 你不能做这些断言是很容易与现实等服务。
- 该套件是超级快,嘲笑服务服务预罐装内存响应。 因此,我们可以得到很好的覆盖,而不考虑套件的时代运行。
- 该套件是可靠和可重复其在它自己的JVM孤立的,所以没有必要担心其他套房/人,同时与共享环境瞎套件正在运行并导致测试失败。
- 套房2 -完全端到端
- 套房执行针对部署在多台计算机完整环境
- API在环境中部署在Tomcat
- 等服务是真正的“活”部署充分
这间套房需要我们做的数据等的服务设置,这意味着测试通常需要更多的时间来写。 尽可能我们使用REST客户做数据等服务设置。
这间套房的测试通常需要更长的时间来写,所以我们把我们的大部分覆盖在套件1.话虽这么说,还有这间套房作为我们在1套房可能不表现非常像真正的服务嘲笑明确的价值。
Answer 2:
弗里斯比是建立在Node.js和受茉莉花,使测试API端点方便,快捷和乐趣REST API测试框架。 http://frisbyjs.com
例:
var frisby = require('../lib/frisby');
var URL = 'http://localhost:3000/';
var URL_AUTH = 'http://username:password@localhost:3000/';
frisby.globalSetup({ // globalSetup is for ALL requests
request: {
headers: { 'X-Auth-Token': 'fa8426a0-8eaf-4d22-8e13-7c1b16a9370c' }
}
});
frisby.create('GET user johndoe')
.get(URL + '/users/3.json')
.expectStatus(200)
.expectJSONTypes({
id: Number,
username: String,
is_admin: Boolean
})
.expectJSON({
id: 3,
username: 'johndoe',
is_admin: false
})
// 'afterJSON' automatically parses response body as JSON and passes it as an argument
.afterJSON(function(user) {
// You can use any normal jasmine-style assertions here
expect(1+1).toEqual(2);
// Use data from previous result in next test
frisby.create('Update user')
.put(URL_AUTH + '/users/' + user.id + '.json', {tags: ['jasmine', 'bdd']})
.expectStatus(200)
.toss();
})
.toss();
Answer 3:
我跟我的同事的一个合作,启动PyRestTest框架出于这个原因: https://github.com/svanoort/pyresttest
虽然你可以使用Python测试工作,正常的测试格式是YAML。
样品测试套件的一个基本的REST的应用程序 - 验证API的正确响应,检查HTTP状态代码,但你可以把它检查响应机构以及:
---
- config:
- testset: "Tests using test app"
- test: # create entity
- name: "Basic get"
- url: "/api/person/"
- test: # create entity
- name: "Get single person"
- url: "/api/person/1/"
- test: # create entity
- name: "Get single person"
- url: "/api/person/1/"
- method: 'DELETE'
- test: # create entity by PUT
- name: "Create/update person"
- url: "/api/person/1/"
- method: "PUT"
- body: '{"first_name": "Gaius","id": 1,"last_name": "Baltar","login": "gbaltar"}'
- headers: {'Content-Type': 'application/json'}
- test: # create entity by POST
- name: "Create person"
- url: "/api/person/"
- method: "POST"
- body: '{"first_name": "Willim","last_name": "Adama","login": "theadmiral"}'
- headers: {Content-Type: application/json}
Answer 4:
我用SOAP UI用于功能和自动测试。 SOAP UI允许您在一个按钮的点击运行测试。 还有一个春天控制器测试特德青年创建的页面。 我用这篇文章在我们的应用程序中创建其余的单元测试。
Answer 5:
其中一个做自动化测试的API的问题是很多的工具都需要您在运行测试套件之前,有API服务器启动和运行。 它可以是一个真正的优势,有一个单元测试框架,它能够运行在一个完全自动化的测试环境中查询的API。
这是很好用的Node.js /快速实现API的一个选择是使用摩卡进行自动测试。 除了单元测试,它很容易编写针对的API,分离成不同的测试套件的功能测试。 您可以在本地测试环境自动启动API服务器并建立本地测试数据库。 使用make,NPM和构建服务器,您可以创建一个“做试验”目标和增量构建,将每一段代码被提交到你的资料库的时间运行整个测试套件。 对于真正的挑剔开发商,它甚至会产生出你一个很好的HTML代码覆盖率报告,你的代码库的一部分被测试或没有覆盖。 如果这听起来很有趣,这里有一个博客帖子 ,提供所有的技术细节。
如果你不使用节点,那么无论该语言的事实上的单元测试框架(JUnit的,黄瓜/水豚等) - 看看它在本地测试环境旋转起来的服务器和运行在HTTP查询的支持。 如果它是一个大的项目,努力实现自动化API测试和不断的整合工作将还清很快。
希望帮助。
Answer 6:
Runscope是一个基于云的服务,可以监视使用一组测试的Web的API。 测试可以,计划和/或通过网络参数挂钩运行。 测试也可以从世界各地的数据中心执行,以确保响应时间是可以接受的全球客户群。
Runscope的自由层支持高达每月10K的请求。
免责声明:我是Runscope开发人员倡导者。
Answer 7:
我实现了一个基于放心,一个java的DSL测试RESTful服务自动化许多案件。 https://code.google.com/p/rest-assured/
语法很简单,它支持JSON和XML。 https://code.google.com/p/rest-assured/wiki/Usage
在此之前,我试图SOAPUI,并与免费版本的一些问题。 加上案件是在XML文件中哪个硬盘来扩展和重用,只是我不喜欢
Answer 8:
您还可以使用放心库。 对于示例脚本演示,请参阅http://artoftesting.com/automationTesting/restAPIAutomationGetRequest.html
Answer 9:
API测试自动化,高达每分钟一次,可通过服务theRightAPI 。 你创造了你的测试场景,并执行。 一旦这些测试做你期望他们什么,可以安排他们。 需要身份验证的情况下测试可以“链接”在一起。 例如,可以有一个测试,使一个OAuth请求到Twitter,并创建一个共享令牌然后可以通过任何其他测试中使用。 测试还可以具有附接,以确保HTTP状态代码,或者使用JavaScript或模式验证响应的甚至详细检查验证标准。 一旦测试计划,你就可以有警报尽快通知你作为一个特定的测试验证失败,或表现出建立范围的响应时间或响应大小。
Answer 10:
我已经使用TestNG的和Apache HTTP类来建立自己的REST API测试框架,我开发了硒工作了两年后这个概念。
一切都是一样的,只不过你应该使用Apache HTTP类,而不是硒类。
给一个尝试,它真的很可爱和良好的,你都可以自定义您的测试框架,你的最大可能性的能力。