性能测试
周末看到测试交流群里的一篇公众号在写,现在对于测试来讲,自动化测试已经是烂大街了。当你的履历中有关于性能的测试以及性能调优能够加好多分,那我就开始整理整理关于性能测试的内容。
什么是性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
性能测试的基本概念
负载测试
测试不同用户数量来测试系统的反应,主要关注性能指标,系统不同表现
压力测试
高压状态下多用户高并发测试,主要关注系统是怎么崩溃的(内存泄漏,cpu无响应,数据库无反应,网络堵塞)
响应时间
用户发送一个请求到用户收到服务器返回的相应数据这段时间就是响应时间。
吞吐量
单位时间内系统处理的客户端请求的数量
并发数
- 并发用户数: 某一物理时刻同时像系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同的场景或功能。
- 在线用户数: 某段时间内访问系统的用户数,这些用户并不一定项系统提交请求
- 系统用户数: 系统注册的总用户数据
资源利用率
对不同系统资源的使用程度,通常以占用最大值的百分比来衡量
通常需要关注的服务器资源如下:
- CPU
- 内存
- 磁盘IO
- 网络
其他常用概念
还有些其他的常用概念:
- TPS : Transactions Per Second 每秒事务数
- 思考时间: 用户每个操作后的暂停时间,或者叫操作之间的间隔时间,这段时间内是不对服务器产生压力的。
- 点击数: 没描述用户向服务器提交的Http请求书
- PV: 访问一个URL,产生一个PV,每日每个网站的总PV量是形容一个网站规模的重要指标
- UV: 作为一个独立的用户,访问站点的所有页面算作一个UV
为什么性能测试
- 目前的应用大多是基于网络的分布式应用,我们无法知道用户数量,用处场景的不确定性。用户增多后可能会出现各种各样的问题,所以需要进行系统西能测试
- 用户数量增加,系统负载增加,进行系统性能测试,知道系统承受的并发用户数量,带宽是否够用,cpu是否够用,内存是否够,硬盘速度是否跟的上。服务器是否能够承载多用户多并发,系统是否稳定,从用户角度看响应时间速度。
性能测试关注什么
当我们考虑性能的时候我们应该考虑多方面的制约,比如:三层架构、集群、云计算、虚拟化。这些都会对我们的测试造成影响。
- 响应时间快慢,服务器端的处理速度
- 服务器端的使用情况
- 数据库端的资源使用情况
- 最大用户访问数量
- 同事处理最大业务数量
- 考察系统是否能够支撑7*24小时运转
- 内存资源、线程资源能否正常回收
- 代码,算法,sql语句设计是否合理
- 整个系统的稳定性,可恢复性
怎么性能测试
- 性能需求分析
- 性能测试计划
- 编写性能测试用例
- 搭建性能测试环境
- 通过性能测试用例,编写性能测试脚本
- 性能测试脚本调优,设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
- 设计性能测试场景,监控服务器,运行测试场景
- 分析性能测试结果
- 回归性能测试
- 编写性能测试报告
问题:
怎么确定系统能够承载的最大用户数?
通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,基本就是系统能承载的最大用户数。
哪些地方要做性能测试?
用户使用最频繁的功能进行性能测试
怎么确定并发用户?
- 电商的上线一段时间,根据手机到的用户访问数据进行评估
- 需求来的
性能测试在哪里做的?
搭建一套独立的性能测试环境进行测试
性能测试什么时间做?
功能测试之后,系统比较稳定的时候再做
怎么分析性能测试结果
先确定测试是否可信~
确认没有大面积失败的事务,没有大量Error的数据,虚拟用户数有没有正常加载,点击率和Http响应曲率是否一致。