灿烂的阳光,苦涩的生活,认真做,你能行!

性能测试步骤

上一篇 / 下一篇  2009-04-23 13:47:40 / 个人分类:文档

在每种不同的系统架构的实施中,开发人员可能选择不同的实现方式,造成实际情况纷繁复杂。我们不可能对每种技术都详细解说,这里只是介绍一种方法提供给你如何选择测试策略,从而帮助分析软件不同部分的性能指标,进而分析出整体架构的性能指标和性能瓶颈。

     由于工程和项目的不同,所选用的度量,评估方法也有不同之处。不过仍然有一些通用的步骤帮助我们完成一个性能测试项目。步骤如下

1.    制定目标和分析系统
2
 选择测试度量的方法
3
 学习的相关技术和工具
4
 制定评估标准
5
 测试环境建立

6. 设计测试用例

7. 运行测试用例

8. 分析测试结果

·制定目标和分析系统

   每一个性能测试计划中第一步都会制定目标和分析系统构成。只有明确目标和了解系统构成才会澄清测试范围,知道在测试中要掌握什么样的技术。   

目标:

1 确定客户需求和期望

2 实际业务需求

3 系统需求

系统组成

   系统组成这里包含几方面含义:系统类别,系统构成,系统功能等。了解这些内容的本质其实是帮助我们明确测试的范围,选者适当的测试方法来进行测试。

   系统类别:分清系统类别是我们掌握什么样的技术的前提,掌握相应技术做性能测试才可能成功。例如:系统类别是bs结构,需要掌握http协议,javahtml等技术。或者是cs结构,可能要了解操作系统winsockcom等。所以甄别系统类别对于我们来说很重要。

   系统构成:硬件设置,操作系统设置是性能测试的制约条件,一般性能测试都是利用测试工具模仿大量的实际用户操作,系统在超负荷情形下运作。不同的系统构成性能测试就会得到不同的结果。

   系统功能:系统功能指系统提供的不同子系统,办公管理系统中的公文子系统,会议子系统等,系统工能是性能测试中要模拟的环节,了解这些是必要的。

·选择测试度量的方法

经过第一步,将会对系统有清醒的认识。接下来我们将把精力放在软件度量上,收集系统相关的数据。

度量的相关方面:

*制定规范

*制定相关流程,角色,职责

*制定改进策略

*制定结果对比标准

·学习的相关技术和工具

     性能测试是通过工具,模拟大量用户操作,对系统增加负载。所以需要掌握一定的工具知识才能进行性能测试。大家都知道性能测试工具一般通过winsock,http等协议纪录用户操作。而协议选择是基于软件的系统架构实现(web一般选择http协议,cs选择winsock协议),不同的性能测试工具,脚本语言也不同,比如rational robotvu脚本用类c语言实现。

     开展性能测试需要对各种性能测试工具进行评估,因为每一种性能测试工具都有自身的特点,只有经过工具评估,才能选择符合现有软件架构的性能测试工具。确定测试工具后,需要组织测试人员进行工具的学习,培训相关技术。

·制定评估标准

        任何测试的目的都是确保软件符合预先规定的目标和要求。性能测试也不例外。所以必须制定一套标准。

     通常性能测试有四种模型技术可用于评估:

         *线性投射:用大量的过去的,扩展的或者将来可能发生的数据组成散布图,利用这个图表不断和系统的当前状况对比。

         *分析模型:用排队论公式和算法预测响应时间,利用描述工作量的数据和系统本质关联起来

         *模仿:模仿实际用户的使用方法测试你的系统

         *基准:定义测试和你最初的测试作为标准,利用它和所有后来进行的测试结果进行对比

 测试环境建立

1 整个测试环境系统的安装;

2 Web层系统的部署;

3 App层服务的安装;

4 DB数据库的备份和还原;

5 整个系统部署安装完成后,需要对系统功能进行测试检查(可以围绕着测试范围来进行)

 设计测试用例

   设计测试用例是在了解软件业务流程的基础上。设计测试用例的原则是受最小的影响提供最多的测试信息,设计测试用例的目标是一次尽可能的包含多个测试要素。这些测试用例必须是测试工具可以实现的,不同的测试场景将测试不同的功能。因为性能测试不同于平时的测试用例,尽可能把性能测试用例设计的复杂,才有可能发现软件的性能瓶颈。

   1测试数据生成

对于数据生成的方法,我主要是编写SQL语句来完成,另外还可以使用一些辅助工具,例如:DataFactory

大数据量的生成,要注意SQL语句的有效性,尽量减少数据生成时所需要的时间;另外在数据生成过程中,可以进行脚本的准备。

注意:在数据生成之前,要考虑数据库文件的数量,因为数据文件均匀分布对整个性能测试结果很有影响,这是我们的血泪经验。

 

 2测试脚本准备

根据不同的测试工具,编写脚本的方式不一样,但是其流程大致是一样的:

录制〉回放〉一些数据的参数化、添加一些验证条件〉回放

注意:参数化数据的随机性会影响性能测试结果;

 运行测试用例

  1预测试

测试相关工作准备完成后,我们可以开始预测试了;

预测试的目的主要是优化和调整系统;它是一个反复迭代的过程;

2.性能优化和调整

性能优化和调整是整个性能测试工作的核心和关键;

主要根据测试过程中所得到的系统计数器值来判断系统瓶颈所在,这里需要一些经验;我对性能优化和调整的认识主要如下:

1 Web层,主要在于对IIS的优化;对于基于.NET FramewoekWeb站点,还可以修改相关的参数来进行优化;

2 App层,目前我们的系统都是在功能完成后才对系统进行性能测试的;所以我们对代码的优化工作机会为零,这是一个遗憾,但也是整个性能优化和调整的一大部分工作所在。

3 DB层,数据库层的性能优化是我们整个性能优化的核心,我们主要围绕着索引和存储过程来展开;这是一个相当漫长的一个过程,需要我们有耐心和毅力。

 

  3正式测试

当预测试结果达到测试需求后,我们可以进行正式测试了;如果时间允许,我们可以进行进一步的性能优化和调整工作;但是实际上很多时候,我们没有这样的机会。

 通过性能测试工具运行测试用例。同一环境下作的性能测试得到的测试结果是不准确的,所以在运行这些测试用例的时候,需要用不同的测试环境,不同的机器配置上运行。

 

   ·分析测试结果

     运行测试用例后,收集相关信息,进行数据统计分析,找到性能瓶颈。通过排除误差和其他因素,让测试结果体现接近真实情况。不同的体系结构分析测试结果的方法也不同,bs结构我们会分析网络带宽,流量对用户操作响应的影响,而cs结构我们可能更关心会系统整体配置对用户操作的影响。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar