LoadRunner使用入门 进行Webservice负载测试

1.什么是LoadRunner

  LoadRunner是HP公司的一款付费工具,该工具是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载来确认和查找问题。

  2.什么是负载测试

  通过测试系统在资源超负荷的情况下的表现,以发现设计上面的错误或验证系统的负载能力。

  负载测试的目标是确定并保证系统在超出最大预期工作量的情况下仍能正常运行,还能评估系统的性能特征。

  下面介绍一下关于负载测试的几个基本概念:

  2.1吞吐率:服务器并发处理能力的量化描述(单位reqs/s),单位时间内处理的请求数。

  2.2并发连接数:某一个时间点允许最大的请求数量,这个常用来衡量系统的并发处理请求的能力,应该区分与下面的并发用户数。

  2.3并发用户数:一个用户可能会产生多个并发连接,例如IE8目前支持6个并发连接。

  2.4用户请求平均时间:大量用户请求从发起到接收到处理结果的一个平均时间,在web页面默认不超过3秒是最佳的用户体念。

  2.5服务器平均处理请求时间:处理完成一个请求所用的平均时间,这个指标可用来衡量业务逻辑复杂度和机器的性能指标。

  3.使用LoadRunner进行负载测试详解

  3.1负载测试目标

  在做任何事情的时候,都应该三思而后行,明确要达到的目标。然后计划一步一步的达到所定的目标。同样在测试初期我们应该明确定义需要达到的测试目标,例如:我们现在要测试一个调用人力资源数据的WebService接口,我们的重点测试规定时间长度的接口并发处理能力,且接口的单次调用时间不超过3秒,在最大并发用户80最小并发用户20平均并发用户40的情况下进行30分钟的接口调,预计总调用次数10000次,用户平均请求时间不超过5秒。

  怎样定义以上测试目标的呢?第一、写一个脚本顺序多次调用接口获得一个平均单次调用时间,且这个时间作为基础时间。第二、最大并发用户、最小并发用户和平均并发用户来自对原有系统的分析,发现人力资源接口在公司中被大量其他系统所访问经过分析和调查得出最大并发用户80最小并发用户20平均并发用户40的结果。第三、调用次数10000次如何得来,根据设置的3个请求源,分别设置这3个请求开始时间和结束事件计算得来的,如A请求源从0~20分钟并发用户访问数为20,B请求源并发数为30从10分钟~25分钟,C请求源从15分钟至30分钟,并发用户数为30.

  3.2创建负载测试脚本

  脚本是用来运行需要测试对象的主要力量。

  脚本主要分了3个部分vuser_init和Action和vuser_end这三个部分,vuser_init 是虚拟用户创建的函数,vuser_end是运行结束后销毁虚拟用户的函数,Action是主要的代码运行测试的部分。

  Action可以建立多个,每一个Action都负责各自的事情。


Action()

{

<span style="white-space:pre">  </span>//输入字符串

char input[500]="command=";

//日志记录地址

char *address="D:\\LoadRunnerWorkSpace\\RunLog\\log.log";

<span style="white-space:pre">  </span>long filename;//定义存储文件指针的变量

//输入参数,进行了参数化,可以进行配置

char *cmd = lr_eval_string("{InputParam}");

//输出参数

char *out = "";


lr_start_transaction("init"); //定义初始化事务

strcat(input,cmd);

lr_end_transaction("init", LR_AUTO);//结束初始化事务

lr_rendezvous("beginaction");//事务集结点

lr_start_transaction("call");//初始化访问接口的事务

web_service_call( "StepName=ExecuteCommand_102",

"SOAPMethod=Test|TestSoap|ExecuteCommand",

"ResponseParam=response",

"Service=Test",

"ExpectedResponse=SoapResult",

"Snapshot=t1397177849.inf",

BEGIN_ARGUMENTS,

input,

END_ARGUMENTS,

BEGIN_RESULT,

"ExecuteCommandResult=outPutParams",

END_RESULT,

LAST);

lr_end_transaction("call", LR_AUTO);//结束访问接口事务

lr_start_transaction("log");//初始化记录日志事务

//获取输入值

out = lr_eval_string("{outPutParams}");

//输出信息

lr_output_message("调用日志|Cmd=%s|Re=%s\r\n",cmd,out);

//写自定义日志文件

if ((filename=fopen(address,"a+"))==NULL)//打开文件

{

lr_error_message("can not open this file,address=%s",address);

return -1;

}

fprintf(filename,"调用日志|Cmd=%s|Re=%s\r\n",cmd,out);

lr_end_transaction("log", LR_AUTO);//结束访问接口事务

lr_start_transaction("interval");

lr_think_time(0.1);  //定义思考时间,思考时间和模拟程序对业务处理事件有些类似

lr_end_transaction("interval", LR_AUTO);

return 0;

}

  创建完成脚本之后单次执行该接口查看action程序是否正确,能够正常运行。

  如果能够正常运行,进行下一步操作。

  3.3执行负载测试(Run Load Tests)

  在执行之前(Design)中对我的测试目标的3个请求源进行配置,创建相应的请求场景,这个配置可以在(Interactive Schedule Graph)查看相应请求场景。

  配置好之后在(Run)点击Start scenario。

  经过漫长的等待测试运行完毕,系统自己生成响应的测试结果,泡杯茶小酌一杯呵呵。

  3.4执行测试结果的分析(Analyze Load Tests)

  导入生成的res1文件,系统会自动生成出相应的测试报表。在Analysis Summary中就可以看出整体的测试结果。

  还可以通过查看Running Vusers的情况了解整理的并发访问情况。

  查看Hits per Second,查看每秒的请求数量的走势。

  查看Throughput,可以查看整个压力测试过程中处理数据的吞吐量情况,是否达到设计的要求。

  查看Transaction Summary,查看整个压力测试的所处理的事务的汇总统计。

  查看Average Transaction Response Time ,可以查看整个Action中所有事务处理的时间走势。

  4.通过上面的测试结果我们可以判定我们的测试是否满足要求

  不要迷信性能测试,所有的性能“系统的性能不是测试测试出来的,而是系统设计出来的。”

  LoadRunner能做系统程序的性能测试,在一些大型系统中,可能对系统测试要分为多个目标多个维度,要对硬件架构进行性能测试,对系统进行性能测试,对网络进行性能测试等等多个维度。

  性能测试的目的有两方面,第一方面是测试系统是否满足设计要求。第二方面发现系统的瓶颈,为系统优化提出修改建议。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2025-01-02 14:56:48

LoadRunner使用入门 进行Webservice负载测试的相关文章

loadrunner进行负载测试时,服务器总是报错。怎么解决?

问题描述 loadrunner进行负载测试时,服务器总是报错.怎么解决?附上我的jdbc连接类publicclassconnsqlserver{/***创建连接*/privatestaticConnectioncn=null;//创建StatementprivatestaticStatementstmt=null;privatevoidgetConnection(){if(cn!=null){return;}Contextctx;try{ctx=newInitialContext();DataS

清单:负载测试——SQL Server性能调整的魔法棒

没有什么事情比这更糟了,采纳一个新的应用程序,而它的性能是如此的糟糕,导致业务在一片惊叫声中暂停.这并不是新出现的现象:这就是事实,我经常遇到这样的事实.我打赌你也曾经经历过.那么如何防止这些性能问题,有什么解决方案? 在这些应用程序"在惊叫声中暂停"的情况中,应用程序通常都已经在按照功能性分配的短暂的测试时间内进行过适当的测试了.但是充分吗?由于竞争和全球经济的原因,迅速应用于业务意味着只进行了最小化的测试.同样,最小化的测试也成为按时将应用程序发布给用户群体的可接受的风险之一.另一

Sql server负载测试性能调整魔法棒

没有什么事情比这更糟了,采纳一个新的应用程序,而它的性能是如此的糟糕,导致业务在一片惊叫声中暂停.这并不是新出现的现象:这就是事实,我经常遇到这样的事实.我打赌你也曾经经历过.那么如何防止这些性能问题,有什么解决方案? 在这些应用程序"在惊叫声中暂停"的情况中,应用程序通常都已经在按照功能性分配的短暂的测试时间内进行过适当的测试了.但是充分吗?由于竞争和全球经济的原因,迅速应用于业务意味着只进行了最小化的测试.同样,最小化的测试也成为按时将应用程序发布给用户群体的可接受的风险之一.另一

visual studio-Visual Studio Web负载测试,测试摘要分析

问题描述 Visual Studio Web负载测试,测试摘要分析 测试为简单login页面测试,10并发持续10分钟 我用同种方式测过外网址,数据很漂亮,错误只有45个Timeout,Avg.Page Time在0.6,浮动也不大,请大神明示以下问题: 失败测试数(比例):81465(58.1) 1.如此高的失败率说明什么?开发web"> 2.错误栏里有1000次的403错误意味什么?(图中显示为同时出现) 3.页面在请求时调用本地cookie会加速页面展示,但为什么会有0.039s的A

用lotus server.load进行负载测试的的脚本编写问题

问题描述 用lotus server.load进行负载测试的的脚本编写问题 现在公司要lotus开发完了要用lotus server.load进行负载测试测试脚本各种不会写有没有大神做过求教.怎么在脚本里面模拟用户操作比如打开视图表单添加数据之类的

PHP程序加速探索之服务器负载测试

程序|服务器 服务器负载太大而影响程序效率也是很常见的,我们需要对此进行测试.这里我以目前最常用的Apache服务器为例.  Apache服务器自带有一个叫AB(ApacheBench)的工具,在bin目录下.使用这个轻巧的工具我们可以对服务器进行负载测试,看看在重负荷之下服务器的表现如何.ApacheBench 可以针对某个特定的 URL 仿真出连续的联机请求,同时还可以仿真出同时间点数个相同的联机请求,因此利用 ApacheBench 可帮助我们在网站开发期间仿真实际上线可能的情况,利用仿真

为你的应用准备最佳负载测试的 9 个技巧

你已经努力开发你的Web应用,也许这没有什么伟大的,但它是众多维持我们每日生活的方法中的一员,并且,或许它会改变世界. 无论怎样,你知道它需要做一些测试,而且不止一次.测试工作应该贯穿于软件开发过程的每一个阶段,乃至软件发布之后.认识到测试者的工作永远不会停止有点让人头疼,令人欣慰的是每一轮测试和矫正都会提高软件质量. 应用故障有两个原因:开发人员没有做负载测试,或者更糟糕的是,他们花了时间来做负载测试,但是没有做好充分的准备.没有充足的预备工作,负载测试不可能发现它应该发现的所有问题. 那么,

vs2013 负载测试 未能对测试运行“**** 2015-06-10 18:31:13”进行排队

问题描述 vs2013 负载测试 未能对测试运行"**** 2015-06-10 18:31:13"进行排队 6/10/2015 6:31:13 PM 未能对测试运行"PC0101010742 2015-06-10 18:31:13"进行排队: 活动的测试设置配置为使用 Visual Studio Online 运行测试. 使用团队资源管理器连接到 Visual Studio Online 帐户,然后重试. 在用vs2013进行负载测试,发现新建立了一个测试配置,点

一篇文章带你深入理解什么是负载测试

介绍 任何软件开发项目接近完成的时候,它可能已经通过无数次测试了,特别是在测试和开发同时发生的敏捷测试环境下.无论你已经进行过多少轮测试,一旦你的应用程序已接近完成,那么只有一个办法知道你的软件是否可以满足真实用户群的实际需求,它就是负载测试.你可以使用负载测试工具来完成这项工作.负载测试是指给软件.应用程序或网站加上模拟的需求,以测试其在不同的环境下的运行状态的过程. 负载测试和性能测试 作为大家最了解且最常见的一种性能测试类型,负载测试即包括将常规压力施加到软件应用或 IT 系统,去看它们是