Jmeter接口测试

Jmeter接口测试

本节课目标

1、接口概念

2、F12接口内容分析
request、response、code_status、cookie/session

3、接口相关问题

1、接口概念

1)接口是什么

接口 
=== 通俗来说:传递数据低通道

接口测试: 
=== 测试系统组件之间的一种测试

接口主要包括:
=== 同一个系统中模块与模块之间的接口/前端-后端接口,另外是一个跨系统、跨平台数据库的对接。(内部接口、外部接口)

2)通过项目架构理解接口

接口测试原理: 
借助工具/代码,模拟客户端发送请求到服务器,服务器处理后,接收返回的响应结果,这一个过程

在这里插入图片描述

3)剖析 http、request --浏览器F12

一个 http request (http请求) 指从客户端到服务端的请求信息,包括一下信息-四要素:
接口请求地址 url:

http://wy.lemonban.com:3000/callComponent/login/DoLogin?version=2.0


说明:
    协议       :http 
    域名/ip    :wy.lemonban.com 
    端口        : 3000 
    资源路径     : /callComponent/login/DoLogin-、
    参数=参数值  :  version=2.0 
请求方法:GET、POST等
请求头:  重点了解 content-type:客户端传递到服务器的数据格式
请求体/请求正文:就是请求参数

在这里插入图片描述

4)常见接口类型/协议

Http类型/协议:
	通过Get或POST获取数据,在数据处理上效率比较高--95%项目

Webservice类型/协议:
    通过soap协议来获取数据,比起来http能处理更复杂的数据类型。 
    本质也是http协议。传统项目的接口类型

5)http常见接口请求方式:restful接口定义-规范

get、post、put、delete等。get、post 两者的区别?
---开发怎么定义,就按照定义来测试

应用层协议--http,传输层协议-TCP ==> 查阅题库了解概念:3次握手、4次挥手

6)数据类型content-types

application/json:{键值对》 -- [key:value)

json格式注意事项:key-参数名:双括号括起来;value-值:数值-可以不用引号,
搞不清楚,全部用双引号括起来。传空值-null 或 ""

{
"logo""HC"
"username"."wy tudou"
班禁止外传
"passwd""lemon666"
班禁止
"validateCode"."lemon"
"errorlnfo".m
}
一对标签中包裹传递的数据 --比较少接触,简单了解
text/mxl格式:<> </> 
 
    <username>wy tudou</username>
    <passwd>lemon666</passwd>
    

2、F12接口内容分析

7)剖析http response --浏览器F12

响应:服务器-> 客户端  3要素
	1)http状态码:标记响应状态的一个标识
	2)响应头: cookie/session--登录鉴权
	3)响应体/响应正文:针对请求从服务响应回来的具体数据,比如:xml、json等,token-登录鉴权
	

在这里插入图片描述

常见面试问题:常见的http状态码有哪些? 
	200-ok 404-not found

8)常见的http状态码 --面试

200(正常):表示一切正常,到了服务器,并且服务器正常的响应你的请求
302(临时重定向):指出被请求的文档已被临时移动到别处,此文档的新URL在Location响应头中给出
304(未修改):表示客户机缓存的版本是最新的,客户机应该继续使用它,比如:前端js
403(禁止):服务器理解客户端请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置所致
404(找不到):服务器上不存在客户机所请求的资源
500(内部服务器错误):服务端的CGI、ASP、JSP等程序发生错误
504(超时):网关超时,是指服务器作为网关或代理,但是没有及时从上游服务器收到请求

详细说明:
	https://blog.csdn.net/q1056843325/article/details/53147180

9)剖析cookie session token --区别

cookie:
    客户端和服务器都能创建cookie,存放客户端。存放一些不敏感的数据,比如说:用户名,,数据类型为JSON

session:
    服务器端生成session,存放服务器端。可以存放任意数据,一般默认时间是30min,session依赖cookie实现

token:
    服务器生成、验证,以cookie或请求头的方式传给客户端,客户端以同样的方式发送给服务器。过期时间

通行证(登录鉴权):
    session_id 会存在cookie中,每次请求cookie中的所有信息都会传送给服务器,服务器
    通过session_id来识别是否同一个用户的请求。不是同一个用户的话,就要去用户重新登录。

为什么会有这种机制呢? 
    因为 http请求是无状态的,也就是没有记忆-记录

凡是登录之后才能操作的页面对应的接口 -- 需要做登录鉴权

参考博文:
	https://www.cnblogs.com/nickjiang/p/9148136.html

10)剖析 cookie session 在这里插入图片描述

11)剖析 token 在这里插入图片描述

3、接口相关问题

1、什么时候要做接口测试? --常识
	公司有接口测试需求,接收到接口测试任务
	
2、为什么要做接口测试?
   1)开发代码初期,UI和Web页面设计还没到位,提前介入测试更早发现问题,
     否则则底层的一个bug可能会引起外面的8个bug
   
   2)出于接口安全层面考虑,前端进行限制容易绕过,需同样测试后端的限制;
     另外测试接口验证数据的加密传输,例如用户敏感数据
 
3、接口测试原理? 工具/代码
   模拟客户端向服务器发送请求,服务器接受请求后对相应的请求做处理并向客户端返回响应结果,客户端接受的一个过程
   
4、前端已经界面处理,已经通过前端界面进行测试,后端接口是否还需要测试?
  1)实际安全层面是需要的,但是公司不一定有时间给你去测试,有时间可以补充接口测试;
  不然以主要功能为主;
  
  2)没有前端界面,以及测试后端接口了,前端界面出来,还要做测试吗?
    一定需要,前后端对接是否ok,系统测试用例去执行

5、接口测试一般属于测试执行那个阶段?
  一般:集成、系统
 

4、安装Java并配置环境

查看自己 window系统的位数

依据自己的电脑系统位数,选择对应的位数的jdk安装包

在这里插入图片描述

安装JDK

1、双击jdk1.8出现如下图

在这里插入图片描述

2、点击下一步,记住jdk安装路径(请一定要记住该路径,后面的环境变量会使用到该路径)

在这里插入图片描述

3、这里可以点击下一步:

在这里插入图片描述

4、点击关闭,到此已经结束啦。Jdk已经安装完成。

在这里插入图片描述

配置jdk环境变量

1、安装完JDK后配置环境变量,右键点击计算机→属性→高级系统设置→高级→环境变量

在这里插入图片描述

2、点击环境变量,系统变量→新建 JAVA_HOME 变量 。
变量值填写jdk的安装目录(我的是C:\Program Files\Java\jdk1.8.0_65,
请大家填写上面步骤中自己安装在自己电脑上的jdk路径地址)

在这里插入图片描述

3、系统变量→寻找到一个名为:Path的变量→编辑
win7系统:
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(注意:原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
(注意:不需要去管path变量值里面有什么,不要去删除任何东西,只要往最后添加即可)

在这里插入图片描述

win10系统
点击编辑后,再点击新建
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
分2次将上述配置添加到path变量中
(注意,是分2次新建添加,一次只添加一条)

在这里插入图片描述

4、系统变量→新建 CLASSPATH 变量

变量值填写   .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)
系统变量配置完毕

在这里插入图片描述

检验环境变量是否配置成功

1、电脑左面的左下角,搜索cmd,进入Windows命令行页面

输入:java -version (java 和 -version 之间有空格)
若如图所示 显示版本信息 则说明安装和配置成功。

在这里插入图片描述

2、按下键盘上上的win+r键,调出运行窗口,在运行窗口输入cmd

在这里插入图片描述

进入Windows命令行页面,输入:java -version (java 和 -version 之间有空格)

若如图所示 显示版本信息 则说明安装和配置成功。 在这里插入图片描述

错误解决

如果提示java不是内部或者外部命令,请确认自己的环境变量是否配置正确。

在这里插入图片描述

5、JMeter安装与使用

安装/配置

1、从官网下载 Jmeter(压缩包),官网下载链接 :https://jmeter.apache.org/
  (官网下载速度较慢,需要等待一定的时间,这里我推荐复制下载链接,然后用迅雷下载 或 ~)

2、安装、配置步骤
   https://blog.csdn.net/weixin_45426071/article/details/122019211?ops_request_misc
   
3、JMeter5.2.1 改变默认设置
   https://blog.csdn.net/xiao_xiao2/article/details/125692734

JMeter接口测试实操

目标一

1、接口测试流程/步骤
2、收获接口需求 --- 开发
3、接口测试用例编写

开始			   => 
获取接口需求 		=> 
编写接口用例/评审  => 
搭建项目环境 		=> 
完成测试报告 		=> 
结束

接口测试流程/步骤

1、获取接口需求并分析
2、编写接口测试用例&评审测试用例
3、项目环境部署 -- 不一定测试部署,很多公司主要运维/开发部署
4、执行测试&工具选用
5、提交bug并跟进
6、单独需求整理测试报告(公司有要求就做)

知识储备

1)软件测试基础知识: 编写用例/设计方法
2)Linux命令/项目框架
3)数据库知识/观察数据表中的数据流
4)接口概念的掌握
5)工具的掌握: 浏览器/插件/Jmeter/soapUI 原理以及具体操作步骤 Postman
6)分析能力: 需求业务/日志分析
 

获取接口需求并分析

1、获取接口需求?
开发提供接口文档--swagger在线 / Word文档
开发未提供,通过抓包工具fiddler 或 F12开发者工具获取(前端界面),并找开发确认

2、swagger
是一个用于生成、描述和调用 RESTful 接口的web服务。通俗的来讲,swagger就是将项目中所有(想要暴露的)接口展现在页面上,并且可以进行接口调用和测试的服务

3、分析接口内容?
	http://47.115.15.198:7001/smarthome/swagger-ui.html
	
1)业务分析能力
2)用例设计方法-等价类、边界值、场景法、错误推测法
  以注册为例:
      url: http://47.115.15.198:7001/smarthome/user/register
      请求方式: post
      请求头:Content-Type:application/json
            X-Lemonban-Media-Type: lemonban.v2
      请求体: 看看接口文档
      响应--http状态码、响应头、响应头 -- 重点看-开发定义( code、msg、data)


如何编写接口测试用例? 高频面试题

接口的正常调用。
	就是输入正常的参数值,检查接口返回的响应结果信息跟接口文档预期一致,包括 msg,code,data 等;数据库增删改查是否正确

接口的异常验证。
	依据限制约束,包括 长度、类型、必填等异常,同步考虑 边界值。例如: id 是否支持整数,传递的是小数 或 字符串呢? 且传递的参数足够大 或为负数时,接口是否可以正常处理

业务规则验证。
	登录鉴权,代理商添加小区,物业添加小区,是否报错?

接口的安全性验证。
	对于用户的敏感信息(密码、身份证号)进行加密。如果是外部接口的话,这点尤其重要。 ---用户加密、鉴权;其他安全性要求看项目要求
	
接口的性能验证。
	接口处理数据的时间也是测试的一个方法。牵扯到内部就是算法与代码的优化。会借助压力测试工具比如 Jmeter、loadrunner 完成 --响应时间多与少,易用性 --有无项目要求
	

接口测试用例模板

1、序号
2、接口模块
3、用例标题
4、请求头
5、请求方式
6、接口地址
7、参数输入
8、期望返回结果
9、数据库结果
10、实际结果
11、备注

如:

在这里插入图片描述

在这里插入图片描述

目标二

1、所有接口测试工具介绍
	包括: Jmeter,postman,soupUl,fiddler,loadrunner,代码实现,浏览器实现
	
2、Jmeter工具的基本使用
    a) 请求默认值
    b) 请求头部管理器
    c) 查看结果树
    
3、Jmeter工具发送 Jdbc的请求,连接数据库

4、Jmeter工具测试 webservice接口-- 扩展内突

目标

1、接口测试工具介绍

2、Jmeter工具详解

接口测试流程

1)开始->获取接口需求->
2)编写接口用例/评审->
3)搭建项目环境->
4)执行接口测试->
5)完成测试报告->
6)结束

1、接口测试工具介绍

Postman 			-- 主流  
soapUI  			-- 少用,用于 webservice类型/soap协议
Jmeter  			-- 主流
Loadrunner 			-- 主要性能测试-接口
代码实现[Python/Java] -- Python接口自动化测试

2、Jmeter的基础使用详解

常用测试元件

测试计划:   默认
线程组  :   并发用户数、并发时间、请求循环次数
采样器  :   比常用Http请求-重点、JDBC Request、soap/webservice --本质http
监听器  :   查看结果树
配置元件:   http请求默认值、Http信息头管理器、JDBC Connect Configuration

关联    : 后置处理器: 正则表达式、JSON表达式
参数化  : 用户定义的参数、CSV Data Set Config 、函数参数化
断言    : 响应断言。通过对比服务器返回的响应数据,判定请求是否成功

2.1sampler的http请求

1、http请求界面介绍
   重点:接口请求地址的拆分、如何选择请求方式、参数的填写
   
2、http请求默认值、http信息头管理器应用

3、完成一次http请求,并查看结果树。[如何查看请求的数据以及返回的数据]

4、http cookie 管理器应用

5、添加多线程,禁用/启用请求的使用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2 sampler的jdbc请求

1、项目用到是 mysql 数据库,所以用的驱动(连接数据库): com.mysql.jdbc.Driver
   驱动包: mysql-connector-iava-5.1.7-bin.jar 插件包 -- 放到imeter安装目录下lib目录下
 

在这里插入图片描述

在整个项目中 -> 测试计划,添加/加载(连接JDBC驱动包) mysql-connector-java-5.1.7-bin.jar 

在这里插入图片描述

创建线程组

在这里插入图片描述

jdbc 连接设置。变量名 
 

在这里插入图片描述

jdbc参数配置:
	与测试环境部署的数据库配置信息是一样的,讲解配置信息如何 填写,每个字段分别是什么意思

参数说明:
idbc.url
	jdbc:mysql://127.0.0.1:3306/my_database?useUnicode=true&characterEncodi ng=utf-8&allowMultiQueries=true

127.0.0.1 	-- 数据库所在服务器的ip
3306 		-- 数据库端口
my_database --- 数据库库名

物业接口项目数据库url
	jdbc:mysql://47.115.15.198:3306/wisdom_home?useUnicode=true&characterEncodi ng=utf-8&allowMultiQueries=true

在这里插入图片描述

jdbc请求。 jdbc请求变量设置

在这里插入图片描述

运行,查看执行结果

在这里插入图片描述

连接数据库-驱动包

DatabaseDriver classDatabase URL

2.3文件上传

文件类型

.doc  application/msword
.docx application/
.ovnd.openxmlformats-officedocument.wordprocessingml.document
.pdf 	application/pdf
.xls 	application/vnd.ms-excel application/x-excel
.xlsx 	application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.ppt 	application/vnd.ms-powerpoint
.pptx 	application/
.ovnd.openxmlformats-officedocument.presentationml.presentation
.txt   text/plain
.png   image/pngimage/jpg

上传操作

在这里插入图片描述

2.4webservice/soap-了解

webservice接口:
	http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl --- 已经对外发布
,直接访问可以获取接口说明

如果是公司未发布的webservice接口,没有接口相关说明,只有一个wsdl地址--借助soapui
自动解析接口的类、方法的解析


1、直接访问 webservice接口

在这里插入图片描述

2、除掉 接口 ?wsdl ,访问描述页

在这里插入图片描述

3、进入 webxml.com.cn/ 接口详情页

在这里插入图片描述

4、填写请求头信息

在这里插入图片描述

5、填写请求体信息(数据、内容)

在这里插入图片描述

6、执行请求,查看返回结果

在这里插入图片描述

7、使用SoapUI 创建项目

在这里插入图片描述

8、SoapUI分析并获取webservice请求头和请求体

在这里插入图片描述

目标

1:Jmeter的金数化
2: Jmeter关联(正则表达式提取器、json提取器) 
3: 断言

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值