记录性能测试脚本开发的过程
---恢复内容开始---
场景:一个社交电商的支付场景
考虑的链路:大量的用户+选择不同商品+不同用户进行下单+选择自己平台支付(余额)+查看不同订单列表+进行售后
需要的技术支持:验证码需要废掉,用户支付密码写死
设计如下:
- 分三个步骤,设计三个线程组;第一个步骤制造大量的登录用户,并产生token;第二个这么多用户选择商品,进行下单;第三个进行支付,并后期的退款;
- 由于我有三个线程组,所有我在testplan,勾选独立运行每个线程组,我不希望同时进行,导致可能的失败;
- 造数据,造大量的登录注册用户,获得数万计的token,电话号码的制造,我不管你们有多少方法,我就简单实现,jmeter自带的函数助手,random函数${__Random(13111111111,15999999999,)},
- 提取token,常用的方法是正则匹配,json提取器,那个用的liu,你就用哪个吧,这个就不用贴图比较简单;
- 在制造大量的数据的时候,我接到了一个任务需求,就是这些token我需要存在csv文件中,存在本地文件中。。。,拿到需求我有点懵逼,如果我用python写,很容易写到本地呀,仔细想了下,beanshell应该可以,他就是Java,应该可以提供方法,果然可以,添加一个beanshell后置处理器,脚本如下:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
String token=bsh.args[0];
try {
FileWriter fstream=new FileWriter("E:\\test\\token.csv",true);
BufferedWriter out=new BufferedWriter(fstream);
out.write(vars.get("token")+"\n");
out.close();
fstream.close();
} catch (IOException e) {
e.printStackTrace();
}
- 当时想到有多个线程组,如果跨线程合作,就想到全局变量,这里也记录下;设置全局变量暂时记录2种方法,一种beanshell取样器,一种beanshell后置处理器,都会使用函数__setproperty函数
然后拷贝出来,把它放在beanshell取样器脚本里面,然后使用__P函数,引用全局变量,
现在就可以在任何线程里面引用token了(全局我暂时只能传递一个,鸡肋了,后期再研究下),另外一种是beanshell后置处理器,脚本如下:
String userId=bsh.args[0];
print (token);
${__setProperty(token,${token},true)} - 在压测过程中,发现每次启动脚本,token等值就会追加在csv文件后面,我希望每次数据都是干净,发放如下,在保存数据之前,添加一个beanshell取样器,脚本如下,
String path = "E:\\test";
File file = new File(path);
if (!file.exists()) {
System.out.println("目录不存在" + "the dir is not exists !");
return false;
}
String[] content = file.list();//取得当前目录下所有文件和文件夹
for (String name : content) {
File temp = new File(path, name);if (temp.isDirectory()) {
//判断是否是目录
temp.delete();
//删除空目录
} else {
if (!temp.delete()) {
//直接删除文件
System.err.println("Failed to delete " + name);
}}
return true;log.info("删除成功 ");
}每次启动前,就可以把我之前文件夹下的文件全部删除了。
- 之前产生了csv,自然我要读数据,有很多方法,有csvdata读取-路径是绝对路径,我习惯用stringFromFile函数"${__StringFromFile(E:\test\order.csv,order,,)}";
- 我在获取订单列表的时候,总会有翻页,而且页码有规律的增加,这个时候就用到counter这个配置元件或者函数都可以,我喜欢函数${__counter(True;1,)}
- 基本线程都完成了,这个时候你就需要定时器,我选择两种,固定/聚集定时器,至于原理这里就不在赘述简单,还有目前是脚本的开发,至于调试,和业务也需要挂钩,漏斗模型或者线程的比例后期再研究
- 最后贴一张我的成果
转载于:https://www.cnblogs.com/Slowfish/p/11121216.html
记录性能测试脚本开发的过程相关推荐
- jmeter web服务器协议,【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发(示例代码)...
目录: [阐述]:首先应该遇到了一个共同的问题,JMeter3.2之后就没有WebService(SOAP) Request,后来经过查询网上资料得知其实可以用HTTP请求来操作,结果是一样的. [步 ...
- JAVA性能测试脚本分析
众所周知, java 语言是一门非常适合网络开发的语言,用Java语言进行性能测试脚本开发将会大大提高测试开发效率.LoadRunner中提供了对Java虚拟用户的支持.Java虚拟用户依托于JDK, ...
- 性能测试脚本用例【模板】
产品名称Product name 密级Confidentiality level 秘密 产品版本Product version Total 12pages 共12页 性能测试脚本用例 (仅供内部使用) ...
- jmeter的java测试框架_性能测试学习之路 (四)jmeter 脚本开发实战(JDBC JMS 接口脚本 轻量级接口自动化测试框架)...
1.业务级脚本开发 登录脚本->思路:在线程组下新建两个HTTP请求,一个是完成访问登录页,一个是完成登录的数据提交. 步骤如下: 1) 访问登录页 2) 提交登录数据的HTTP PS:对于业务 ...
- 记录一次油猴脚本开发的Demo(入门级)、开发过程
记录一次开发油猴脚本的demo 前言:之前听别人讲油猴脚本怎么怎么地,怎么怎么样,一直以为是个很难的东西,所以在上周五的时候,就自己看了一下,这个东西也不太难.主要还是js玩的6就行了.当然了我的js ...
- 亚马逊(脚本)自动化软件开发案例过程
amazon自动化软件开发 亚马逊自动注册,自动二次验证,自动一键新机签约完成. 自动抢货购物,自动化脚本开发. 后期不断升级维护.功能可增加. 软件代码: public void start() { ...
- Jmeter_性能测试(一):性能测试的概念,性能测试的流程和术语,性能测试脚本的制作和调试
Jmeter_性能测试(1):性能测试的概念 性能测试的概念 性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统 响应时间.TPS(Transaction Per Second).吞吐 ...
- JMeter工具:常用协议脚本开发(BeanShell Sampler, Debug Sampler, FTP/Java/JDBC请求, JUnit request, SOAP/XML-RPC)
目录 1. BeanShell Sampler 1.1 BeanShell Timer:BeanShell定时器 1.2 BeanShell PreProcessor:BeanShell前置处理器 1 ...
- linux启动nifi指令,Nifi 组件脚本开发 - ExecuteScript 使用指南 (二)
Nifi 组件脚本开发 - ExecuteScript 使用指南 (二) 浅谈 Java 的反射原理 摘要: Java 的编译过程 谈及反射, 不得不先了解一下, java 的整个编译过程, 整体的 ...
- 性能测试脚本的编写和调试
原文链接 性能测试脚本的编写和调试 传学 2017-05-11 10:17:32 浏览86 评论0 发表于: 阿里云服务 >> 最佳实践 性能 测试 性能测试 压力测试 压测 摘要: 性能 ...
最新文章
- 动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...
- 我研究了最热门的200种AI工具,却发现这个行业有点饱和
- python算法书pdf_Python算法很难吗?python神书《算法图解》PDF电子版分享给你!
- python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation)
- Consumer is not subscribed to any topics
- CentOS 7 安装部署 cassandra作为kairosdb的数据存储
- 几种简单的滤波方式(未完)
- 2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授
- 【知识星球】ElementAI提出超复杂多尺度细粒度图像分类Attention模型
- plsql(轻量版)_记录类型2
- 【报告分享】2022中国人工智能人才培养报告.pdf(附下载链接)
- 计算机系统-x86架构下的寄存器与寻址
- xwpftemplate的时间设置_数据导出生成word附件使用POI的XWPFTemplate对象
- matlab 向量法建数组(推荐)
- 利用Struts拦截器完成文件上传功能
- udev文件系统的使用和基本工作原理分析
- 前后端分离的思考与实践(四)
- android 坐标度分秒转换工具,android 经纬度度分秒与十进制之间的相互转换
- spring bean作用域之间有什么区别
- wuauclt.exe windows 自动更新测试命令