·性能测试的脚本加强:
·事务:引入事务的目的是为了度量响应时间和TPS。在Jmeter中,对于事务的处理是分两种状况:·事务只是一个请求:只须要修改请求的名称,使其具备惟一性。不须要其它额外的操做。·事务包含多个请求:则须要使用逻辑控制器--事务控制器。·PS:建议勾选Generate parent sample,这样获得的时间会更加准确。
·检查点:在Jmeter,检查点一般都是经过断言组件来实现的。经常使用的断言组件就是:响应断言。·响应断言:·模式匹配:须要注意的就是:·包括和SubString的意义至关。服务器的响应中包含指定的预期值。·匹配和Equals的意义至关。服务器端响应等于or符合指定的预期值。
·包括和匹配是支持正则表达式的,而SubString和Equals是不支持正则表达式的。·要测试的模式:就是预期值。·思考时间:在Jmeter中,经常使用的思考时间组件有两个:·固定定时器:单位是毫秒·高斯随机定时器:做用就是:用来模拟:固定延迟+-2×误差值。最小值等于0.
PS:通常来讲,在性能测试过程当中,咱们每每建议经过随机思考时间的方式来模拟负载。
·集合点:在Jmeter中,集合点是经过定时器--Synchronizing Timer组件实现。·Number of Users:一次集合的人数。默认值为0,表示集合人数等于线程组中的线程总数。·Timeout:超时时间,是指第一个到达集合点的线程的等待时间,若是时间到达,则全部到达集合点的线程都会释放执行后续的请求。默认值为0,表示不超时,即必须等到足够的线程才会释放。
PS:以上组件的使用,必定要注意组件的做用域问题。
·Jmeter的场景相关的操做:·联机负载和IP欺骗:
·联机负载:Jmeter自己的性能问题,致使不少时候咱们都须要采用分布式(联机负载)的方式来进行性能测试。
·前提条件:·控制机和负载机、负载机和被测服务器之间的网络是通畅。·控制机和负载机上具备相同的jmeter环境。
·操做步骤:·第一步:启动负载机上的Jmeter-server.bat。PS:默认状况下,server端采用的通讯端口是1099,不被占用便可。若是须要修改该端口,则修改jmeter.properties文件中的server_port属性便可。要求端口未被占用。若是负载机的server_port被修改,则控制机上添加负载机的时候,host:port中的port也要对应修改。(不须要修改控制机上的server_port属性)。
·第二步:在控制机上添加负载机。是经过修改控制机的jmeter.properties文件来实现。属性:remote_hosts。示例:remote_hosts=127.0.0.1#remote_hosts=localhost:1099,localhost:2010remote_hosts=192.168.2.212:8000,192.168.2.100:1099PS:表示新增两台负载机,分别是2.212:8000,2.100:1099多台负载机之间使用逗号分隔。 修改以后,须要重启jmeter。
·第三步:启动。在jmeter中,远程启动有两种方式:·远程启动:选中某一台负载机,运行脚本。·远程所有启动:直接启动全部的负载机运行脚本。
·注意事项:一、从jmeter4.0开始,分布式负载开始支持基于https的模式(默认)。该模式下,须要额外进行操做:·在控制机上运行bin目录下的脚本:create-rmi-keystore.bat则会在bin目录下生成密钥文件:rmi_keystore.jks·将密钥文件rmi_keystore.jks复制到负载机的Jmeter的bin目录便可。
固然,也能够经过修改控制机与负载机的配置文件jmeter.properties,设置不使用https模式,而是采用http模式。#server.rmi.ssl.disable=false默认值是false,表示使用ssl模式。若是不但愿使用,则修改成:server.rmi.ssl.disable=truePS:控制机和负载机都修改。
二、联机负载时,脚本的运行环境是负载机。这就意味着咱们在作联机负载时,要尽量的保证负载机和控制机的环境的一致性。常见的有:·系统环境变量·基础环境,好比说jmeter版本和JDK版本。·第三方文件(参数文件),须要人为的复制分发到负载机。脚本中的访问路径:·若是控制机和负载机的操做系统类型一致,则建议使用绝对路径。·若是控制机和负载机的操做系统类型不一致,则只能使用相对路径。·在本地(控制机上),当前路径是脚本所在路径。·在远程(负载机上),当前路径是Jmeter的bin目录所在路径。
三、远程所有启动时,若是负载机的数量大于等于两台。脚本是分别、独立、同步在不一样的负载机上运行的。这就意味着,对于服务器而言,承受的压力是:线程组设计的压力×负载机的数量。
四、若是须要获取错误响应,则须要修改模式为:standard。默认状况下,负载机是只会将一些特定的数据反馈给控制机的,一般不会包含服务器的响应。则须要修改如下配置(包括控制机和负载机)。jmeter.save.saveservice.output_format=xmljmeter.save.saveservice.response_data.on_error=true
#Remote batching supportmode=Standard
·IP欺骗:Jmeter的http请求也是能够实现IP欺骗的。具体操做:·在负载机上,绑定IP地址。·在脚本中,http请求的实现模式要切换到httpclient模式。·Source IP Address中,填写绑定好的IP地址便可。PS:通常都是把绑定好的IP地址,写入参数文件,实现参数化。
·注意事项:参考LR讲课。
·监控:·监听器:·Summary report和聚合报告:在实际的测试过程当中,咱们通常是不会使用查看结果树组件,一般使用的是Summary report和聚合报告。·Summary report和聚合报告的指标解释:·Label:请求名称。·# Samples:请求所执行的次数。·Average:请求的平均响应时间·Min:请求的最小响应时间·Max:请求的最大响应时间·Std.Dev.:标准方差。PS:以上时间的单位都是毫秒。·error%:出错请求的比例。·Throughput:吞吐量,就是至关于LR中的TPS。PS:若是该值很小,会自动变动单位为/min(每分钟).
·Received KB/sec:每秒钟接收到的字节大小。·Sent KB/sec:每秒钟发送的字节大小。·Avg.Bytes:平均每一个请求所产生的字节大小。
·聚合报告对比与Summary Report:·Median:中位值,又叫50% line,即50%的用户的响应时间小于等于该值。·90%line(9五、99):是指90%的用户(请求)的响应时间是小于等于该值。PS:比例是能够经过jmeter.properties配置文件进行修改的。配置文件关键字:#aggregate_rpt_pct1=90#aggregate_rpt_pct2=95#aggregate_rpt_pct3=99PS:#表示注释,表示不起效(默认值).正则表达式