软件性能
软件性能是一种非功能特性,它关注的不是软件是否能完成特定功能,而是完成功能时展示出的及时性、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等。
性能指标
• 注册用户数:所有在系统注册的用户数目
• 在线用户数:所有正在访问系统的用户(不一定做操作)数目
• 并发用户数:在某一给定时间内某特定时刻进行会话操作的用户数
• 假设用户只有注册后才能使用,但注册用户并不是每时每刻都在使用该网站,因此具体一个时刻只有部分注册用户同时在线。
• 在线用户在浏览网站时会花很多时间阅读网站的信息,因而具体一个时刻只有部分在线用户同时向系统发出请求。
• 由于注册用户可能长时间不登陆网站,使用注册用户数作为性能指标会造成很大的误差。在线用户数和并发用户数都可作为性能指标,但性能测试更多关心并发用户数。
响应时间
• 从客户端发出请求到获得响应的整个过程所经历的时间
吞吐量
• 吞吐量(Throughout)是指单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力。
• 从业务的角度,吞吐量可以用请求数/秒、页面数/秒、访问数/秒或处理业务数/小时等来衡量。
资源利用率
• 资源利用率是指系统资源的使用程度,例如服务器CPU利用率、内存利用率、磁盘利用率、网络带宽利用率等。
• 一般由“资源实际使用/总的资源可用量”表示,如CPU利用率68%、内存利用率55%等。
性能测试
性能测试是通过自动化测试工具或手段模拟多种正常、峰值以及异常负载条件对系统的各项性能指标进行的一种测试。
负载测试
通过逐渐增加系统负载,测试系统性能的变化,最终确定在满足性能指标的情况下,系统能承受的最大负载量。
目标:在特定的运行条件下验证系统的能力状况。
压力测试
通过逐步增加系统负载,测试系统性能的变化,最终确定在什么负载条件下系统性能处于失效状态。
目标:发现在什么条件下应用程序的性能会变得不可接受。
压力测试类型
• 稳定性压力测试:高负载下持续运行24小时以上。
• 破坏性压力测试:通过不断加载的手段快速造成系统崩溃,让问题尽快暴露出来。
• 渗入测试:通过长时间运行,使问题逐渐渗透出来,从而发现内存泄漏、垃圾收集或系统的其他问题,以检验系统的健壮性。
• 峰谷测试:采用高低突变加载方式进行,先加载到高水平的负载,然后急剧降低负载,稍微平息一段时间,再加载到高水平的负载,重复这样过程,容易发现问题的蛛丝马迹,最终找到问题的根源。
大数据测试
• 独立数据量测试是对某些系统存储、传输、统计、查询等进行的大数据量测试。
• 综合数据量测试是系统在具备一定数据量时,在负载压力测试下考察业务是否能够正常进行的测试。
• 目标:测试数据量较大时系统的性能状况。
疲劳强度测试
• 采用系统稳定运行情况下,长时间运行系统的测试。
• 目标:通过综合分析交易执行指标和资源监控指标来测试系统长时间无故障稳定运行的能力。
性能测试策略
应用在客户端性能的测试:逐渐增加并发虚拟用户数,直到系统瓶颈或者不能接收的性能点,通过综合分析交易执行指标、资源监控指标等来确定系统并发性能。
自动化性能测试工具
实现机制:通过在一台或几台PC机上模拟成百上千的虚拟用户同时执行业务的情景,对应用程序进行测试,从而度量系统性能并确定问题所在。步骤:录制—改进—执行
网络测试监控工具
多个捕捉点,一个分析捕捉点:Agent 被动监听数据包实现实时数据采集。
分析:Agent Manager完成对所跟踪到的数据的分析。
HP LoadRunner是一种预测系统行为和性能的负载测试工具,它通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。LoadRunner能够对整个企业的架构进行测试,通过使用该工具,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
JMeter是Apache组织开发的基于Java的压力测试工具,不仅用于Web服务器的性能测试,也涵盖数据库、FTP、LDAP服务器等各种性能测试,可与Junit、Ant等工具集成。它可以针对服务器、网络或其他被测试对象等大量并发负载进行强度测试,分析在不同压力负载下系统的整体性能。