「文末高能」
本文主要内容包括:
通达信 接口 和谐,接口的定义通达信 接口 和谐,接口的分类为何要进行接口测试接口文档示例Postman工具简介借助Postman完成HTTP请求接口测试Postman+Newman+Jenkins实现接口自动化测试
接口定义
软件不同部分之间的交互接口。通常就是所谓的API――应用程序编程接口,其表现的形式是源代码。——[百度百科]
我们常说的接口一般指两种:
API:应用程序编程接口。程序间的接口GUI:形用户界面。人与程序的接口
这里我们所说的接口特指API接口。API接口定义:对协议进行定义的引用类型。
好多公司开发人员分前后端,他们之间如何配合工作的,就是其中一方定义接口,另一方来调用接口,以实现预期功能。
接口的分类
接口分类
HTTP接口Webservice接口RESTful接口
WebService接口是走soap协议,请求报文和返回报文都是xml格式,通过SoapUI工具进行测试;
HTTPAPI接口走HTTP协议,通过路径来区分调用的方法,请求报文入参有多种形式,返回报文一般为json串,最常见的是get和post方法。
为何要进行接口测试
接口测试必要性
当今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。
接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。
接口持续集成是为什么能低成本高收益的根源。现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求,需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
接口测试原理
模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端再接收应答的一个过程。
接口测试范围
接口的功能、性能、安全性。重点关注数据的交换,传递和控制管理过程,还包括处理的次数。
接口测试对象是接口,但随着系统复杂度越来越高,接口越来越多,完全覆盖是一件很困难的事情。
通常情况下主要测试最外层的两类接口:数据进入系统的接口、数据流出系统接口
接口文档示例
接口文档应该包括哪几部分?
接口说明调用的url请求方法请求参数,参数类型、请求参数说明返回参数说明返回示例
示例
注:上接口文档工具为ShowDoc
Postman工具简介
Sidebar侧边栏
Postman侧边栏允许你查找、管理请求和集合。侧边栏分为两个主要的选项卡,包括历史和集合选项卡。可以拖动右边的边来调整侧边栏的宽度。侧边栏也可以隐藏到小屏幕。
历史选项卡
通过Postman应用程序发送的每个请求都保存在侧边栏的History选项卡中。
集合选项卡
在侧栏中创建和管理集合选项卡的集合。
Postman的顶部工具栏包含以下选项:
新建按钮——可以新建请求,集合,环境等运行按钮-打开集合运行页面导入按钮——导入Postman文件、文件夹、formlink等新窗口标-打开一个新的tab页、新的窗口、新的runner等构建器和团队库选项卡——在请求生成器和TeamLibrary视之间切换抓取API请求标——使用postman抓取API请求同步状态标——同步API请求标用户下拉——管理集合链接和你的个人资料或登录/登出,你的Postman帐户开放API集合通知标-接收通知或广播设置标——管理Postman应用程序设置,并找到其他支持资源❤——分享按钮
Postman通过选项卡布局,用于在构建器中发送和管理API请求。上半部分是请求构建器,下半部分是响应查看器。
Cookies——管理cookie模式是通过点击cookie链接访问的。该特性允许你管理与请求相关的cookie。Code——生成的代码片段模式通过保存按钮下面的最右边的Code链接。该特性允许你生成与请求相关的代码片段,该请求支持20多种语言
Postman有两个控制台,可以帮助我们了解系统后台到底发生了什么。
PostmanConsole——包含HTTP请求和响应的运行日志。来自脚本的日志消息(如在consolLog中)。这个功能只能在Postman的本地应用中使用。DevToolsConsole——可以在开发期间记录诊断信息。
借助Postman完成HTTP请求接口测试
借助PostmanEcho演示下各种请求的构建方法
Get请求
HTTPGET请求方法是从服务器检索数据。数据由惟一URI(统一资源标识符)标识。GET请求可以使用“查询字符串参数”将参数传递给服务器。例如,在下列请求中,http://examplcom/hi/there?hand=wave,参数“hand”的值等于“wave”。
POST:URI传参
POST:Form-data传参
POST:x-www-form-urlencoded传参
POST:raw传参
POST:binary传参
AuthenticationMethod——权限认证方法
GETBasicAuth增加auth信息:
Headers——添加header
接下来,我们拿个开放API来演示下单一接口测试流程
步骤使用Postman工具发送该Get请求,如下。
步骤添加测试。
上针对该API添加了3个测试:
要求响应时间小于200ms要求statuscode等于200要求Responsebody中包含字符串“金庸”
注:当然你还可以增加更多的测试点。
Postman+Newman+Jenkins实现接口自动化测试
准备工作
安装Newman工具
安装Nodjs安装Newman查看Newman命令
部署Jenkins
将接口保存到集合
点击Save按钮,将接口保存到一个集合,如下:
将集合保存到本地
将集合保存到本地,文件为.json格式,如下:
命令行通过Newman运行集合
打开命令行窗口,运行如下命令:
D:git-local>newmanrunMyCollectionpostman_collectiojson-gglobals.postman_globalsjson
执行结果如下:
可以看到,其中两条断言passed,一条断言failed,失败的原因是,我们期望接口响应时间小于200ms,但是本次接口请求响应时间是270ms。
通过Jenkins调用Newman,执行接口测试
执行一次构建,构建失败,查看构建失败原因。
假设开发修复了接口bug
接口响应时间减少了,我们需要回归测试。
演示一个如何调用datafile参数化用例
我这里有一个集合,3个接口,第一个接口为登录接口,第二个接口为获取登录用户信息接口,第三个接口为修改密码接口。登录接口如下:
测试脚本如下:
参数化json文件内容如下:
[{
'loginName': 'duzl', 'password': 'admin123', 'verifyCode': 'adf', 'value': '/index'
}, { 'loginName': 'duzl', 'password': 'admin', 'verifyCode': 'adf', 'value': ' 账号或密码错误 '
}, { 'loginName': 'duzl', 'password': '', 'verifyCode': 'adf', 'value': ' 参数 password 不能为空 '
}]
好我们调用json文件,执行下集合,结果如下:
结果还不错,执行了3次,参数都是取自用例文件,断言也取自用例文件。
美中不足的是,第二个和第三个接口也跟着迭代了3次,这是因为集合运行器中的迭代次数是针对所有接口的设置。
那如果,我们想第一个接口运行3遍,第三个接口只运行一遍,该如何做呢?Postman给我们提供了一个内置方法,设置接口运行顺序postmasetNextRequest('');。
注意:迭代次数从0开始。
当迭代次数!==0时,就停止本次迭代,好,再次运行集合,看看结果:
很好,第一次迭代,执行了3个接口;第三次迭代只执行了第一个接口。
近期热文
《如何基于Redis构建应用程序组件》
《深度学习在摄影技术中的应用与发展》
《这样做,你的面试成功率将达到90%》
《如何用TensorFlow让一切看起来更美?》
《Web安全:前端攻击XSS深入解析》
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点