Born to be proud
9/6
2018

压力测试与jmeter

组里项目项目需要接触的web压力测试相关的内容,在这里总结一波。

基本概念

性能测试从广义上讲分为压力测试、负载测试、强度测试、并发(用户)测试、大数据量测试、配置测试、可靠性测试等。压力测试是通过对被测系统不断加压,来发现该系统在什么条件下变得不可承受,从而获得系统能提供的最大服务级别的测试。查出程序对异常情况的抵抗能力,找出性能瓶颈。从本质上说,测试者是想破坏程序。目前一般压力测试都借助自动测试工具。

性能测试常见术语

性能测试中常见的术语主要有吞吐量、吞吐率、请求响应时间、事务响应时间、 并发、并发用户数量、点击率、资源利用率等

  • 吞吐量:指在一次性能测试过程中网络上传输数据量的总和
  • 吞吐率(Throughput):单位时间内网络上传输的吞吐量,是衡量网络性能的重要指标
  • 请求响应时间:指从客户端发送一个请求开始计时到客户端接收到从服务器端返回最后一个 响应结果为止所消耗的时间
  • 并发用户数量:并发主要针对服务器而言,是否并发的关键是看用户的操作是否对服务器产生了 影响。因此,并发用户数量是指在同一时刻与服务器进行交互的在线用户数量。这些 用户的特征是和服务器发生了交互,这种交互既可以是单向的数据传送,也可以是双 向的数据传送
  • 事务(Transaction): 用户在网页上的每一个操作都可以定义为一个事务。事务有可能是由一个请求组成,也可能是由几个请求组成。例如,我们在脚本中有一个数据 查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务。事务响应时间就是指用户为完成某个事务所需要的时间。它是衡量系统性能的重要指标

Jmeter

调研了主流的压力测试工具:微软的loadrunner和apache的jmeter。最终选用了jmeter,一是因为jemeter是apache下的开源项目,方便改写和二次开发,二是jmeter对于Web压力测试这块功能和组件非常完善,基本可以满足已有的各种需求。

jmeter可用来测试静态资源请求和Web动态应用程序的性能。通过向预部署系统施加不同强度的工作负载来评估系统性能和用户体验。支持多种应用/服务类型压力、性能测试:

  • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
  • SOAP / REST Webservices
  • FTP
  • Database via JDBC

jmeter 可以通过GUI界面编写相应的脚本,进行测试。在高并发性能测试下,一般通过命令行参数来指定相应的配置文件,启动测试。jemeter支持测试报告模板编辑与导出功能,可生成html格式的测试报告文件。

jmeter依靠用户编写的测试例脚本来执行相应的测试,配置文件实际上是xml格式,但以.jmx结尾。测试例脚本由各个组件组成,每个组件都可以配置相应的参数。

测试组边包括线程组,控制器,监听器,定时器,断言,配置元件,属性和变量几个大类,每个大类下又包括多个组件。