文章目录
-
- 性能测试
-
- [1. 术语介绍](#1. 术语介绍)
- [2. 方法](#2. 方法)
- [3. 应用场景](#3. 应用场景)
- [4. 工具(Jmeter)](#4. 工具(Jmeter))
-
- [4.1 介绍](#4.1 介绍)
- [4.2 元件和组件](#4.2 元件和组件)
-
- [4.2.2 元件](#4.2.2 元件)
- [4.2.1 组件](#4.2.1 组件)
- [4.3 作用域](#4.3 作用域)
- [4.4 参数化](#4.4 参数化)
- [4.5 执行脚本](#4.5 执行脚本)
性能测试
1. 术语介绍
-
响应时间(Response time):对请求作出响应所需要的时间。
在互联网上对于用户响应时间,有一个普遍的标准。2/5/10秒原则。
-
并发用户数(concurrent users):在同一时间段内访问系统的用户数量。
-
吞吐量(Throughput):单位时间内系统处理的客户请求的数量。
对web系统, 吞吐量主要以请求数/秒 、页面数/秒 或是字节数/秒来体现。
-
性能计数器(Counter):描述服务器或操作系统性能的指标
如: windws系统的使用内存数(Memory In Usage)、**进程时间(Total Process Time)**等。
-
思考时间(Think time):也称"休眠时间" 或"等待时间"。
从业务角度讲, 是指用户进行操作时,每个请求之间的间隔时间。
2. 方法
-
负载测试(Loading Testing) : 通过不断在被测系统上增加压力,直到性能指标 超过预定指标 或者系统资源使用已达到饱和状态。
这种测试方法的主要目的是找到系统处理能力的极限, 使用这种测试方法的时候应该考虑到业务的应用场景是否符合业务的实际特点,这样才能使得测试结果具有实际意义。
-
压力测试(Stress Testing) : 是测试系统在一定饱和状态下,(例如: CPU、内存)等在饱和使用情况下,能够处理的会话能力以及系统是否会出现错误
这种测试方法主要检查系统处于压力情况下的应用表现, 一般通过模拟负载等方法使系统资源使用达到较高的水平(如:CPU使用率达到75%以上,内存使用率达到70%以上的情况下, 测试系统的响应时间,系统有没有出现错误, 使用这种方法一般用于测试系统的稳定性)
3. 应用场景
-
能力验证:
指验证系统在某种条件下是否达到了某种性能,如验收测试。
-
能力规划:
指验证系统是否满足在未来一段时间的用户增长需求。
-
性能调优:
指发现系统性能瓶颈后,需要对针对系统某些方面作出调整以解决瓶颈问题。
-
缺陷发现:
指以发现缺陷为主要目的,而将性能测试作为一种手段。
4. 工具(Jmeter)
4.1 介绍
Apache JMeter 是Apache组织 开发的基于Java 的性能测试工具。用于对软件做性能测试 ,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。JMeter可以用于测试FTP、HTTP、RPC、JUNIT、JMS、LDAP、WebService(Soap) Request以及Mail和JDBC(数据库性能测试)。也会被用来做回归和功能测试。
4.2 元件和组件
4.2.2 元件
- 多个类似功能组件的容器(类似于类)
4.2.1 组件
- 实现独立的某个功能(类似方法)
4.3 作用域
- 作用域原则
- 取样器:核心,不和其他元件相互作用,没有作用域。
- 逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用。
- 其他元件:
- 如果父节点是取样器,该元件只对父节点起作用。
- 如果父节点不是取样器,其作用域是父节点下的所有子节点 及其后代节点。
4.4 参数化
-
用户定义的变量(配置元件的组件)
-
csv数据文件设置
-
用户参数(前置处理器的组件)
-
函数
__counter:计数器函数(True:每个用户独立的计数器;False:全局计数器)
__Random:随机数函数(参数一:范围最小值;参数二:范围最大值)
__time:获取当前时间函数(无参:获取时间戳;参数一:格式化时间 yyyy-MM-dd hh:mm:ss)
4.5 执行脚本
python
jmeter --n --t zentao.jmx --l result.txt -e -o ./report --JthreadCount=3600 --Jtime=120
# -n 无图形化运行
# -t 运行脚本文件
# -l 将运行信息写入日志文件
# -e 生成测试报告
# -o 指定报告输出路径
未完待续···············