AI-Jmeter实战

241 篇文章 0 订阅
177 篇文章 0 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3.4k次,点赞86次,收藏15次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

新接到一个需求,插件下的工具创建数量限制上限 25 个,且支持高并发请求下的限制。有如下两个想法;

  1. 直接使用 python 代码实现单接口的并发性请求。
  2. 使用 Jmeter 实现接口的高并发请求

实现方式

当前使用 mac 系统,有鉴于自己本身的代码能力,代码还是暗戳戳的让 GPT 完成。Jmeter 内容根据请求接口中的 curl 进行配置

代码方式实现

代码内容如下
import requests
import string
import random
from concurrent.futures import ThreadPoolExecutor
def generate_random_string(length=12):
    # 生成一个长度为 length 的随机小写字母字符串
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for i in range(length))
def send_request(name):
    url = 'https://www.coze.com/xxxxx'
    headers = {
        'Accept': 'application/json, text/plain, */*',
        'authority': 'www.coze.com',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Content-Type': 'application/json',
        'Cache-Control': 'no-cache',
        'Connection': 'keep-alive',
        'Cookie': 'xxxxxx',
        'Origin': 'https://www.coze.com' ,
        'Pragma': 'no-cache',
        'Referer': 'https://www.coze.com/xxxxxx',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-origin',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
        'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"macOS"',
        'x-requested-with': 'XMLHttpRequest',
        # 'msToken':'xxxxxx',
        # 省略其他 headers 以保持简洁,实际使用时请包含所有必要的 headers
        'x-bizide-token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7ImlkIjoiNzMxMTI2MjU0MTg2NTI4ODcwNSIsInRlbmFudF9pZCI6ImJkMTgyMDQzZmJlNmRlZTEyYjI0NzczZTdlNzg1NTE2IiwidHlwZSI6InVzZXIifSwiZXhwIjoxNzExNTEyOTY4LCJpYXQiOjE3MTE1MDkzNjgsInVzZXJpZCI6IjczMTEyNjI1NDE4NjUyODg3MDUiLCJ1c2VybmFtZSI6IiJ9.lI-6PSfsZ0DdARy-sprYnq-gwYczA58JZa0XJU8VK0Hkw3KmtuRzg01T_0ha5miQAKlTxDmhCykM7jQSWB20Nn2uj01tkCM42s5VBfP4iaZkSKUQAGlALOW32kxopfQ2Y7pYyfuapt0haTszTKSJyUYFVy266h05ScFmtORl2zUToeRogch64wotxwd6MWPHIPEDr4iaB6zRc3kIYgX5WyjeIZwCgpI9NiqSlH_-X-zLVd2ZsuPbvqXERzn1M6ZiZcS2vj5Ikqz0i7c0-kchNpFRV0vCUQEChMKXaOwY80FfPtCPxRP8BnqFiKvq8Aph3TlJrS9AHtSiV3GJ6tmH3g',
        # 请替换为实际的 token
    }
    data = {
        "pluginId": "7350576573348675585",
        "name": name,
        "description": "toll",
        "input": "[]",
        "output": "[]"
    }
    response = requests.post(url, json=data, headers=headers)
    print(f"Response from {name}: {response.status_code}, Response Body: {response.text}")
def main():
    names = [generate_random_string() for _ in range(25)]
    with ThreadPoolExecutor(max_workers=25) as executor:
        executor.map(send_request, names)
if __name__ == '__main__':
    main()
代码解释:
  1. 导入必要的模块
    1. requests:用于发送 HTTP 请求。
    2. string:用于生成随机字符串。
    3. random:用于生成随机数。
    4. ThreadPoolExecutor:用于创建线程池,以便并发地发送请求。
  2. 定义函数 generate_random_string(length=12)
    1. 该函数用于生成指定长度的随机小写字母字符串。
    2. 默认生成长度为 12 的字符串。
  3. 定义函数 send_request(name)
    1. 该函数用于发送 HTTP POST 请求。
    2. 请求的 URL 存储在 url 变量中。
    3. 请求头存储在 headers 字典中,包含了一系列请求头信息。
    4. 请求体存储在 data 字典中,包含了请求所需的数据。
    5. 使用 requests.post() 方法发送 POST 请求,并打印响应状态码和响应内容。
  4. 定义函数 main()
    1. main() 函数中,首先生成了一个包含 25 个随机字符串的列表 names
    2. 然后使用 ThreadPoolExecutor 创建了一个最大工作线程数为 25 的线程池。
    3. 使用 executor.map() 方法并发地调用 send_request() 函数,传入随机字符串列表作为参数。
  5. __name__ == '__main__' 下调用 main() 函数,即程序入口。
优缺点分析
  1. 代码的灵活性高、可控性强、可定制。
  2. 编码复杂程度高、维护成本较高,需要自行处理报告生成等工作,可观察性差。

Jmeter方式实现

在mac 中提前安装好Jmeter程序,网上的教程就不用多说了。

  1. 安装完成后检查一下是否可用。直接在命令行输入jmeter,能够启动就是能用
  2. 正式启动后,点击新建测试计划
  3. 添加线程组
    1. 右键点击测试计划,选择 "Add" -> "Threads (Users)" -> "Thread Group" 来添加一个线程组。在线程组中,你可以设置并发用户数、循环次数等参数。
    2. Number of Threads (users) (线程数/用户数): 这个参数指定了模拟用户的数量,也就是并发访问的用户数量。每个线程代表一个虚拟用户,每个用户将按照你设置的方式执行测试脚本。
    3. Ramp-Up Period (in seconds) (启动时间): 这个参数指定了 JMeter 在启动所有线程(用户)之间的时间间隔。如果设置为 0,则所有线程将同时启动,如果设置为非 0 值,则 JMeter 将在指定的时间内逐步启动所有线程。
    4. Loop Count (循环次数) :这个参数指定了每个线程(用户)执行测试计划的次数。如果设置为 -1,则线程将一直执行,直到测试被手动停止。
    5. Duration (seconds) (持续时间): 这个参数指定了测试计划的持续时间,单位为秒。如果设置了持续时间,则测试计划将在指定的时间内运行,无论线程数或循环次数如何。
  4. 添加HTTP请求:在线程组下右键点击,选择 "Add" -> "Sampler" -> "HTTP Request" 来添加一个 HTTP 请求。在 HTTP 请求中,你需要填入请求的 URL、请求方法等信息。
  5. 配置HTTP请求参数:根据你提供的 cURL 命令,我们需要填入以下信息:
    1. 服务器地址:https://www.coze.com/api/bizide/bots/api/v1/function/7350576573348675585/subFunction
    2. 请求方法:POST
      1. 请求头部信息:移除非必要的请求头部信息,如:accept-languagecookieuser-agent等。
    3. 请求体信息:使用参数化设置,确保 name 字段的值不重复。
  6. 参数化请求体中的 name 字段:在 HTTP 请求中,将 name 字段的值设置为变量,以便每次请求时都使用不同的值。你可以使用 CSV 数据文件或者 JMeter 提供的函数来实现参数化。
  7. 添加监听器:右键点击线程组,选择 "Add" -> "Listener" 来添加一个监听器,比如 View Results Tree 或者 Summary Report,用于查看测试结果。
  8. 保存并运行测试计划:在 JMeter 中选择 "File" -> "Save Test Plan As" 来保存测试计划,并点击工具栏上的绿色运行按钮来执行测试计划。
优缺点分析
  1. 简单易用、功能全面、报告生成和结果分析方便
  2. 学习成本高,可定制性较差。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值