接口测试学习111

· 浏览次数 : 0

小编点评

**脚本介绍:** 这套脚本包含以下功能: 1. 获取 HTTP 请求和响应数据 2. 使用 JMeter 测试 RESTful API 3. 下载文件 4. 变量化请求参数 5. 使用 JSON 断言检查请求结果 **脚本步骤:** **1. 获取请求数据** - 使用 `tcpdump` 抓取 HTTP 请求数据包 - 使用 `grep` 命令过滤请求数据 - 使用 `sed` 命令对请求数据进行排版 **2. 使用 JMeter 测试 RESTful API** - 创建一个模拟器测试程序 - 配置测试计划中的全局变量 - 设置参数化选项 - 设置断言选项 **3. 下载文件** - 使用 `wget` 或 `curl` 下载文件 - 保存文件到指定位置 **4. 变量化请求参数** - 在请求中添加参数 - 使用 `${__threadGroupName}` 或 `${__threadNum}` 引用变量 **5. 使用 JSON 断言检查请求结果** - 在请求中添加 JSON 断言 - 使用 `$.user` 查询 JSON 数据中的 "user" 属性 - 使用 `Assert Json Path Exists:$.user` 检查断言结果 **6. 其他设置** - 使用 `csv` 文件存储参数 - 使用不同的线程组使用 CSV 数据参数文件 - 使用不同的线程用不同 CSV 数据参数文件

正文

1、同步接口:

2、异步接口:不需要等接口的调用结果也可以继续执行。轮询方式。

3、回调接口:

一、代理类型

1、协议:httphttps。代理fiddler

2、协议:TCP协议簇,代理:socks4

3、协议:TCPUDP协议簇,代理:socks5

二、接口测试范围/类型

1、接口功能测

2、接口性能和安全测试

3、接口兼容性测试

 

三、接口测试的办法:手动、自动

四、HTTP协议与请求、状态

1、HTTP协议:超文本协议

2、getpost的区别:

(1) get请求一般将参数附加在请求目标之后;

Post请求将参数附加在message-body之后;

(2) 幂等性:get请求(幂等性),post请求(非幂等性)

(3) 可缓存:get请求(可缓存),post请求(一般默认不缓存)

(4) Get请求参数可以保存到书签,post不能;

(5) 请求参数大小限制:get请求 协议没有限制,基于安全考虑,浏览器和操作系统对此有要求(post请求 协议没有限制,应用程序可能有限制)

(6) 表单传输数据(getpost):传送文件必须使用post请求。

五、状态码

1、范围:100-599

2、100-199:表示请求已被服务器接受,还需要下一步动作,常见:101【协议切换】;

3、200-299:请求成功;常见200【请求成功,请求被服务器正常处理】、201【资源被创建】、204【没有内容,put请求更新资源,但没有内容】、206【服务器将请求的部分内容传回】;

4、300-399:重定向。304【从缓存中读取资源】

5、400-499:语法错误。401【未经授权,基本认证、摘要认证】、403【请求被服务器禁用,如权限问题】、404【请求的资源未找到,原因:网页或资源被删除或移动】、405【请求的办法不支持,服务器必须支持的办法:gethead

6、500-599:服务器发生内部错误。500【服务器内部错误】、502【网关的错误】、503【不支持服务,如:服务器繁忙、停机维护】、504【网关超时】、505HTTP版本不对】

 

六、条件请求【状态码300-399

1、概念:检测请求资源是否被修改。

2、场景:验证缓存的有效性、验证文件的完整性。

3、验证器类型:最后修改时间(Last-Modified)、实体表情“Etag”。

操作:HTTP信息头管理器:If-None-Match(Etag)If-Modified-Since(Last-Modified)---返回状态码是304

七、范围请求:允许服务器返回部分请求内容【在传输大数据文件、媒体文件、大数据时非常有用,服务器先将部分请求结果返回,达到持续传输的效果】

1、前提:服务器支持范围请求。标志:Accept-Ranges:bytes.

2、单范围请求:Rangebytes=0-1023;

3、多范围请求:Ranges:bytes=1000-2000,3000-4000;

4、状态码结果:206【返回部分请求结果,请求成功】

5、操作:HTTP信息头管理器:名称:Range,值:1-1023

 

八、条件范围请求:在范围请求时,服务器修改文件,这时请求的可能是范围请求,也可能是新的全新请求。

1、操作:HTTP信息头管理器:名称:Range,值:1-1023名称:If-Range,值:(Etag)

 

九、重定向:客户端在访问服务器地址时,地址URL被移动,服务器会返回一个新的地址让客户端代理进行访问。临时重定向:;永久重定向:301【其他请求可能变成get请求】、308【】。

 

十、tcpdump协议分析工具

1、linux系统自带的协议分析工具;

2、Ifconfig:查看物理接口;

3、Tcpdump -i eth0:指定接口;

4、Tcpdump -i eth0 -c 5 :指定抓取eth0接口的5个接口;

5、RPF过滤指定数据包,符合过滤条件则输出,不符合则不输出。

原语:限定词 限定词 IP或数字

src host 192.168.50.5 && dst host 192.168.30.123

tcpdump ether host 3e:42:d5:22:1d:63,如果是动态地址的话,可以对mac地址进行限制。

tcpdump tcp port 80,过滤tcp协议的80端口的数据。

 

6、Tcpdump抓取HTTP请求数据包

get请求

Tcpdump -s 0 -A tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x4755420

post请求

Tcpdump -s 0 -A tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)

查看http请求与响应

Tcpdump -s 0 -A tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) !=0)

 

 

 

二、jmeter介绍

1、六大组件:配置元件、前置处理器、定时器、(取样器)后置处理器、断言、监听器。

2、设置属性:函数助手中的setproperty”设置属性。也可以使用“后置处理器-JSR223后置处理程序的props.put(name,value)”设置属性。

3、获取属性:1。通过在后置处理器-JSR223后置处理程序使用def pv = props.getname--log.info(pv)获取属性;2.

4、jmeter属性是全局的。Jmeter变量是局部的。

5、变量的引用:${name}

6、定义变量:测试计划、用户自定义等。也可以在“后置处理器-JSR223后置处理程序”使用vars.put(namevalue)字符串类型变量,定义vars.putobject(name,value)非字符串类型变量。

7、获取变量:在“后置处理器-JSR223后置处理程序”使用vars.get(name)获取变量。

8、调试变量和属性:取样器:debug调试取样器。后置处理器:调试后置处理程序进行debug变量和属性。

 

 

三、无名参数请求

1、jsonxmlrestsoap请求类型都是带有无名参数进行请求。

2、Post请求必须设置content-type

3、查询字符串:可以放在path(请求目标后面),也可以放在参数中。

4、parameter(参数)中,name不全为空时,content-type为:application/x-www-for。当name全为空,content-typetext/plian

5、在消息体数据中,content-typetext/plian

6、在文件上传中,但name不全为空,content-type为默认设置的content-type。当name不为空,content-typemultipart/form-data

 

四、下载文件

1、下发get请求获取文件的URL;

2、JSR223 sample中输入一下内容:

import java.io.*;

byte[] result = prev.getResponseData(); //这个是获取到请求返回的数据,prev是获取上个请求的返回

String file_name = "D:\\BaiDu.jpg"; //代表存放文件的位置和文件名

file = new File(file_name).withOutputStream { out ->
out << result
out.close()
    }

 

 

五、参数化实现

1、测试计划中的全局变量;

2、前置处理器-用户参数可以实现参数化;

3、配置元件-CSV数据参数化;

4、JDBC连接数据库进行参数化;

5、内置函数可以参数化,如:Random

 

 

 

六、不同线程组使用不同CSV数据参数文件:使用函数${__threadGroupName}

操作:

1、假设线程为:tg1tg2tg3.....tgn

2、csv文件名称为:tg1.csvtg2.csvtg3.csv.....tgn.csv;

3、CSV数据参数设置路径为:C:/Users/linka/Desktop/${__threadGroupName}.csv。其中__threadGroupName就是CSV数据参数的参数化名称。并且线程共享模式选择:“当前线程组”(不是“当前线程”)。

注:CSV数据参数和线程组是同一级。并且线程组名称和csv文件名称一致。

 

 

 

七、不同线程用不同CSV数据参数文件:使用函数${__threadNum}

操作:

1、线程组13个线程数:123

2、线程组22个线程数:12

3、csv文件名称分别为:t1t2t3t4t5

4、CSV数据参数:C:/Users/linka/Desktop/t${__threadNum}.csv。并且线程共享模式选择:“当前线程”

注:CSV数据参数和线程组是同一级。

 

八、JSON断言

1、CSV中提取名称如userpwd

2、在请求中增加json断言,在请求结果中使用:$.user查询键值;

3、json断言中的“Assert Json Path Exists$.user,在“Expected Value${user}

4、需要对多个请求结果进行断言时,则需要添加多个JSON断言。

与接口测试学习111相似的内容:

接口测试学习111

1、同步接口: 2、异步接口:不需要等接口的调用结果也可以继续执行。轮询方式。 3、回调接口: 一、代理类型 1、协议:http、https。代理fiddler 2、协议:TCP协议簇,代理:socks4 3、协议:TCP、UDP协议簇,代理:socks5 二、接口测试范围/类型 1、接口功能测 2

接口测试基础

定义 基于不同的输入参数,校验接口响应数据与预期数据是否一致。后端开发完成后可以先进行接口测试,提前介入测试,尽早发现问题。 接口测试学习内容 1.接口测试用例设计 2.工具实现接口测试,主要就是利用postman或者其他工具测试 3.代码实现接口测试,也就是接口自动化测试 URL 1.URL:是互

[转帖]Python-Mock接口测试

https://www.cnblogs.com/zhangwuxuan/p/12928850.html 前言 今天跟小伙伴们一起来学习一下如何编写Python脚本进行mock测试。 什么是mock? 测试桩,模拟被测对象的返回,用于测试 通常意义的mock指的就是mock server, 模拟服务端

Apifox:成熟的测试工具要学会自己写接口文档

好家伙, 在开发过程中,我们总是避免不了进行接口的测试, 而相比手动敲测试代码,使用测试工具进行测试更为便捷,高效 今天发现了一个非常好用的接口测试工具Apifox 相比于Postman,他还拥有一个非常nb的功能, 在接口的测试完成后,它可以一键生成接口文档 下载地址(免费哟): Apifox -

[转帖]Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

https://www.cnblogs.com/alongdidi/p/test_exitStatus_positionalAndSpecialParameter.html 我自己接触Linux主要是大学学习的Turbolinux --> 根据《鸟哥的Linux私房菜:基础篇》(第三版) --> 马

[转帖]Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量 我自己接触Linux主要是大学学习的Turbolinux --> 根据《鸟哥的Linux私房菜:基础篇》(第三版) --> 马哥的就业班课程。给我的感觉是这些课程对于bash的讲解,理论上是不够的,但是限于时间、篇幅和精

postman导入请求到jmeter进行简单压测,开发同学一学就会

背景 这个事情也是最近做的,因为线上nginx被我换成了openresty,然后接入层服务也做了较大改动,虽然我们这个app(内部办公类)并发不算高,但好歹还是压测一下,上线时心里也稳一点。 于是用jmeter简单压测下看看,这里记录一下。 这次也就找了几个接口来压:登录接口、登录后获取用户信息接口

GPT-4多态大模型研究

1.概述 GPT-4是OpenAI最新的系统,能够产生更安全和更有用的回应。它是一个大型的多模态模型(接受图像和文本输入,输出文本),在各种专业和学术的基准测试中展现了人类水平的表现。例如,它在模拟的律师资格考试中得分位于前10%的考生之列;相比之下,GPT-3.5的得分位于后10%。 GPT-4是

【接口测试】Fiddler修改请求参数详解

1.启动Fiddler 打开Fiddler应用程序,它会自动开始捕获HTTP/HTTPS流量。确保Fiddler的捕获功能已启用(通常默认就是启用的)。 2.设置断点 在Fiddler中,有两种方式可以设置断点:自动断点和手动断点。 1.自动断点: 通过菜单栏选择“Rules” > “Automat

PostMan接口测试实用小点

PostMan接口测试实用小点 1. 接口测试变量存取操作 在Postman中有很多地方可以存储一些变量,这里只介绍经常使用的环境变量.变量设置后,在UI界面可以通过{{变量名}}获取到对应值. 在环境变量中配置变量url = https://ct.ctrip.com 在请求地址栏配置 {{url}