学习内容,
一.接口测试基础知识
二.接口测试工具使用 postman、JMeter
三.接口测试脚本录制
一.接口测试基础知识
1.什么是接口,分两种,一种是程序内部的接口,一种是系统对外的接口
系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用
2.接口的分类
webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。
http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式
3.什么是接口测试
接口测试就是功能测试,测试数据之间的相互传输是否准确
4.接口测试的必要性
1.可以发现很多在页面上操作发现不了的bug、
2.检查系统的异常处理能力 、
3.检查系统的安全性、稳定性 、
4.前端随便变,接口测好了,后端不用变
5.接口测试流程
需求评审,熟悉业务和需求------开发提供接口文档-------编写接口测试用例-------用例评审-----提测后开始测试-------提交测试报告
6.接口文档规范 接口说明----调用url----请求方法(get、post)------请求参数、参数类型、请求参数说明-------返回参数说明
7.http接口测试方法
1、url?param=value¶m2=value
这种是最简单的一种,问号前面是请求url,后面是请求的参数名和参数值,多个参数用&来连接
https://api.douban.com/v2/book/search?q=邹伟伟
2、还有一种就是入参是json串的,那就不能拼接参数了,需要借助工具来完成比如postman
8.GET和POST请求:
如果是get请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话,就不行了,就得借助工具来发送。
GET请求和POST请求的区别:
1、GET使用URL或COOKIE传参。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。
其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了。
9.HTTP 状态码
l 1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
l 2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
l 3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
l 4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果
10.接口测试用例模板
1、项目 是哪个项目的
2、模块 这个接口是属于哪个功能模块的
3、用例id
4、接口名称
5、用例标题 用例是干嘛的
6、请求方式 GET/POST
7、请求url url地址
8、请求参数
9、前置条件 有依赖的时候,比如说要测登录失败3次的
10、结果验证 预期结果
11、请求报文
12、返回报文
13、测试结果 通过/失败
14、测试人员
二.接口测试工具--JMeter
1.jmeter-http接口脚本录制流程
添加线程组----添加HTTP请求-----再添加http请求中写入接口url、路径、请求方式、参数----添加查看结果树-----调用接口、产看返回值
2.添加header流程-线程组(右键)---添加---配置元件----HTTP信息头管理器,使用HTTP信息头管理,可以帮助测试人员设定JMeter发送的HTTP请求头所包含的信息。
3.添加COOKIE流程 流程-线程组(右键)---添加---配置元件----httpCOOKIE管理器
4.jmeter-webservice脚本
• 1、在soapui中新建已经soap项目,导入wsdl地址,获取到请求报文、SOAPAction和请求url(在soapui的raw中能找到)
• 2、打开jmeter新建一个线程组
• 3、新建一个SOAP/XML-RPC Request
• 4、把url、soapaction和请求报文写到soaprequest中
• 5、调用接口、查看返回值
5.Jmeter-参数化
参数化是干嘛的呢,咱们在调用接口的时候,有入参,那参数里面的值如果经常变化的话,就得每次去改了,很麻烦,这时候咱们就把需要经常变的值,改成可以变化的或者是咱们提前设置好的一些值,这样的话,调用的时候就不用每次都改它的值了
• Jmeter参数化的方式有三种
• 1、用户定义的变量
• 这种就是为了方便管理参数,只能有一个值,比如说ip地址不经常变化的
• 2、函数生成器
• 函数生成器可以参照一定的规则生成数据,这样的比如说生成一些随机数
• 3、从文件中读取
• 文件读取就是事先写好一些数据,然后从文件中读取,这样的话,比如说登录接口,账号和密码都是我们事先注册好的
6.用户定义变量
• 在线程组中添加一个用户定义的变量,然后写key和value就可以了,key就是这个参数的名称,也就是你在脚本里面取的值,value就是具体值了。在取参数化的值的时候,使用${name}这样去取值,name就是你取的变量名称。
取值方式"${名称}
7.函数生成器
• 函数助手的话,可以按照规则生成一些参数,比如说随机数取当前时间,最常用的就是这两种。
• 随机数__Random,可以在你指定的一个范围内取随机值
• 取当前时间__time,如果在有一些需要传时间的情况下可以使用,日期格式是:
• yyyy-MM-dd HH:mm:ss
• 年-月-日-小时:分钟:秒
• 取唯一id,__UUID,这个就是每次会生成一个随机的uuid,都是唯一的
•
8.从文件中读取
• 从文件中读取的话,三个步骤
• 1、读取文件
• 2、取文件内容里面的参数,给它一个名字
• 3、使用值
• 从文件读取的话,需要在线程组里面添加一个CSV Data Set Config,它就是做前面两步的操作的
三、实例操作