接口测试+postman+Jmeter用法

接口测试

什么是接口测试

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

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

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

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

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

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

以上,都是经过接口来链接客户端与服务端的。服务器

接口测试第一步须要作什么?

首先要取得接口文档,接口文档通常都是由开发提供的,cookie

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

 

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

接口返回的数据类型都是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区别

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

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

       get请求以下图:

post请求以下图:

二、get请求没有post请求安全,由于get请求参数是在url里面传的,参数是可见的,而post请求参数是在body里面传的,不可见。可是post请求参数仍是能够用抓包工具抓到,因此也没有那么安全

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

四、get请求通常用来获取数据,而post通常则用来发送数据

设计接口测试用例

设计思路:

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

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

三、根据业务逻辑设计不一样的场景

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

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

 cookie与session

什么是cookie?

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

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

什么是session?

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

例如:登录网站以后,浏览器会保存cookie,而服务端会保存session,当再次访问网站的时候,服务端会把session里的键值对和浏览器端的cookie进行对比,若是一致就不须要从新登录了,直接就能够访问,若是不一致则须要从新登录

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

postman

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

在postman中发get请求

例:

请求以下图:

在postman中发post请求

 一、入参是key-value型的

postman中以下:

二、入参是json型的。

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

postman中请求以下:

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

在body下面的选择raw,就能够传json格式的了

三、在postman中上传文件

四、传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

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

step四、如何运用刚才配置的Gloabals

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

jmeter

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

jmeter的http接口测试

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

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

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

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

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

step三、配置http请求,以下图

 

step四、添加监听器,即查看结果树,能够看发送的请求与响应的数据

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

以下图

 

解决办法:在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:

 

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

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

三、__UUID生成的字符串很长

 --CSV Data Set Config

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

注意:若是不写绝对路径,能够只写文件名,那么须要把文件放在jmeter的bin目录下便可,那么就能够直接写文件名就能够了

 

而后去编辑登录接口以下,此时username不能够写死,须要写名字集,格式 ${名字集},以下图:

关联

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

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

 

step一、取登录接口返回的userid与sign

配置以下:

 

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

返回参数以下:

step二、JSON Extractor 配置以下,其中$.login_info.userId定义以下:

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

 

 

 step三、配置抽奖接口:

 

 用户定义变量

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

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

应用:

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

格式:$(定义的变量)

压测

例如:要测试10秒以内1个用户登录100次状况

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

聚合报告

压测,须要关注返回的TPS、响应时间,经过聚合报告就能够看

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

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

 以下图:

响应断言

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

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

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

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

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

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

应用以下:

相关文章
相关标签/搜索