一、什么是软件性能?什么是软件性能测试?
二、不同群体关注的软件性能
三、性能测试的类型
四、性能测试的应用场景(领域)
一、什么是软件性能?什么是软件性能测试?
定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。
由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试完成之后。另外,由定义中的及时性可知性能也是一种指标,可以用时间或其它指标来衡量,通常我们会使用某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试。
性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
二、不同群体关注的软件性能
不同的人由于人生观、世界观、价值观以及教育背景、知识体系、人生阅历的不同,对于同一事物或问题的看法可能不同。对于软件性能也是如此,不同的人由于视角的不同,所关注的点也可能不同。下面来看看在不同的人群眼中性能分别是什么样的。
- 用户眼中的性能
- 开发眼中的性能
- 系统管理员眼中的性能
- 测试眼中的性能是什么样的呢?
测试人员通常是做为软件质量控制的一个角色,不仅仅是找bug,需要对整个软件的质量负责,性能也属于质量的一部分,因此测试人员眼中的性能应该是全面的,考虑的东西也需要全面:
1、测试人员需要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。
2、测试人员在做性能测试时除开要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等言方方面面。
三、性能测试的类型
性能测试包括:基准测试、负载测试、压力测试、并发测试、容量测试、可靠性测试(稳定性测试)、配置测试、失败测试。
1、简述性能测试的8大类,并对这8大类进行描述。
答:
基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
负载测试:是通过逐渐增加系统的负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能承受的最大负载量的测试。简而言之,负载测试是通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值。
压力测试:是通过逐步增加系统的负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效。
并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。
容量测试:在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力,最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。
可靠性测试(稳定性测试):通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定因为运行时间较长,通常可以测试出系统是否有内存泄漏等问题。
配置测试:主要是通过对被测试软件的软硬件配置进行测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统提供重要依据。
失败测试:对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。
四、性能测试应用场景(领域)
1、性能测试应用场景(领域)主要有:能力验证、规划能力、性能调优、缺陷发现、性能基准比较,下表简单介绍和对比了这几个场景的各自用途和特点:
主要用途 | 典型场景 | 特点 |
常用性能 测试方法 |
|
能力验证 | 关注在给定的软硬件条件下,系统能否具有预期的能力表现 | 在要求平均响应时间小于2秒的前提下,如何判断系统是否能够支持50万用户/天的访问量? | a)要求在已确定的环境下运行 b)需要根据典型场景设计测试方案和用例,包括操作序列和并发用户量,需要明确的性能目标。 |
a)负载测试 b)压力测试 c)稳定性能测试 |
规划能力 | 无条件,关注如何使系统具有我们要求的性能能力 |
某某系统计划在一年内获客量在到xxx万,系统到时候是否能支持这么多用户量?如果不能需要如何调整系统的配置? | a) 它是一种探索性的测试 b) 常用于了解系统性能和获得扩展性能的方法 |
a) 负载测试 b) 压力测试 c) 配置测试 |
性能调优 | 主要用于对系统性能进行调优 | 某某系统上线运行一段时间后响应速度越来越慢,此时应该如何办? | 每次只改变一个配置,切忌无 休止的调优 | a) 并发测试 b) 压力测试 c) 配置测试 |
缺陷发现 | 发现缺陷或问题重现、定位手段 | 某些缺陷只有在高负载的情况下才能暴露出来,如线程锁、资源竞争或内存泄露。 | 做为系统测试的补充,用来发现并发问题,或是对系统已经出现的问题进行重现和定位 | a) 并发测试 b) 压力测试 |
性能基准比较 | 常用于敏捷开发过程中,敏捷开发流程的特点是小步快走,快速试错,迭代周期短,需求变化频繁。很难定义完善的性能测试目标,也没有时间在每个迭代开展详细的性能测试,可以通过建立性能基线,通过比较每次迭代中的性能表现变化,判断迭代是否达到了目标。 |