性能测试基础

来源:互联网 发布:链轮自动计算软件 编辑:程序博客网 时间:2024/05/21 00:15
 

测试工具已经快4年了,从今年5月开始结束了单纯的功能测试,转向性能测试,到目前为止也完成了第一个性能测试项目。前几天得到前辈的启示,决定以后朝着这个方向好好发展。因此决定开始我的博客之旅。。。

这几天在看性能测试进阶指南这本书,做下笔记,给自己做个小的总结。


性能测试理论基础

性能测试的分类:(引用)

1. 负载测试(Load Testing)

负载测试是指在一定的软件,硬件及网络环境下,运行一种或者多种业务,在不同的虚拟用户数量的情况下,测试服务器的性能指标是否在用户的要求范围内,以此确定系统所能承载的最大用户数,最大有效用户数以及不同的用户数下的系统响应时间及服务器的资源利用率。

2.压力测试(Stress Test)

压力测试是指在一定的软件,硬件及网络环境下,模拟大量的虚拟用户向服务器产生负载,是服务器的资源处于极限状态下并长时间连续运行,以测试服务器在高负载情况下是否能够稳定工作。

3.容量测试(Volume Testing)容量测试是指在一定的软件,硬件及网络环境下,在数据库中构造不同的数量级别的数据记录,运行一种或者多种业务在一定虚拟用户数量的情况下,获取不同数量级别的服务器的性能指标,以确定数据库的最佳容量和最大容量。容量测试不仅可以对数据库进行,还可以对硬件的处理能力,各种服务器的连接能力等进行。

4.配置测试(Configuration Testing)

配置测试是指在不同的软件,硬件以及网络环境配置下,运行一种或者多种业务,在一定的虚拟用户数量情况下,获得不同的配置的性能指标,用于选择最佳的设备以及参数配置。通过产生不同的配置,来得到系统性能的变化 状况。

5.基准测试(Benchmark Testing)

基准测试是指在一定的软件,硬件和网络环境下,模拟一定数量的虚拟用户运行一种或者多种业务,将测试结果作为基线数据,在系统调优或者系统评测的过程中,通过运行相同的业务场景比较测试结果,确定调优的结果是否达到预期效果或者为系统的选择提供决策数据。基准测试一般基于配置测试,通过配置测试得到的数据,并将这个数据作为基准来比较每次调优后的性能是否有所改善。

6.并发测试(Concurrency Testing)

并发测试是指通过模拟多个用户并发访问同一个应用,存储过程或者数据记录以及其他的并发操作,测试是否存在死锁,数据错误等故障。为了避免数据库或者函数方法在并发下的错误,需要专门针对每个模块进行并发测试。

以上将测试分了几个类别,看起来是去区别各种性能测试,实际上是性能测试中使用到的几个策略。通过不同的测试方法达到不同的测试目的。

性能分析以及调优(引用)

性能测试的目的是为了发现性能瓶颈并解决,性能分析是为了确定导致性能瓶颈的原因,而调优就是用来解决性能瓶颈。

  

性能测试瓶颈分析的关键步骤:
步骤一:性能测试与数据收集;
步骤二:性能瓶颈分析;
步骤三:性能调优解决方案。

步骤一:性能测试与数据收集;
数据收集,需要收集那些内容呢,下面来列一下关键点:
1、客户端性能指标:并发用户数、事务响应时间、每分钟事务数;
2、非客户端性能指标:服务器资源、网络资源:
  a、操作系统:如:WINDOWS、UNIX
  b、数据库服务器:如:Oracle、SQLServer、DB2、Sybase
  c、中间件服务器:如:WebSphere、Weblogic
  d、网络:带宽利用率、延迟、丢包、传输错误等

步骤二:性能瓶颈分析;
性能瓶颈分析的关键点包括:
1、响应时间;
2、并发用户数;
3、吞吐量;
4、CPU;
5、内存和高速缓存;
6、磁盘(I/O)
7、中件间服务器性能;
8、数据库服务器性能等。

从以下分析角度来分析性能瓶颈:
1、客户端、网络、服务器;
2、硬件、软件;
3、应用软件、Web服务器、数据库服务器。

下面对数据库的瓶颈分析做个示例:
1、首先得到数据库系统中每一条SQL语句在数据库中执行的平均时间;
2、然后将效率低下并且频繁调用的SQL语句的执行时间划分为以下部分:解析时间、执行时间、读取时间和其他时间;
3、优化SQL。

步骤三:性能调优解决方案;
1、硬件平台:服务器CPU、内存以及硬盘等;
2、网络平台:负载、延迟、传输故障等等;
3、软件平台:数据库、中间件;
4、应用级别:线程(进程)级别、会话级别、代码级别;

下面对数据库调优举个例子:
1、数据库实例优化
 a、library cahce 的优化;
 b、数据字典高速缓存的优化;
 c、数据高速缓存的优化;
 d、回滚段的优化;
 e、重做日志文件的优化;
 f、排序区的优化;
 g、数据库IO的优化;
 h、数据库碎片的优化;
2、数据库事件响应时间分析
 a、等待事件分析;
 b、会话级别的事件响应时间分析;
 c、数据库实例的响应时间分析;
3、数据库锁管理
4、SQL语句的优化。

前辈说

性能调优=单项技能的总和+问题分析能力

而性能调优之前,必须精通测试执行。当然实际的业务又是另外需要学习的东西。所以我的方向大致是:精通性能执行(工具,语言),各种应用的区别(项目积累),业务(学习学习。。。)