一文3000字教你用Python + Jmeter 实现自动化性能压测

Step01: Python脚本开发

文件路径:D://wl//testproject//Fone-grpc//project1//test_client.py

Python 脚本作用:

  1. 通过 grpc 调用底层 c++ 的接口,做数据库的数据插入与查询操作,然后将返回的结果进行拼接与输出。

2. 代码里面将每一次调用后返回的内容进行拼接后,并做了成功信息的统计,输出成功的次数为3,输出后会转给 jmeter 里面的脚本获取。

  1. from __future__ import print_function

  2. import logging

  3. import sys

  4. import grpc

  5. import Storage_pb2      # Storage_pb2.py which contains our generated request and response classes

  6. import StorageService_pb2_grpc # StorageService_pb2_grpc.py which contains our generated client and server classes.

  7. host="10.10.1.117:50066"

  8. def run():

  9.     result=""

  10.     with grpc.insecure_channel(host) as channel:

  11.         resp0=StorageService_pb2_grpc.FOneStorageStub(channel).InsertKVS(Storage_pb2.PUpsertKVS(

  12.             DBName="MergeLog",TableName="MergeLog",KeyValues=[{"Key":b'',"Key":b''}],Upsert=True,Transaction=True

  13.         ))

  14.         result+=str(resp0)

  15.     with grpc.insecure_channel(host) as channel:

  16.         stud1=StorageService_pb2_grpc.FOneStorageStub(channel)

  17.         resp1=stud1.InsertV(Storage_pb2.PInsertV(DBName="MergeLog", TableName="MergeLog", Value=b"1"))

  18.         result += str(resp1)

  19.      

  20.     with grpc.insecure_channel(host) as channel:

  21.         stud2=StorageService_pb2_grpc.FOneStorageStub(channel)

  22.         resp2=stud2.FindOne(Storage_pb2.PFindK(DBName="MergeLog", TableName="MergeLog", Key="1"))

  23.         result += str(resp2)

  24.     result=result.replace("\n", " ")

  25.     result=result.count("Successful return: 0")

  26.     print(result)

  27. if __name__ == '__main__':

  28.     logging.basicConfig()

  29.     run()

PS:在本地调试好脚本,确保符合预期。

Step02: Jmeter 创建 beanshell 取样器

脚本内容如下:

  1. import java.io.BufferedReader;

  2. import java.io.InputStreamReader;

  3. log.info("----------------------------start to exe");

  4. String command = "cmd /c python D://wl//testproject//Fone-grpc//project1//test_client.py"; //定义要执行的python文件路径

  5. String var;

  6. Runtime rt = Runtime.getRuntime();

  7. Process pr = rt.exec(command);  //执行上面的python脚本

  8. pr.waitFor()

  9. BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream())); // 转换执行脚本后的返回响应

  10. String line = "";

  11. StringBuilder response = new StringBuilder();

  12. while ((line = b.readLine()) != null) {

  13.      response.append(line);

  14. String response_data = response.toString();

  15. log.info(response_data);

  16. if(response_data.equals("3")){ // 判断响应的内容是否有3次,如果不是3次就表示执行失败了

  17.  log.info("---------------------------success end exe");

  18. }else{

  19.  log.error("--------------------------failed end exe"); //这里的输出一次会记录一次失败次数

  20. }

  21. b.close();

Step03: 执行效果

通过 jmeter 工具进行并发操作,对后端底层接口进行压力测试,效果不错,效果图如下所示。

 Step04: Jmeter日志输出

  1. 2023-02-22 17:26:08,539 INFO o.a.j.t.JMeterThread: Stopping because end time detected by thread: 线程组--python 1-33

  2. 2023-02-22 17:26:08,539 INFO o.a.j.t.JMeterThread: Thread finished: 线程组--python 1-33

  3. 2023-02-22 17:26:08,597 INFO o.a.j.u.BeanShellTestElement: 3

  4. 2023-02-22 17:26:08,597 INFO o.a.j.u.BeanShellTestElement: ---------------------------success end exe

  5. 2023-02-22 17:26:08,598 INFO o.a.j.t.JMeterThread: Stopping because end time detected by thread: 线程组--python 1-82

  6. 2023-02-22 17:26:08,598 INFO o.a.j.t.JMeterThread: Thread finished: 线程组--python 1-82

  7. 2023-02-22 17:26:08,608 INFO o.a.j.u.BeanShellTestElement: 2

  8. 2023-02-22 17:26:08,608 ERROR o.a.j.u.BeanShellTestElement: --------------------------failed end exe

 今天的分享就到此结束了 ,如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins是一个流行的自动化构建工具,它可以与JMeter结合使用以实现自动化性能测试。以下是Jenkins JMeter部署自动化性能测试的步骤: 步骤1:安装Jenkins 在您的计算机上安装Jenkins并启动它。对于Windows用户,您可以从Jenkins官方网站下载可执行文件并按照指示安装。 步骤2:安装JMeter插件 在Jenkins中安装JMeter插件。您可以通过Jenkins插件管理器轻松安装插件。在Jenkins主页上,转到“管理Jenkins”>“插件管理器”>“可选插件”并搜索“JMeter插件”。选择“安装”并等待插件安装完成。 步骤3:安装JMeter 在您的计算机上安装JMeter。您可以从Apache JMeter官方网站下载可执行文件并按照指示安装。 步骤4:创建JMeter测试计划 创建JMeter测试计划。您可以使用JMeter GUI创建测试计划并将其保存为.jmx文件。确保将测试计划保存在Jenkins工作区中的适当位置。 步骤5:创建Jenkins任务 创建Jenkins任务以执行JMeter测试计划。在Jenkins主页上,单击“新建任务”,输入任务名称并选择“构建一个自由风格的软件项目”。在“源代码管理”中,选择您的代码库和分支。 在“构建”中,单击“添加构建步骤”并选择“执行Windows批处理命令”(如果您使用Windows计算机)或“执行shell”(如果您使用Linux计算机)。在命令框中输入以下命令: jmeter -n -t /path/to/your/testplan.jmx -l /path/to/your/testresults.jtl 其中,“/path/to/your/testplan.jmx”是您的测试计划的路径,“/path/to/your/testresults.jtl”是您的测试结果文件的路径。 步骤6:构建Jenkins任务 构建Jenkins任务并等待测试完成。当测试完成后,您可以在Jenkins任务的“工作区”中找到测试结果文件。您还可以在Jenkins任务的“构建历史记录”中查看测试结果。 以上是Jenkins JMeter部署自动化性能测试的步骤。通过使用Jenkins和JMeter,您可以轻松地实现自动化性能测试并减少测试时间和成本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值