一、性能测试的概念
性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。
通过负载测试,确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统各项性能指标的变化情况。压力测试时通过确定一个系统的瓶颈或者不能接受的
性能点,来获取系统能提供的最大服务级别的测试。性能测试主要包括负载测试、强度测试、容量测试。
二、性能测试的指标
web服务器:
Avg Rps: 平均每秒的响应次数 = 总请求数 /秒数;
Avg time to last byte per terstion(mstes): 平均每秒业务脚本的迭代次数;
Successful Rounds: 成功的请求;
Failed Rounds: 失败的请求;
Successful Hits: 成功的点击次数;
Failed Hits: 失败的点击次数;
Hits Per Second: 每秒点击次数;
Successful Hits Per Second:每秒成功的点击次数;
Failed Hits Per Second: 每秒失败的点击次数;
Attempted Connections: 尝试连接数;
Throughput: 吞吐率;
数据库服务器:
User Connections: 用户连接数,也就是数据库的连接数量;
Number of Deadlocks: 数据库死锁;
Butter Cache Hit: 数据库Cache 的命中情况;
三、性能测试的流程
1.明确性能测试需求;
2.制定性能测试方案;
2.1.测试范围
2.2.入口标准
2.3.出口标准
2.4.测试策略(测试环境指标、存量数据、业务场景、测试通过标准等)
2.5.测试风险
2.6.测试资源
3.设计性能测试用例;
4.执行性能测试用例;
5.分析性能测试结果;
6.生成性能测试报告;
四、性能测试的工具--JMeter
为什么是JMeter而不是LoadRunner呢 1.更少的投入,针对有限的测试成本; 2.开源工具的可定制性无可比拟; 3.通过社区得到最大程度的支持。
JMeter是Apache组织开发的基于Java的压力测试工具。最初被设计用于web应用的测试,后来扩展到其他测试领域。可用于测试静态和动态资源,如文件、Java服务
程序、Java对象、数据库等。JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证被测程序返回了期望的结果。而且为了保证最大限度的灵活性,
JMeter允许使用正则表达式创建断言。
五、JMeter的特性
1.支持对多种服务类型进行测试;
2.支持通过录制/回访方式获取测试脚本;
3.具备高可移植性,是纯Java 程序;
4.采用多线程框架,允许通过多个线程并发取样及通过独立的线程组对不同的功能同时取样;
5.精心设计的GUI支持高速用户操作和精确计时;
6.支持缓存和离线的方式分析/回放测试结果;
7.高扩展性;
六、JMeter常用测试元件
1.线程组
用来管理执行性能测试所需的JMeter线程。
a.可以设置线程数量
b.设置线程启动周期
c.设置执行测试脚本的循环次数
2.控制器
JMeter有两种类型的控制器:采样器和逻辑控制器。
采样器被用来向服务器发送请求。JMeter采样器包含:FTP Request、HTTP Request、JDBC Request等。
逻辑控制器用来控制JMeter的测试逻辑,特别是何时发送请求。
3.监听器
监听器提供了对JMeter在测试期间收集到的信息的访问方法。
4.定时器
JMeter线程在发送请求之间没有间歇,通过添加定时器,设定请求之间应该间隔的时间。
5.断言
可以使用断言来检查从服务器获得的响应内容。
6.配置元件
配置元件与采样器紧密关联。虽然配置元件并不发送请求,但可添加或修改请求。
7.前置处理器
会在采样器发出请求之前做一些操作。
8.后置处理器
会在采样器发出请求之后做一些操作。
JMeter执行顺序:配置元件=》前置处理器=》定时器=》采样器=》后置处理器=》断言=》监听器