---恢复内容开始---

场景:一个社交电商的支付场景

考虑的链路:大量的用户+选择不同商品+不同用户进行下单+选择自己平台支付(余额)+查看不同订单列表+进行售后

需要的技术支持:验证码需要废掉,用户支付密码写死

设计如下:

  1. 分三个步骤,设计三个线程组;第一个步骤制造大量的登录用户,并产生token;第二个这么多用户选择商品,进行下单;第三个进行支付,并后期的退款;
  2. 由于我有三个线程组,所有我在testplan,勾选独立运行每个线程组,我不希望同时进行,导致可能的失败;
  3. 造数据,造大量的登录注册用户,获得数万计的token,电话号码的制造,我不管你们有多少方法,我就简单实现,jmeter自带的函数助手,random函数${__Random(13111111111,15999999999,)},
  4. 提取token,常用的方法是正则匹配,json提取器,那个用的liu,你就用哪个吧,这个就不用贴图比较简单;
  5. 在制造大量的数据的时候,我接到了一个任务需求,就是这些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();
    }

  6. 当时想到有多个线程组,如果跨线程合作,就想到全局变量,这里也记录下;设置全局变量暂时记录2种方法,一种beanshell取样器,一种beanshell后置处理器,都会使用函数__setproperty函数

    然后拷贝出来,把它放在beanshell取样器脚本里面,然后使用__P函数,引用全局变量,

    现在就可以在任何线程里面引用token了(全局我暂时只能传递一个,鸡肋了,后期再研究下),另外一种是beanshell后置处理器,脚本如下:

    String userId=bsh.args[0];
    print (token);
    ${__setProperty(token,${token},true)}

  7. 在压测过程中,发现每次启动脚本,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("删除成功 "); 
        }

    每次启动前,就可以把我之前文件夹下的文件全部删除了。

  8. 之前产生了csv,自然我要读数据,有很多方法,有csvdata读取-路径是绝对路径,我习惯用stringFromFile函数"${__StringFromFile(E:\test\order.csv,order,,)}";
  9. 我在获取订单列表的时候,总会有翻页,而且页码有规律的增加,这个时候就用到counter这个配置元件或者函数都可以,我喜欢函数${__counter(True;1,)}
  10. 基本线程都完成了,这个时候你就需要定时器,我选择两种,固定/聚集定时器,至于原理这里就不在赘述简单,还有目前是脚本的开发,至于调试,和业务也需要挂钩,漏斗模型或者线程的比例后期再研究
  11. 最后贴一张我的成果

转载于:https://www.cnblogs.com/Slowfish/p/11121216.html

记录性能测试脚本开发的过程相关推荐

  1. jmeter web服务器协议,【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发(示例代码)...

    目录: [阐述]:首先应该遇到了一个共同的问题,JMeter3.2之后就没有WebService(SOAP) Request,后来经过查询网上资料得知其实可以用HTTP请求来操作,结果是一样的. [步 ...

  2. JAVA性能测试脚本分析

    众所周知, java 语言是一门非常适合网络开发的语言,用Java语言进行性能测试脚本开发将会大大提高测试开发效率.LoadRunner中提供了对Java虚拟用户的支持.Java虚拟用户依托于JDK, ...

  3. 性能测试脚本用例【模板】

    产品名称Product name 密级Confidentiality level 秘密 产品版本Product version Total 12pages 共12页 性能测试脚本用例 (仅供内部使用) ...

  4. jmeter的java测试框架_性能测试学习之路 (四)jmeter 脚本开发实战(JDBC JMS 接口脚本 轻量级接口自动化测试框架)...

    1.业务级脚本开发 登录脚本->思路:在线程组下新建两个HTTP请求,一个是完成访问登录页,一个是完成登录的数据提交. 步骤如下: 1) 访问登录页 2) 提交登录数据的HTTP PS:对于业务 ...

  5. 记录一次油猴脚本开发的Demo(入门级)、开发过程

    记录一次开发油猴脚本的demo 前言:之前听别人讲油猴脚本怎么怎么地,怎么怎么样,一直以为是个很难的东西,所以在上周五的时候,就自己看了一下,这个东西也不太难.主要还是js玩的6就行了.当然了我的js ...

  6. 亚马逊(脚本)自动化软件开发案例过程

    amazon自动化软件开发 亚马逊自动注册,自动二次验证,自动一键新机签约完成. 自动抢货购物,自动化脚本开发. 后期不断升级维护.功能可增加. 软件代码: public void start() { ...

  7. Jmeter_性能测试(一):性能测试的概念,性能测试的流程和术语,性能测试脚本的制作和调试

    Jmeter_性能测试(1):性能测试的概念 性能测试的概念 性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统 响应时间.TPS(Transaction Per Second).吞吐 ...

  8. 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 ...

  9. linux启动nifi指令,Nifi 组件脚本开发 - ExecuteScript 使用指南 (二)

    Nifi 组件脚本开发 - ExecuteScript 使用指南 (二) 浅谈 Java 的反射原理 摘要: Java 的编译过程 谈及反射, 不得不先了解一下, java 的整个编译过程, 整体的 ...

  10. 性能测试脚本的编写和调试

    原文链接 性能测试脚本的编写和调试 传学 2017-05-11 10:17:32 浏览86 评论0 发表于: 阿里云服务 >> 最佳实践 性能 测试 性能测试 压力测试 压测 摘要: 性能 ...

最新文章

  1. 动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...
  2. 我研究了最热门的200种AI工具,却发现这个行业有点饱和
  3. python算法书pdf_Python算法很难吗?python神书《算法图解》PDF电子版分享给你!
  4. python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation)
  5. Consumer is not subscribed to any topics
  6. CentOS 7 安装部署 cassandra作为kairosdb的数据存储
  7. 几种简单的滤波方式(未完)
  8. 2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授
  9. 【知识星球】ElementAI提出超复杂多尺度细粒度图像分类Attention模型
  10. plsql(轻量版)_记录类型2
  11. 【报告分享】2022中国人工智能人才培养报告.pdf(附下载链接)
  12. 计算机系统-x86架构下的寄存器与寻址
  13. xwpftemplate的时间设置_数据导出生成word附件使用POI的XWPFTemplate对象
  14. matlab 向量法建数组(推荐)
  15. 利用Struts拦截器完成文件上传功能
  16. udev文件系统的使用和基本工作原理分析
  17. 前后端分离的思考与实践(四)
  18. android 坐标度分秒转换工具,android 经纬度度分秒与十进制之间的相互转换
  19. spring bean作用域之间有什么区别
  20. wuauclt.exe windows 自动更新测试命令

热门文章

  1. el表达式设置option标签selected
  2. 写给在写毕业论文的你们免安装深度学习线上GPU环境准备
  3. 2018区块链技术及应用峰会(BTA)·中国全日程发布,大会倒计时5天
  4. Python中的图像增强
  5. MLI_09 HMM(隐马尔可夫模型)
  6. GAMMA初学笔记二
  7. 【算法导论-37】Graph的Java实现
  8. 快速上云(手把手教你把项目同步上云)
  9. 计算机用户名携带中文路径,Win10 User下的中文用户名改成英文路径操作方法
  10. PPT设计思维进阶:提升设计能力