<自动化测试方案_6>第六章、API自动化测试
第六章、API自动化测试
(一)工具实现
目前大众接口测试的工具有:Postman、SoupUI、jmeter
他们的特点介绍有人做个宏观的研究,这里进行引用:
https://blog.csdn.net/huilan_same/article/details/75413482
根据文章里的描述可知:
1,支持的接口类型与测试类型
功能上Jmeter最为强大,可以测试各种类型的接口,不支持的也可以通过网上或自己编写的插件进行扩展。SoapUI专门针对HTTP类型的两种接口,其初衷更是专门测试Soap类型接口,对于其他协议的接口不支持。Postman更是轻量级,定位也不同,可用来测试Rest接口。
|
工具 |
接口类型 |
测试类型 |
|
SoapUI |
Soap、Rest |
功能、压力、安全 |
|
Jmeter |
Rest、Soap等 可扩展WebSocket、socket |
功能、压力 |
|
Postman |
Rest |
功能 |
2,数据源、生成器、进行参数化
|
工具 |
数据源 |
生成器 |
循环 |
|
SoapUI |
DataSource,数据可来源于文件、目录、数据库、Excel、Grid等 |
DataGen |
DataSource Loop |
|
Jmeter |
CSV Data Set Config读取csv文件 |
Random Variable 计数器 |
ForEach控制器 循环控制器 While控制器 |
|
Postman |
Runner中运行时,可加载CSV/JSON文件 |
无(只能通过脚本) |
Runner中的Iteration |
3,结果解析、展示:
|
工具 |
结果 |
日志 |
报告 |
|
SoapUI |
Project-OverView、TestSuites TestSuite-TestCases TestCase-TestSteps |
SoapUI全局多种log TestSuite log TestCase log Request log |
Project report TestSuite report TestCase report (PDF/HTML/XML/CSV) |
|
Jmeter |
各种监听器 |
统一的Jmeter log |
监听器可导出到文件 并可导出JTL、CSV文件、通过插件可导出HTML(Jmeter3自带) |
|
Postman |
Send可查看Request的Response Runner可查看运行的Result |
Postman console Chrome DevTools |
Request的Response以及Runner的Result均可导出json |
4,团队协作
SoapUI:本身一个project是一个xml文件,但是可以通过配置变成一系列文件夹,每个Case、每个Suite均是独立的文件,这样可通过svn/git进行团队协作。支持性较好。
Jmeter:一个TestPlan也是一个jmx(xml)文件,无法分割,但Jmeter有一个合并的功能,允许将多个文件合并在一起。只能每个团队成员自己建立一个TestPlan,分功能块进行测试。最后整理合并。
Postman:有团队协作的功能,需要付费。
如果选择工具的话,选择的原则:
1,免费
2,能够快速学习使用:时间为一周
3,支持团队合作
4,支持接口关联
根据以上四点:
1,SoapUI是开源的,SoapUI pro是收费,功能比前者强大,具体强大在哪里,请看官网介绍:https://www.soapui.org/professional/soapui-pro/soapui-vs-soapui-pro.html
因为SoapUI的功能开源有限,使用起来也是很麻烦,所以不考虑这款工具
2,Postman没有团队协作功能,该功能需要收费
不考虑这款工具做接口自动化
3,jmeter功能强大,支持模块合并可以实现团队协作,且是开源的
所以如果用工具实现自动化接口测试推荐jmeter
(二)脚本实现
脚本实现需要一门编程语言做支撑,根据语言的灵活性和热度,选择Python作为脚本实现的支撑语言
实现思路:
1,使用Excel文件管理测试用例
2,使用requests模块来模拟请求,并接受响应
3,使用Excel或HTML来展示测试报告
实现方式:自己编写代码,可集成在Jenkins
实现时间:首次版本预估1个月
(三)工具+脚本实现
1.Python+Postman
Postman可以使用功能EXPORT COLLECTION 来导出json文件,然后通过Python解析后,使用requests库来发送请求,并进行结果校验,生成报告通过邮件模块发送给相关人员。
这种方式,接口用例是用Postman来管理
实现方式:自己编写代码,可集成在Jenkins
实现时间:2周
2.Postman+Newman+Jenkins
Postman写API自动化测试脚本,用newman命令行运行所有测试案例,配置jenkins来运行API自动化测试脚本,使API达到完全自动化测试!测试用例Postman来管理。
如何部署:https://blog.csdn.net/chengly0129/article/details/68486016
实现方式:搭建Postman+Newman+Jenkins
实现时间:2周
3.Python+Testlink+Jenkins
使用同行已经实现的框架,框架功能如下:
源码地址:http://blog.sina.com.cn/s/blog_13cc013b50102w94u.html
1、框架集成了Testlink,可使用Testlink灵活对测试项目,测试计划,测试用例进行管理
2、可通过配置文件灵活配置运行模式,支持按测试项目、测试计划、测试套件批量运行执行用例
3、支持HTTPS,HTTP,WebService协议,支持POST, GET方法,支持JSON,非JSON数据格式的请求,支持多种形式的数据校验
4、可自动生成HTML可视化接口测试报告
5、可根据配置在测试完成后,自动发送测试报告邮件
6、支持文件、控制的日志打印,可分别控制开关
7、支持模块化开发
8、可集成Jenkins自动运行脚本
特点:测试用例使用Testlink来管理
实现时间:三周
(四)选择API自动化测试实现方式
以上三种方式,选其中一种来实现:
倾向于工具+脚本实现:Postman+Newman+Jenkins
实现时间:三周
原因:
1,测试组可以统一管理手工用例和自动化用例
2,可以快速实现,且开发这个框架的作者,能够联系到,使用中出现了问题,可以快速得到解决
3,使用中想增加功能可以自己修改代码去添加
<自动化测试方案_6>第六章、API自动化测试的更多相关文章
- <自动化测试方案_3>第三章、怎么样实现自动化测试?(How)
第三章.怎么样实现自动化测试?(How) 自动化测试分为:代码单元自动化测试.API接口自动化测试.UI自动化测试 代码单元自动化测试,一般是无法做到的,因为项目的原因,代码单元是不做自动化,其测试是 ...
- <自动化测试方案_5>第五章、代码单元自动化测试
第五章.代码单元自动化测试 代码单元测试需要根据编程语言,选择单元测试框架,然后访问类方法,函数.代码单元测试做自动化,相比API.UI自动化做起来更加麻烦,建议放到待API自动化测试.UI自动化测试 ...
- <自动化测试方案_7>第七章、PC端UI自动化测试
第七章.PC端UI自动化测试 UI自动化测试又分为:Web自动化测试,App自动化测试.微信小程序.微信公众号UI层的自动化测试工具非常多,比较主流的是UFT(QTP),Robot Framework ...
- <自动化测试方案_4>第四章、选型标准
第四章.选型标准 1,免费 2,工具可维护.可扩展 3,支持团队工作
- <自动化测试方案书>方案书目录排版
自动化测试方案书 一.介绍 QQ交流群:585499566 这篇是一个系列,用来给需要做自动化测试方案的人做个参考,文章的内容是我收集网上和自己工作经验所得,希望能够给你们有所帮助 背景:因为工作需要 ...
- XXX接口自动化测试方案
XXX接口自动化测试方案 1.引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 X ...
- <自动化测试方案_2>第二章、自动化测试是什么?(What)
第二章.自动化测试是什么?(What) 自动化测试是相对于手工测试而言:通过脚本自动去执行测试用例,从而代替人完成测试工作. 自动化测试相对手工测试优缺点 测试方式 优点 缺点 手工测试 1,完整的对 ...
- App自动化测试方案
App自动化测试方案 1.1 概述 什么是App自动化?为什么要做App自动化? App自动化是指给 Android或iOS上的软件应用程序做的自动化测试. 手工测试和自动化测试的对比如下: 手工测 ...
- 基于Ruby的watir-webdriver自动化测试方案与实施(一)
基于Ruby的watir-webdriver自动化测试方案与实施(五) 基于Ruby的watir-webdriver自动化测试方案与实施(四) 基于Ruby的watir-webdriver自动 ...
随机推荐
- Git基本命令 -- 基本工作流程 + 文件相关操作
可以先找一个已经被git管理的项目, 我就使用这个项目吧: https://github.com/solenovex/ID3-Editor 基本工作流程 克隆以后呢, 进入该目录查看一下状态: 然后添 ...
- 设置build.gradle打包时自动加时间
在build.gradle中添加以下函数: def releaseTime() { return new Date().format("yyyyMMddHHmm", TimeZon ...
- Servlet JSP 二重修炼:Filter过滤器
摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 真正的朋友就是,当你蒙蔽了所有人的眼睛,也能看穿你真实的样子和心底的痛楚 ...
- TCP/IP原理浅析
TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:AdvancedRese ...
- 彻底弄懂python编码
在编写python程序的过程中,中英文混用经常会出现编码问题.围绕此问题,本文首先介绍编码的含义及常用编码,随后列举几个python经常遇到的编码异常及解决方法,接着列举笔者在实践中遇到的异常出现的情 ...
- 华为路由器 HDLC 实验
HDLC 简介 高级数据链路控制(High-Level Data Link Control 或简称 HDLC),是一个在同步网上传输 数据.面向比特的数据链路层协议,它是由国际标准化组织(ISO)根据 ...
- Zepto整体概况
var Zepto = (function(){ var zepto = {},$; zepto.Z = function(dom, selector) { return new Z(dom,sele ...
- 高性能MySQL笔记
锁粒度:表锁.行级锁 表锁锁定整张表 隔离级别: 未提交读:事务中的修改,即使没有提交,对其他事务也是可见的.事务可以读取未提交的数据,也被称为脏读.实际应用中比较少用 提交读:一个事务提交之前,所做 ...
- 前端学习(一) —— HTML
1.js跳转 window.location.href='url'; 2.div显示与隐藏 hide() show() 3.判断是否为一个字符串是否为整形 function isInt(str){ v ...
- WPF 自定义Command
无参Command: internal class DelegateCommand : ICommand { private readonly Action _execute; private rea ...