当前位置: 首页 > news >正文

《基于Jmeter的性能测试框架搭建》改进一

 

《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。

  • Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。
    解决方案:自动生成测试报告并邮件通知。

  • Grafana性能图表需测试人员实时监控,人力成本较高。
    解决方案:自动生成测试报告并邮件通知。

  • 多脚本构建的话,无法区分Grafana展现的性能图表对应哪个脚本。
    解决方案:传参区分脚本,并生成每个接口对应的测试报告。

  • 如果考虑持续监控,可加入预警功能。
    解决方案:依赖Grafana的预警功能。

  • 未能自动生成测试报告。
    解决方案:自动生成测试报告并邮件通知。

  • 需登录jenkins停止脚本构建,操作不够便利。
    解决方案:前端增加停止构建操作。

  • 每次只能提交一个脚本进行构建。
    解决方案:支持批量构建。

结合笔者所在项目组现状,优先解决了以下几个问题。

本期改进

1、多脚本构建的话,无法区分Grafana展现的性能图表对应哪个脚本。

最终解决方案将脚本名称写入influxdb库,然后再通过Grafana配置读取。

  • 创建influxdb数据库interfaceName并插入数据(脚本名称)

<!-- 依赖关系 --><dependency>      <groupId>org.influxdb</groupId>      <artifactId>influxdb-java</artifactId>      <version>2.5</version></dependency>
//创建数据库,并写入对应脚本的名称    public static void influxdb(String interfaceName) throws Exception {        Map<String,String> configMap = new HashMap<String, String>();        configMap = getProperties("config\\config.properties");        InfluxDBUtil svr = new InfluxDBUtil(configMap.get("Influxdb"))  //对应测试机地址                .setDatabase("interfaceName", "autogen")  //数据库名                .setAuthentication("admin", "admin")      //grafana datasource配置的用户名和密码                .setRetentionPolicy("30m", 1)                .build();
        for (int i = 0; i < 5; i++) {            Map<String, String> tags = new HashMap<String ,String>();            tags.put("system", configMap.get("InfluxdbSystem"));  //对应的应用
            Map<String, Object> fields = new HashMap<String, Object>();            fields.put("interfaceName", interfaceName);           //面板展现的脚本名称
            svr.insert("interface", tags, fields);            System.out.println(i);        }    }
  • 配置Grafana的datasource。

DataSource配置

  • 配置Grafana面板配置。


    面板配置

  • 执行压测小工具提交脚本,展现性能数据(注意图二展现了脚本名称)。


压测小工具


性能图表

2、需登录jenkins停止脚本构建,操作不够便利。

最终解决方案:无需解决,测试人员需登录jenkins查看构建日志,分析构建结果。

构建日志

3、每次只能提交一个脚本进行构建。

最终解决方案多脚本提交时,jenkins按脚本提交的先后顺序排队构建。
同一套压测环境,为了保证单个接口压测的准确性,笔者并不建议并行构建多个接口,可以通过压测小工具提交脚本串行构建。


​​​​

jenkins构建

触发Jenkins构建扩展

除了《基于Jmeter的性能测试框架搭建》提及的webhook,Poll SCM触发jenkins构建,也可以通过curl或jenkins-cli触发构建。

curl命令构建
curl  -i -u 'jenkinsUserName:jenkinsPassword' -X POST -H "$CRUMB" "http://jenkinsurl/jenkins/job/jobName/build?delay=0sec"
jenkins-cli构建
  • 下载jenkins-cli.jar
    通过jenkinsUrl/cli下载对应版本的jenkins-cli.jar。


jenkins-cli.jar下载

  • 通过build命令触发构建

    //触发jenkins构建 configMap = getProperties("config\\config.properties");String jenkinsCliUrl = "lib\\lib\\jenkins-cli.jar";String jenkinsUrl = configMap.get("JenkinsUrl");String jobName = configMap.get("JenkinsJobName");String userName = configMap.get("JenkinsUserName");String password = configMap.get("JenkinsPassword");String commandStr = "java -jar " + jenkinsCliUrl + " -s " + jenkinsUrl + " build " + jobName + " --username " + userName + " --password " + password;Runtime.getRuntime().exec(commandStr); //触发jenkins构建

需要注意的是,通过jenkins-cli方式触发构建,需设置jenkins的全局安全配置为“任何用户可以做任何事(没有任何限制)”或勾选“Allow anonymous read access”,否者会报错。


全局安全配置

  • 更多的命令可通过help或在jenkinsUrl/cli查看

    java -jar jenkins-cli.jar -s http://jenkinsUrl/jenkins/ help


 

可用命令

http://www.lryc.cn/news/352247.html

相关文章:

  • 计算机二进制表示和存储各种数据
  • 玩机社区 - 2024年最美社区源码开源
  • Linux系统——面试题分享
  • 谈恋爱没经验?那就来刷谈恋爱经验宝宝吧
  • element-ui输入框和多行文字输入框字体不一样解决
  • (Java企业 / 公司项目)配置Linux网络-导入虚拟机
  • java的unsafe
  • 起底震网病毒的来龙去脉
  • [杂项]优化AMD显卡对DX9游戏(天谕)的支持
  • 服务器没有图形界面没有显示器怎么办
  • 标准化软件实施方案(直接套用即可)
  • 云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会
  • 什么是react
  • EPIC免费领取《骑士精神2》 IGN9分神作骑士精神2限时免费领
  • 【Linux】icmp_seq=1 Destination Host Unreachable
  • java性能优化
  • Apache JMeter操作
  • el-table 划入划出方法
  • Todesk无法登录,提示服务器断开连接。(已解决)
  • NDIS小端口驱动(六)
  • postgresql insert on conflict 不存在则插入,存在则更新
  • kafka配置消费者重要参数
  • shell笔记脚本3
  • Kafka消息丢失处理方式,消息丢失与消费失败区别和分别的处理
  • AI爆文写作:标题需要什么?情绪炸裂,态度要激烈,行为要夸张!
  • Flyway SpringBoot中使用
  • 全志A133 Android10 lcd配置显示硬件参数说明
  • 景源畅信:小白做抖音运营难吗?
  • 初探 Spring Boot Starter Security:构建更安全的Spring Boot应用
  • 【无标题】思科交换路由中路由引入实验指南