文章目录
- 7 性能测试
- 7.1 性能测试基础
- 7.1.1 性能测试的分类
- 7.1.2 性能计数器
- 7.2 性能测试流程
- 7.3 LoadRunner应用
- 7.4 Rational Performance Tester应用
- 7.5 性能测试结果分析
- 7.5.1 性能分析原则
- 7.5.2 常见瓶颈症状
7 性能测试
7.1 性能测试基础
性能测试的目的是验证软件系统是否能够达到用户要求的性能指标,同时发现软件系统
中存在的性能瓶颈,最后起到优化系统的目的。
性能测试:
- 评估系统的能力
- 识别系统中的瓶颈
- 系统调优
- 验证稳定性与可靠性
7.1.1 性能测试的分类
- 负载测试
- 压力测试
- 强度测试
- 容量测试
7.1.2 性能计数器
性能计数器是描述服务器或操作系统性能的一些数据指标。
影响一个系统性能的因素主要有:
- 软件因素,包括系统软件、第三方软件等;
- 硬件因素,如内存、磁盘、CPU、网卡等;网络因素,如网络吞吐量、带宽、网络传输速率等。
常用的Windows性能计数器如下所示:
- 内存(Memory)
内存性能计数器主要检查应用程序是否存在内存泄漏。
- 处理器(Processor)
监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,
帮助测试人员决定是否存在瓶颈。
- 物理磁盘(Physical Disk)
- 判断磁盘瓶颈的方法是通过以下公式来计算:
- 如果计算出的每磁盘的I/O 数大于磁盘的处理能力, 那么磁盘存在瓶颈。否
则,磁盘不存在瓶颈。
7.2 性能测试流程
性能测试主要是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统
的各项性能指标进行测试。
性能测试原理的实现主要包含三点:
- 用户行为模拟
- 性能指标监控
- 性能调优
7.3 LoadRunner应用
一种预测系统行为和性能的工业标准级负载测试工具。
实验:
- 脚本的录制与开发
- 场景设计与运行
- 测试结果分析
7.4 Rational Performance Tester应用
一款性能测试工具,适用于基于 Web 的应用程序的性能和可靠性测试。
实验:
- RPT基本使用
- 测试验证点的设置
- 数据池的使用
7.5 性能测试结果分析
性能测试完成后,需要对结果进行分析,以定位瓶颈。应用LoadRunner、RPT等工具进行性能测试,测试运行完毕后,产生的各性能指标曲线是进行性能分析的重要依据。可以通过对性能指标随时间的变化综合分析,帮助测试人员定位性能瓶颈,并采取措施对系统进行性能优化。
7.5.1 性能分析原则
- 具体问题具体分析
不同的应用系统,测试目的不同,测试过程中性能关注点也会不同。
- 查找瓶颈时按以下顺序:
服务器硬件瓶颈 > 网络瓶颈(对局域网,可以不考虑) > 服务器操作系统瓶颈(参数配置) > 中间件瓶颈(参数配置,数据库,web服务器等) > 应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)。
7.5.2 常见瓶颈症状
内存资源成为系统性能的瓶颈的症状:
- 很高的换页率(high pageout rate)
- 进程进入不活动状态(process deactivation activity)
- 自由内存的数量很小,但活动的虚拟内存却很大
- 交换区所有磁盘的活动次数可高
- 很高的全局系统CPU利用率
- 很长的运行进程队列,但CPU的空闲时间却很多
- 内存不够出错
- CPU用于vhand和swapper两种守护进程的时间(CPU time to vhand and swapper)
CPU资源成为系统性能的瓶颈的征兆:
- 很慢的响应时间(slow response time)
- CPU空闲时间为零(zero percent idle CPU)
- 过高的用户占用CPU时间(high percent user CPU)
- 过高的系统占用CPU时间(high percent system CPU)
- 长时间的有很长的运行进程队列(large run queue size sustained over time)
- 被优先级封锁的进程(processes blocked on priority)
I/O资源成为系统性能的瓶颈的征兆:
- 过高的磁盘利用率(high disk utilization)
- 太长的磁盘等待队列(large disk queue length)
- 等待磁盘I/O的时间所占的百分率太高(large percentage of time waiting for disk
I/O) - 太高的物理I/O速率(large physical I/O rate(not sufficient in itself)
- 过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself))
- 太长的运行进程队列,但CPU却空闲(large run queue with idle CPU