jmeter使用-【压力测试时间配置】

进行压力测试时,线程数的修改可以模拟访问人数,但部分压力测试需要的条件比较严格,需要模拟多个用户同时访问一个或多个结果来进行测试;此时就需要通过定时器的组合来达成不同的测试场景。

 

一、首先,在线程组设置线程数等。其中Ramp-UP时间为线程之间的间隔时间,单位为ms;持续时间则表示线程整体的运行时间范围,如果超出时间范围,不论循环是否完成都会停止发送请求,而已经发送的请求会等待全部响应完成后结束线程。   

如果只是单一的配置以上信息,那么整个线程会按照线程内的请求开始循环,持续10s之后停止进程 (下图中没有持续10秒是因为整个线程+循环的总时长在10秒之内已经完成了)

如果想要实现同一秒发送几个请求或者几秒钟发送一个请求的效果的话,则需要添加定时器来辅助达成,比较常用的包括固定定时器以及常熟吞吐量定时器(Constant Throughput Timer)    

1)固定定时器用来设置请求延时的,比如图中设置时长为2000ms,则表示在每个线程中的每个请求之间间隔2s;

 如图中可看出test4 1-1 这个线程的时间间隔大概为2s,但是相同接口1-1中发送的时间与1-2中发送的时间并不一样。如果对发送时间有严格要求的压力测试可能就不能够仅仅使用固定定时器来达到效果。

  2)常熟吞吐量定时器则用来设置当前线程每分钟发送的请求数量,即样本量;如图中设置的30/60=1/2 则表示单一线程内每2秒发送一个请求。

  单独使用此定时器可以实现两个线程在同一秒内发送同一个请求

  二、如果是使用外部循环变量且共享模式为“当前线程组”的情况,如果想要实现同一秒中发送多个请求,最好将线程数量与变量总数设置相同,比如有三个变量,但线程数为2,那么无论怎么调整定时器,也无法实现一秒内同时访问三个请求   

两个线程: 三个线程:

 

 

补充:定时器的时间间隔为上一个请求的响应时间到下一个请求的发送时间,而不是上一个请求的发送时间到下一个请求的发送时间

结论:

1. 定时器都可以单独使用,但为了满足不同的测试要求和测试场景,不同的定时器组合起来可能效果更好

2. 固定定时器的时间间隔对于全部都是相应较快的接口测试时比较好用,但如果测试的接口本身响应时间较长,此时再增加固定的时间间隔可能会影响测试效果

3. 根据请求响应时间的不同,定时器在进程刚开始的时候效果比较显著,随着进程发展,响应时间的增长可能会无法保证一秒内发送几个请求

4. 进行压力测试时最好聚合报告、用表格查看结果和察看结果树(只显示错误日志)配合使用,聚合报告用来查看整体接口测试情况;用表格查看结果用来确认每个请求发送的时间间隔(适用于请求不是特别多的测试);察看结果树用来确定错误请求,方便查询服务器日志,加快问题定位。

5.  如果要使用第二种方式进行测试,尽量不要将测试脚本的结构设计的太复杂,否则在实现起来的时候会有些麻烦

分类: jmeter使用