性能测试的场景设计方法.txt

合集下载

如何编写性能测试场景用例(如何编写性能测试用例)

如何编写性能测试场景用例(如何编写性能测试用例)

如何编写性能测试场景⽤例(如何编写性能测试⽤例)单场景前⾔写测试⽤例,是测试绕不开的⼯作内容,不管是功能、⾃动化,还是性能。

先来回顾⼀下功能测试⽤例主要包含的要素:测试⽤例编号、测试标题、所属模块、测试需求项编号、案例状态、预置条件、优先级、测试输⼊、操作步骤、预期输出、实际结果、案例设计者、设计⽇期、案例性质等。

性能测试⽤例(有的称为场景⽤例)的设计,有别于功能测试⽤例、⾃动化测试⽤例的设计,毕竟,考虑的点不⼀样。

对于性能测试来说,⼀般要考虑这4种场景:单场景、混合场景、稳定性场景、异常场景。

下⾯,结合笔者实际⼯作,分享下单场景的⽤例是如何设计的。

单场景的定义 有的称为接⼝基准(Benchmark)、或者单交易的容量,总之,这个不是真实的业务原型(可以简单理解为不同业务的使⽤情况)。

单场景压测的⽬的 既然单场景不是真实的业务原型,为什么不直接做混合场景的压测呢?其实,做单场景压测的⽬的是测试出这个单业务的最⼤tps,⽅便判断瓶颈,⽐如,业务部门给的混合场景的tps(假设这个tps值是合理有效的),根据业务原型⽐例计算后,业务A的⽬标tps都⽐你单场景的最⼤tps还要⼤,那是不是应该让开发提前优化了?如果在混合场景压测中,发现业务A的tps已经到达或者接近其单场景最⼤tps,但是混合场景还没有达标,那说明瓶颈在业务A。

单场景的来源 有⼈可能要问,单场景从哪⾥来?如果你们业务部门或者其它部门能给,那最好,如果不能给,你作为性能测试⼈员,要引导相关⼈员给,总之,我觉得这个不能性能测试单独定,否则后期出问题可能你独⾃背锅哦,要尽最⼤努⼒保证不出问题,哪怕出问题,也要⼀起背锅。

单场景是来⾃于业务原型,但是不是每个业务接⼝都需要做压测,所以,我们这⾥说的业务原型,是混合场景的业务原型,混合场景⾥⾯,每个业务接⼝都需要做单场景压测。

⾄于业务原型如何获取,这是⼀个⼤话题,本次分享暂不讨论,如果想交流,欢迎微信留⾔。

性能测试之场景设计思想

性能测试之场景设计思想

验证测试是用于验证在特定的场景、时间、压力、环境和操作方式下系统能够正常的运行,服务器、应用系统和网络环境等软硬件设施还能否良好的支撑这些情况下用户的使用。

验证性测试主要针对有明确的压力目标和预期结果,验证系统在这种压力下的各方面反映能够达到预期结果。

主要分以下几种:压力测试:已知系统高峰期使用人数,验证各事务在最大并发数(通过高峰期人数换算)下事务响应时间能够达到客户要求。

系统各性能指标在这种压力下是否还在正常数值之内。

系统是否会因这样的压力导致不良反应(如:宕机、应用异常中止等)。

Ramp Up 增量设计如并发用户为75人系统注册用户为1500人已5%-7%作为并发用户参考值。

一般以每15s加载5人的方式进行增压设计,该数值主要参考测试加压机性能,建议Run几次。

已事务通过率与错误率衡量实际加载方式。

Ramp Up增量设计目标寻找已增量方式加压系统性能瓶颈位置抓住出现的性能拐点时机一般常用参考Hits点击率与吞吐量、CPU、内存使用情况综合判断。

模拟高峰期使用人数,如早晨的登录,下班后的退出,工资发送时的消息系统等。

另一种极限模拟方式,可视为在峰值压力情况下同时点击事务操作的系统极限操作指标。

加压方式不变,在各脚本事务点中设置同集合点名称(如:lr_rendzvous("same");)在场景设计中,使用事务点集合策略。

以同时达到集合点百分率为标准,同时释放所有正在Run的Vuser.稳定性测试:已知系统高峰期使用人数、各事务操作频率等。

设计综合测试场景,测试时将每个场景按照一定人数比率一起运行,模拟用户使用数年的情况。

并监控在测试中,系统各性能指标在这种压力下是否能保持正常数值。

事务响应时间是否会出现波动或随测试时间增涨而增加。

系统是否会在测试期间内发生如宕机、应用中止等异常情况。

根据上述测试中,各事务条件下出现性能拐点的位置,已确定稳定性测试并发用户人数。

仍然根据实际测试服务器(加压机、应用服务器、数据服务器三方性能),估算最终并发用户人数。

loadrunner性能测试场景设计

loadrunner性能测试场景设计

第三部分LR场景设计难点:设置多少虚拟用户数是合理的?多少时间是合理的?第2章Controller-基础应用二可以在Global Schedule中设置开始用户、停止用户、持续时间。

Basic schedule一般做并发测试或者压力测试,不考虑真实场景的测试类型第3章Controller-负载生成器控制器控制负载生成器,让负载生成器生成负载,负载生成器去访问被测系统。

一、新增一台负载生成器新增一台负载生成器:Name对应另一台装有负载生成器的电脑的IP地址。

点击Load Generators。

点击Connect,看添加的负载生成器是否可以连通。

status为ready表示连接成功。

二、让多台负载生成器同时工作当Quantity为数量形式时,这台电脑只能添加一台负载生成器,此时需要点击Scenario→Convert Scenario to the Percentage Mode ,让它对应显示成百分比模式,如下面两图。

三、查看虚拟用户数此时需要点击Scenario→Convert Scenario to the Vuser Group Mode ,让它对应显示成用户组模式弹出虚拟用户运行详情如下,一、IP欺骗1、通过LR向导自动添加多个IP.2、通过DOS命令的netsh添加多个IP.在Controller中勾选Enable IP Spoofer二、带宽模拟设置第5章Controller-指标监控方法一、对于windows系统Name:写IP . 添加完成后二、对于UNIX 系统UNIX 操作系统要对外界提供性能数据,必须运行进程rstatd ,如果没有需要自行下载安装。

而对于WINDOWS 系统要对外界提供性能数据,只要能够以管理员身份登陆此电脑,访问共享目录或者用命令netuse 与远程电脑建立连接。

软件设计师之性能测试之场景设计

软件设计师之性能测试之场景设计

信息系统监理师之信息系统和软件工程开发方法常用开发模型:瀑布模型,它将开发的过程分成软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,规定了它们自上而下,适用于大型软件开发过程。

变换模型是在快速开发一个原型的基础上,根据用户提出的反馈和建议,对原型进行改进,直到演化成最终软件产品。

螺旋模型:将瀑布模型和变换模型相结合,并增加了风险分析。

喷泉模型:为软件复用和生存周期中多项开发活动的集成提供了支持,是一种面向对象的开发方法。

智能模型:基于知识的软件开发模型,与专家系统结合在一起,是一种基于规则的系统。

V模型:以测试为中心的开发模型。

增量模型:融合了瀑布模型的基本成分和原型实现的迭代特征;它采用随着时间的进展而交错的线性序列。

其最大优点是人员分配灵活。

RAD模型,是一个增量型的软件开发过程模型,强调极短的开发周期。

它是采用基于构件的开发方法。

CBSD模型,是利用模块化方法,将整个系统模块化。

整个过程分为需示分析和定义、体系结构设计、构件库的建立、应用软件构建、测试和发布5个阶段。

构件工具常见的有Microsoft的DCOM,Sun的EJB和OMG的CORBA.原型方法模型,是适用于产品开发的早期阶段需求不确定时采用。

其常分为水平原型和垂直原型两种。

XP方法模型,是一种轻量、高效、低风险、柔性、可预测、科学且充满乐趣的软件开发方式。

它由价值观、原则、实践和行为四个部分组成。

RUP方法模型,是一个统一的软件开发过程,也是一个通用过程框架,能应用于多领域的项目开发,它也是基于构件,使用的建模语言是UML,它有三个特点:用例驱动、以基本架构为中心、迭代和增量。

其软件过程在时间上分为四个阶段:初始阶段---细化阶段----构建阶段----交付阶段。

可行性研究主要从5个方面:经济可行性、技术可行性、法律可行性、执行可行性、可选择性。

需求分析数据流图是结构化分析中的重要方法和工具,是表达系统内数据的流动并通过数据流描述系统功能的一种方法。

性能测试用例设计

性能测试用例设计

性能测试⽤例设计性能测试⽤例的设计,有别于功能测试⽤例的设计,毕竟,考虑的点不⼀样。

在有了性能测试⽅案后,我们就可以设计我们的性能测试⽤例了,⼀般考虑:单场景、混合场景、稳定性场景下⾯给出笔者在实际⼯作中,单场景的⽤例(之前⽤loadrunner做压测的⽤例),供⼤家参考:⽤例编号:PT001场景描述:模拟⽤户进⾏登录操作并发量:分别模拟并发⽤户数为1000、1500、2000等多种情况进⾏测试(除了压测能否达到⽬标,还要压测出最⼤的并发和tps,参考:)压测时间:每次600s数据量:oracle数据库user表有100万存量账户脚本设置关键点:参数化⽤户名、封装登录事务、添加思考时间集合点:不使⽤加压减压⽅式:全部初始化爬坡加压、全部退出场景运⾏时设置:think time=1s、continue when error、log选择Send messages only when an error occurs重点关注指标:响应时间、tps,事务成功率,各个服务器资源使⽤情况(CPU、内存、磁盘I/O、磁盘容量)、⽹络、是否频繁fgc、是否线程阻塞、线程死锁、连接池未释放、数据库死锁、慢sql等等预期指标:并发>=1000,响应时间<=1s,tps>=600,事务成功率为99.5%(涉及资⾦的,要求100%),应⽤服务器、数据库服务器CPU和内存使⽤率<=90%,没有内存泄漏现象、没有死锁等各种性能问题。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21⽤例编号:PT001场景描述:模拟⽤户进⾏登录操作并发量:分别模拟并发⽤户数为1000、1500、2000等多种情况进⾏测试(除了压测能否达到⽬标,还要压测出最⼤的并发和tps,参考:https:///uncleyong/p/11543488.html)压测时间:每次600s数据量:oracle数据库user表有100万存量账户脚本设置关键点:参数化⽤户名、封装登录事务、添加思考时间集合点:不使⽤加压减压⽅式:全部初始化爬坡加压、全部退出场景运⾏时设置:think time=1s、continue when error、log选择Send messages only when an error occurs重点关注指标:响应时间、tps,事务成功率,各个服务器资源使⽤情况(CPU、内存、磁盘I/O、磁盘容量)、⽹络、是否频繁fgc、是否线程阻塞、线程死锁、连接池未释放、数据库死锁、慢sql等等预期指标:并发>=1000,响应时间<=1s,tps>=600,事务成功率为99.5%(涉及资⾦的,要求100%),应⽤服务器、数据库服务器CPU和内存使⽤率<=90%,没有内存泄漏现象、没有死锁等各种性能问题。

基于场景的性能测试设计

基于场景的性能测试设计

基于场景的性能测试设计注:转载请注明出处与原文地址。

在各类软件测试工作中,性能测试往往不被重视,而项目中由于系统性能不合格带来损失的例子却非常多。

造成这种现象的原因之一就是各个公司习惯压缩测试成本,而在性能测试方面的投入则更少。

本文重点介绍如何基于场景来设计性能测试。

选择典型的用户场景来进行测试,不但可以大大降低执行成本,更能提高性能测试执行效率。

在以前的《治疗软件亚健康》中,笔者重点讨论了运用“全面性能测试模型”来组织各类性能测试的方法。

“全面性能测试模型”提出了设计性能测试用例的框架,在实际项目中通过它可以确定性能测试用例的范围和类别。

而在测试用例内容确定后,接下来就要设计各类性能测试用例中的具体内容。

性能测试按照场景不同一般可以分为两大类,一类是为了测试目的而进行的场景测试,另外一类是基于用户实际情况而进行的场景测试。

因此,性能测试用例的设计应该面向性能测试场景来进行。

实际上,由于开发环境硬件配置不高,基于用户的测试多在用户现场进行,而为了测试目的而进行的测试多在开发环境即开发团队内部进行,不过两者进行的场所没有严格的界限,例如也可以在开发团队内部模拟用户的环境进行性能测试。

“为了测试目的而设计的测试用例场景”主要根据测试设计人员的经验来进行,但是仍然要参考用户的实际场景,用户实际使用场景是设计所有测试用例的依据。

例如一些业务系统,虽然备份历史数据的周期为一年,但是设计大数据量测试用例时仍然包含了系统运行一个月、半年等的数据量模拟测试,因为这些均属于用户的典型场景。

综合上面可以看出,性能测试用例设计首先要分析出用户现实中的典型场景,然后参照典型场景进行设计。

下面详细介绍一下常见的三类用户场景:一天内不同时间段的使用场景。

在同一天内,大多数系统的使用情况都会随着时间发生变化。

例如对于新浪、网易等门户网站,在周一到周五早上刚一上班时,可能邮件系统用户比较多,而上班前或者中午休息时间则浏览新闻的用户较多;而对于一般的OA系统则早上阅读公告的较多,其他时间可能很多人没有使用系统或者仅有少量的秘书或领导在起草和审批公文。

性能测试场景设计--混合业务场景下的脚本比例控制

性能测试场景设计--混合业务场景下的脚本比例控制

性能测试场景设计--混合业务场景下的脚本⽐例控制在某个业务场景中,包含数据创建和数据查询两项业务;现需考察数据创建和数据查询两项业务在并发⽐例为2:1、总并发量为100⽤户情况下的混合响应时间。

1、在Vugen端实现对混合⽐例的设置,可直接在脚本中进⾏,即通过随机函数rand实现,脚本设计如下所⽰。

int num;Action(){num = rand()%3;lr_start_transaction("综合业务--数据创建与数据查询");if(num<2){Data_Create(); //数据创建}else{Data_Search(); //数据查询}lr_end_transaction("综合业务--数据创建与数据查询", LR_AUTO);return 0;}该种⽅式的优缺点对⽐:优点:脚本本⾝实现了⽐例控制的功能,Controller端的设置较为简单,即在Controller中只需将该混合业务作为单⼀业务对待,设置也跟单⼀业务场景的设置⽅法完全相同;测试得到响应时间即为混合业务的响应时间。

缺点:在已有数据创建和数据查询脚本的情况下,针对混合业务场景需要单独创建⼀个混合业务脚本,且混合⽐例改变时需要重新修改脚本;当需要考察混合业务场景中不同业务类型各⾃的响应时间时,通过该种⽅式⽆法实现。

2、在Controller端实现在业务类型较多,混合业务场景较为复杂的情况下,采⽤修改脚本的⽅式会⽐较⿇烦。

例如,若共有5种业务类型,现需要对其任意两种业务的混合场景进⾏压⼒测试,如果仍采⽤第⼀种⽅式,那么我们就必须得针对两两业务的混合情况,创建10个混合业务脚本。

当业务类型更多,或者混合场景更为复杂(如需考虑任意三种、任意四种业务等的混合情况)时,脚本的创建量会⼤⼤增加,且均为乏味的重复性⼯作。

针对这种情况,直接在Controller端进⾏设置会简单得多,只需要加载各个业务脚本,并设置不同脚本的并发数即可。

如何设计一个有效的性能测试计划

如何设计一个有效的性能测试计划

如何设计一个有效的性能测试计划性能测试在软件开发过程中扮演着重要的角色。

通过性能测试,我们可以评估软件系统的性能和稳定性,并找出潜在的性能瓶颈。

然而,要设计一个有效的性能测试计划并不容易。

本文将介绍如何设计一个有效的性能测试计划,以帮助开发团队在软件开发过程中更好地进行性能测试。

一、确定性能测试的目标在设计性能测试计划之前,首先需要明确性能测试的目标。

这些目标可以是系统的响应时间、吞吐量、并发用户数等指标。

确定目标有助于测试团队更好地制定测试策略,并确保测试的有效性。

二、选择适当的性能测试工具选择适当的性能测试工具是设计一个有效性能测试计划的关键步骤之一。

常见的性能测试工具包括LoadRunner、JMeter等。

在选择工具时,需要考虑系统的特点、测试需求和可用资源等因素。

确保选用的工具具备可靠的测试功能和友好的用户界面,以提高测试团队的效率。

三、制定测试方案制定测试方案是性能测试计划设计的核心内容之一。

测试方案应包括测试环境的准备、测试数据的准备以及测试用例的设计等方面。

在准备测试环境时,需要确保硬件、软件和网络等资源可以满足测试需求。

测试数据的准备应根据实际情况选择合适的数据,并保证数据的真实性和多样性。

在设计测试用例时,需要考虑到系统的不同功能和场景,并制定相应的测试策略和执行步骤。

四、执行性能测试在执行性能测试时,需要确保测试环境的稳定性和可靠性,避免外界因素对测试结果的影响。

同时,还需要根据测试方案中设计的测试用例进行测试,并及时记录测试结果和日志。

在测试过程中,还可以进行性能监控,以获取更详细的性能数据并分析系统的性能瓶颈。

五、进行性能分析和优化在完成性能测试后,需要对测试结果进行分析,并及时发现系统的性能瓶颈和问题。

根据分析结果,可以采取相应的优化措施,如增加服务器的硬件配置、优化数据库的查询语句等。

通过不断的优化,可以提高系统的性能和稳定性,并满足用户的需求。

六、撰写性能测试报告最后,根据性能测试结果和分析,撰写性能测试报告是性能测试计划设计的重要环节。

如何模拟真实场景的性能测试

如何模拟真实场景的性能测试

如何模拟真实场景的性能测试性能测试是软件开发过程中十分重要的一环,通过对系统在不同负载下的性能进行测试和评估,可以帮助开发人员和测试人员发现潜在的性能问题并及时解决。

然而,为了保证性能测试的准确性和有效性,需要在测试中尽可能地模拟真实场景。

本文将介绍如何模拟真实场景的性能测试,包括测试环境的准备、负载模式的选择和性能数据的收集与分析。

一、测试环境的准备在进行性能测试之前,首先需要准备一个合适的测试环境。

这个环境应该尽可能地接近真实生产环境,包括硬件设备、软件配置和网络环境等方面的模拟。

1. 硬件设备:根据被测试系统的实际情况,选择合适的服务器和客户端设备。

确保测试服务器和客户端的硬件配置与真实生产环境相似,例如CPU、内存和磁盘等。

2. 软件配置:为了模拟真实场景,需要在测试环境中安装与生产环境相同的操作系统和应用软件。

确保测试环境和生产环境使用相同的操作系统版本、应用程序版本和依赖库版本。

3. 网络环境:模拟真实的网络环境对于性能测试也非常重要。

在测试中,可以使用网络模拟工具来模拟不同带宽、延迟和丢包率等网络条件,以更真实地反映在真实网络环境下的系统性能。

二、负载模式的选择在性能测试中,负载模式的选择是非常关键的。

负载模式应该能够真实地模拟用户在实际使用中对系统的操作和访问行为。

1. 压力测试:通过模拟大量用户同时访问系统,测试系统在高负载下的稳定性和性能表现。

可以使用压力测试工具对系统进行并发请求的模拟,观察响应时间、吞吐量和系统资源利用率等指标。

2. 并发测试:模拟同时有多个用户在系统中进行不同操作的情况,验证系统的并发处理能力和资源竞争情况。

可以使用并发测试工具模拟多个用户同时进行操作,观察系统的并发处理能力和响应速度。

3. 扩展性测试:通过逐渐增加负载,测试系统能够处理的最大负载情况。

可以使用负载测试工具逐步增加负载,观察系统在不同负载下的性能表现和资源利用情况,以判断系统的扩展性和容量。

性能测试场景设计

性能测试场景设计

提到性能测试,大家想到的就是使用工具对应用进行加压,看看应用能承受多少并发,TPS(Transactions Per Second)是多少,交易响应时间是否在接收的范围内。

不错,这些都是大家最关心的应用的性能指标,也是每个性能测试项目输出的结果。

然而,要实现这样的效果却并不是一件简单的事情,因为性能测试是一个十分复杂的系统工程,对测试人员的能力水平提出了更高的要求,需要性能测试人员具备非常全面的知识与技能,能够定位应用的性能瓶颈,并提出适当的优化方案。

通常,要对一个应用进行性能测试需要经历需求调研、环境准备、脚本开发、数据预埋、场景设计、场景执行、应用监控分析、瓶颈定位、瓶颈修复、回归测试、结果整理、输出报告等多个环节。

性能测试的场景设计性能测试的场景如何定义?我们可以理解为功能测试中的用例,即性能测试的场景就是性能测试的用例。

性能测试的场景是为了要实现特定的测试目标而对应用执行的压测活动。

性能测试场景的设计与执行是整个性能测试活动的核心与灵魂,没有完整的场景设计就无法达到我们的测试目的,没有合理的场景设计就不会发现系统的性能缺陷。

我们所开发的测试脚本,所预埋的测试数据都是为了实现特定场景所准备的。

一个性能测试场景包含诸多要素,图1中列出了一些必备的要素,其中测试模型作为测试场景的基础与输入。

在线Web类的应用,测试指标一般包括在线用户数、最优并发用户数、最大并发用户数、交易平均响应时间、目标TPS等等。

对于接口调用类的应用测试指标一般包括目标TPS、平均响应时间等。

测试模型就是被测试系统的各交易在线运行时承受的交易数量(或请求数量)的比例而不是并发用户的比例。

为什么不是并发用户的比例呢?因为实际的用户的操作具有不确定性,使用测试工具很难模拟真实用户的行为。

另外,在进行运营数据分析时很难获取用户的操作行为,而应用的交易记录却很容易通过查询的方式获取。

应用实际承受的压力是用户的实际操作请求,在线用户如果没有进行实际操作那么他最多将消耗一个连接线程,而应用CPU并不会有什么资源消耗。

性能测试之场景设计

性能测试之场景设计

性能测试之场景设计前言性能测试中的场景设计是实施性能测试的基础,只有合理的设计测试场景才能获得有价值的测试数据,为接下来的确认瓶颈、系统调优打下基础。

场景(Scenario)是一种用来模拟大量用户操作的技术手段,通过配置和执行场景向服务器产生负载,验证系统的各项性能指标是否达到用户要求,而Controller可以帮助我们对场景的设计、执行以及监控进行管理。

Load runner Controller来管理和维护场景,可以在一台工作站控制一个场景中的所有虚拟用户(Vuser)。

执行场景时,Controller会将该场景中的每个Vuser分配给一个负载生成器。

负载生成器执行Vuser脚本,从而使Vuser可以模拟真实用户操作的计算机。

场景的分类1.人工场景(手动场景)所谓人工场景,实际就是自定义模式,各因素完全由我们来设置的创建场景的方法。

相比面向目标场景,人工场景在实际工作中应用的更为广泛。

用赛车游戏来比喻,这种方法类似常规比赛,不同的汽车从同一起点出发,到同一终点结束,最终按照时间排出名次。

2.面向目标场景面向目标场景则与人工场景有所不同,它预先定义了一个测试目标,Load Runner将根据这个目标自动构建场景,有点类似向导模式。

这种方法对于验证在项目性能说明书中列出、需要达到的性能目标很方便。

还是用赛车游戏来比喻,面向目标场景有点类似计时赛或者追逐赛,不同的汽车从同一起点出发,在规定的时间内,走的最远者获胜。

在面向目标场景的“向导模式”中,设定了一个或者多个测试目标,比如要求系统达到每秒处理5个事务,Load Runner再根据这些目标自动创建场景。

目前,Load Runner支持的测试目标有如下几种:虚拟用户数量。

每秒点击次数(只对Web Vuser有效)每秒事务数量每分钟访问页面数量(也仅对Web Vuser有效)事务响应时间场景设置描述㈠.新场景设置对话框字段解释:Select Scenario Type(选择场景类型):此选项区域列出了场景的两种类型:①Manual Scenario(手动场景或人工场景):手动场景设置我们可以设置不同的业务组用户数量,同时编辑计划指定相关的运行时刻,虚拟用户加载策略等完成场景设计工作。

性能实战第一天基础01-设计测试场景以及如何做性能测试

性能实战第一天基础01-设计测试场景以及如何做性能测试

性能实战第⼀天基础01-设计测试场景以及如何做性能测试下⾯开始学习性能,第⼀天,⽬的要了解性能测试的基础什么是性能测试⽤⼯具模拟实际并发场景,发现系统问题,使系统上线后在接近的⽤户场景下不死。

具体解释??⼯程解释:性能测试是针对系统的性能指标,建⽴性能测试模型,制定性能测试⽅案,制定监控策略,在场景条件之下执⾏性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满⾜既定值。

你在⼯作中经常做得三件事也叫性能测试的价值分类:1. 性能验证:针对给定的指标,只做性能验证2. 性能测试:针对给定的系统做全⾯的性能测试,可以得到系统的最⼤容量,但不涉及到调优 –-旧系统保证系统不衰减3. 性能测试+性能调优:针对给定的系统做全⾯的性能测试,同时将系统调整到“最优”状态意义:1. 验证系统上线之后是否可以稳定运⾏第⼀层的含义2. 给出开发和运维⼈员提出线上的配置建议第⼆层的含义3. 在满⾜业务要求的前提下,可以节省资源第三层的含义让你压⼏百,你就压,压了500个没有崩溃这种⽅法叫性能验证⼀般性能都这么测试10000 并发正常,40000万开始增加,50000并发满了,最⼤6万就崩了⼀般的性能测试⼀边压测,⼀边调整,各⽅⾯配置都很优秀,这就是性能调优的过程⼀般在公司你就做,第⼀步第⼆步常⽤性能测试的性能指标?RT 响应时间最重要指标(点⼀下页⾯按钮,到页⾯完成出来这就叫响应时间,包含前端点击,点击之后给接⼝发⼀个请求,页⾯返回的内容渲染在页⾯)如果只看发到服务器的服务器的处理时间也叫rt根据具体事件定义HPS 每秒点击数,f12加载好多页⾯,点击⼀次请求⼀次没啥价值tps 每秒处理事务处(什么是事务?刚才的请求返回叫事务?可以,站在服务器⾓度收到给响应当⼀个事务?可⾏,数据库接到⼀个查询发出去?事务?也可以)qps MySQL ,每秒收到的请求,把你的tps定义到数据库中就是qbs ,你调⽤接⼝只发⼀个数据库查询?可能不是1可能是10,当你把数据库查询当tps就是,你单测试数据库那就是tps,或者以数据库收到查询为主也等于tpscps 请求页⾯返回的pv ⽤户访问量⼀天访问10000次最⼤都是1s 10000 最⼩ 10000/24均分跟性能没关系帮助你算并发有时间,时间段访问⾼。

性能测试场景分析

性能测试场景分析

性能测试场景分析性能测试过程中,⾸先应该设计测试场景,模拟真实业务发⽣的情境,然后是针对场景设计脚本。

为了真实的反映被测对象可能存在的性能问题,需要尽可能模拟被测对象可能发⽣瓶颈的业务场景。

测试需求分析过程中已经确定了需要测试的业务类型,在此,则需要设计针对每种或综合业务的测试场景。

⼀、应⽤性能测试场景的设计在了解了相关背景之后,我们开始进⼊正题。

性能场景的设计主要包括:业务场景建模、测试数据准备、监控指标确认三个关键步骤。

下⾯我们⽤实战的⽅式说明每个步骤的常见做法。

1.1.业务场景建模确定压测场景范围:⼈的⾏为是不可预测的,在性能测试中模拟每个⽤户可能的操作场景基本上是不可能实现的。

⼀般情况下我们必须要关注的性能场景包括但不限于:⾼频使⽤的场景关键的业务场景最耗性能的场景曾经出现过问题的场景……在测试具有⼤量新功能的业务时,往往需要与业务⽅⼀起确认预期内有哪些功能点可能会被⾼频使⽤,需要与研发⼈员确认哪些功能虽然使⽤频率不⾼,但是存在性能隐患、容易引起雪崩效应;在测试已经上线的功能时,还可以通过业务监控、系统⽇志来分析现有⽤户的⾏为模式,得到更加逼近真实⽤户⾏为的业务场景。

业务场景的操作路径:业务场景的操作路径可以借助⼀些可视化的⼯具来描述,这部分⼯作相对⽐较简单,不再详细深⼊。

我们详细说明⼀下⽐较常见的延时策略。

思考时间:思考时间模拟的是⽤户在等待响应、阅读页⾯内容、表单填写等延迟操作的场景。

每个⼈的阅读速度、输⼊速度都存在⾮常⼤的差异,决定了每个⼈的思考时间也是不⼀样的,在性能测试配置中有常见的四种延时模型覆盖了绝⼤部分的延时场景:固定时间:顾名思义,设置⼀个固定的思考时间。

均匀分布:均匀分布在范围的上限和下限之间的随机数。

正态分布:根据中⼼极限定理,如果⼀个事物受到多种因素的影响,不管每个因素本⾝是什么分布,它们加总后,结果的平均值就是正态分布。

负指数分布:该模型将延迟时间的频率强烈地偏向该范围的⼀端。

测试用例设计-场景法

测试用例设计-场景法

测试用例设计-场景法(个人见解与学习)时间:2010-11-19目录1、引言 (3)2、基本测试 (3)2.1、测试优缺点 (3)2.2、黑盒功能测试分解法 (3)2.3、个人简介篇 (3)3、场景法用例 (4)1、什么是场景法? (4)2、场景法特点 (4)3.1、基本流 (6)3.2、分支流 (6)3.3、验证流 (7)3.4、异常 (7)3.4.1、个人简介 (7)4、场景法用例设计 (7)文档中红色字体的为理解的重点黄色背景的为个人简介和思路同时提出:这里只是说明一组方法。

具体如何使用,可以结合自己的标准来做。

1、引言文档属于个人的见解,个人看法。

因为我当时看到同样的一个项目,一个软件需求。

就是使用方法不一样;我们就写的用例覆盖率就出现了这么多的偏差。

2、基本测试如按照如下的方法去分解:功能测试、界面测试、性能测试、安全测试、数据库测试等等测试2.1、测试优缺点能够按照软件的功能块,一组一组的来做相应的模块测试。

但对整体业务场景考虑的不是很好,可能遗漏模块A与模块B之间的用例,因为该方法是从软件本身出发。

实际做测试时需要考虑的不是软件本身,还有对应的系统场景等情况。

不容易做回归测试,一旦回归需要考虑到用例的回归量。

后续测试时间会很长。

2.2、黑盒功能测试分解法✓在任何情况下都必须使用边界分析发,经验表明用这种方法设计出的测试用例发现程序错误的能力最强(边界法)✓必要时用等价类划分方法补充一些测试用例(等价类法)✓用错误推测法再追加一些测试用例(错误推测法)✓如果程序的功能说明中含有输入条件的组合情况,则已开始可选用因果图法(因果图法)✓对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例(功能图)其实这个经验就是方法,以上是一套方法。

2.3、个人简介篇上面的做法其实需要我们前期对功能的分解细密,在后期考虑到执行或者回归的时候。

安排妥当,不然每次回归或者执行测试都需要执行那么多用例,人员安排上不行,时间上也是不允许。

设计测试用例方法--场景设计方法

设计测试用例方法--场景设计方法

设计测试用例方法--场景设计方法1方法简介1.1 定义通过运用场景来对系统得功能点或业务流程得描述,从而提高测试效果。

场景法一般包含基本流与备用流,从一个流程开始,通过描述经过得路径来确定得过程,经过遍历所有得基本流与备用流来完成整个场景。

1.2 产生背景为什么场景法能如此清晰得描述整个事件?因为,现在得系统基本上都就是由事件来触发控制流程得。

如:我们申请一个项目,需先提交审批单据,再由部门经理审批,审核通过后由总经理来最终审批,如果部门经理审核不通过,就直接退回。

每个事件触发时得情景便形成了场景。

而同一事件不同得触发顺序与处理结果形成事件流。

这一系列得过程我们利用场景法可以清晰得描述清楚。

1.3 实例图在这个图中,有一个基本流与四个备选流。

每个经过用例得可能路径,可以确定不同得用例场景。

从基本流开始,再将基本流与备选流结合起来,可以确定以下用例场景:场景 1 基本流场景 2 基本流备选流 1场景 3 基本流备选流 1 备选流 2场景 4 基本流备选流 3场景 5 基本流备选流 3 备选流 1场景 6 基本流备选流 3 备选流 1 备选流 2场景 7 基本流备选流 4场景 8 基本流备选流 3 备选流 4从上面得实例我们就可以了解场景就是如何利用基本流与备用流来确定得。

基本流:采用直黑线表示,就是经过用例得最简单得路径(无任何差错,程序从开始直接执行到结束)备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不在加入到基本流中;(各种错误情况)1.4 基本设计步骤1. 根据说明,描述出程序得基本流及各项备选流2. 根据基本流与各项备选流生成不同得场景3. 对每一个场景生成相应得测试用例4. 对生成得所有测试用例重新复审,去掉多余得测试用例,测试用例确定后,对每一个测试用例确定测试数据值2实战演习2.1 ATM机问题下图所示就是ATM例子得流程示意图。

性能场景设计

性能场景设计

性能测试技术的研究_关于性能测试业务场景设计的研究关键字性能测试业务场景极限超载摘要性能测试是指在一定硬件条件下获取软件系统在不同的业务背景下的各种性能表现本文根据笔者最近所做的几次性能测试就业务场景设计方面进行总结分析希望能起到一定的借鉴作用。

1 测试过程中出现的问题最近一段时间我们的团队连续承担了几个基于J2ee架构的分布式系统的测试工作。

在测试过程中我们多次发现一个问题就是我们在测试环境中得到的性能指标与生产环境中的性能指标差距较大理论上应该是测试环境的性能指标优于生产环境的指标但实际结果是生产环境的性能指标大大优于测试环境下的性能指标。

经过不断摸索、总结我们发现出现以上问题的原因是测试需求分析不到位导致业务场景设置不合理、不全面因而出现问题。

在这里我们就场景设计方面谈一些自己的看法。

2业务场景分析性能测试中涉及的基本场景有两种即单一业务场景和混合业务场景这两种业务场景缺一不可缺少任何一种都不能准确评估系统性能定位系统瓶颈。

如果只做单一业务场景得到的结果与实际生产环境差距较大没有实际指导意义如果只做混合业务场景不能快速定位系统性能快速降低的原因起不到定位瓶颈、系统调优的作用。

只有两种场景互为补充才可以获取最符合客户要求的测试结果。

下面分别就两种测试场景的具体设计方法结合一个论坛系统进行讨论一个论坛系统包含三个主要单一业务流程即用户登陆、发表文章、阅读文章。

该论坛支持100人同时在线支持20人同时发表文章阅读文章。

3单一业务场景单一业务场景主要针对单一业务流程而设计主要考察某一项单一业务在各种情况下的响应时间系统资源占用事务成功率等指标。

对于响应时间这个指标目前国内国际上还没有明确的标准业界普遍采用的评价准则是2/5/10标准即2秒以内优秀5秒以内可以接受10秒是极限。

但是在实际当中并不仅限与这个标准例如邮件系统的登录功能可以遵守这个标准因为只是一个登录功能但是针对上传附件这个功能如果附件本身较大响应时间自然会比较长所以我们应该灵活掌握标准以实际需要为准则确定预期响应时间。

jmeter性能测试的两大场景设计(二)

jmeter性能测试的两大场景设计(二)

jmeter性能测试的两⼤场景设计(⼆)⼀,阶梯式场景 该场景主要应⽤在负载测试⾥⾯,通过设定⼀定的并发线程数,给定加压规则,遵循“缓起步,快结束”的原则,不断地增加并发⽤户来找到系统的性能瓶颈,进⽽有针对性的进⾏各⽅⾯的系统优化 使⽤到的线程为:jp@gc - Stepping Thread Group (deprecated) 同时添加的监听器有:TPS:jp@gc - Transactions per Second响应时间:jp@gc - Response Times Over Time活跃线程数:jp@gc - Active Threads Over Time点击率:jp@gc - Hits per Second 针对阶梯式场景的参数配置,说明如下:This group will start:给定的当前负载的并发⽤户数First, wait for:等待XX秒后开始启动Then start:0秒(初始化)启动XX并发⽤户数Next, add:每using ramp-up时间内启动XX的⽤户数threads every:每次加压阶梯下⽤户完成启动后保持运⾏XX秒using ramp-up:XX秒内完成Next, add的⽤户数的启动Then hold load for:This group will start并发⽤户数全部启动完成后保持运⾏XX秒Finally, stop:每隔threads every的时间减少XX⽤户数threads every:每隔XX秒减少Finally, stop的⽤户数 说明:给定负载并发⽤户数为100,从0秒开始,每2秒内增加10个并发⽤户数,2秒时刻完成10个并发⽤户数的启动后开始平稳运⾏20秒钟,依次下去,直到100个并发⽤户数全部都启动完成后,平稳运⾏60秒,然后每隔1秒减少5个并发⽤户数直到并发⽤户数减少为0时,负载测试结束。

完成以后可以去监听器中查看各种监控结果⼆,波浪式场景(万能场景设计) 该场景主要⽤在分段时间压测和压⼒测试⾥⾯,分段时间压测⽐如收银系统,⼀天会出现⾼峰期、平稳期和闲时区,针对该场景我们就要设计成不同时间段的压⼒值不同,加压⽅式不同等等,压⼒测试我们只需要使⽤⼀个场景,并将压测时间设置长即可,同样的测试报告也⽤jpgc的监视器获得 使⽤到的线程为:jp@gc - UItimate Thread Group 在测试计划上:右键—>添加—>线程(⽤户)—>jp@gc - UItimate Thread Group 针对波浪式场景的参数配置,说明如下:Start Threads Count:给定当前时间段的并发⽤户数Initial Delay, sec:初始化时间,单位:秒(s)Startup Time, sec:启动时间,单位:秒(s)Hold Load For, sec:所有并发⽤户数启动完成后保持运⾏的时长,单位:秒(s)Shutdown Time:结束时间,单位:秒(s) 我们先⽤这个设计⼀个阶梯性的测试场景吧,如下图 这表⽰⽤户递增的数量变化趋势是10--50---100--200--500 开始10个⽤户,不延迟2s启动,运⾏600s,加压到50⽤户,延迟50s启动,启动时长为5s,持续运⾏550s,接着加压到100⽤户,延迟100s,启动消耗5s,持续运⾏500s,继续加压到200⽤户,延迟150s,启动消耗5s,运⾏450s,最后加压到500⽤户,延迟200s,启动消耗10s,持续运⾏400s,最后阶段的⽤户消耗2秒停⽌ 我们再设计分段时间压测场景或者波浪压测场景 项⽬启动50⽤户⽆延迟,10s内启动,压测300s,20s后新增30⽤户,5秒启动,启动完就减压,接着150s后再加40⽤户,10s内启动完成就减压,在运⾏100s后,新增50⽤户,10s内启动,持续运⾏20s减压,最后等着第⼀次启动的50⽤户加压完成就可以停⽌了。

测试场景设计

测试场景设计

场景设计1TPS及Pacing值计算1.1TPS 计算(1)已知预期日交易量:如卡系统、柜面系统以卡系统3年后预期日交易量300万笔为测试目标,用常规性能测试TPS估算方法计算,峰值交易TPS为80%的交易量在20%的时间内产生,以卡系统交易时间12小时计算,测试目标TPS为:300万*0.8/12*0.2*3600秒=278≈280笔/秒(2)部分外围系统会提供目标TPS,以该TPS为参考即可,但必须与行方负责人协商,否则极有可能会重复测试增加工作量。

(3)五大系统的连续两个阶段版本测试中,各项指标的差异不能超过8%,包括TPS、平均响应时间、CPU资源利用率、内存资源利用率等。

1.2Pacing值计算(此pacing值为一个迭代开始到下一次迭代开始的间隔)已知某系统高峰期TPS为80笔/秒,系统包含a、b、c三支交易,交易占比如下:交易名称交易占比参考响应时间a交易20% 0.2b交易30% 0.3c交易50% 1.2 步骤一:分别计算各交易TPS:a交易=80*0.2=16笔/秒,b交易=80*0.3=24笔/秒,c交易=80*0.5=40笔/秒。

步骤二:结合参考响应时间设置VU数并得出响应Pacing值方案一:a交易参考响应时间在1秒以内,故可设置VU数与TPS相同为16,Pacing值设置为1秒;同理b交易VU数设置为24,Pacing值设置为1秒;从交易响应时间超过1秒,可设置VU数为40*2=80个,pacing值为2秒。

方案二:a交易8VU,pacing值0.5秒,b交易12VU,pacing值0.5秒,c交易80VU,pacing值2秒。

如下图:2Load Generator管理2.1开启Load Agent Process(一)Windows环境[开始]→[所有程序]→[HP LoadRunner]→[Advanced Setting]→[Loadrunner Agent Process],左图中第三个即为Load Agent Process的图标(二)AIX环境在/home/test/lr81/bin目录下输入启动命令:./m_daemon_setup start查看进程是否启动:ps -ef | grep agent_daemon在/home/test/lr81/bin目录下输入停止命令:./m_daemon_setup stop2.2Load Genertors添加(一)Windows环境(1)打开controller,在如下页面(2)点击按钮(3)点击按钮(4)输入目标机器IP、选择操作系统,如下图(5)点击连接Load Genertors(6)添加成功后,在初始界面选择Load Generators(二)AIX环境添加AIX Generator与以上步骤基本一致,上述步骤三中点击按钮,并勾选“Do not use RSI”。

性能测试之场景设计要点和环境建立数据执行

性能测试之场景设计要点和环境建立数据执行

1.场景设计要点场景设计是性能测试中非常重要的一个环节,通过合理的场景设计,我们可以有效的模拟用户的行为习惯,在此前提下得到的数据,才能有效的反馈系统的性能问题。

想象一下,如果你从一开始的用户行为模拟上就出错了,模拟出与用户行为不一样的内容来,那你得到的各项指标还有什么意义?你的调优进行的再好,也将事倍功半,因为线上用户不这么玩。

那么,从场景的角度出发,我们需要注意以下几点:●合理分配业务比例在做整站性能测试时,我们需要根据历史数据做参考,分析每个主要业务的使用比例是多少,然后在场景中根据这个比例来分配对应的Vuser数量,确保性能测试期间服务器接收到的请求与线上服务器实际接收的请求比例接近。

这样更有利于验证出数据交差互窜、锁等相关问题。

●设置合理的检查点在性能测试过程中,为了保证事务的正确性,不能仅依赖工具本身的判断逻辑,需要自己设置检查点来验证结果的准确性。

在大数据量的测试过程中,我们没办法人为通过日志或者业务数据总量来判断是否所有的业务都成功了,所以需要在测试过程中加入这一步骤。

失败的业务会大大提高系统的TPS,因为业务失败了,那么很多步骤都不需要执行。

注意:性能测试不考虑业务的异常场景。

有人可能会担心如果在大并发的情况下,增加检查点的判断是否会影响服务器的性能?实际上影响非常有限。

首先,检查点的判断是脚本处理的,并不影响业务在服务端的处理过程,只会影响负载机的性能。

其次,过多的检查点确实会影响事务的响应时间,但这个影响的范围还是可控的。

如果你的业务真的对事务精度要求非常高,那么可以使用类似waste_tiem()之类的函数,来过滤这部分的时间。

所以,必要的检查点还是需要的。

●合理使用思考时间很多同学在做测试执行的时候,会认为去掉思考时间,会增加服务器的压力,从而更好的测试服务器的性能。

这个观点并没有错,但是违背了性能测试中最重要的一条原则:正确的模拟用户行为。

用户对操作系统的使用并不会没有停顿,所以增加压力最好的办法是通过负载机的增加,增加Vuser数据量,来增加压力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

误区6:系统存在瓶颈,不可以使用。
系统发现了瓶颈,的确是很让人担心的一件事情。不过不要紧,很多的瓶颈可以不必去理会。发现瓶颈的目的主要是为了掌握系统特性,为改善和扩展系统提供依据。因此在性能方面给系统留有30%左右的扩展空间就可以了。
上面列举的都是日常性能测试工作中相关人员常犯的错误,这些观点只在极其特殊的情况下才正确。希望读者了解这些常见的性能测试误区后,能在以后的工作中避免类似的情况。
3.在工作机上安装了LoadRunner7.8;
4.然后录制了登陆、发布公告等功能;
5.开始设置30、50、100、500不同的并发用户数目进行并发;
6.最后得出结论:系统只能运行80个左右的并发用户……。
无疑上面的做法存在很多不合理的地方,例如测试内容太少、测试服务器配置太低等。现实工作中,尽管性能测试以其在测试中独特的地位越来越为软件测试人员、开发人员和用户所重视,但是不管是测试人员还是开发人员,仍然在认识上存在这样或者那样的误区。
当然这并不意味所有的性能测试都要尽早进行,性能测试的启动时间要由软件特点来决定。
误区3:性能测试独立于功能测试
功能测试可以发现性能问题,性能测试也能发现功能问题。性能测试和功能测试是紧密联系在一起的,原因之一是由于很多性能问题是由软件自身功能缺陷引起的。如果应用系统功能不完善或者代码运行效率低下,通常会带来一些性能问题。功能测试通常要先于性能测试执行或者同步进行,软件功能完善可以保证性能测试进行得更加顺利。
步骤3:比较前面的结果,最后取90作为最大并发用户数目。
完成最大并发用户数量的评估后,接下来就可以设计每个用例要模拟的用户数量。
通过表1可以看出并发用户数量的设计很简单,基本是按照最大并发用户数量的百分比来设计,例如可以按照最大用户的20%不断增加来设计并发用户数量,直到达到最大并发用户数量。
大数据量测试设计时可以借用前面的设计成果,因此相对容易。
一些特定测试用例设计
疲劳强度测试、最大用户测试、容量测试等一些特殊测试的用例设计,会根据用户的需求进行设计,因为这类用例的相关要求通常十分明确。
通过分析场景来设计性能测试,可以使性能测试用例更接近用户实际使用情况,更容易发现系统瓶颈。这种方法抓住了性能测试的关键点,做到有的放矢,大大降低了测试成本。
步骤一:OA系统的最大并发用户数目一般在系统使用人数的5~20%之间,此系统使用频度不高,因此我们估计最大并发用户数量为总使用人数的15%,根据经验得出第一个最大并发用户数90(600×15%=90);
步骤2:通常OA系统的并发数为在线数的30%左右,我们根据经验得出第二个最大并发用户数60(200×30%=60);
不同时间段场景分析的数据来源主要是前面的需求分析和日志分析结果。通过图1,很容易看出各个时间段不同模块的用户是如何并发的。有了上面的资料,就可以设计各个时间段的组合模块测试用例。下面是图1所示的网上电影点播系统“0~2点” 场景的一个测试用例。
上面场景的并发人数只是一个实际例子,如何设计最大并发用户可以参考本节“并发用户数量设计”和“业务模式设计”的相关内容。
从这里可以看出并发用户数目的设计一定不能拘泥于形式。注意这里没有考虑用户数目在软件生存期内增加的情形,读者可以结合前面最大用户评估方法来确定最大用户并发数目,然后自己练习一下如何设计这两个性能测试用例的并发用户数目。
大数据量测试用例的设计
大数据量测试主要分为历史数据引起的大数据量测试和运行时大数据量测试两种。下面讨论一下如何来设计大数据量性能测试用例中的数据。
因此,如果用户对软件的性能要求较高,这意味着不但要从硬件方面来保证性能,还要从数据库、WebServer、操作系统配置等方面入手来提高性能,同时开发的软件系统本身也要进行优化,以便全面提高性能。
误区2:在其它测试完成后进行性能测试
这是目前特别普遍的一种现象,例如前面的A君的现象就是没有意识到性能测试的重要性。这种做法最严重的后果是如果性能问题是由软件系统本身产生的,可能会无法根治性能问题。例如架构设计方面的失误,可能意味着软件系统将被废掉。
综合上面的内容,可以看出用户并发数量设计是很灵活的,不用拘泥于公式和形式,只要充分考虑到用户现在和未来的增长趋势就可以了。
系统不同时间段场景的设计
不同时间段的场景更接近用户使用情况,也是设计核心模块和组合模块并发性能测试用例的基础。例如图1的网上电影点播系统,每两个小时使用系统的情况都是不同的,因此需要设计一些典型的场景。
分析系统日志。很多时候,通过和用户沟通不能掌握其使用系统的详细情况,尤其是诸如图1的网站业务系统,因为目标用户使用系统的情况是不确定的。当用户比较分散、现场调查比较困难时,可以采用对系统日志进行分析的方法,以此作为对用户现场调查信息的补充。
大多数的系统都会对用户使用系统的情况进行日志管理,因此可以对日志进行分析,日志分析方法适用于已经投产或者试运行的系统。
误区4:性能测试就是用户并发测试
仍然有很多人(尤其是开发人员和部分项目实施人员)一提到性能测试,就会联想到并发用户测试,进而认为性能测试就是“测试一下多用户的并发情况”。严格地讲,性能测试是以用户并发测试为主的测试。实际性能测试还包含强度测试、大数据量测试等许多内容。
误区5:在开发环境下进行性能测试
在具体设计过程中,一般是两种方法结合使用。图1的网上视频点播系统就是通过两种方法得到的测试数据:通过和用户进行沟通得到全国各地维护人员使用系统的大概情况,然后通过对系统一个月的日志进行分析得出其它用户使用系统的情况,最后综合在一起就得到了系统的使用情况图。
也许有人会问:为什么不通过日志分析得出全部的用户使用情况?主要原因有两个:一是日志分析不一定能得出全部的使用情况,可能产生偏差,例如用户反复登陆系统、注册多个帐号都会影响统计结果;二是日志分析往往较用户调研成本大,因为多会涉及开发工作。
基于场景的性能测试设计
由于开发环境硬件配置不高,基于用户的测试多在用户现场进行,而为了测试目的而进行的测试多在开发环境即开发团队内部进行,不过两者进行的场所没有严格的界限,例如也可以在开发团队内部模拟用户的环境进行性能测试。
“为了测试目的而设计的测试用例场景”主要根据测试设计人员的经验来进行,但是仍然要参考用户的实际场景,用户实际使用场景是设计所有测试用例的依据。例如一些业务系统,虽然备份历史数据的周期为一年,但是设计大数据量测试用例时仍然包含了系统运行一个月、半年等的数据量模拟测试,因为这些均属于用户的典型场景。
请看下面一个性能测试小案例:
某公司OA产品的新版本即将发布。为了看看系统的性能,决定安排测试工程师A君执行性能测试任务。A君做法如下:
1.找到一台PC机,CPU主频1G,内存512M,……;
2.在找到的PC机上搭建了测试环境:安装了Oracle9i、Weblogic等系统软件;
Байду номын сангаас
很多时候,在软件开发完成后进行性能测试,对软件性能进行评估。实际上大多数的开发环境因为硬件条件比较差,所以反映不了过多的性能问题。
因此性能测试要尽量在高配置的用户投产环境下进行。但是有两种可以例外的情况:一种是为了发现某些功能方面的问题,例如为了发现并发算法的一些缺陷;另外一种就是有非常好的硬件资源。
并发用户数量设计
并发用户尤其是最大并发用户数量的设计一直是网上很多测试论坛津津乐道的话题。
在设计并发用户数量前,首先要了解确定系统最大并发用户数量的方法。下面举一个估计最大并发用户数量的例子。
某OA系统的使用用户为600,预计使用周期内不会发生大的变化,通过分析日志得出系统的最大在线数目为200左右,分析其最大并发用户数量。
确定用户使用系统情况的方法
确定用户对系统的使用情况是设计用例具体数据的基础,后面并发用户数据设计、疲劳强度设计、以及各种场景设计都要依赖对用户使用系统情况的分析结果。分析用户使用情况经常采用现场调查和分析系统日志两种方法。
用户现场调查。实际就是通过和用户进行沟通,进而确定用户的人员组成情况。这类方法适用于用户群体固定且目标测试系统没有投产前的情况。
以图1的网上视频点播系统为例,就需要对系统维护、电影欣赏、页面查询浏览三种模式进行用例的设计。
按业务模式和时间段的场景来设计性能测试用例时,会涉及到如何设计每个模块并发用户数目的问题。通常会取各个相关模块在24小时内最大的并发用户数目进行组合。例如电影浏览模式在12~14点场景设计的测试用例如下:仍然取了24小时内最大值280而不是210,理由是系统登陆用户在10~12点内达到了高峰280。这条原则看似和前面测试最大并发用户的方法有些冲突,实际思想还是一致的,只是这里关注每个业务模块的最大并发用户数。
误区1:提高硬件配置可以直接提高性能
这是以前系统规模不大时期留下来的认识。DOS时代以及后来Windows操作系统流行的初期,软件规模一般较小,而硬件的更新却是日新月异,软件性能一般不是突出问题,因为只要升级一下硬件,很容易就解决了性能问题。
现在随着软件规模的扩大,提高硬件配置只是解决性能问题的一个基本手段。因为如果软件自身存在性能问题,再多的资源可能也不够用,例如内存泄漏问题,随着时间的增加,内存终究会被耗尽,最后导致系统崩溃。
不同时间段场景设计的基本原则有两个:一是选择典型的场景进行测试,尤其要选择场景中并发用户数目较大的场景;二是要覆盖全面,即设计出的用例要覆盖到压力可能较大的时间段。
业务模式的设计
业务模式的设计是不同时间段场景设计的特例,也是设计核心模块和组合模块并发性能测试用例的基础,设计业务模式的目的是专注于某些功能模块的组合。通常按时间段来设计场景会涉及很多模块,如果系统存在由应用软件引起的瓶颈则很难对定位,因此抽象出特定的业务模式来进行用例的设计。
性能测试在测试中往往不被重视,而项目中由于系统性能不合格会给企业带来巨大的损失。基于场景的性能测试设计能避免性能测试的误区。
相关文档
最新文档