专栏首页搜狗测试Jmeter+Shell,20分钟部署一整天的性能测试任务

Jmeter+Shell,20分钟部署一整天的性能测试任务

前几天接到一个性能测试任务,要求对语音识别服务进行性能测试。当拿到任务列表时,眼前的一幕...

没错,就是这样的,要对5种长度的音频,分别在3种不同并发数下进行测试,每一小项要测试15分钟的时间。简单数了数,一共有15项,加上每组之间的间隔时间(考虑到前一项测试可能在服务端存在短暂排队的情况,以及为了便于后期统计服务器资源占用情况,应该至少间隔1-2分钟),那就是要4个小时左右,半天时间应该能测完。

等等,还没完,把列表继续向下拉,惊喜地发现原来测试范围是4个语种(中、英、日、韩),每个语种的要求都是一样的。由于要测完整服务的性能,除了解码器外,还涉及到其他的一些层面,每个语种、每种长度音频、每种并发数都只能分开进行。于是,一个共计60项、长达16个小时的测试任务就这么到手了。

这么多项的测试,如果每一项都手动进行,要耗费很大的精力,而且每隔15分钟左右开始新的一项测试,中间的间隔时间很难把控,会花费更多的时间,那就不是16个小时能测完的了。仔细观察,其实这些小项中很多步骤都是相同的,只是分组数量很多,不免让人想寻求一些简单方便的测试方法,可以让整个测试自动进行。这时我们的测试工具Jmeter以及Linux系统下的Shell就可以发挥作用了。

下面,就来分享两种简单的方法,让我们可以花20分钟时间就部署好这16个小时的测试。

方法一 利用Jmeter线程组启动延迟

在Jmeter(5.1.1)线程组设置的下面有一个Scheduler(调度器),其中包含两个参数:Duration(持续时间)和Startup delay(启动延迟)。Duration这个参数我们平常用得比较多,可以用于限定测试的持续时间。而另一个Startup delay参数在本次性能测试中可以起到关键作用。先来看看有关这个参数的介绍。

Startup Delay表示从当前时刻开始延迟多长时间开始运行

我们可以一次性创建每一项测试所需的Jmeter脚本(这个步骤看似复杂,实际操作起来比较容易,因为脚本主体内容相同,直接大量复制粘贴,对于每项不同的参数修改替换即可,快的话10-20分钟就能搞定全部60个脚本),并为这些脚本设置不同的Startup delay,比如第一个脚本设置0(直接启动),第二个脚本设置1000(单位为s),第三个设置2000,依此类推。

由于要放到linux环境下运行,脚本中路径的设置需要注意(我这里设置的是绝对路径,为了方便的话也可以设置为相对路径),保存log时最好利用Jmeter的__time函数按时间来命名,方便进行区分,也方便观察各项测试的开始时间。

将这些脚本统统放入linux下的测试目录中,直接一个一个依次启动就可以了(可以使用nohup+&方式一并扔到后台去执行)。这样启动的话还是略显麻烦,而且几十个脚本的启动也比较费时间,为了简化操作,我们还可以创建sh脚本,将启动命令全部放进去一次性执行,做到真正的“秒起”。sh脚本的内容大致如下,依然只需要一些复制粘贴的时间。

将上述命令保存为.sh脚本文件(比如test.sh),只需一个命令

./test.sh

全部测试任务开启,OK,可以直接期待十几个小时以后的测试结果了。

方法二 利用Linux Shell的sleep命令

在方法一中,我们在创建每个脚本时都要为他们添加不同的Startup delay,几十个脚本下来也还是会产生几分钟工作量的,不免有些烦躁。于是,这里我们也可以用另一种方式来起到完全相同的作用——直接在sh脚本中添加启动延迟。

在这种方法下,我们在创建Jmeter脚本时无需再设置Startup delay参数,只需稍微修改方法一中的sh脚本,添加sleep命令。

嗯,又是熟悉的复制粘贴操作。sleep 17m表示等待17分钟后再继续执行下一条命令。

同样保存为test.sh,执行./test.sh,可以与方法一获得相似的效果。

小结

通过本文介绍的方法,可以以较少的准备时间来完成大量的工作,对于此类数量较多而流程相似的测试任务有一定借鉴意义。

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:大帆船

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试策略模型探索

    测试作为软件质量的把控,经常存在这样的一个误区:所有提测的功能都需要进行全面的测试,否则上线后就可能存在质量风险。而此时,也会迎来项目经理的质疑,此需求开发一周...

    用户5521279
  • 测试全程度量探索

    测试左移:有数据分析,单元测试可以发现代码中60%~70%的问题。测试左移即将测试工作前置,提前发现问题。

    用户5521279
  • 【问题意识】问题从哪里来?

    问题意识的高低对个人未来发展具有深远影响。问题意识高的人,由于其拥有比现在状态更高的目标,所以会感觉到现状存在问题。问题意识低的人,其自身目标与现状水平处于一致...

    用户5521279
  • 日新进用户200W+,解密《龙之谷》手游背后的压测故事

    本文记录了《龙之谷》手游压测过程中的点点滴滴,希望给其他手游的压测提供思路、方法和工具的借鉴。

    WeTest质量开放平台团队
  • 软件测试方法课程笔记(3)

    逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖. 是以程序内部的逻辑结构为基础的测试用例设计方法. 白盒测试作为逻辑测试方法,是以程序内部逻辑驱动的单元测...

    Mezereon
  • 性能、负载与压力测试

    负载测试的目的是验证应用能够满足预期的性能目标,通常是在服务水平协议中指定的。(如:响应时间、吞吐量、资源利用率等指标,目标不是确定系统的失效点)

    凹谷
  • 软件测试tip

    Cache|SearchEngine Database|NoSQL->Message Queue->APP Server->WEB SERVER-> CDN

    用户7657330
  • 测试人员职业规划

    张树臣
  • 深圳软件测试培训学习:【性能术语】八大类性能测试

    答:性能测试八大类包括:性能测试、负载测试、压力测试、配置测试、并发测试、容量测试、可靠性测试、失败测试。

    深圳java培训技术
  • 软件测试人员眼中的项目上线流程

    王豆豆

扫码关注云+社区

领取腾讯云代金券