接口测试+postman+Jmeter用法

接口测试

什么是接口测试

接口测试:接口测试就是功能测试,向服务端发的请求或者获取数据,

例如:新浪微博,新浪为客户端(client),新浪的服务器为服务端(server)

a:刷微博,即从客户端向服务端获取数据

b:发微博,即客户端向服务端插入数据

c:修改微博,即客户端向服务端发送数据,即修改后的内容

d:删微博,即服务端向客户端发送删除数据的请求

以上,都是通过接口来连接客户端与服务端的。

接口测试第一步需要做什么?

首先要取得接口文档,接口文档一般都是由开发提供的,

接口文档中会提供至少三种信息:接口地址(url)、请求参数(get、post)、请求参数,一般还会提供返回参数,如下:

 

接口返回的数据类型是什么?

接口返回的数据类型都是json格式的,那么什么是json呢?

json:json是一种通用的数据类型,所有语言都认识它,即任何语言接口返回的都是json格式的,如:Java PHP .net Python ruby C

json格式如下:键值对的存在 key-value

接口常用请求方式有什么?

get与post请求方式

get请求

直接用浏览器就可以访问,不需要借助外部工具,在浏览器中输入url即可

如何传参数:在url后面加一个问号?+参数名+值,其中如果要传多个参数的话,中间用&连接

例如:hfhfhh/stu_info?参数1=值1&参数2=值2,如下图所示:

 post请求

post请求不可以通过浏览器直接访问,需要借助工具来进行接口的访问,如postman、jmeter

post常用的传参方式:key-value、json格式、上传文件。如果接口文档里不特别说明是什么传参的方式的话,那么就是key-value形式传参。

get与post区别

 1、get请求只有请求头,没有请求体,如下图postman中所示:请求的cookie是在headers里面的,而参数是在url里面的,body是置灰的,即没有请求体

       post请求既有请求头,也有请求体

       get请求如下图:

post请求如下图:

2、get请求没有post请求安全,因为get请求参数是在url里面传的,参数是可见的,而post请求参数是在body里面传的,不可见。但是post请求参数还是可以用抓包工具抓到,所以也没有那么安全

3、get请求有参数的大小限制,post请求没有参数大小的限制(在以前浏览器版本低的时候,有参数大小的限制,现在浏览器版本很高了,就没有这个限制了)

4、get请求一般用来获取数据,而post一般则用来发送数据

设计接口测试用例

设计思路:

1、正常的:按照接口文档上面来

2、异常的:不按照接口文档上面来

3、根据业务逻辑设计不同的场景

测试用例里面需要写什么?

项目  模块  url  请求方式  请求参数  预期结果  实际结果  状态

 cookie与session

什么是cookie?

cookie是保存在用户浏览器端的一个键值对。

例如:登陆一个网站,就会把cookie保存在浏览器端,即保存登录名与密码,等你关掉网站,再次进去的时候,不需要再次登陆,就可以直接访问了,这就是浏览器保存了cookie的结果

什么是session?

session是保存在服务端的键值对。

例如:登陆网站之后,浏览器会保存cookie,而服务端会保存session,当再次访问网站的时候,服务端会把session里的键值对和浏览器端的cookie进行对比,如果一致就不需要重新登陆了,直接就可以访问,如果不一致则需要重新登陆

注意:cookie与session都有失效时间,至于时间的长短是在代码里面设置的。

postman

postman是用来发送http请求接口的测试工具,可以用来发送get与post请求

在postman中发get请求

例:

请求如下图:

在postman中发post请求

 1、入参是key-value型的

postman中如下:

2、入参是json型的。

      如何判断入参是json型的:接口文档中会标识出来,如果不特意标识,那么默认就是key-value型的,如下图,接口文档中已特意标出是json型的

postman中请求如下:

json类型参数在postman中如何传?

在body下面的选择raw,就可以传json格式的了

3、在postman中上传文件

4、传cookie

传cookie需要知道:请求方式、url、cookie值、请求参数

例如:获取某个QQ群里的成员信息

step1:获取url,url如下:https://qun.qq.com/member.html#gid=QQ群号

step2:按f12,选择network下的XHR,XHR下面的都是请求的接口,有利于接口测试,所以直接选择XHR就行了,下面以search_group_members这个接口为例

step3:获取请求方式与url

step4:获取cookie

step5:获取请求参数

step6:在postman中可以调接口了,cookie存在Headers里面,如下

参数放在body里

step7:发请求

postman中 form-data、x-www-form-urlencoded、raw、的区别

form-data:可以上传键值对,也可以上传文件

x-www-form-urlencoded:可以上传键值对,不可以上传文件

raw:可以上传json格式的参数

postman中Globals用法

step1:点击小齿轮下的Manage Environments

step2:选择Globals

step3、添加一个ke与value,例如key=ip,value=ip地址,添加完后点击 save,配置完成

step4、如何运用刚才配置的Gloabals

在url中不用写IP地址了,用{{ip}}代替即可,其中ip根据自己在globals中定义的key的名字而变化

jmeter

 定义:Java开发的开源的性能测试工具,即需要安装jdk才可以使用jmeter

jmeter的http接口测试

step1、添加线程组,线程组可以理解为一个容器,之后的测试都在线程组里面执行,

其中,线程数:即为并发数,如果要测试100个用户同时登陆,那么现成数设置为100即可

         Ramp-Up Period(in seconds):为在XX秒之内执行这个线程

    循环次数:想要循环几次就填几

step2、添加http请求,选择线程组,点击右键

step3、配置http请求,如下图

 

step4、添加监听器,即查看结果树,可以看发送的请求与响应的数据

 当查看结果树中存在乱码时如何解决?

如下图

 

解决办法:在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties最下面一行加上sampleresult.default.encoding=UTF-8后,保存,然后重新打开jmeter,再次执行接口文件,就可以了

 

当body data里面中文乱码如何解决

如下图

解决办法:

在jemeter的bin目录下,找到jmeter的配置文件,jmeter.properties最下面一行加上jsyntaxtextarea.font.family=Hack

后,保存,然后重新打开jmeter,再次执行接口文件,就可以了

数据库存在乱码如何解决?

在http请求配置页面中Content encoding=utf-8,即可

上传文件

 

 参数化

1 、__random:函数助手里面的__random取一个范围内的随机数

注册接口

step1

 

step2

step3

 step4:

 

2、__time:函数助手里面的__time取当前时间戳

  时间戳:从计算机诞生那一天到现在过了多少秒

3、__UUID生成的字符串很长

 --CSV Data Set Config

配置方式:右键--->添加--->配置原件--->csv Data Set Config

注意:如果不写绝对路径,可以只写文件名,那么需要把文件放在jmeter的bin目录下即可,那么就可以直接写文件名就可以了

 

然后去编辑登陆接口如下,此时username不可以写死,需要写名字集,格式 ${名字集},如下图:

关联

从上一个接口里面获取到结果传递给下一个接口

例如:抽奖接口的请求参数就要从登录接口的返回参数中取

 

step1、取登陆接口返回的userid与sign

配置如下:

 

从登陆接口返回的参数中取userID与sign

返回参数如下:

step2、JSON Extractor 配置如下,其中$.login_info.userId定义如下:

$代表登录接口返回的参数中最外边的大括号,.代表大括号里面的内容,login_info代表从返回参数中找到login_info,.代表返回参数中的login_info里的信息,userId代表在login_info取到userId的值

 

 

 step3、配置抽奖接口:

 

 用户定义变量

配置:线程组--->添加--->配置原件--->用户定义的变量

配置:,名称与值,例如名称为 ip

应用:

在http请求中配置IP的地方改写成上边配置的变量即可,就不用每次都输入IP地址了

格式:$(定义的变量)

压测

例如:要测试10秒之内1个用户登陆100次情况

思路:线程组中线程数设置100(代表一百个用户),10秒

聚合报告

压测,需要关注返回的TPS、响应时间,通过聚合报告就可以看

TPS:服务器每秒钟处理的事物数,即请求数

响应时间:从发出去请求到服务端处理完返回给客户端的时间

 如下图:

响应断言

jmeter在接口测试过程中,有时需要响应断言来判断接口测试得到的接口返回值是否正确。 
响应断言 :对服务器的响应接口进行断言校验。

1. 首先,选中某个线程,然后右键,选择添加—>断言—>响应断言 ,得到如图所示的响应断言界面。

Apply to:默认选择 Main sample only即可

要测试的响应字段:默认选择  响应文本 即可

模式匹配规则:选择“包括”即可,即返回的参数中包括添加的  要测试的模式里的内容即可

要测试的模式:输入 我们要匹配的响应接口(即接口测试结果的期望值或者其他期望值)

应用如下:

 

posted @ 2018-11-13 14:27  会飞的狗子  阅读(3132)  评论(0编辑  收藏  举报