性能测试可以分为负载测试 和 压力测试
负载测试:用于观察系统在正常负载和峰值负载下的表现,峰值为预估的业务峰值
压力测试(疲劳测试):用于观察系统在高负载下的表现
阿里云性能测试服务:Performance Testing,PTS
ab
ab:Apache HTTP server benchmarking tool,是Apache服务器自带的一个命令
文档:http://httpd.apache.org/docs/2.4/programs/ab.html
ab -c 10 -n 100 http://www.xiami.com # 一次并发10个请求,一共发100个请求
ab -n 100 -c 100 -H "Cookie:JSESSIONID=01BCDA8D30F3011A1C8136ED9B0A3ED6" http://www.xiami.com // 带上cookie
Apache JMeter
官网:http://jmeter.apache.org/
创始人:Stefano Mazzocchi
准备工作
1、下载zip包,解压
2、Windows 下双击 bin/jmeter.bat 启动,Linux下运行 bin/jmeter.sh
层次结构
测试计划-> 线程组
线程组 -> 采样器、逻辑控制器、监听器、计时器、配置元素、预处理器、后处理器、断言
测试计划(Test Plan)
保存测试计划:File -> Save Test Plan As
单独保存测试元素:测试元素右键 -> Save Selection As
执行测试计划:点击绿色三角
线程组(Thread Group)
添加:测试计划右键 -> Add -> Threads -> Thread Group
配置:Number of Threads(线程数)、Ramp-Up Period(每秒发送几个请求)、Loop Count(循环次数)
采样器(Sampler)
作用:即发送请求的模块,需要配置请求目标、请求参数等
添加:线程组右键 -> Add -> Sampler -> HTTP Request等
监听器(Listener)
作用:用于展示测试结果;结果也会记录到 jmeter.log 中
添加:线程组右键 -> Add -> Listener -> View Results Tree、Aggregate Report等
逻辑控制器(Logic Controller)
作用:控制采样器的执行顺序
添加:线程组右键 -> Add -> Logic Controller
定时器(Timer)
作用:在采样器发请求之前执行
添加:线程组右键 -> Add -> Timer
配置元素(Config Element)
作用:请求的一些可选信息,如cookie、header、自定义参数
添加:线程组右键 -> Add -> Config Element -> HTTP Cookie Manager、User Defined Variables等
预处理器(Pre Processor)
作用:在每个请求发出前执行
添加:线程组右键 -> Add -> Pre Processor
后置处理器(Post Processor)
作用:在每个请求发出后执行
添加:线程组右键 -> Add -> Post Processor
断言(Assertions)
作用:对响应做断言
添加:线程组右键 -> Add -> Assertions
用户自定义变量(User Defined Variables)
添加:线程组右键 -> Add -> Config Element -> User Defined Variables
引用:${变量名}
引入外部文件数据,作为变量(CSV Data Set Config)
CSV文件:一行中的数据用逗号隔开
添加:线程组右键 -> Add -> Config Element -> CSV Data Set Config
配置:Variable Names(取列名,例如title,content)
引用:${列名}
正则表达式提取器(Regular Expression Extractor)
添加:线程组右键 -> Add -> Post Processor -> Regular Expression Extractor
作用:提取本次请求的响应里的内容,作为下一个请求的参数
配置:Name of created variable(引用名称),Regular Expression(正则表达式),Template(提取匹配串里的组作为变量值,例如表示提取第一个组)
引用:${引用名称}
阿里云
性能测试服务