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格式:<>

wy tudou

lemon666

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: 断言

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: