测试步骤

系统性能测试中的几大步骤 1.明确测试目标;了解性能测试需求; 2.编写性能测试计划; 3.分析性能测试需求; 4.编写性能测试方案,设计测试场景; 5.相关资源准备(人力资源,硬件资源,软件资源); 6.测试程序开发;脚本维护,测试数据准备,测试监控准备; 7.执行性能测试并收集测试结果; 8.分析结果; 9.系统调优及再测试;
 
1.明确测试目标;了解性能测试需求;     性能测试启动阶段要肯定测试的负责人和组织结构.明确测试的整体目标和范围,确认资源状况.获取
性能测试需求;业务列表,性能指标,测试环境,数据量等详细需求.为策划作准备;  性能调优是无止境的,因此在测试以前一肯定一个明确性能调优目标,这也是后面评估"性能验证"
的一个基准,也是测试终止的一个基准; 在这个阶段要明确如下信息: .肯定本次测试对象的相关背景; .整体目标和范围:1)客户需求和指望;2)实际业务需求;3)系统需求; .系统构架:之前测试的历史记录;系统目前的状况;与之相关的非性能需求;   以上提到的这些内容在初期只是从总体上作一个了解,具体的需求内容,将在测试需求分析章节
讲到.
 
2. 编写性能测试计划;     性能测试计划中包含测试目的和测试目标相关信息,还肯定了实施和执行测试时使用的策略,方法;同
时肯定了测试工具,所需资源.日程表等;
性能测试计划关键点: .阶段任务描述(阶段,子阶段划分清晰;阶段关联关系明确;里程碑定义准确) .时间安排(知足项目预期周期要求,具备弹性) .文档定义(各阶段输入输出文档定义清晰) .所需资源(人力资源,资金资源等符合项目要求)
 
3. 分析性能测试需求; 测试需求分析 1)需求获取     需求的获取很是复杂,并且要求测试人员具备挖掘可能形成系统瓶颈因素的洞察力和敏锐,这个过程
在测试总体过程当中是很是关键的一环.要获取的需求在后面几节中将会讲到. 2)需求分类     性能测试需求分析主要目的是要找出可能形成系统瓶颈的因素,为后面测试场景设计提供依据.影响
系统性能有不少种种缘由,在此应关注以下几个关键点: a.环境配置性能需求     应用配置需求:例如应用总体框架,涉及到哪些第三方的组件,应用层与数据库层的接口,使用了什么
数据库等;     系统配置需求:例如用户客户端配置,客户端与服务器端的网络配置,应用服务器或数据库服务器操做
系统等等; b.服务器性能指标要求:     预期的在上线系统中服务器资源使用状况,吞吐量,软件运行状况等等; c.系统设计需求:     系统架构,系统的技术实现,与其它系统接口关系及其技术实现,本系统测试数据及其与相关系统测试
数据关系等等; d.工做负载需求:     用户使用状况需求:例如用户分布状况;哪些模块用户比较频繁;在用户操做的数据有哪些特色等等;
这些需求须要具体定位到系统的哪些功能模块,功能点; e.客户端性能指标要求:     请求响应时间分布;请求的准确率等等;
根据性能需求的提出,需求又能够分为: . 用户提出的性能需求:例如业务量大,使用频繁的功能; . 开发提出的性能需求:例如系统处理相对较复杂的位置; . 系统自己的理想化性能展示:例如理想化的系统性能情况;
3)测试环境需求     环境需求主要包括:服务器环境配置要求,客户端机器配置要求,网络环境等等硬件因素,还包括一些
软件因素:如服务器使用的数据库,中间件类型和版本,客户端的类型版本,网络传输协议版本等等,这些
因素都会对系统产生不一样程度的影响.
4)工做负载需求     根据测试项目类型的不一样,要求的测试指标也不同.最能反映系统性能状况的是:点击数,处理量,响
应时间,硬件的使用状况. 测试指标包括如:并发用户数,事务,事务响应时间,每秒点击数,链接数,每秒
增长链接数.系统吞吐量等等.
4. 编写性能测试方案,设计测试场景;     测试内容通常包括并发性能测试,疲劳强度测试,大数据量测试以及系统资源监控等,性能调优测试时
主要是作并发性能测试以及系统资源监控这些方面的工做.从对系统产生并发性能测试过程当中监控系统
中各类资源的变化,来判断致使性能瓶颈的缘由. 1)注意事项     测试案例主要是根据测试需求分析的结果制定出在测试执行时系统的执行方法,在测试案例设计时应
注意以下几点:     .明确测试目的,测试范围;明确项目功能需求以及负载分布状况.     .分析测试环境中可能出现瓶颈的位置,重点测试;     .综合业务场景中:稳中有操做的并发量,所占有百分比,准备完成请求数量,频率等等典型行为是明确
的;虚拟用户的操做步骤要尽可能相似于真实用户的操做;操做的数据要类同于真实用户实际使用数据;在
案例设计时要充分考虑到需求中用户对模块的使用频率.使得在模拟时每一个模块使用状况尽可能地相似于
真实环境;    .明确的经过指标;为每一个典型业务制定测试经过的指标;    .有效的测试工具;须要产生负载的应用能够在合理的时间内达到你指望的负载,而后再缓慢增长;   . 详细的结果记录:对于每一个请求的响应时间,开始时间,结束时间,响应时间细分,传输数据量,请求内
容等等作详细的记录,以方便性能测试进行分析;   . 资源利用率的监测:有效的资源监控方式,使能得到全部需在的资源数据;    .软硬伯环境一致性;    .数据库或文件系统中测试数据与正式环境数据的数量和内容的一致性; 2)测试场景      性能测试在软件测试中占有重要的地位,性能测试包含的内容是不少的.例如针对一个网站进行性能
测试,常规性能测试,压力,负载测试,大数据量测试,强度测试等等都应该包含在内的.     测试方案中可能把测试按照类型划分,每一个类型下又设计N个场景.一般测试中会使用的一些场景: 预期性能指标测试:一般系统在设计前都会提出一些性能指标,这些指标是性能测试要完成的首要工做
之一.针对每一个指标都要编写多个测试用例来验证是否达到要求. 单一功能加压测试:这类场景主要为了验证某一特定功能的性能情况,或者检测该功能是否存在隐藏的
性能问题.     复杂场景测试:根据业务数据分析,设计与真实状况相似的场景,测试系统总体性能.通常,预期性能指标
验证.整个系统性能评定.整个系统的性能调优测试都采用这种场景;
5. 相关资源准备(人力资源,硬件资源,软件资源); 测试环境准备及配置:     包括被测应用和应用环境的申请,部署,压力发生环境准备,监控系统准备和网络环境申请和部署,提
供符合需求可以使用的测试环境;     包括被测应用系统,压力发生系统.监控系统,网络系统的配置等等.
测试场景准备:     根据业务模型肯定测试场景;
    测试脚本开发.数据准备,参数化数据,脚本预验证;     测试脚本的开发;     基础数据的得到,数据量评估和基础数据设计;     设置测试程序中需参数化的字段,使全部参数化数据能够正确执行场景.保证参数化的测试脚本与基
础数据结合可以在测试执行环境下正确运行;     验证最终但是脚本能够在测试环境正确执行,而且自身无性能问题.     监控系统与数据分析系统准备:     设计合理的监控方案,并设计相应的监控工具实施监控;     对监控数据和结果数据进行分析的脚本或者程序;
 
测试环境准备      测试环境:配置测试环境是测试实施的一个重要阶段,测试环境的适合与否会严重影响测试结果的真实
性和正确性.测试环境包括硬件环境和软件环境,硬件环境指测试必需的服务器,客户端.网络链接设备
以及打印/扫描仪等辅助硬件设备所构成的环境;软件环境指被测试软件运行时的操做系统,数据库及其
他应用软件构成的环境;       一个充分准备好的测试环境有四具优势:一个稳定,可重复的测试环境,可以保证测试结果的正确;保
证达到执行的技术需求;保证获得正确的,可重复的以及晚理解的测试结果;与真实环境的一致或尽可能保
持一致.      性能测试环境,要求和真实环境一致或存在可比性.
6. 测试程序开发;脚本维护,测试数据准备,测试监控准备; 测试程序开发       性能测试场景设计和性能测试脚本设计中需在注意如下几个问题: 场景真实性:       每一个脚本的具体操做步骤,是和真实环境操做相似的,每一个场景内的测试程序之间的逻辑关系,压力比
重也是与真实环境相似的.在测试方案设计中已经将这些真实环境的信息量化到可用程序模拟程度.     场景中各个脚本所占的比例主要是经过线程组来控制的,便可以控制多少个线程在某一阶段运行哪一
个或几个脚本;     具体操做步骤须要注意两个相邻的操做动做之间的习惯性时间间隔,某些特定操做的集合在特定时间
同时发起请求等等;
数据驱动:
    肯定某个操做步骤中须要将输入数据进行参数化,参数化数据尽可能选择读文件的方式,在数据库中读
取会严重影响速度.若是数据量不大,能够在并发程序开始执行前先将数据读到内存;     值得注意的是,不是全部的数据均可以经过读取预先定制的文件来得到.而是在程序执行过程当中,在返
回结果中获取这个数据信息,而后运用到下一操做中.测试界把它称做"关联"经常使用测试工具都提供关联功能,本身编写程序时也能够指导它做为单独的程序模块来编写,方便在后续的项目中利用.
事务:     一个复杂的操做应该是有不少个事务组合而成的.使用事务能够更方便灵活的进行数据统计.
检查点:     检查点的做用是验证操做结果是否正确.它能够写在程序中,能够经过操做返回结果来判断.具体实
现的方式不固定的.只要可以方便的检查,咱们运行的并发请求是否都是有效的.可是检查点不宜设置过
多,由于在检查时会有系统消耗,影响并发性;
保存登陆信息     不少系统性能测试场景是须要在用户登陆状态下操做的.那么保存登陆用户信息也很重要,需
要咱们注意;
 
测试数据准备 性能测试中用到的数据有两类: 1)测试环境中系统应该具有的初始数据以及和正式环境同等数据量(或加权值)的有效数据,或者在系统
生命周期内预期能达到的最大数据量的数据,尽可能保证其真实性. 2)运行测试脚本需用到的数据,参数化数据.     在测试需求调研过程当中也要明确数据量要求,数据准备必定要关注数据的质量和数量,不要出现一些
不符合业务逻辑的废数据,而且数据量要知足测试运行的须要.不然会致使测试执行结果出现大的误差.
数据的部署也应该尽可能保证真实性.     若是是配置测试或者测试数据对测试结果影响很大的场景,要保证测试过程基准一致,不然测试结果
将没有可比性.因此,测试数据建立完成后,要及时备份,以便多个场景中重复使用这些数据,能够建立一
个测试库来管理测试数据.
 
测试监控准备   根据测试的目的不一样,测试监控的对象不一样,测试的主要指标也不相同.   测试指标通常分为两大类:业务处理指标,系统资源指标.其中,业务处理性能指标主要包括:业务结果
的正确性.每分钟处理请求数,事务响应时间(Min,Max,Avg,90%响应时间范围,响应时间变化,分布等
等),并发用户数,系统吞量等等,系统资源指标主要是指CPU,内存,硬盘,网络等系统资源使用及变化情
况.
 
7.执行性能测试并收集测试结果; 测试执行     在性能测试启动以前,须要就被系统是否符合准入标准,和实施性能测试的可行性和必要性进行分析.
考察破坏性测试系统是否具有性能测试的条件.      测试执行过程当中,要特别注意测试脚本和场景的运行是有效的.在测试程序开发过程当中,咱们加入了
检查点就是为了保证程序正确的执行,产生咱们所须要的负载.可是,在测试程序长期执行过程当中,咱们
还须要常常检查测试是否正确执行.不然,得出的测试结果多是错误的,无心义的.     测试执行与监控的主要目的是根据设计方案去验证系统是否存在瓶颈,给测试分析提供各类分析数据
.此过程会与测试分析过程不断进行重复执行,直至真正肯定出系统瓶颈所在.
测试执行关键点     执行测试的过程当中,有一些须要重点关注的事件:     在测试执行前,须要确认:用例和场景确认;测试环境确认;测试数据确认;测试脚本确认;测试 工具和
监控工具确认;     执行过程当中注意:执行每一个场景时都须要作执行记录,结果搜集等工做.     执行完成后注意:数据恢复.环境清理,结果整理.
测试记录     测试过程当中要记录以下信息:运行前的系统配置,运行前的参数或者软件调整状况;运行过程当中的系统
资源的使用状况;运行过程当中的故障现象;请求的响应时间;单位时间内的处理请求数;请求的成功率;等
等.
 
8.分析结果; 测试分析:     测试分析的主要目的是要根据测试执行获取到的数据去判断形成系统出现瓶颈的位置,挖掘形成系统
瓶颈的真正缘由.这个过程是技术含量最高的一环.     性能分析一般要围绕三个方面进行:软件,服务器,网络.      软件主要是分析具体事务执行时间,尤为并发用户部分,根据测试工具测试出的结果分析那些事务执
行的慢,而后能够分析执行较慢的代码,针对网页能够分析具体的页面元素执行状况.      服务器的分析要结合软件的运行状况进行分析,着重分析硬件的执行参数,CPU,硬盘,内存,中断,内存
等状况,分析尤为要注意对这些参数进行综合分析,每每各个参数之间会互相影响,最后在调查,分析整
体系统的基础上,找出影响服务器总体性能的瓶颈,肯定相应的升级需求.      网络性能分析要结合服务器和目标软件,一般网络传输慢会有软件和服务器方面的缘由,甚至有时候
会有客户端方面的缘由.不过目前网络的环境广泛能够,无论是局域网仍是广域网,网络的环境愈来愈好
.
测试分析建议     测试分析小组应该由具备如下素质的人员组成:开发,测试,应用服务器.数据库,操做系统,网络,存储
等等.     在测试分析时使用较多的一种方式是排除法,根据开始获取到的信息大概能将问题定位在某一层面上
.但具体在什么地方,就能够采起排除的方法去定位;     尽可能使用一些较成熟的工具协助分析工做,这样将大大减轻工做负担.     在肯定出真正的性能瓶颈时,能够作一些小的模型去作验证,肯定分析的正确性.
 
瓶颈分析 1) 处理器分析方法     首先查看System\%Total Processor time计数器的值.该值体现的是CPU的平均利用率,若超过90%,则
说明存在处理器方面的瓶颈.     其次查看每一个CPU的Processor\%User Time计数器的值.若应用服务器的%User Time值较大,能够考虑
是否能经过算法优化等方法下降这个值.若数据服务器的%User Time值较大,可考虑对数据库系统进行
优化.     查看System\Processor Queue Length计数器的值.当该值大于CPU数量的总数+1时,说明存在处理器
方面的问题. 2)磁盘I/O分析方法     查看%Disk Time计数器的值.该值较大,则可能存在磁盘瓶颈问题.     与Processor\Privileged Time合并进行分析.若%Disk Time值较大,而Processor\Privileged Time
的值适中,则可判断存在磁盘问题,若Processor\Privileged Time较大,持续超过80%,则多是内存泄
漏.     根据Disk sec/Transfer进行分析.该值超过60ms,则磁盘存在问题. 3)网络分析方法     查看Network Interface\Bytes Total/sec 计数器的值.用 Bytes Total/sec计数器的值和网络的带
宽进行比较,若超过 50%,则说明网络存在性能瓶颈问题. 4)软件瓶颈分析方法     分析事务响应时间,吞吐量,肯定是否存在性能问题,若发现存在性能问题,则找出响应时间不符合要
求或者出现多个失败的事务,对其进行分解,而后对其进行网页细分,以肯定影响性能的元素.
 
内存泄漏 对于C++或java系统,若是GC处理不合理,会引发不少内存堆栈问题.常见有: 1) Array Bounds Read (ABR) : 数组越界读; 2) Array Bounds Write(ABW): 数组越界写; 3) Beyond stack Read(BSR): 堆栈越界读; 4) Free Memory Read(FMR): 空闲内存读; 5) Invalid pointer Read(IPR): 非法指针阅读; 6) Null Pointer Read(NPR): 空指针阅读; 7)Uninitialized Memory Read(UMR): 未初始化内存读写; 8)Memory Leaka: 内存泄漏.
 
WEB 响应时间细分 响应时间: Time = DNS + Conn +Handshaking +FTPAuthentication + Send + ServerTime + Rec + Client;; ServerTime = logic +DB*n + .....;
 
吞吐量等指标变化状况   不断的增长用户数,提升压力.各性能指标变化状况;   响应时间和吞吐量会受到负载的影响.随着服务器上负载的增长,吞吐量会不断攀升,直到到达一个点
.     最初的一段时间,执行队列的长度为零,而后就开始以稳定的速度增加.     在某一点上,执行队列开始增加,由于服务器上全部的线程都已投入使用,传入的请求再也不被当即处理
,而是放入队列中,当线程空闲时再处理.     当系统达到饱和点,服务器吞吐量保持稳定后,就达到了给定条件下的系统上限.可是,随着服务器负
载的继续增加,系统和响应时间也随之延长,虽然吞吐量保持稳定.     进入饱和状态后继续增长负载,服务器吞吐量保持稳定,系统的响应时间延长,最终会出现系统不可能
用,宕机等状况.
 
9.系统调优及再测试; 配置优化 缓存机制,但是设置多级缓存; 数据压缩机制,减少网络传输;(减小每一个请求的大小) 大数据块分块传输; 负载平衡,用来水平放服务器的结构; 分为读写服务器和只读服务器,还要对服务器群负载平衡; 增长更多的硬件资源:CPU,内存,磁盘等; 增长网络的带宽;等等.
 
瓶颈分析工具   应用层:开发人员能够经过Profilers来发现低效率的代码,好比说较差的查找算法.   数据库层:开发人员和数据库管理员(DBA)能够经过特定的数据库Profilers及事件探查器(query optimizers)   操做系统层:系统工程师可使用一些工具如在Unix类的操做系统中的top,vmstat,iostat,在Windows系统中的PerfMon来监控CPU,内存,swap,磁盘I/O等硬件资源;专门的内核监控软件也能够在这一层面上被使用.    网络层:网络工程师可使用报文探测器(如tcpdump),网络协议分析器(如ethereal),还有其它的工具(如netstat,MRTG,ntop,mii-tool)
相关文章
相关标签/搜索