接口测试基础
一、接口测试
接口测试就是功能测试,比ui测试还简单;
接口说白就是从数据库查到数据,返回回来;
一般接口返回的数据都是json格式;json是一种通用的数据类型;
接口分类
webservice接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的;
http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式;
前端和后端
客户端和服务端
越底层发现bug,它修复成本是越低的;
get请求和post请求的区别
get请求:它的请求数据是在放在url里面的;
post请求:它的数据是放在body里面的;
一般get请求用来获取数据,post请求用来发送数据;
如果是get请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话,就不行了,就得借助工具来发送;
cookie:存放在你本地的一个键值对,即key - value;
session:存放在服务端的一个键值对;
Http状态码
200: 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了;
300 :3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了;
400 :400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面;
500 :5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果;
二、性能测试工具
一、解决jmeter乱码问题
1、修改jmeter查看结果树-响应数据乱码问题:
在jmeter-bin目录下找到jmeter.properties文件,找到sampleresult.default.encoding这个之后在该注释行下添加如下:
sampleresult.default.encoding=utf-8
保存该文件,并重启jmeter,就可以解决jmeter返回解决乱码的问题。
2、 jmeter中发送post请求,body data中包含中文信息显示乱码,解决body data中文乱码问题:
在jmeter-bin目录下找到jmeter.properties文件,找到jsyntaxtextarea.font.family=Hack这个之后在该注释行下添加如下:
jsyntaxtextarea.font.family=Hack
保存该文件,重启jmeter即可。
3、 在body data中显示的中文正确,但是运行之后在数据库中查看数据却是乱码,需要在请求处添加为utf-8即可。
http接口脚本
1、添加线程组
2、添加http请求
3、在http请求中写入接口url、路径、请求方式、参数
4、添加查看结果树
5、调用接口、查看返回值
Jmeter参数化
1、 用户定义的变量(线程组->添加配置元件->用户定义的变量)
配置元件中的用户定义的变量可以为一个全局变量,可以在其他sample中调用;如果该变量中的值有变化可以在此修改,不用在sample中单个修改;
该配置元件含义类似于配置元件中的http请求默认值,如果http请求默认值添加之后,后面的http请求中如果某些值没有填则直接使用该默认值,如果后面的http请求中如果填了某些值则优先使用后面http请求中的参数值。
2、 函数助手里面的:
__random(在选项->函数助手对话框中,选择__Random函数,可以生成一个随机变量参数,在后面的函数中进行调用,进行压测)
__time yyyyMMddHHmmdd时间的格式(此项是24小时制的)
也可以使用__time函数生成一个随机数在其他请求中进行调用
Jmeter里面取到的时间戳是精确到毫秒的;
时间戳就是从计算机诞生那一天到现在过了多少秒;
3、 文件里面读取
默认不写绝对路径的话,是从jmeter的bin目录下读取文件;(此方法不建议使用,一般在没有办法的情况下才使用)
文件里面可以写多列,多列以逗号隔开,参数名也要写多个以逗号隔开;
Jmeter压测
并发用户数
Tps:服务端每秒处理的请求数,越大越好
响应时间:越快越好
jmeter压测可以通过聚合报告查看响应时间和tps;
如果要进行压测,则需要在线程组上配置对应的线程数、循环次数、调度时间等。
post请求他的数据是放在body里面的