1.宝路说

宝路最近一直在自我思考:性能基准DevOps工作已经开展一段时间了,目前我们确实已经取得了一些成果,显然这还远远不够。趁闲暇之余跟组员进行了简单的头脑风暴!于是这就有了今天的主题,当然这仅是主题之一,后面会继续分享其他主题。

2.背景说明

随着测试环境DevOps工作的不断开展,业务场景覆盖率不断扩增,涉及的接口数量也是成倍的增长,据统计目前接口数量已近两百。

在实施过程中,我们愈发明显的发现,执行一次全场景耗时明显增长,脚本执行时间越长出现不稳定因素的几率就越大,严重可能导致邮件报告可信度降低,如何提升脚本执行效率成了目前需要重点解决的问题。

3.现状分析

在组员电脑上用JMeter的GUI模式打开脚本一看,吓一跳,只见N多个事务控制,密密麻麻的!都用上鼠标滚轮了。。。

脚本结构如图:

后面还有N多个场景未列出来,从图明显可以看出,随着业务场景的增加,脚本肯定执行时间越长。

如置之不理,久而久之,情况只会越来越糟糕。

4.头脑风暴

就如何提升脚本执行效率,我们也是自由发言的讨论,讨论可行方案如下:

方案一:将目前脚本进行拆解,形成多个压测脚本

该方案确实可行,但无疑付出的时间成本太高,就简单的拆解脚本来说工作量确实不大。拆解成多脚本(多测试计划)运行,也就意味着会产出多个测试报告。目前平台还不具备多报告合并功能,还要重新开发。

不合并多个报告,那么无疑在邮件通知报告中要增加多个动态报告链接 方便收件人查看更详细的报告数据(聚合数据、吞吐量曲线)等,三四个连接我还能忍受。。。一下放那么多报告链接,谁还有心情去点呢。。。

有的同学可能会想想到,放几个重点报告链接不就行了么。此方式确实可行,但还不能满足我们目前的要求,重点业务场景也很多,我们最终还是想让相关人员全方位的看到接口实时性能情况。

显然此方案不是最优解。

方案二:将目前脚本进行“拆解”,多线程组模式

此方案是在方案一的基础上进行在调整,将原始的单一线程组改成多线程组模式。这样扔保持一个测试计划,也就是说最终扔是一个报告。

脚本结构如图:

我们目前在做基准测试场景,是单线程组单线线程执行。脚本按多线程组改造后将成倍缩短场景执行时间。

举个简单的例子:起初一个包工头指派一个工人去完成某个项目工程,但是这种工作模式显然效率不高,于是又指派好几个工人同时加入到项目工程中同时还依照工人技能不同对工作进行了分工。

那么问题来了,线程组该怎么进行分工呢?我们目前的解决方案:业务场景+测试数据 组合分工模式。按业务场景来分,这个大家都还可以理解,怎么还来个按测试数据分,这是?

归根结底还是业务场景的“锅”,有些场景那就是需要特殊用户数据才能正常执行。进而我们决定采用业务场景+测试数据 组合分工模式。

5.其他建议

关于压测脚本,还是再多啰嗦几句:

  • 脚本结构不要搞的太复杂。
  • 要求高性能的话,尽量少用前置、后置处理器,如果必须要用的话里面的代码不搞的很复杂。
  • 请求报文涉及到加解密,最优解还是定制开发Sampler采样器,这样测试人员不用花更多的时间去关注加解密代码及相关流程,测试人员编写脚本仅需填写服务器地址相关信息、请求明文,这样编写脚本效率也会质的提升。

性能基准DevOps之如何提升脚本执行效率的更多相关文章

  1. 使用并发 ssh 连接来提升捞日志脚本执行效率

    问题背景 公司有个简单粗暴的日志服务,它部署在多台机器实例上,收集的日志记录在每台机器本地硬盘,写一个小时自动切换日志文件,硬盘空间写满了自动回卷,大约可以保存两三天的历史数据.为什么说它粗暴呢?原来 ...

  2. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  3. PHP性能调优,PHP慢日志---PHP脚本执行效率性能检测之WebGrind的使用

    如何一睹webgrind这个神奇的php性能检测工具神奇呢? 废话不多说首先webgrind这个性能检测是需要xdebug来配合,因为webgrind 进行性能检测分析就是通过xdebug生成的日志文 ...

  4. PHP脚本执行效率性能检测之WebGrind的使用

    webgrind这个性能检测是需要xdebug来配合,因为webgrind 进行性能检测分析就是通过xdebug生成的日志文件进行编译分析的 那么这就需要们配置好xdebug,这个一般的php 版本都 ...

  5. [Android 性能优化系列]内存之提升篇--应用应该怎样管理内存

    大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地 ...

  6. 提升jmeter脚本编写效率的方法:Fiddler导出jmx文件

    有效提升编写JMeter脚本效率的方法 jmeter的脚本来源有以下几种:badboy录制.jmeter自带的录制功能.手动编写脚本(使用fiddler/wireshark来抓包,然后构造协议写脚本) ...

  7. mysql临时表产生的执行效率问题改进(转)

    问题: 近日,线上MySQL查出一个慢sql,每次都要查询1000ms以上,严重影响用户体验 今得空去诊断一番,记录如下: sql原句: SELECT r.object_id AS cardId, c ...

  8. Snapman系统中TCC执行效率和C#执行效率对比

    Snapman集合了TCC编译器可以直接编译执行C语言脚本,其脚本执行效率和C#编译程序进行效率对比,包括下面4方面: 1.函数执行效率 2.数字转换成字符串 3.字符串的叠加 4.MD5算法 这是C ...

  9. 使用EventBus + Redis发布订阅模式提升业务执行性能

    前言 最近一直奔波于面试,面了几家公司的研发.有让我受益颇多的面试经验,也有让我感觉浪费时间的面试经历~因为疫情原因,最近宅在家里也没事,就想着使用Redis配合事件总线去实现下具体的业务. 需求 一 ...

随机推荐

  1. LESS语法学习笔记

    LESS 通过编写less文件来快速生成css文件,对css的语法进行了扩展 Less语法 注释 单行注释不会被编译,多行才会被编译 变量 less:定义变量用@ scss:定义变量用$ @num: ...

  2. GO学习-(35) Go实现日志收集系统4

    Go实现日志收集系统4   到这一步,我的收集系统就已经完成很大一部分工作,我们重新看一下我们之前画的图: 我们已经完成前面的部分,剩下是要完成后半部分,将kafka中的数据扔到ElasticSear ...

  3. Python+Selenium - js操作

    js操作:日期框 本部分涉及两个知识点:DOM树和js DOM树教程链接: https://www.w3school.com.cn/htmldom/index.asp js教程链接 https://w ...

  4. OpenCV 查找轮廓

    本文将结合实例代码,介绍 OpenCV 如何查找轮廓.获取边界框. 代码: contours.py OpenCV 提供了 findContours 函数查找轮廓,需要以二值化图像作为输入.并指定些选项 ...

  5. camera中LENS和SENSOR的CRA是如何搭配的?

    camera中LENS和SENSOR的CRA是如何搭配的? camera中,lens和sensor的搭配是非常关键的问题.但这两者是如何搭配的呢? 一般在Sensor data sheet中会附有全视 ...

  6. Docker基本原理概述

    Docker基本原理概述 Docker是一个用于开发,交付和运行应用程序的开放平台.Docker能够将应用程序与基础架构分开,从而可以快速交付软件.借助Docker,可以以与管理应用程序相同的方式来管 ...

  7. TensorFlow损失函数

    TensorFlow损失函数 正如前面所讨论的,在回归中定义了损失函数或目标函数,其目的是找到使损失最小化的系数.本文将介绍如何在 TensorFlow 中定义损失函数,并根据问题选择合适的损失函数. ...

  8. 视频处理单元Video Processing Unit

    视频处理单元Video Processing Unit VPU处理全局视频处理,它包括时钟门.块复位线和电源域的管理. 缺少什么: •完全重置整个视频处理硬件块 •VPU时钟的缩放和设置 •总线时钟门 ...

  9. 使用NVIDIA GRID vPC支持视频会议和算力工具

    随着2020年的发展,远程工作解决方案已成为许多人的新常态.企业正在寻找行之有效的解决方案,如虚拟桌面基础设施(VDI),以使他们的团队能够在任何地方安全地工作.然而,最新的算力和视频会议应用程序需要 ...

  10. Samsung WLAN AP RCE漏洞及利用工具

    1.漏洞详情: 三星 WLAN AP WEA453e 路由器 远程命令执行 2.fofa语句 title=="Samsung WLAN AP" 3.复现 payload: POST ...