软件性能测试过程详解与案例分析(段念 编著) 学习笔记一
前言:
1.什么是软件性能?软件性能究竟该如何开展?软件性能测试到底应该测些什么?
2.性能的相关因素:网络环境,数据库服务器,应用服务器,业务逻辑的实现方式,系统采用的架构,代码优化的程度,使用者的使用方式等;
软件性能测试基本概念:
1.一般来说,性能是一种指标,表明软件系统或构件对于其及时性要求的符合程度;其次,性能是软件产品的一种特性,可以用时间来进行度量。性能的及时性用响应时间或者吞吐量来衡量。响应时间是对请求作出响应所需要的时间。
2.对交互式的应用(例如典型的Web应用)来说,我们一般以用户感受到的响应时间来描述系统的性能,而对非交互式应用(嵌入式系统或银行等的业务处理系统)而言,响应时间是指系统对事件产生响应所需要的时间。
3.用户视角的软件性能:
从用户的角度来说,软件性能就是软件对用户操作的响应时间;
用户所体会到的“响应时间”既有客观的成分,也有主观的成功。例如,用户执行了某个操作,该操作返回大量数据,从客观的角度来说,事务的结束应该是系统返回所有的数据,响应时间应该是从用户操作开始到所有数据返回完成的整个耗时;但从用户的主观感知来说,如果采用一种优化的数据呈现策略,当少部分数据返回之后就立刻将数据呈现在用户面前,则用户感受到的响应时间就会远远小于实际的事务响应时间。
4.管理员视角的软件性能:
①系统的响应时间;
②系统状态的相关信息,如:CPU、内存、应用服务器状态、JVM可用内存、数据库的状态等;
③系统的可扩展性,处理并发的能力;
④系统可能的最大容量,可能的性能瓶颈,通过更换哪些设备或是进行哪些扩展能够提高系统性能;
⑤长时间运行是否足够稳定,是否能够不间断的提供业务服务等;
小结:
(1)资源利用率:服务器的资源使用状况合理吗?应用服务器和数据库的资源使用状况合理吗?
(2)系统可扩展性:系统是否能够实现扩展?
(3)系统容量:系统最多能支持多少用户的访问?系统最大的业务处理量是多少?
(4)系统可扩展性:系统性能可能的瓶颈在哪里?更换哪些设备能够提高系统性能?
(5)系统稳定性:系统能否支持7X24小时的业务访问?
5.开发视角的软件性能:
①用户和管理员关心的软件性能;
②如何通过调整设计和代码实现,或是如何通过调整系统设置等方法提高软件的性能表现;
③如何发现并解决软件设计和开发过程中产生的由于多用户访问引发的软件故障,也就是通常所说的“性能瓶颈”和系统中存在的在大量用户访问时表现出来的缺陷;
小结:
(1)系统架构:架构设计是否合理;
(2)数据库设计:数据库设计是否存在问题;
(3)代码:代码是否存在性能方面的问题,系统中是否有不合理的内存使用方式;
(4)设计与代码:系统中是否存在不合理的线程同步方式,系统中是否存在不合理的资源竞争;