性能测试概述

上一篇 / 下一篇  2011-10-27 22:52:28 / 个人分类:测试技术

性能测试也已经做了几个项目,也有一点儿个人的心得,现总结一下,与大家共勉。

一般的流程就是:获取测试需求,设计测试场景,准备测试环境(软硬件+数据),开发调试脚本,执行测试,分析测试结果(定位性能瓶颈点,进行优化)。

获取测试需求:需求来源于需求规格说明,用户的反馈,实际使用场景的调研,开发人员的建议。性能测试不可能面面俱到,因为性能测试的代价比较高,所以应该有选择的进行性能测试,选择系统,选择功能,选择压力高的系统和功能,选择可能有性能问题的系统和功能。要根据不同的测试目的制定响应的测试策略和测试任务,选择合适测测试类型。比如狭义的性能测试,压力测试,负载测试,并发测试,强度测试等。

设计测试场景(用例):(适合于LoadRunner进行的web性能测试)性能测试场景设计应考虑:根据需求和实际的生产场景选择压力点和压力值,模拟用户的操作比例要符合实际,用户的操作间隔要合适,用户操作要能互不干扰,各做各的事情,各用各的数据,用户操作要具有可重复性,要使场景能循环执行。任何性能场景的设计也要考虑一下软件系统可能的性能瓶颈:所使用的中间件服务器,软件架构,操作系统数据库,软件技术等。性能测试场景用例的要素:被测功能,用户并发数,用户操作间隔,测试执行时间,用户操作的数据量,数据库的数据量,其他性能要求。

准备测试环境:准备的测试环境,要尽量与实际的使用环境一致:软件、硬件配置、部署方式、网络带宽和测试数据。

开发调试脚本:合理使用测试工具,常用的性能测试工具:LoadRunner Jmeter等。使用LoadRunner开发脚本时的常用技术:参数化,关联,加载库,文本检查等。遇到的问题:参数化设置不正确,缺少关联,脚本无法重复执行,无法录制到脚本。对于使用.Net开发的C/S架构的软件使用LoadRunner进行测试至今是个难题,应该需要其他的软件进行尝试。对于C/S架构的系统一般都需要自己编写代码。

执行测试:性能测试是一个概率测试,在可能的条件下,应该至少执行两次。在执行测试之前应该配置好测试场景,加载要监控的性能计数器:应用服务器(操作系统,被测服务,进程,CPU,内存,磁盘,网络),数据库服务器(操作系统,数据库服务,进程,CPU,内存,磁盘,网络)。

分析测试结果:测试结果分析不是一项想当然的事情,不能看到内存下降就以为有内存泄露,不能看到磁盘占用高就以为磁盘是瓶颈,不能看到CPU利用率高就以为CPU处理能力不足,不能看到用户操作响应时间长就以为是服务器处理能力不够。这些现象背后的真相需要综合多方面考虑才能够发现:1)造成内存下降的原因可能是磁盘速度低,造成大量数据堆在内存无法存盘;也有可能是性能测试正处于压力上升期,需要更多内存;还有可能是服务的一种内存分配策略,比如SQLServer数据库的内存分配策略。2)造成磁盘占用高的原因有可能是内存不足,数据在内存频繁换入换出。3CPU利用率高也有可能外设发生了问题?4)响应时间长可能是应用服务的原因,也有可能是数据库的原因,还有可能是网络的原因。找到真相之后,还需要定位到具体的原因,具体的代码。这些原因,有可能确实是硬件瓶颈,有可能是服务配置问题(应用或数据库),也有可能就是代码效率问题,还有可能就是代码缺陷。


TAG:

 

评分:0

我来说两句

Open Toolbar