LR中对参数关联分两种,一种是手工关联 ,一种是自动关联 ,自动关联就是LR工具帮你找到,比如按CTRL+F8 可以进行自动关联,这种方法可以满足一些简单的需求,使用比较方便,但当LR工具找不到关联时,我们就要考虑自动关联了。
而web_reg_save_param 函数一般用于LR中进行手工关联,运行脚本时,web_reg_save_param 函数将扫描所访问的后续 HTML 页。如果指 定左边界和/ 或右边界, VuGen 将搜索这些边界之间的文本。VuGen 找到文本 后,会将其分配给某个参数。具体函数请看文章 附件即HELP。
举个例子说明吧:
比如说对源码中的 的orderId的值进行关联,那么我们可以这样写:
web_reg_save_param("orderId", "LB=name=\"orderId\" value=\"", "RB=\"", LAST);
这个就是要在整个HTML文件中找左边界是:name="orderId" value="
右边界是:"
中间文本的值,找到后赋给orderId。
这样一个手工关联就做好了,很简单吧。
另外:web_reg_save_param一般用在提交web_submit_form,或web_url函数之前。
附件:
函数的语法如下所示:
下表列出可用的属性。注意,属性值字符串(例如 Search=all)不区分大小写。
NotFound 找不到边界并且生成了空字符串时的处理方法。默认值 “ERROR”表示找不到边界时 LoadRunner 应发出错误消 息。如果设置为“EMPTY”,则不会发出错误消息,并且 脚本的执行将继续进行。注意,如果为脚本启用了“出现 错误时仍继续”,则即使将 NOTFOUND 设置为 “ERROR”,在找不到边界时脚本将仍然会继续执行,但 会将错误消息写入扩展日志 文件中
LB 参数或动态数据的左边界。此参数必须为非空的、以 null 结尾的字符串。边界参数区分大小写;要忽略大小写,请 在边界之后添加“/IC”。如果在边界之后指定“/BIN”, 则指定为二进制数据
RB 参数或动态数据的右边界。此参数必须为非空的、以 null 结尾的字符串。边界参数区分大小写;要忽略大小写,请 在边界之后添加“/IC”。如果在边界之后指定“/BIN”, 则指定为二进制数据.
LB/RB赋值的是你要抓取文本的左/右边的内容,例如你要从"abcdefghijk"中抓取"de"保存在变量中,那么LB="abc"和RB="fghijk"就可以抓到你要的东西了
RelFrameID 与请求的 URL 相关的 HTML 页的层次结构级别。可能的 值为 ALL 或数字
Search 搜索的范围 - 搜索已分隔的数据的位置。可能的值为 Headers (仅搜索页眉)、Body (仅搜索正文数据,而不 包括页眉)或 ALL (搜索正文和页眉)。默认值为 ALL
ORD此可选参数表示匹配的序号或出现的次数。默认序号为 1。 如果指定“All”,则会将参数值保存在数组中,是将找到的动态变量保存到数组中。 默认是ord=1.如果搜索到的字符是多个,并想将他保存在数组里,则ord=all;他们分别保存到pr_1 pr_2 .....。其中pr_count为内部函数,统计数组的个数。
SaveOffset 找到的值的子字符串偏移量,将保存到参数。默认值为 0。 偏移量值必须为非负数,偏移量。从搜索到的字符串中,取子串。默认saveoffset=0.
Savelen 找到的值的子字符串的长度(在指定的偏移量中),将保 存到参数。默认值为 ñ1,表示直到字符串的末尾
Convert 要应用于数据的转换方法: HTML_TO_URL:将 HTML 编码数据转换为 URL 编码数 据格式 HTML_TO_TEXT:将 HTML 编码数据转换为纯文本格式。
函数的一些使用技巧: 1、web_reg_save_param必须在获取返回值的操作前面注册,在获取返回值的操作后面使用 2、保存参数最大不能超过256字节,如果超过256字节请使用int web_set_max_html_param_len (const char *length )函数扩大参数保存范围 例如:web_set_max_html_param_len ("1024"); //扩大参数最大保存范围为1024字节 3、LB和RB后面跟着"/ic",则边界大小写都匹配(不加,也就是默认是大小写敏感的) 例如:web_reg_save_param("IsRight","LB/ic=cache-control: private\r\n\r\n","RB/ic=|",LAST);
目的:取得页面中的商品状态,如果状态是正常态就改为注销态,否则改为正常态。
录制脚本使用的是URL based script
将返回的数据记录到日志
该页面上点击右键,选择属性
看到URL,对照录制下的脚本中有: web_url("modifyOfferingStatePage.do", "URL={url}/web/businessAccept/order/modifyOfferingStatePage.do?offeringId= 282172&offeringSpecId=1&offeringSpecName=普通宽带(ADSL/LAN)&customerName= {clientname}&nodeId=260000&pos1=定购管理&pos2=修改商品状态",
"Resource=0", "RecContentType=text/html", "Referer={url}/web/businessAccept/order/orderMenu.do", "Snapshot=t23.inf", "Mode=HTTP", LAST); 于是在这段代码前添加注册函数: web_reg_save_param("oldstate", "LB/IC=原有商品状态:", "RB/IC=", "Search=body", "Ord=1", "RelFrameId=1", "SaveOffset=57", "SaveLen=4", LAST); web_url("modifyOfferingStatePage.do", "URL={url}/web/businessAccept/order/modifyOfferingStatePage.do?offeringId= 282172&offeringSpecId=1&offeringSpecName= 普通宽带(ADSL/LAN)&customerName={clientname}&nodeId= 260000&pos1=定购管理&pos2=修改商品状态",
"Resource=0", "RecContentType=text/html", "Referer={url}/web/businessAccept/order/orderMenu.do", "Snapshot=t23.inf", "Mode=HTTP", LAST); ............... //将得到的内容存入日志用于检查 lr_log_message("getvalue : %s",lr_eval_string ("{oldstate}"));
if ( lr_eval_string ("{oldstate}") == "正常"){ web_submit_data("modifyOfferingState.do", "Action={url}/web/businessAccept/order/modifyOfferingState.do", "Method=POST", "RecContentType=text/html", "Referer={url}/web/businessAccept/order/modifyOfferingStatePage.do?offeringId= 282172&offeringSpecId=1&offeringSpecName=普通宽带(ADSL/LAN)&customerName= {clientname}&nodeId=260000&pos1=定购管理&pos2=修改商品状态",
"Snapshot=t24.inf", "Mode=HTTP", ITEMDATA, "Name=offering.state", "Value=1", ENDITEM, "Name=offering.recentModifyReason", "Value=修改原因", ENDITEM, "Name=offering.customerId", "Value=281218", ENDITEM, "Name=offering.offeringId", "Value=282172", ENDITEM, "Name=offering.offeringSpecId", "Value=1", ENDITEM, "Name=offering.recentMender", "Value=root", ENDITEM, "Name=offering.recentModifyDatetime", "Value=2005-01-16", ENDITEM, "Name=nodeId", "Value=260000", ENDITEM, "Name=customerName", "Value={clientname}", ENDITEM, "Name=offeringSpecName", "Value=普通宽带(ADSL/LAN)", ENDITEM, "Name=submit.x", "Value=33", ENDITEM, "Name=submit.y", "Value=13", ENDITEM, LAST); } Else { web_submit_data("modifyOfferingState.do", "Action={url}/web/businessAccept/order/modifyOfferingState.do", "Method=POST", "RecContentType=text/html", "Referer={url}/web/businessAccept/order/modifyOfferingStatePage.do?offeringId= 282172&offeringSpecId=1&offeringSpecName=普通宽带(ADSL/LAN)&customerName= {clientname}&nodeId=260000&pos1=定购管理&pos2=修改商品状态",
"Snapshot=t24.inf", "Mode=HTTP", ITEMDATA, "Name=offering.state", "Value=0", ENDITEM, "Name=offering.recentModifyReason", "Value=修改原因", ENDITEM, "Name=offering.customerId", "Value=281218", ENDITEM, "Name=offering.offeringId", "Value=282172", ENDITEM, "Name=offering.offeringSpecId", "Value=1", ENDITEM, "Name=offering.recentMender", "Value=root", ENDITEM, "Name=offering.recentModifyDatetime", "Value=2005-01-16", ENDITEM, "Name=nodeId", "Value=260000", ENDITEM, "Name=customerName", "Value={clientname}", ENDITEM, "Name=offeringSpecName", "Value=普通宽带(ADSL/LAN)", ENDITEM, "Name=submit.x", "Value=33", ENDITEM, "Name=submit.y", "Value=13", ENDITEM, LAST); } 从日志中截取的真实的返回内容为: vuser_init.c(689):
\r\n vuser_init.c(689): \r\n vuser_init.c(689): 原有商品状态: \r\n vuser_init.c(689): 正常 \r\n vuser_init.c(689): \r\n
vuser_init.c(689):
\r\n vuser_init.c(689): \r\n vuser_init.c(689): 修改后的状态: \r\n vuser_init.c(689): \r\n vuser_init.c(689): \r\n vuser_init.c(689): \r\n vuser_init.c(689): \r\n vuser_init.c(689): 可以看到左边界是:原有商品状态: , 右边界是:,偏移量为:57(包括了空格), 长度为:4(因为一个汉字长度为2),最后存入变量的值是:正常
4.经验总结 1)为了便于脚本的调试,将返回的数据都写入日志是个好办法; 2)为了验证取得的数据是否是自己期望的,可以将取得的数据写入日志中进行验证, 例:lr_log_message("getvalue : %s",lr_eval_string ("{oldstate}")); 3)因为它是一个注册函数,必须在返回信息前使用,所以注册的位置必须正确,否则很可能得到类似如下错误: 4)vuser_init.c(734): Error -27190: No match found for the requested parameter "oldstate". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size [MsgId: MERR-27190] 5)vuser_init.c(734): Error -27187: The above "not found" error(s) may be explained by header and body byte counts being 0 and 0, respectively. [MsgId: MERR-27187] 6)vuser_init.c(734): web_concurrent_end highest severity level was "ERROR" [MsgId: MMSG-27181] 7)所以使用手工方法,右键页面确定在代码中哪个位置之前注册函数至关重要 8)如果脚本中中文为乱码,可能是因为源文件的字符集和操作系统字符集不匹配。试试:
你可能感兴趣的:(Loadrunner)
00--性能测试简介
云飞烟china
1、性能测试,顾名思义,就是对软件产品的性能进行测试的活动。2、生活中与性能有关的现象或产品:(1)手机玩游戏卡顿、延迟(2)电脑等待时长(3)拖拉机与法拉第在加速度上的不同(4)12306春运时期抢票困难(5)淘宝双11时的访问量及支付宝付单量3、如何做性能测试?主动模拟对服务器的访问,方式有两种(1)找多人来模拟(2)软件模拟4、软件模拟性能测试的工具,目前主要有两种LoadRunner:优点
如何做大数据测试
测试界潇潇
软件测试 软件测试 功能测试 自动化测试 程序人生 职场和发展
测试流程及测试方法没有太大的区别,重点说一下大数据测试相比传统测试的区别:1、数据规模:大数据测试所涉及的数据规模通常是海量级别的,而普通测试所涉及的数据规模较小。2、测试工具:大数据测试需要使用专门的测试工具和框架,如HadoopUnit、ApacheBigTop、JMeter、LoadRunner等,而普通测试则可以使用通用的测试工具和框架,如JUnit、TestNG等。3、测试目的:大数据测
使用Jemeter对HTTP接口压测
咖啡加剁椒..
软件测试 http 网络协议 网络 功能测试 软件测试 自动化测试 程序人生
我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应该根据当前所处的情况,基于被测对象、时间及成本考虑,采用最合适的工具。闲话少谈,今天笔者要给大家分享的是用Jemeter来进行HTTP接口的压力
性能测试手册:一分钟掌握LoadRunner关联函数应该放在那
Criss陈磊
为什么要有关联函数如果客户端的某个请求是随着服务器端的响应而动态变化,我们就需要用到关联,通过关联函数获取动态的返回值,传给后面的函数使用,完成测试上下文的流程串联。定义:在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器返回的响应内容中查找,得到相应的值,将其存储的变量中,后续请求再通过对应变量指向的内存取出数据发给服务器发,已完成正确的业务流程的性能测
LoadRunner性能测试系统学习教程:脚本编写(1)
川石教育
LoadRunner录制结束后会自动生成一段脚本。这段脚本虽然很简单,但很实用,适合初学者学习。但是在真正进行项目性能测试时,只靠LoadRunner自动生成的脚本还是不够,很难达到业务的要求。因此,在录制脚本结束后,要对脚本进行完善,使其能达到业务模拟的要求,这样尽可能地使虚拟用户模拟时更接近用户的实际使用。本章将从以下几个方面介绍完善脚本的技巧:插入检查点Block(块)技术参数化技术关联技术
【测试运维】性能测试经验文档总结第3篇:VuGen详解(已分享,附代码)
前端运维自动驾驶
本系列文章md笔记(已分享)主要讨论性能测试相关知识。入门阶段:认识性能测试分类-(负载测试、压力测试、并发测试、稳定性测试),常用性能测试指标-(吞吐量、并发数、响应时间、点击数...),性能测试工具选择。性能脚本:1.LoadRunner介绍,2.脚本录制、运行、参数化,3.关联、检查点、事务、集合点。性能场景:1.场景分类、场景设计、场景运行策略,2.资源监控、SLA、IPWizard应用。
【测试运维】性能测试笔记文档第2篇:性能测试分类和指标(已分享,附代码)
python运维
本系列文章md笔记(已分享)主要讨论性能测试相关知识。入门阶段:认识性能测试分类-(负载测试、压力测试、并发测试、稳定性测试),常用性能测试指标-(吞吐量、并发数、响应时间、点击数...),性能测试工具选择。性能脚本:1.LoadRunner介绍,2.脚本录制、运行、参数化,3.关联、检查点、事务、集合点。性能场景:1.场景分类、场景设计、场景运行策略,2.资源监控、SLA、IPWizard应用。
2024年广东省职业院校技能大赛高职组“软件测试“赛项-性能测试报告答案(LoadRunner)
旺仔Sec
数据库 mysql 压力测试 测试工具
2024年广东省职业院校技能大赛高职组“软件测试”赛项任务三性能测试任务要求题目1:使用LoadRunner执行性能测试。1、脚本录制:(1)脚本一:脚本名称:PurchaseAdd。脚本内容:采购专员登录、进行新增采购入库单操作。具体要求如下:
自动化测试详解
莫¥随心
工具学习
什么是自动化测?做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成1到100个测试数据。狭
LoadRunner性能测试课程介绍
一颗小金子
1.1课程介绍①基于一线互联网真实性能测试场景。②对性能测试整体进行剖析,不仅仅限于工具使用。③集脚本编写、场景设计、监控、分析、调优于一体的性能课程。④以实战结合理论的模式,在实战中学习性能技巧。1.1.1第一部分性能测试基础性能测试基础1.1.2第二部分LoadRunner实战1.1.3第三部分全流程性能测试实战全流程实战1.1.4第四部分性能测试扩展性能测试扩展1.2BAT软件测试职业规划1
性能测试工具LoadRunner与登录性能测试分析
CodeKnightShuai
性能测试
1.LoadRunner与JmeterJmeter是开源免费的,LoadRunner是商业收费的。但是LoadRunner具有非常强大的录制功能,具有丰富且灵活的场景,具备丰富的报告性能。1)Jmeter没有录制功能2)LoadRunner可以设计非常丰富的测试场景3)LoadRunner能够产出丰富的测试报告2.LoadRunner三大组件的关系VirtualUserGenerator:VUG用
【软件测试】学习笔记-JMeter 的核心概念
码农丁丁
软件工程 # 软件测试 软件测试 自动化测试 JMeter
这篇文章主要介绍JMeter的核心概念,完善对测试工具的认识。为什么是JMeter性能测试有很多工具,JMeter、Loadrunner、Locust、nGrinder都不乏粉丝。有人认为做性能测试重要的不是工具,是思想。但从学习实践的角度讲,工具在一定程度上决定了工作效率及协作模式。要成为一名测试专家,对工具一定是要精通的。JMeter原生的方式只支持单点工作,团队成员并不能很方便地互相检查脚本
【测试运维】性能测试笔记文档第2篇:性能测试分类和指标(已分享,附代码)
程序员一诺
测试 python笔记 运维 笔记
本系列文章md笔记(已分享)主要讨论性能测试相关知识。入门阶段:认识性能测试分类-(负载测试、压力测试、并发测试、稳定性测试),常用性能测试指标-(吞吐量、并发数、响应时间、点击数…),性能测试工具选择。性能脚本:1.LoadRunner介绍,2.脚本录制、运行、参数化,3.关联、检查点、事务、集合点。性能场景:1.场景分类、场景设计、场景运行策略,2.资源监控、SLA、IPWizard应用。性能
基于Loadrunner的性能分析及调优经验分享
shanmao001
经验分享 测试工具 单元测试
背景公司某个系统的微信端计划将开放给几百上千的人员登录查询,并且登录账号为同一账号多人使用。后台服务能够支撑起多用户的并发操作以及成百上千人登录微信端对生产数据库或者登录查询的性能效率高成为交付可靠生产环境的必要条件。因此,项目组决定提交测试,由测试人员通过自动化方式模拟并发场景,以验证程序的可靠性。问题点描述测试初期,随着时间的推移,Loadrunner客户端不断出现事务通过率下降的情况,或因为
LoadRunner——关联
樑衛東
1,什么是关联关联(correlation)就是把脚本中那些写固定的数据,转变成是来自服务器发送的、动态的、每次都不一样的数据。在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,将值以变量的形式替换录制时的固定值,从而向服务器发出新的正确的请求,这种动态获得服务器响应内容的方法被称作关联。2,为什么要使用关联为了保证Ses
性能测试工具架构
基多里的猫
软件测试 学习笔记 测试工具 架构 性能测试基础知识 性能测试工具架构
背景性能测试工具(LoadRunner为例)性能测试工具通常是指那些用来支持压力、负载测试,能够录制和生成脚本、设置和部署场景、产生并发用户和向系统施加持续压力的工具。性能测试工具录制的是服务端与应用之间的通信数据,而不是应用的GUI操作。选取什么协议,取决于应用和客户端之间的通信协议,了解性能测试工具的架构有助于帮助我们理解性能测试工具的原理。(一起了解下吧,go!go!go!)性能测试工具架构
什么测试自动化测试?
心软小念
软件测试 技术分享 软件测试 职场和发展 开发语言
什么测试自动化测试?做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成1到100个测试数据
python+locust实现简单的性能测试
沈大仙灬
python locust
目录Locust性能测试工具性能测试工具特点loadRunner:JMeter:Locust:安装Locust性能测试案例Locust性能测试工具性能测试工具特点loadRunner:loadrunner是一款非常有名的商业化付费性能测试工具,功能非常强大,使用也较为复杂,目前大多数介绍性能测试的书籍都以该工具为基础,甚至有些书籍整个都在介绍loadrunner的使用JMeter:JMeter同样
自动化测试注意事项
测试涛叔
技术分享 自动化测试 软件测试 测试用例 功能测试 面试 职场和发展
什么是自动化测?做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成1到100个测试数据。狭
IntelliJ IDEA集成JProfiler,入门教程
冰魄寒枪
IntelliJIDEA集成JProfiler,入门教程JProfiler是用于分析J2EE软件性能瓶颈并能准确定位到Java类或者方法有效解决性能问题的主流工具,它通常需要与性能测试工具如:LoadRunner配合使用,因为往往只有当系统处于压力状态下才能反映出性能问题。1.安装jProfiler下载地址http://www.ej-technologies.com/download/jprofi
jmeter常用插件介绍
哈齐先生
jmeter
jmeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如LoadRunner),在功能的全面性上就稍显不足。这篇博客,就介绍下jmeter的第三方插件jmeter-plugins.org和其中常用的几种插件使用方法。一、下载安装及使用下载地址:jmeter-plugins.org安装:下载后文件为plugins-ma
jmeter主界面介绍
雪人来也
jmeter4.0主界面如下图所示:左侧目录树如下图所示:左侧为目录树,测试计划相当于Loadrunner中的测试场景,可以在测试计划下添加测试过程中使用到元件,比如:线程组、事务控制器、sampler等等首先是菜单栏,下面的图标是菜单栏的快捷方式:从左到右依次介绍如下:右侧测试计划编辑区域如下图所示:右侧为测试计划编辑区域,包含用户定义的变量RunteardownThreadGroupsafte
JMeter性能测试,完整入门篇教程
aplez
接口测试 JMeter
1.Jmeter简介ApacheJMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。运行环境为Windows10系统,JDK版本为1.
JMeter性能测试学习笔记-性能测试工具介绍
qq_39149099
Jmeter 测试工具 压力测试 python
性能测试概念:性能测试就是效率的测试市场主流性能测试工具:JMeter,LoadRunner,Locust,Gatling性能测试的流程:1,需求分析,分析系统的性能指标2,准备环境,包含工具、场景等一系列的性能测试相关需求3,准备脚本,基于不同的性能场景完成测试准备4,执行脚本,获取数据5,判断指标是否满足要求,如果达标,还会继续进行进一步的性能测试,获取系统的阈值,测试系统是否具备抗风险能力。
loadrunner检查点/校验函数
一只胖嘟嘟~
自己 servlet java 服务器
目前我用到3款函数,能够满足目前遇到的问题。1、适用范围还挺广的,进入/打开某个页面,判断是否参在某个汉字web_reg_find("Search=Body","SaveCount=regst","Text=登陆成功',LAST);web_image_check("web_image_check","Src=beautyful.gif",LAST);2、获取返回码web_reg_save_para
loadrunner负载机的安装
一只胖嘟嘟~
测试工具
loadrunner主控端控制加压机器,加压端加压,加压端因为需要装的比较多,可能会装几十台,所以不需要安装全部的lr软件,只需要安装负载软件就Ok,我可以把它叫做lr的分身,这个分身就在loadrunner安装软件的一部分,名称是setuploadgenerator.exe。所以就是把这个软件copy到加压机上安装就ok不过还需要再安装下office的一些组件,比如vc_redist_x64.e
loadrunner12在录制脚本时,提示“ssl身份验证失败”
一只胖嘟嘟~
1、我在使用loadrunner12录制脚本时,出现了如下图的提示2、我点击【继续】,浏览器的页面卡死了,不能继续进行下面的录制。解决方案:https://www.cnblogs.com/wxh04/p/9512436.html1、上述博客中提到是ssl协议的版本问题,loadrunner12默认使用的ssl协议版本是“ssl2&3”,我与架构人员沟通后,得知我们使用的是如下版本。2、于是我把lo
loadrunner版本12.53已经有点落后了
一只胖嘟嘟~
测试工具 压力测试
不知道有没有使用loadrunner的小伙伴们,你们都使用它的什么版本呢?我大多数时间都是在用loadrunenr的12.53版本,这几天遇到的一个问题,用12.53总是会提示ssl协议错误,如图错误:ssl_handle_statusencountererror:ssl_error_ssl,errormessage:error1407742e:sslroutines:ssl23_get_serv
loadrunner脚本,并发函数web_concurrent_start(null),web_concurrent_end(null)使用
一只胖嘟嘟~
压力测试
loadrunenr脚本中的代码是串行执行,一般响应时间比较快的服务,误差不会很明显。遇到接口或服务很多的脚本,如果耗时又比较长的话,再串行起来的话,就会很慢。我之前录制脚本的时候经常会看到这个函数的出现web_concurrent_start(null),web_concurrent_end(null),都是成对儿的,回放的时候都报红,之前觉得都是无用的代码,今天才后知后觉,原来这个是并发函li
阶段七第二章 性能测试工具
幼儿园大班首富.
阶段七性能测试 测试工具
一级目录Jmeter和LoadrunnerLoadrunner:工业级的性能测试工具,可以模拟大量用户,并监控性能指标提供报表。优势:·支持的用户量大·详细的分析报表·支持iP欺骗缺点:·收费·体积大·无法定制功能Jmeter:性能测试工具,Jmeter软件的功能与Loadrunner基本一致优点:·免费开源·体积小·可扩展的组件缺点:·不支持P欺骗·分析和报表能力比Loadrunner弱选择jm
tomcat基础与部署发布
暗黑小菠萝
Tomcat java web
从51cto搬家了,以后会更新在这里方便自己查看。
做项目一直用tomcat,都是配置到eclipse中使用,这几天有时间整理一下使用心得,有一些自己配置遇到的细节问题。
Tomcat:一个Servlets和JSP页面的容器,以提供网站服务。
一、Tomcat安装
安装方式:①运行.exe安装包
&n
网站架构发展的过程
ayaoxinchao
数据库 应用服务器 网站架构
1.初始阶段网站架构:应用程序、数据库、文件等资源在同一个服务器上
2.应用服务和数据服务分离:应用服务器、数据库服务器、文件服务器
3.使用缓存改善网站性能:为应用服务器提供本地缓存,但受限于应用服务器的内存容量,可以使用专门的缓存服务器,提供分布式缓存服务器架构
4.使用应用服务器集群改善网站的并发处理能力:使用负载均衡调度服务器,将来自客户端浏览器的访问请求分发到应用服务器集群中的任何
[信息与安全]数据库的备份问题
comsci
数据库
如果你们建设的信息系统是采用中心-分支的模式,那么这里有一个问题
如果你的数据来自中心数据库,那么中心数据库如果出现故障,你的分支机构的数据如何保证安全呢?
是否应该在这种信息系统结构的基础上进行改造,容许分支机构的信息系统也备份一个中心数据库的文件呢?
&n
使用maven tomcat plugin插件debug关联源代码
商人shang
maven debug 查看源码 tomcat-plugin
*首先需要配置好'''maven-tomcat7-plugin''',参见[[Maven开发Web项目]]的'''Tomcat'''部分。
*配置好后,在[[Eclipse]]中打开'''Debug Configurations'''界面,在'''Maven Build'''项下新建当前工程的调试。在'''Main'''选项卡中点击'''Browse Workspace...'''选择需要开发的
大访问量高并发
oloz
大访问量高并发
大访问量高并发的网站主要压力还是在于数据库的操作上,尽量避免频繁的请求数据库。下面简
要列出几点解决方案:
01、优化你的代码和查询语句,合理使用索引
02、使用缓存技术例如memcache、ecache将不经常变化的数据放入缓存之中
03、采用服务器集群、负载均衡分担大访问量高并发压力
04、数据读写分离
05、合理选用框架,合理架构(推荐分布式架构)。
cache 服务器
小猪猪08
cache
Cache 即高速缓存.那么cache是怎么样提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近期开发的项目中有所体会,写下来当作总结也希望能跟大家一起探讨探讨,有错误的地方希望大家批评指正。
1.Cache 是怎么样工作的?
Cache 是分配在服务器上
mysql存储过程
香水浓
mysql
Description:插入大量测试数据
use xmpl;
drop procedure if exists mockup_test_data_sp;
create procedure mockup_test_data_sp(
in number_of_records int
)
begin
declare cnt int;
declare name varch
CSS的class、id、css文件名的常用命名规则
agevs
JavaScript UI 框架 Ajax css
CSS的class、id、css文件名的常用命名规则
(一)常用的CSS命名规则
头:header
内容:content/container
尾:footer
导航:nav
侧栏:sidebar
栏目:column
页面外围控制整体布局宽度:wrapper
左右中:left right
全局数据源
AILIKES
java tomcat mysql jdbc JNDI
实验目的:为了研究两个项目同时访问一个全局数据源的时候是创建了一个数据源对象,还是创建了两个数据源对象。
1:将diuid和mysql驱动包(druid-1.0.2.jar和mysql-connector-java-5.1.15.jar)copy至%TOMCAT_HOME%/lib下;2:配置数据源,将JNDI在%TOMCAT_HOME%/conf/context.xml中配置好,格式如下:&l
MYSQL的随机查询的实现方法
baalwolf
mysql
MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,
JAVA的getBytes()方法
bijian1013
java eclipse unix OS
在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同OS下,返回的东西不一样!
String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如:
byte[] b_gbk = "
AngularJS中操作Cookies
bijian1013
JavaScript AngularJS Cookies
如果你的应用足够大、足够复杂,那么你很快就会遇到这样一咱种情况:你需要在客户端存储一些状态信息,这些状态信息是跨session(会话)的。你可能还记得利用document.cookie接口直接操作纯文本cookie的痛苦经历。
幸运的是,这种方式已经一去不复返了,在所有现代浏览器中几乎
[Maven学习笔记五]Maven聚合和继承特性
bit1129
maven
Maven聚合
在实际的项目中,一个项目通常会划分为多个模块,为了说明问题,以用户登陆这个小web应用为例。通常一个web应用分为三个模块:
1. 模型和数据持久化层user-core,
2. 业务逻辑层user-service以
3. web展现层user-web,
user-service依赖于user-core
user-web依赖于user-core和use
【JVM七】JVM知识点总结
bit1129
jvm
1. JVM运行模式
1.1 JVM运行时分为-server和-client两种模式,在32位机器上只有client模式的JVM。通常,64位的JVM默认都是使用server模式,因为server模式的JVM虽然启动慢点,但是,在运行过程,JVM会尽可能的进行优化
1.2 JVM分为三种字节码解释执行方式:mixed mode, interpret mode以及compiler
linux下查看nginx、apache、mysql、php的编译参数
ronin47
在linux平台下的应用,最流行的莫过于nginx、apache、mysql、php几个。而这几个常用的应用,在手工编译完以后,在其他一些情况下(如:新增模块),往往想要查看当初都使用了那些参数进行的编译。这时候就可以利用以下方法查看。
1、nginx
[root@361way ~]# /App/nginx/sbin/nginx -V
nginx: nginx version: nginx/
unity中运用Resources.Load的方法?
brotherlamp
unity视频 unity资料 unity自学 unity unity教程
问:unity中运用Resources.Load的方法?
答:Resources.Load是unity本地动态加载资本所用的方法,也即是你想动态加载的时分才用到它,比方枪弹,特效,某些实时替换的图像什么的,主张此文件夹不要放太多东西,在打包的时分,它会独自把里边的一切东西都会集打包到一同,不论里边有没有你用的东西,所以大多数资本应该是自个建文件放置
1、unity实时替换的物体即是依据环境条件
线段树-入门
bylijinnan
java 算法 线段树
/**
* 线段树入门
* 问题:已知线段[2,5] [4,6] [0,7];求点2,4,7分别出现了多少次
* 以下代码建立的线段树用链表来保存,且树的叶子结点类似[i,i]
*
* 参考链接:http://hi.baidu.com/semluhiigubbqvq/item/be736a33a8864789f4e4ad18
* @author lijinna
全选与反选
chicony
全选
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>全选与反选</title>
vim一些简单记录
chenchao051
vim
mac在/usr/share/vim/vimrc linux在/etc/vimrc
1、问:后退键不能删除数据,不能往后退怎么办?
答:在vimrc中加入set backspace=2
2、问:如何控制tab键的缩进?
答:在vimrc中加入set tabstop=4 (任何
Sublime Text 快捷键
daizj
快捷键 sublime
[size=large][/size]Sublime Text快捷键:Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所有打开文件Ctrl+Shift+V:粘贴并格式化Ctrl+D:选择单词,重复可增加选择下一个相同的单词Ctrl+L:选择行,重复可依次增加选择下一行Ctrl+Shift+L:
php 引用(&)详解
dcj3sjt126com
PHP
在PHP 中引用的意思是:不同的名字访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址 变量的引用 PHP 的引用允许你用两个变量来指向同一个内容 复制代码代码如下:
<?
$a="ABC";
$b =&$a;
echo
SVN中trunk,branches,tags用法详解
dcj3sjt126com
SVN
Subversion有一个很标准的目录结构,是这样的。比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是svn://proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。
对软件设计的思考
e200702084
设计模式 数据结构 算法 ssh 活动
软件设计的宏观与微观
软件开发是一种高智商的开发活动。一个优秀的软件设计人员不仅要从宏观上把握软件之间的开发,也要从微观上把握软件之间的开发。宏观上,可以应用面向对象设计,采用流行的SSH架构,采用web层,业务逻辑层,持久层分层架构。采用设计模式提供系统的健壮性和可维护性。微观上,对于一个类,甚至方法的调用,从计算机的角度模拟程序的运行情况。了解内存分配,参数传
同步、异步、阻塞、非阻塞
geeksun
非阻塞
同步、异步、阻塞、非阻塞这几个概念有时有点混淆,在此文试图解释一下。
同步:发出方法调用后,当没有返回结果,当前线程会一直在等待(阻塞)状态。
场景:打电话,营业厅窗口办业务、B/S架构的http请求-响应模式。
异步:方法调用后不立即返回结果,调用结果通过状态、通知或回调通知方法调用者或接收者。异步方法调用后,当前线程不会阻塞,会继续执行其他任务。
实现:
Reverse SSH Tunnel 反向打洞實錄
hongtoushizi
ssh
實際的操作步驟:
# 首先,在客戶那理的機器下指令連回我們自己的 Server,並設定自己 Server 上的 12345 port 會對應到幾器上的 SSH port
ssh -NfR 12345:localhost:22
[email protected]
# 然後在 myhost 的機器上連自己的 12345 port,就可以連回在客戶那的機器
ssh localhost -p 1
Hibernate中的缓存
Josh_Persistence
一级缓存 Hiberante缓存 查询缓存 二级缓存
Hibernate中的缓存
一、Hiberante中常见的三大缓存:一级缓存,二级缓存和查询缓存。
Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存是由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存
对象关系行为模式之延迟加载
home198979
PHP 架构 延迟加载
形象化设计模式实战 HELLO!架构
一、概念
Lazy Load:一个对象,它虽然不包含所需要的所有数据,但是知道怎么获取这些数据。
延迟加载貌似很简单,就是在数据需要时再从数据库获取,减少数据库的消耗。但这其中还是有不少技巧的。
二、实现延迟加载
实现Lazy Load主要有四种方法:延迟初始化、虚
xml 验证
pengfeicao521
xml xml解析
有些字符,xml不能识别,用jdom或者dom4j解析的时候就报错
public static void testPattern() {
// 含有非法字符的串
String str = "Jamey친ÑԂ
div设置半透明效果
spjich
css 半透明
为div设置如下样式:
div{filter:alpha(Opacity=80);-moz-opacity:0.5;opacity: 0.5;}
说明:
1、filter:对win IE设置半透明滤镜效果,filter:alpha(Opacity=80)代表该对象80%半透明,火狐浏览器不认2、-moz-opaci
你真的了解单例模式么?
w574240966
java 单例 设计模式 jvm
单例模式,很多初学者认为单例模式很简单,并且认为自己已经掌握了这种设计模式。但事实上,你真的了解单例模式了么。
一,单例模式的5中写法。(回字的四种写法,哈哈。)
1,懒汉式
(1)线程不安全的懒汉式
public cla