从零开始学习接口测试
Posted 搜狗测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始学习接口测试相关的知识,希望对你有一定的参考价值。
接口测试简介
接口测试是测试系统组件间接口的一种测试。
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口测试通常包括两类,模块之间的接口测试和 Web 接口测试。
前者通常是由开发人员在单元测试中进行测试,后者则通常由测试人员进行测试。
后面的内容主要为 Web 接口测试。
接口测试的意义
测试人员都知道,在整个软件生命周期中,测试介入的越早,成本越低,收益越好。
通常,前端的实现,依赖于后端的接口,测试人员需要在开发人员输出接口文档后,就立即开始设计接口测试用例,在开发人员将接口开发完成后,就可以进行接口测试了。
接口测试,可以提前暴露很多问题,此时开发解决问题,相对在前端的功能测试中发现的问题,其代价要小的多。接口的正确和稳定,会为后面前端的功能测试减少很大一部分工作量。另外接口的自动化、持续集成也相对的比较容易去实现。
接口测试的内容
测试返回值是否正确
测试返回值类型是否符合设计文档
测试返回的 error 信息是否符合设计
对输入进行类型、边界测试,测试接口是否有对异常数据做处理
需要掌握或了解的知识
了解后端常用开发语言,java、php、python 等
了解各种开发语言的某些特性。比如在 php 中的 empty() 方法,有开发同学会用这个方法判断一个字符串是否为空,但这里如果传入的值为0,empty 方法也会判断为空,即 empty(0) 返回的值为 true!因此设计接口用例的时候,要增加此类含有特殊值的 case
了解 tcp/ip、http、https 协议
掌握常用的请求方式,get、post、put
掌握 json、xml、html 的语法
掌握常用的抓包方法
掌握基本的增删改查 sql 语句
掌握一种语言,python、java 或其他语言
掌握 jenkins 环境的搭建
接口测试框架
Jmeter接口测试
接口测试实例
本次测试的接口为http服务端接口
接口的主要分成两类,一类提供给查询功能接口,一类提供保存数据功能接口,这里我们举例2个保存数据的接口,因为这两个接口有关联性,比较有代表性;
接口描述:
保存信用卡账户信息接口:
传入参数:
args={
“clientNo”:”434343556”,
“alias”: “**信用卡2”,
“cardName”: “长城*卡2”,
“cardNo”: “25622356788251”,
}传出参数:
传出参数:
保存成功:
{“returnCode”:”0”,”returnMsg”:”保存成功”}保存失败:
{“returnCode”:”1”,”returnMsg”:”保存失败”}
保存成功:
{“returnCode”:”0”,”returnMsg”:”保存成功”}保存失败:
{“returnCode”:”1”,”returnMsg”:”保存失败”}
保存逻辑:数据传入进来,验证通过,保存到信用卡账户表中
保存信用卡账单接口: 传入参数:
args={
“clientNo”:”434343556”,
“accountName”: “测试”,
“billDate”: “08”,
“billMonth”: “201509”,
“cardNo”: “25622356788251”,
“currentPayment”: “欠款459.80”,
“paymentDate”: “2015-09-25 09:00:00”,
}
保存逻辑:保存时先去信用卡信息表查看clientNo对应的表是否存在,如存在则数据校验通过,将数据保存进入信用卡账单表
需求分析
逻辑分析
1 . 从保存逻辑上来看,这两个接口明显是有依赖关系的,所以我们先测试信用卡账户信息接口,再测试保存信用卡账单接口
接口传入的数据,最终是保存到数据库中,所以当接口返回保存成功的时候,我们也要去对应的数据库表中核对相应的数据(这里可以用jmeter链接数据库进行操作代理手工)
测试工具的准备
单个接口测试,使用poster/postman
多个接口测试,我们使用Jmeter进行测试
测试方法
首先邮件添加一个线程组,这里我们重命名InterfaceTest
在线程组中添加一个HTTP请求,这里我们重命名“增加信用卡账户信息接口”
配置接口请求信息,这配置示例如下:
在保存信用卡账单接口请求,示例如下:
注:由于Jmeter请求线程组内的请求时从第一个开始执行,所以我们将需要最先执行的请求放在前面
在线程组上添加监听器,察看结果树和聚合报告
以上是关于从零开始学习接口测试的主要内容,如果未能解决你的问题,请参考以下文章