loadrunner web测试可以测试c++产品么

帮助企业打造成功软件!
热门搜索:
Loadrunner测试之中文参数解决方案
Loadrunner测试之中文参数解决方案
| 作者: |
09:57:07| 阅读 0次
概述:本方案详细的描述Loadrunner测试中文参数的解决过程。
Loadrunner测试中,有的应用需要发送中文。本案例(以人名payerName&:&张三)进行实例解释和处理。
发现调用失败。通过观察错误日志,发现传过去的payerName是乱码。
解决过程:
首先,Virtual&User&Gen的Tools-&Recoding&Options&-&&Advanced&-&&Support&charset&-&&UTF-8重试之,无效。
然后,使用lr_convert_string_encoding函数进行强制转码。
[cpp]&view&plaincopyprint?
lr_convert_string_encoding:&对中文进行UTF-8转码
int&lr_convert_string_encoding&( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName):该函数有4个参数,含义如下:
sourceString:被转换的源字符串。
fromEncoding:转换前的字符编码。
toEncoding:要转换成为的字符编码。
paramName:转换后的目标字符串。&
注意:&使用这个函数转码出来的字符串会以&\x00&结尾,所以要做一次额外处理。
代码如下:  
[cpp] view plaincopyprint?
  char tmp[50];
  lr_convert_string_encoding(&张三&, LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,&str&);
  strcpy(tmp,lr_eval_string(&{str}&));
  lr_save_string(tmp,&payerName&);
  char tmp[50];
  lr_convert_string_encoding(&张三&, LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,&str&);
  strcpy(tmp,lr_eval_string(&{str}&));
  lr_save_string(tmp,&payerName&);
  然后再使用 如下方式进行调用:
  [cpp] view plaincopyprint?
  web_custom_request(&consume&,
  &URL=http://192.168.12.89:8010/quickpay/v10/003&,
  &Method=POST&,
  &Resource=0&,
  &RecContentType=application/json&,
  &Referer=&,
  &Mode=HTTP&,
  &EncType=application/json&,
  &Body={\&cardHolderName\&:\&{payerName}\&,\&cardNo\&:\&8457\&,\&cardTypeEnum\&:\&CREDI\&}&,
  LAST);
  web_custom_request(&consume&,
  &URL=http://192.168.12.89:8010/quickpay/v10/003&,
  &Method=POST&,
  &Resource=0&,
  &RecContentType=application/json&,
  &Referer=&,
  &Mode=HTTP&,
  &EncType=application/json&,
  &Body={\&cardHolderName\&:\&{payerName}\&,\&cardNo\&:\&8457\&,\&cardTypeEnum\&:\&CREDI\&}&,
  LAST);
再次运行脚本,OK了。希望对需要测试中文参数的朋友有所帮助。
慧都控件|提供软件技术整体解决方案
云集全球三千余款优秀控件、软件产品,提供行业领先的咨询、培训与开发服务
企业QQ:|电话:023-
服务与支持
重庆 / 023-
北京 / 010-
400-700-1020
慧都旗下网站
慧都科技有限公司 版权所有 Copyright
100%正版软件
400-700-1020
<input type="hidden" id="url" value=""/>用户:****
用户:**45873**
用户:****
用户:**722937@qq.c**
用户:****
用户:****
用户:**097590@qq.c**
用户:****
用户:****
用户:**893281@qq.c**
用户:**436009@qq.c**
用户:****
用户:****
用户:****
用户:****
用户:****
用户:****
用户:**61363**
用户:**0233702@qq.**
用户:****
重大通知:
北风课程即将全面升级更新,10.1起部分课程价格正式上调
&&&&&&&&&&&&&&重大通知:
北风课程即将全面升级更新,10.1起部分课程价格正式上调 &&&&&&&&&&&&&&&
分享:9999+
课程顾问贴心解答
为你推荐精品课程,无论就业还是升职加薪,毫无压力。
名企定制紧随大流
量身打造紧贴企业需求的实用性课程。
系统教学把控效果
集学、测、练为一体的学习系统为你科学的安排学习进度,提高效率。
一线大师1对1指导
课程研发团队内一线资深讲师一对一指导,手把手教学,直到学会。
点播答疑完美结合
每周2-3次直播解答,保证学员日常学习问题能得到解决。
量身定制学习计划
告别杂乱的学习方式,我们会根据你的情况定制学习计划。
本课程主要帮助学员掌握性能测试流程,并帮助学员分析制定适合公司的性能测试流程。掌握Loadrunner主要功能使用,掌握LR的工作原理,采用案例教学的方式。学习完本课程学员能够出色的制定系统性能测试计划方案、性能需求分析、测试脚本开发、场景设计、测试执行、结果分析及报告编写。
LoadRunner简介:
是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。
1、性能测试概述
1.1 自动化测试工具分类
1.2& 性能测试简介
1.3 性能测试入门知识
1.4& 性能测试存在问题
1.5性能测试需求分析
2.1& LR概述
2.2& LR的工作原理
2.2.1 LoadRunner 测试流程
2.2.2 LoadRunner基本功能
3、负载/压力测试计划的编写
3.1负载/压力测试计划概述
3.2& 学习编写压力测试计划
4&、LR脚本
4.1& VuGen简介
4.2& 录制用户行为
4.3& 了解loadrunner事务
4.4& 了解集合点概念
4.5& 参数化
5、LR场景设计及执行
5.1& 控制台的两种测试模式
5.1.1两种模式的介绍
5.1.2 场景的定期执行(指定具体的运行时间)
5.1.3场景的反复运行
5.2& IP欺骗
5.3& 性能测试过程监控
6、LR结果分析
6.1& 性能测试分析方法
6.1.1& 重要性能指标简介
6.1.2& 性能分析基本方法
6.2& 高级性能测试分析方法
6.2.1& 用户事务分析
6.2.2& Web资源分析
6.2.3& 网页细分技术
6.2.4& 图表的联合分析技术
7、性能测试报告的编写
7.1 性能测试报告概述
7.2 编写性能测试报告
详细内容大纲:
第一章(1):软件性能测试概述、基本概念
第一章(2):Loadrunner安装及破解、性能测试内容及步骤概述
第一章(3):Loadrunner脚本录制、性能测试指标概述
第一章(4):性能测试以及压力测试流程以及存在问题、脚本的认识(附脚本)
第一章(5):性能测试需求分析及实例讲解
第一章(6):性能测试概述_性能测试需求分析实例讲解
第二章(1):Loadrunner简介_LR指标概述
第二章(2):Loadrunner简介_流程演示
第二章(3):Loadrunner简介_脚本录制以及场景控制器学习
第二章(4):Loadrunner之Controler设计与执行、Analys分析器
第二章(5):Vuser录制基本设置及脚本增强点讲解
第二章(6):Loadrunner基本操作复习及参数化值具体使用讲解
第三章(1):如何编写性能测试计划
第四章(1):Loadrunner脚本录制选项精讲及操作演示
第四章(2):Loadrunner脚本回放选项精讲
第四章(3):Loadrunner脚本增强_Transaction以及Action.exe
第四章(4):Loadrunner脚本参数化精讲及演示
第四章(5):Loadrunner脚本检查点、注释、集合点讲解及练习演示(附代码)
第四章(6):Loadrunner脚本-手动关联的讲解及演示
第四章(7):loadrunner脚本增强-自动关联、日志输入加强
第五章(1):Controller场景控制器、场景类型及创建演示.exe
第五章(2):Controller控制器_多机联合测试、IP欺骗技术使用
第五章(3):Controller场景控制器串讲
第五章(4):控制场景运行、场景运行的状态分析
第五章(5):学习Controller监视器的监视过程以及指标分析
第五章(6):Controller监控器技术指标讲解(了解)
第六章(1):Analysis结果分析_指标复习、结果分析概述
第六章(2):Analysis结果分析_性能测试分类测试演示及结果分析方法
第六章(3):Analysisi结果分析_图表的具体含义及判断经验
第六章(4):Analysis结果分析_指标分析及判断经验
第六章(5):Analysis结果分析实例讲解(软评考试真题性能测试部分讲解)
第六章(6):性能测试结果实例解析
第六章(7):性能测试结果分析实例讲解续
第六章(8):web项目性能测试结果分析解析
第七章(1):性能测试报告概述及报告编写实例讲解
第八章(1):Loadrunner性能测试学习总结
您暂未登录不能收藏!请登录后在进行课程的收藏!其实无论用那种方法,的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。
  方法一、用实现接口测试
  大家都知道LoadRunner是一种工具,但它也可以用在我们做接口测试的时候。开发人员开发出来的接口,提供给测试人员详细的接口使用说明书,该说明书最基本的要求如下:
  接口测试地址:/SNS/Publish
  请求报文参数说明:
字符&#20540;
CommentsTypeID
评论类型ID
CommentsID
CommentsContent
  请求报文&#26684;式:
&?xml version=&1.0& encoding=&ISO-8859-1&?&
& Publish &
  &SNSID&123&/SNSID&
  &UserID&456&/ UserID &
  &CommentsTypeID&2&/ CommentsTypeID &
  &CommentsID&123&/CommentsID&
  &AuthorID&456&/AuthorID&
  &CommentsContent&Don't forget the meeting!&/CommentsContent &
&/Publish&
  应答报文的参数接口说明:
字符&#20540;
CommentsTypeID
评论类型ID
CommentsID
CommentsContent
StatusCode
返回&#20540;
0代表pass,非0代表fail
StatusText
返回信息描述
&?xml version=&1.0& encoding=&ISO-8859-1&?&
& Publish &
  &UserID&456&/ UserID &
  &CommentsTypeID&2&/ CommentsTypeID &
  &CommentsID&123&/CommentsID&
  &CommentsContent&Don't forget the meeting!&/CommentsContent &
  &StatusCode&0&/StatusCode&
  &StatusText&发送成功一条评论&/StatusText&
&/Publish&
  有了上述的说明书之后,测试人员可以根据文档的描述在LoadRunner书写相应的接口测试脚本。
 LoadRunner中涉及到向服务器发送请求的API方法包括:web_url(),web_submit_form(),web_submit_data(),web_custom_request()。下面介绍两种我常用的方法:
  方法一:使用web_submit_data()
web_submit_data(&insert&,
&&&&& &Action=http://116.211.23.123/SNS/Publish.htm &,
&&&&& &Method=POST&,&&&&&&
&Referer=http://116.211.23.123/SNS/Publish.htm &,
&&&&&& &Mode=HTML&,
&&&&& ITEMDATA,
&&&&& &Name= SNSID &,&Value=6601&,ENDITEM,
&&&&& &Name= UserID &,&Value=123&,ENDITEM,
&&&&& &Name= CommentsTypeID &,&Value=1&,ENDITEM,
&&&&& &Name= CommentsID &,&Value=456&,ENDITEM,
&&&&&& &Name= AuthorID&,&Value=789&,ENDITEM,
&&&&&& &Name= CommentsContent &,&Value=Just for testing&,ENDITEM,
&&&&&&&&&&&&&& LAST);
  方法二:使用web_custom_request()
char str[1000];
strcpy(str,&SNSID=7999&UserID=1&CommentsTypeID=1&CommentsID=1&AuthorID=1&CommentsContent=1&);
web_custom_request(&Publish&,
&&&&&&&&&&&&&&&&& &Url= http://116.211.23.123/SNS/Publish.htm&,
&&&&&&&&&&&&&&&&& &Method=POST&,
&&&&&&&&&&&&&&&&& &Referer=http://116.211.23.123/SNS/Publish.htm &,
&&&&&&&&&&&&&&&&& &Mode=HTTP&,
&&&&&&&&&&&&&&&&& str,
&&&&&&&&&&&&&&&&& LAST);
  这也是一种写法,可以跟web_submit_data互换。这种写法更利于拼接参数。
  方法一适合一些xml结构的根元素下的子元素同处于根元素下面,且子元素数目较少的情况下,如果xml结构比较复杂,比如说根元素下面有多级子元素,或者xml树结构分叉较多的时候,我们可以先把xml拼接成一个字符串然后通过web_custom_request()向服务器发送请求。
  我们在做接口的时候会很注意接口的应答报文的信息,这时候我们可以通过LoadRunner的信息查看或者可以通过web_reg_find()或者web_find()这样的API函数来统计接口的运行结果,推荐使用web_reg_find(),web_reg_find()和web_find()区别请大家一下,详细信息太多,在这里不便叙述。
  因为web_reg_find()是注册型函数,所以应该放在web_submit_data()或者web_custom_request()的前面。
web_reg_find(&Text=&StatusCode&0&/StatusCode&&,//应答报文里边的信息
&SaveCount= StatusCodeCount&, //统计查询字段的信息,如果找到&#20540;为1,如果未找到&#20540;为0
  在脚本的最后我们可以对查询字段的信息进行统计
// Check result
if (atoi(lr_eval_string(&{StatusCodeCount }&)) & 0){ //判断如果Welcome字符串出现次//数大于0
lr_output_message(&Send out the comment successfully.&); }//在日志中输出Send out //the comment successfully
else{ //如果出现次数小于等于
lr_error_message(&Send out the comment unsuccessfully.&); //在日志中输出Send out //the comment successfully
return(0);
  总结:用LoadRunner做接口测试无法做到把接口参数和程序分理,接口的参数可以通过参数化的方法来实现对同一个参数多个数据的测试。参数化后的测试数据保存在此脚本的保存位置下。
  方法二、通过Java &#43; Fitnesse实现接口功能测试
  什么是Fitnesse?
  FitNesse是一套协作工具 FitNesse是帮助大家加强软件开发过程中的协作的工具。能够让客户、测试人员和开发人员了解软件要做成什么样,帮助建议软件最终是否达到了设计初衷。
  FitNesse是一套工具 从另外一个角度看,FitNesse是一个轻量级的、开源的框架,能够帮助开发团队方便的定义验收测试(Acceptance
Tests),通过在页面上简单的输出和预计输出的表&#26684;就可实现,并且可以运行这些测试以确定是否通过。
  FitNesse是wiki可以很方便的创建和编辑页面 FitNesse是一个web服务器不用过多的安装配置,很方便使用。
  我习惯使用Eclipse集成开发工具写测试代码,用fitnesse准备接口的测试数据,由此实现接口的测试数据和测试程序的分离。
  关于Fitnesse的使用大家可以参考官方网址。Fitnesse的四种常见表&#26684;是:
  ColumnFixture,ActionFixture,Decision Table,ScriptTable。在中ColumnFixture用的最多。
  下面的程序使用的是ColumnFixture表&#26684;。
// Java fixtures
package info.fitnesse.
import fit.ColumnF
public class PublishTest extends ColumnFixture {
& //通过url向服务器发送请求的程序段省略
&& public StringSNSID; //对应列名|first part|
&& public StringUserID; //对应列名|second part|
&& private StringCommentsTypeID;
&& private StringAuthorID;
private StringCommentsC
private StringUserID;
//对参数的set和get方法省略
ColumnFixture表&#26684;里边的测试数据是:
//省略设置表&#26684;的存储位置信息
  总结:上述两种方法都是对接口做功能测试的方法,使用LoadRunner做接口测试的时候可以不用让开发人员提供测试人员相应的UI测试页面,直接调用接口做测试,但是测试程序和数据的依赖性太强;使用Fitnesse做接口测试的时候可以实现测试程序和数据的分离,只用点击Fitnesse界面的按钮就可以实现测试,测试消耗时间比使用LoadRunner做接口测试少。
希望能结识更多爱好软件测试的朋友,喜欢交流的朋友请加&群:
本文已收录于以下专栏:
相关文章推荐
目前自己有接触到的接口主要有三类:WCF、WebService及http接口,前两类是标准型的服务接口。这对于如何对接口进行功能测试,大家可以去网上查找下,有很多已有的测试工具,比如SoapUI、Ht...
最近接到一个项目的性能测试任务,其中会涉及到HTTP接口,因此自己花了一点时间对该部分进行了详细地了解。性能测试部分我有在其他文章中进行阐述,在此就不重复进行说明了,具体地址:http://blog....
Loadrunner 接口测试的两种方法
其实无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,...
/*脚本说明:
脚本名称:
业务功能:
交易路径:脚本从哪个模块到哪个模块
开发协议:
开发时间:
参数化说明:
修改记录:
修改时间:
修改内容:
SlowHTTPTest是一个可配置的应用层拒绝服务攻击测试攻击,它可以工作在Linux,OSX和Cygwin环境以及Windows命令行接口,可以帮助安全测试人员检验服务器对慢速攻击的处理能力。这个...
其实无论用哪种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。
方法一、用L...
转自:http://blog.csdn.net/on_my_way20xx/article/details/8486839
其实无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送...
loadrunner测试登录接口方法(带sha1签名算法参数)最近测试了一个带sha1签名算法参数的php登录接口,本来是用JAVA测试接口的,可是后来发现用JAVA写的生成sha1码和php生成的s...
使用webservice协议测试接口,在场景运行时,最多并发100的虚拟用户数,有局限。因此这里需要变通一下,使用http协议的方式来测试webservice接口。&#160;&#160;
&#160;&#160;&#160;&#160;&#160;在测试之前,首...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)最近公司的项目打算实现平台化,各个模块之间都是以接口形式提供,但是公司又没那么多测试人员,并且频繁上线,导致产品质量把关不严,所以我想能不能对这些接口进行自动化测试呢,由于做性能测试时对loadrunner使用较熟练,所以产生了使用loadrunner对这些接口进行自动化测试的想法。
我的想法是测试数据也就是测试用例数据库可以用参数化来实现,测试结果的检测既可以用检查点来实现也可以使用关联抓取响应的&#20540;,通过与预期结果进行比较来实现,具体的做法可以参考网上一篇文章:
 需要取得的输入应预先制作了CSV文件,关在脚本参数配置中定义变量。
  自动化测试程序关键代码
  1、生成结果文件(html&#26684;式),文件名称为 test _系统时间(%Y%m%d%H%M%S)_虚拟用户编号,并写入测试结果文件的html开始标识
  //定义结果文件变量
  //定义文件名种子(虚拟用户编号)变量
  char *
  //定义测试结果变量
  char V_Result[1024];
  vuser_init()
  //取得文件名种子(虚拟用户编号)
  vusernum=lr_eval_string (&_{vuserid}&);
  //取得文件种子(系统时间)
  lr_save_datetime(&%Y%m%d%H%M%S&, DATE_NOW, &now_date&);
  //拼结测试结果文件名称
  strcpy(V_Result,&d://test/Result/test&);
  strcat(V_Result,lr_eval_string(&_{now_date}&));
  strcat(V_Result,vusernum);
  strcat(V_Result,&.html&);
  //生成并打开测试结果文件
  file=fopen(V_Result,&at&#43;&);
  //写入测试文件头部html信息
  strcpy(V_Result,&&html&&table& border='1'&&tr&& td&IMSI号码&/td&&td&预期&#20540;&/td&&td&返回&#20540;& /td&&td&结果&/td&&/tr&&);
  fputs(V_Result,file);
  return 0;
  }2、从参数化文件读取测试参数和预期结果、发送请求并获得服务器返回实际结果,比较测试结果后写入测试结果文件。
  Action()
  //测试结果文本
  char V_testres[1024];
  //定义返回结果是否正确变量
  //取得IMSI号码
  char *V_imsi=lr_eval_string (&{IMSI}&);
  //设置页面接收最大的字节数,该设置应大于服务器返回内容的大小
  web_set_max_html_param_len(&20000&);
  //取得服务器返回内容
  web_reg_save_param(&filecontent&,
  &LB=&,
  &RB=&,
  &Search=Body&,
  LAST);
  //发送请求
  web_submit_data(&login&,
  &Action=http://host:port/autonavit/search?cmd=clientlogin&termver=5&termcode=30001&termdbver=3 &,
  &Method=POST&,
  &RecContentType=text/html&,
  &Referer=&,
  &Snapshot=t9.inf&,
  &Mode=HTTP&,
  ITEMDATA,
  &Name=imsi&, &Value={IMSI}&, ENDITEM,
  LAST);
  //比较预期&#20540;和实际&#20540;是否相等
  result=strcmp(lr_eval_string(&{YQJG}&),lr_eval_string(&{filecontent}&));
  if ( result == 0 )
  strcpy(V_testres,&通过&);
  strcpy(V_testres,&失败&);
  strcpy(V_Result,&&tr&&td&&);
  //写入测试参数
  strcat(V_Result,V_imsi);
  strcat(V_Result,&&/td&&);
  strcat(V_Result,&&td id='yq'&&);
  //写入预期结果
  strcat(V_Result,lr_eval_string(&{YQJG}&));
  strcat(V_Result,&&/td&&);
  strcat(V_Result,&&td id='sj'&&);
  //写入实际结果
  strcat(V_Result,lr_eval_string(&{filecontent}&));
  strcat(V_Result,&&/td&&);
  strcat(V_Result,&&td&&);
  //写入测试是否通过
  strcat(V_Result, V_testres);
  strcat(V_Result,&&/td&&/tr&&);
  fputs(V_Result,file);
  return 0;
  }3、写入测试结果文件尾部html信息,关闭文件并结束测试。
  vuser_end()
  //结束并关闭文件
  strcpy(V_Result,&&/table&&/html&&);
  fputs(V_Result,file);
  fclose(file);
  return 0;
本文已收录于以下专栏:
相关文章推荐
设置loadrunner自动启动脚本程序:clsSET M_ROOT=&C:/Program Files/HP/LoadRunner/bin/&%M_ROOT%/wlrun.exe -TestPath...
最近在用loadRunner做性能测试的时候,发现原本录制好的脚本在本地可以replay成功,但是放到VM的时候就出现Failed to connect to server &127.0.0.1:88...
在浏览器中查看Default.aspx这个网页,出现如下错误:说明:&#160;在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。&#160;分析器错误消息:&#160;每个配置文件中只...
Highcharts Example
&#160; &#160;
&#160; &#160;
&#160; &#160;
&#160; &#160;
&#160; &#160;
&#160; &#160; for (...
@echo off & setlocal enableextensions enabledelayedexpansionecho Wscript.Sleep 60000(单位毫秒) & %temp%/...
郑重声明:用户如收中奖消息请立即拨打总部活动颁奖电话【℡~7554】进行确认!ADC√腾讯公司抽奖备案电话是【 ~7554】ADC√腾讯公司抽奖备案电话是【 075...
我们输入&#160;
,页面会自动跳转到&#160;
执行了301重定向。
//是否执行重定向,1表示执...
/The_Load_and_Performance_Teste/LoadRunner/Automate-LR/automate-lr.htmThere a...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)关注51Testing
给初学LoadRunner的朋友的一些建议
发表于: 11:20 &作者:wind & 来源:51Testing软件测试博客
推荐标签:
  摘要:随着Internet的普及与迅速发展,企业业务量的迅速加大,数据大集中成为一种趋势,IT系统承载的负荷越来越重,系统性能的好坏严重的影响了企业对外提供的服务质量。从而对IT系统的性能进行和调优引起企业的重视,进而工程师成为IT市场的”香悖悖”,并且性能测试有着极高的技术挑战。于是吸引了大量的测试爱好者来学这方面的技术,而一谈到性能测试很多人便会想到鼎鼎大名的这款优秀的性能测试工具,然而到这里问题就产生了?  关建字:LoadRunner 性能测试& 网络基础编程语言  LoadRuner与性能测试的关系:LoadRunner初学者的误点:把LoadRunner神化了。很多初学LoadRunner的朋友认为掌握了使用LoadRunner这款性能测试工具,就能够做性能测试了。常在网上看到好多人在怎么去使用这款优秀的性能测试工具,本来学习怎么去使用LoadRunner这个工具没有错,却把LoadRunner神化了,”天真的”以为它什么都能做,以为学会了LoadRunner的使用就能做性能测试了。尽管用了大量的时间学会了如何使用LoadRunner录制脚本,如何进行关联,如何进行参数化,如何设置集合点等等?可到头来,性能测试还是不会做。为什么?对于产生的性能报告不知道怎么去分析?不知道如何利用得到的分析报告分析出系统存在的瓶颈?不知道如何进行性能调优?像这些事光会使用LoadRunner是做不到的?说白了LoadRunner只是我们做性能测试的一个工具,它并不是万能的,是死的,具体怎么做还得依靠人去操作与分析。会使用LoadRunner的人,并不一定会做性能测试,会做性能测试的人并不一定都会使用 LoadRunner。LoadRunner只是一个性能测试工具而已。我们应该意识到,测试工具只是性能测试中的一部分,仅是为达到性能测试目的而采用的一种手段  性能测试与系统性能的关系:高性能,高安全的系统,不是测试出来的,而是构架,设计,编写出来的。当然在这里我并不否认性能测试的重要性,甚至可以说没有经过性能测试的系统,一定不会是优秀的系统,软件是人开发出来的,而人总是会出错的,所谓智者千虑,必有一失……要想做好性能测试,在软件系统需求,设计,编写代码的这些阶段就应该进行性能测试,而不仅仅是这个阶段才去做性能测试,性能测试应该贯穿于整个周期中。  对初学LoadRunner朋友的建意:常看到网上一些网友发贴子问,怎么对性能测试产生的结果进行分析?测试系统时怎么去选择合适的协议?对于发这些贴子的人我想请问你?你能够详细的说下HTTP协议吗?TCP建立连接和释放连接的过程是怎样进行的?什么是协议?协议是用来做什么的?在OSI参考模型中各层的作用?数据库中产生并发的冲突的原因?不要太依赖于LoadRunner工具本身的学习,而去忽略计算机其它基础知识的学习,我们更应该去掌握一门编程语言,良好的网络基础知识,计算机原理与操作系统知识,数据库知识。这些是我们去学习怎么去使用LoadRunner前提与基础。。  1、为什么要掌握一门编程语言  其一,大家在使用LoadRunner时常会遇到一些不能录制脚本的情况发生,或者需要录制一些复杂的脚本,这时候我们就必须手动的开发脚本。其二 LoadRunner虽然强大,易于使用,可是它却属于商业软件,价格昂贵,并且代码不开源,我们无法了解LoadRunner具体的实现细节,甚至我们会怀疑LoadRunner收集的性能数据准确吗?它有是如何实现的等等,而这些我们通过LoadRunner的帮助文档无法得知。性能测试工具并不只有 LoadRunner,做性能测试还有许多优秀的性能测试工具可以选择,像JMeter,Curl- Loader等等这些非常优秀的开源工具,在全能上虽然并不上LoadRunner,但在某些方面却比LoadRunner还要强大。例如Curl- Loader这个工具,它虽然支持的协议不多,但是对于http协议它最高能产生10万的并发用户,这是LoadRunner远远所不及的。并且这些工具代码是公开的,我们能够从这些代码中去分析具体实现的细节,并且还可以自已编写代码,增强软件的功能,这也是成为性能测试高手的一条途径。LoadRunner好比我们的操作系统,易于使用,功能强大,代码封闭,论全能比要强大。我们的开源性能测试工具好比Linux操作系统代码开源,不易于使用,但很多方面比我们的Windows要强大。也许这个时候有人会问对于初学者学哪门语言最好最有前途C,C++,VB,JAVA,C#?其实每一种语言能够生存下来,自有其生存的道理,每一种语言都有自已优势和缺点,并且编程语言具有相通信,学好了一门,再去学另外的编程语言,非常快就能上手。对于初学者我建意学习C语言,理由有很多,例如很多优秀的开源性能测试工具就是用C语言开发的…。当然不管选择什么编程语言,或者数据库,或者操作系统,我们不要去想学哪门最好,学哪方面最有前途。我们更应该结合自身的情况,选择最合适的,而不是选择最好的。  2、为什么要掌握计算机原理和操作系统知识  论坛上常会看到这些问题?LoadRunner中线程与进程的关系?在什么时候用到它们,怎么区别用线程还是进程呢?LoadRunner录制产生了乱码怎么解决?怎么去发现内存泄漏?对那些发贴问这些问题的朋友,我依然想请问你你知道进程和线程的概念吗?知道进程有几种状态吗?知道进程间的通信是怎么进行的吗?死锁,进程与线程的区别这些概念你明白吗?如果你连内存的概念,内存的作用,内存泄露的概念都搞不清楚,你怎么去发现内存泄露?如果这些你都不知道,自然就不知道怎么去做性能测试分析?一些网友录制脚本常常会产生一些莫名奇妙的错误?还震震有词的说这是LoadRunner的原因。其实要说到底要解决这些问题就必需得有良好的计算机原理和操作系统知识。弄清了进程和线程的区别,你自然就明白了使用进程资源使用高,但安全性要强于线程,线程资源利用率少,使用线程能在一个负载生成器上运行更多的Vuser,但可能存在安全问题。LoadRunner录制产生了乱码怎么解决?为什么会产生乱码,你知道什么是字符集吗?什么是编码吗?字符串在我们内存中有是如何存放的?ASCII编码,ANSI编码,UNICODE编码它们的区别是什么?这些都是操作系统的基础基础。掌握好了这些你自然明白LoadRunner中产生乱码的原因。当然计算机原理和操作系统的基础知识还有很多得掌握的知识。像操作系统的体系架构、操作系统的重要基础概念,内存管理、存储/文件系统、驱动/硬件的管理。要做好性能测试计算机原理和操作系统知识必不可少。
搜索风云榜
( 15:12:47)
都有理 学习学习
( 18:10:57)
感谢lz,真是迷途上的一盏明灯。基础的确很重要。
( 15:09:28)
感谢LZ写的这篇文章,让我觉得在今后走性能测试这条路不再那么迷茫了。我发现自己之前的想法和有些网友一样,一味追求怎么学好LR,却忽视对基础知识的积累。
( 18:17:12)
09年的帖子,今天被我看到。。。还是很有缘的~最近在使用LR做性能,真的像LZ说的那样。不知道怎么分析~看来我的基础知识,方方面面的东西都要再加强学习了
( 16:18:59)
( 14:40:43)
LZ 的语气是有点愤世嫉俗的感觉 在现在的环境中作技术的是比较 很多不求甚解 有时候掌握了点技术都有目空一切的气势 :) 不过 我觉得楼主 说的 还是有道理的 在学习的道路上面 我们还有很长的路要走 大家共同努力 选择了技术这路子 就别总是学了2-3年就觉得 自己很牛 要做管理 , 踏踏实实 学习工作 享受 生活 享受学习&&最后感谢楼主的这帖子 写的很好 学习了 哈哈
( 09:55:46)
文章写得很好,很受启发,但是语气有些强硬,态度偏激
( 00:51:49)
你的意思是说团队不重要了,测试部 项目组就你一人了?
( 11:26:58)
你这长篇大论,我看不是在给初学者建议,更多的会打击别人学习的信心,了解计算机相关的知识没有错,知道的越多当然是越好,但是前提是兴趣作为基础的,那些基础知识我们在大学里并不是没有学过,为什么到用的时候就是用不上,不会用?原因就是没有学通,没有联系起来,我想如果大家真的对这个工具感兴趣,就先慢慢熟悉它,用起来,然后遇到什么问题再去学习相关领域的知识,这样就能深刻理解,达到活学活用,最终掌握
( 13:09:39)
太透彻了。LR不是神话。
( 16:54:10)
性能测试对测试人员的技术能力要求很高,楼主的总结里看出,楼主在性能测试方面有一定的经验,我在这里还想问一下,性能测试所需掌握的面如此之广泛,我也知道肯定是掌握的越深入越广对性能测试分析越好,但是人的精力是有限的,楼主你这样的水平的,以上你说的这些领域,你掌握的一个度是怎么样的??
( 10:18:57)
( 09:59:10)
( 17:54:59)
( 15:59:36)
好好好!!受教了!
51Testing官方微信
51Testing官方微博
测试知识全知道

我要回帖

更多关于 loadrunner性能测试 的文章

 

随机推荐