性能测试--Jmter
在学性能前先学会接口测试
为什么要做性能测试?
评估系统性能指标、识别系统性能瓶颈,协助调优、指导突发流量承载方案的制定
用于系统运维成本的预算。
1)目前绝大多数应用都是基于网络的分布式应用,我们无法知道用户数量,用户场景的不确定性,系统测试时,不仅仅是功能,业务逻辑,接口测试,还要测试系统性能。一个用户没问题,但是用户一旦多了就可能出现各种各样的问题,所以需要进行系统性能测试。
2)用户数量增加,系统负债增加,进行系统性能测试,知道系统承受的并发用户数量,带宽是否够用,cpu是否够用,内存是否够用,硬盘速度是否跟得上。从服务端来看,测试服务器是否能承载用户多并发,系统是否稳定,从用户角度看响应时间速度。
- 什么是软件性能
它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。通常我们会使用某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试
- 不同群体眼中的性能
不同的人对于同一事物或问题的看法可能不同。对于软件性能也是如此,不同的人由于视角的不同,所关注的点也可能不同。下面来看看在不同的人群眼中性能分别是什么样的。
用户眼中的性能:
响应时间: ---还要让我等多久
稳定性: ----为什么总是失败
开发眼中的性能
架构设计: ------架构设计是否合理
数据库设计:-----数据库设计是否合理
代码: ------代码是否存在性能问题
-------代码是否有存在内存的不合理性
--------...........................资源竞争
--------...........................线程同步操作
系统管理员
资源利用率 : -------服务器和数据库资源使用是否合理
可扩展性: -------系统是否能实现扩展/系统哪些潜在的瓶颈/添加哪些设备可提高性能
系统容量: -------最多支持多少用户访问/最大业务处理量
稳定性: --------7*24小时连续不间断业务访问?
测试人员
测试人员需要考虑全面的性能,
1,包括用户、开发、管理员等各个视角的性能。
2、测试人员在做性能测试时除开要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等言方方面面。
三、性能测试类型(分类)
基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
对于分布式网络,测试不同用户数量来测试系统的反应,关注系统不同表现。
负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。高压状态下多用户高并发测试(30万-50万),关注系统是怎么崩溃的。(内存泄漏,cpu无响应,数据库无反应,网络堵塞)
稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题
- 性能测试应用场景
性能测试应用场景(领域)主要有:能力验证、规划能力、性能调优、缺陷发现、性能基准比较,下表简单介绍和对比了这几个场景的各自用途和特点:
|
主要用途 |
典型场景 |
特点 |
常用性能/测试方法 |
能力验证 |
关注在给定的软硬件条件下,系统能否具有预期的能力表现 |
在要求平均响应时间小于2秒的前提下,如何判断系统是否能够支持50万用户/天的访问量 |
要求在已确定的环境下运行 需要根据典型场景设计测试方案和用例,包括作序列和并发用户量,需要明确性能目标 |
负载测试 压力测试 稳定性测试 |
规划能力 |
关注如何使用系统具有我们要求的性能能力 |
年内获客量在到xxx万,系统到时候是否能支持这么多用户量?如果不能需要如何配置? |
它是一种探索性的测试 常用于了解系统性能和获得扩展性能的方法 |
负载测试 压力测试 配置测试 |
性能调优 |
主要用于对系统性能进行调优 |
某某系统上线运行一段时间后响应速度越来越慢,此时应如何? |
每次只改变一个配置切记无休止的调优 |
并发测试 压力测试 配置测试 |
缺陷发现 |
发现缺陷或问题重现,定位手段 |
某缺陷只有在高负载的情况下才能暴露出来,如线程锁,资源竞争或内存泄漏 |
做为系统测试的补充,用来发现并发问题,或是对系统已经出现的问题进行重现和定位 |
并发测试 压力测试 |
性能基准 |
常用于敏捷开发过程中,敏捷开发流程的特点是 |