当前位置 : 主页 > 网络安全 > 测试自动化 >

接口测试——postman & jmeter

来源:互联网 收集:自由互联 发布时间:2021-06-19
新名词: 自动化测试: 写代码帮你测试 接口:是一个抽象的概念,一种交互关系。 抓包:拦截请求。 接口测试:就是功能测试,比后者还简单。 需要有测试文档,包括项目、模块、


新名词:

自动化测试:
写代码帮你测试

接口:是一个抽象的概念,一种交互关系。

抓包:拦截请求。

接口测试:就是功能测试,比后者还简单。

需要有测试文档,包括项目、模块、URL、请求方式、参数、参数说明、预期结果、实际结果、成功与否
测试工具:常用的有postman&jmeter

server:服务器
user:用户端

抓包: 拦截请求。  点击右键的审查元素/检查/F12可以 点击network(出不来刷新一下)就可以出来一个接口 

前端(像我们的使用界面)和后端(像抓包页面)

前端和后端是两拨人开发的,像前端手机,使用语言Android,object-c,或swift.后端语言就多了,像Java,php,.net,python,ruby等。后端人开发好后,把接口给前端人。前端需要什么,展示出来就行了。

后端的语言和前端的不同,前端肯定展示不了。所以用一种通用的语言——json.

json:所有语言都认识的一种数据类型。json出来前用的xml。json是key-value的形式。json串儿。

 

接口测试:

先要有一个接口文档:

请求方式:get / post

get 无需借助工具,(第一个接口)在浏览器就可以,将地址直接沾到浏览器。怎样传参数呢,在后边加上“?”然后参数名谁=谁(?key=value)就可以了。如http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑。若是有多个参数,用&连接就可以了。如age=18&sex=男
注意:要输入英文字符"?",尽量粘贴
而且get没有body

post 需要借助工具

第一个接口:(get请求)打开postman→ 选get→ 输入URL(全)→ 点击hander,在下边输入key-value(stu_name 小黑)→ 点击send→ 看结果
备注:get可以直接在浏览器使用,见上边。
第二个接口:(post请求)打开postman→ 选post→ 输入URL(全)→ 点击body→在form-date下边输入key-value→ 点击send→ 看结果
第三个接口:(post请求json入参)打开postman→ 选post→ 输入URL(全)→ 点击body→点击raw→后边的语言改为JSON→下边输入json串儿(即{"key":"value",}注意格式)→ 点击send→ 看结果
备注:post请求,默认的话是key-value传参,用默认的form-date就行;写明入参json的话,要用raw。
第六个接口:(post请求上传文件)打开postman→ 选post→ 输入URL(全)→ 点击body→在form-date下边输入key→后边的value先选择为file→点击send→ 看结果

postman的body中,form-date和x-www-form-urlencode的区别,只是前者能传文件。

第三节:(cookie)接口测试、访问qq接口

打开qun.qq.com到成员管理(需要登录),开始抓包。选择搜索群成员,里边的Headers里的cookie需要找出来,还有最下边的form-date.
第四个接口:(post请求有cookie)打开postman→ 选post→ 输入URL(全)→ 点击header,输入cookie和抓包的数据→点击 body→在form-date下边输入key-value→点击send→ 看结果

cookie 用户端会key-value记录你登录的状态,会过期;

session 服务端同样会key-value记录你登录的状态。

 cookie就是保存在你自己本地的一个键值对。session就是保存在服务端的一个键值对。

上边俩者都会记录,下次登录时候,服务器一对比,一样的,就表明又登录了
http://nnzhp.cn/api/user/user_reg牛牛的文档,供学习。
body用来传参,hander用来补充,比方写cookie


怎样测试接口:

post、get请求区别:

定义变量:设置→管理环境→globals→加个变量,之后用的时候,直接{(变量名称)}代替就行。
ip可以代替域名来访问:

保存collection:可以把几个接口放在一起保存起来。历史中点击...→create collection→save,已经保存。

功能测试主要还是测业务,要了解业务,然后测试功能。

接口测试用例:
1、正常的
2、异常
1)、不按接口文档上来
3、根据业务逻辑来设计不同的用例

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

get post 区别:

http请求

请求头header


你发出去这个请求的额外信息
你用什么浏览器发的
你想让服务端给你返回什么样的数据
cookie

请求体body

正常咱们发过去的数据了

1、get请求没有请求体,只有请求头 (把参数放在url里,或cookie里)
2、get请求没有post安全,因为get把参数都写到url里面 (其实抓包都能看见,并没有哪个更安全一说)
3、get请求有参数的大小限制,post请求。(以前浏览器不好,现在没了)
4、get请求一般用来获取数据,像服务端发送数据的时候用post (get请求如百度搜索,post请求如登录)
备注:其实区别只在第一点,其他的其实没有太大区别。


Jmeter做接口脚本

打开Jmeter:无需安装,直接点击解压文件中的jmeter.dat(要先安装jdk)
文件不显示扩展名:组织→文件夹和搜索选项→查看→不要勾选隐藏文件扩展名

Jmeter:Java开发的(所以必须装JDK再使用)开源的(即免费的)性能测试工具,也可以测接口

添加第一个:get请求

线程组:得先设置一个来干活
线程数:并列的几个线程组
加一个HTTP请求:添加→sampler→HTTP请求
名称:随便改
服务器名称或IP:写域名或IP。端口:默认HTTP,HTTPS时要输入
路径:
方法:get或post
paremeters:key-value,或者写在路径后?key=value
点击运行:一个绿色的三角形标。提示保存,那就保存一下子。

添加线程组→添加HTTP请求→填写服务器名称或IP→路径→ 方法→ 参数→ 添加监听器→ 察看结果数→ 点击运行→ 查看接口的请求和响应数据


post请求:

jmeter返回中文乱码:
1、在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把
sampleresult.default.encoding=UTF-8
加到最下面
2、重新打开jmeter

jmeter bodydata里面中文乱码
1、在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把
jsyntaxtextarea.font.family=Hack
加到最下面
2、重新打开jmeter

添加第三个:入参是json类型的post请求

入参类型是json的返回乱码:
1、在content encoding中加入utf-8

添加第四个:带cookie的post请求

添加 配置元件 HTTP信息头管理器

协议默认的HTTP,如果是HTTPS,就写在协议里。

添加第五个:上传文件接口

选择file,上传文件,并在此file写参数"file"

 

jmeter参数化

1、jmeter 参数化
1、选项→函数助手对话框里面的
__Random 取一个范围内的随机数
__time取一个时间戳:从计算机诞生的那一天到现在过了多少秒
参数加上YYYY(4个),即只取格式化的年
参数加上YYYY MM dd HH mm ss,取到格式化的年月日时分秒
__UUID 取一串儿唯一的数字,但有些长
文件中取值:
并列建立一个活儿:添加→配置元件→CSV Data Set Config
当中filename写清楚路径(也可以直接写明儿,但文件要放在bin目录下),
variable name随便取一个名儿AAA,BBB,CCC(可只有A,带上B也行),Dlimiter中输入分隔符","。
然后在HTTP需要取值的地方输入${AAA},${BBB},${CCC},
备注:,也可以换成其他符号,如空格的

${}是取变量格式。

CSV Data Set Config:当中的recycle选择TRUE和FALSE决定是否循环

备注:右上角的注意里边有数据时,就说明有错误。

先用注册接口注册一个账号。
注意:账户名fang${__time(,)}这个串儿,部分粘贴复制的时候容易粘不干净,像fang${__time(,)}容易错变成${__time(,)}},外边儿多留个大括号。

 

jmeter关联:

首先建立一个有效的登录接口,然后建立一个抽奖接口。
在登录接口中,添加→ 后置处理器→ JSON Path PostProcessor
正则表达式提取器:跟JSON Path PostProcessor功能一样。
"sign": "(.*?)"表示取左边是"sign": " 右边是"的值。
缺省值:没取到

变量取值:${name} 是大括号
结果中找东西:$.A.B....

错误:userid和sign结果值写反了

 

jmeter压测:

TPS:服务端每秒钟处理的事务数,越大越好

响应时间:从发出动作到服务端处理完返回给客户端的时间,越短越好

网友评论