﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-欢迎访问我（晴耕雨读）的Blog-随笔分类-My Load</title><link>http://www.cnitblog.com/EyeSmoke/category/153.html</link><description>你有千种专横，我有千种冷</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 07:10:52 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 07:10:52 GMT</pubDate><ttl>60</ttl><item><title>各论坛中测试同行的经典语录摘选</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/11/22/36731.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Thu, 22 Nov 2007 06:42:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/11/22/36731.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/36731.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/11/22/36731.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/36731.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/36731.html</trackback:ping><description><![CDATA[<span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; FONT-FAMILY: Tahoma; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span style="FONT-FAMILY: Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br><font face=Tahoma>PPent死活不更新，于是去他的博客把文章给抄了过来，呵呵&#8230;&#8230;</font><br><br>【各论坛中测试同行的经典语录摘选】<br></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>测试用例必须做为一个集合使用才能达到最佳效果，单个测试用例并不能说明用例设计人员的技术水准。即测试用例设计策略最大的价值体现是整体，而不是某个个体。软件测试的手段是尽早发现至今未发现的错误，究其根本还是追求最大利润的体现。软件测试配合开发、<span lang=EN-US>QA使软件总体质量达到可接受的范围，取得成本和质量的最大效益就是一个成功的测试。 </span></font></p>
<p style="MARGIN-LEFT: 21pt"><span lang=EN-US><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>测试必须在时间、质量和成本之间获取一个平衡点，这是测试策略和测试设计的价值体现。</font><span lang=EN-US><font face=宋体> <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>软件是一个工程，测试用例的设计必须系统而全面。</font><span lang=EN-US><font face=宋体> <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>是否能够学到东西不在于公司</font><span lang=EN-US><font face=宋体>,而在于你自己.公司只能给你学习的机会,把握机会的是你自己. <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US><font face=宋体>UI的自动化，听起来很神秘，学起来很简单，真正用起来却很困难 <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US><font face=宋体>UI自动化测试的难点一般是测试对象的获取、测试流程的控制和异常情况的处理。 <br>测试用例是测试工作中最重要的元素或测试件（test ware）之一，是测试执行的基础。测试用例不仅能有效地帮助实施后继的回归测试、知识传递和测试的管理等，而且更重要的是能更快、更有效地发现缺陷，确保测试的系统性和全面性，在测试的深度和广度达到所期望的目标。也就是说，测试用例的质量就是满足测试目标的程度，体现在 &#8220;测试覆盖率和测试执行效率&#8221;两个方面。 <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>测试同仁的心态很重要，质量意识也同样重要：一个不重视质量的人，无论走到那里，都不会成功！</font><span lang=EN-US><font face=宋体> <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>测试人员应该具备的职业道德，职业素养，技术基础。技术基础知识虽然是最先具备的、必要的本能的条件，但具备一个什么样的职业道德意识，有什么样的职业素养才是能够决定你在这条路上能走多远，作出多少成绩所必须具备的。</font><span lang=EN-US><font face=宋体> <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>就拿项目经理来说应该是个管理职位</font><span lang=EN-US><font face=宋体>,但我们中国软件企业的项目经理,大都数做的是技术经理的事情你说的凝聚力和团队建设都是需要的，人的管理就最难的，要把不同经验、不同背景的人放在一个团队中，又要发挥每个人的积极性，保持团队人员稳定，是不容易的。<br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>做</font><span lang=EN-US><font face=宋体>leader或组长时间久了，经验就有了，没有人天生就会管理，工作经验锻炼人，培养人，所以如果你在一个管理规范的团队中工作，你就能学到管理上的技术，项目做多了，任何项目都应付自如。我很佩服职业经理人，人家就是懂管理，经验丰富。再说，我们就算不会管理，如果项目做好了，团队稳定，那起码也有管理的作用，时间长了，自然就知道如何管理团队了。 <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>在公司</font><span lang=EN-US><font face=宋体>,下属,客户之间找到利益的平衡 能够平衡的很好的人,就会管理。 <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>性能测试要先弄清楚将来部署环境</font><span lang=EN-US><font face=宋体>,开发工具,开发架构是什么,最后才弄清楚要测试什么,然后开始测试方法。<br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>如何判断一个人的实际操作能力是许多</font><span lang=EN-US><font face=宋体>HR们经常问我的问题。其实说起来很简单，只要看他做过什么、做成了什么、怎么做成的。做过什么是判断他的经验，做成什么是判断他的能力，怎么做成的是判断他的思维方式。这些都可以从简历和面谈中以及适当的背景调查中得到印证，而不是听他说将来能干成什么。 <br style="mso-special-character: line-break"><br style="mso-special-character: line-break"></font></span></p>
<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face=宋体>具备什么样的素质才是合格的软件测试工程师？软件测试的具体工作内容包括：理解用户的需求和体验，校正设计和项目计划，运用良好的测试方法和实践，撰写有效的测试计划，设计有效的测试用例，推动自动化测试，调查分析<span lang=EN-US>bug的根本病因，追求卓越的技术和业务能力，充分的团队合作，以及紧密地联系和关注用户和合作伙伴。 <o:p></o:p></span></font></p>
<p>&nbsp;</p>
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/36731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-11-22 14:42 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/11/22/36731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装LoadRunner9.0</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/10/29/35540.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Mon, 29 Oct 2007 08:06:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/10/29/35540.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/35540.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/10/29/35540.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/35540.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/35540.html</trackback:ping><description><![CDATA[<p>这几天又去51转了一圈，嘿嘿，居然发现了『大漠飞鹰』大侠的破解LoadRunner9.0的文章，飞鹰大侠的LoadRunner破解系列一直都是51的镇坛之宝啊，于是心里面又发痒了起来。终于昨天晚上忍不住，一边看米兰VS罗马，一边就吭哧吭哧的就跑到Mercury的站点，下载了最新版本的LoadRunner。<br>下载地址如下：<a href="http://esd.mercury.com/akdlm/trial/lr/LR9Download.exe">http://esd.mercury.com/akdlm/trial/lr/LR9Download.exe</a> </p>
<p>呵呵，今天上班的时候心里面不住的打鼓，谁叫自己得了个宝呢。终于快到中午的时候忍不住，开始准备安装9.0。OK，从Mercury站点当下来的文件是一个单Exe自解压安装包。安装是不需要任何诀窍的，直接解压缩即可。</p>
<p>注意事项：<br>1、安装目录和安装文件目录都不要带中文，否则会出现拒绝访问的错误；<br>2、解压时如果遇到MolizzaFireFox插件拒绝访问的问题，请停止掉系统中的一些软件服务后再尝试，我遇到这个问题时最初是进入到安全模式下进行解压的。但是安装LoadRunner时仍然遇到这个问题，而安装LoadRunner是无法唉安全模式下完成的。所以我停止了McAfee、Oracle、无线网卡等相关软件的服务后，安装成功的。<br>3、使用破解文件，破解完成。</p>
<p>不过，没觉得比LoadRunner8.1多些什么东西，看来还要多试试才能了解，可怜我的8.1版本，才使用了5个月就被替代&#8230;&#8230;<br></p>
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/35540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-10-29 16:06 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/10/29/35540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>性能测试的饮水机模型</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/07/28/30838.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Sat, 28 Jul 2007 09:57:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/07/28/30838.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/30838.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/07/28/30838.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/30838.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/30838.html</trackback:ping><description><![CDATA[<p>很早前看过Jacki的理发店模型，有一天在51上回帖的时候就突发奇想，写了饮水机做模型，最近正好有空，于是把这个思路记下来，方便以后调用。<br><br>是由这样的一个问题引发的：<br><span class=smalltxt><span class=bold>事务的最大响应时间和最小响应时间相差很大，那是什么原因？？</span></span><br>其实这个问题问的很简单，但不好回答，因为原因可能太多了。于是我们把问题转化一下：有什么办法可以提高事务的响应时间？<br><br>举个饮水机的例子：<br>屋子里面只有1个饮水机，10个用户同时去倒水，每个人倒水都要用1分钟时间；<br><br>那么第一个用户只要1分钟就完成了这个事务，但是第9个用户完成这个事务就需要9分钟。<br>因为大家都要排队。（这一点很象WebLogic里面的队列）</p>
<p>但是这桶水里面的容量总共只有9杯，倒完之后就要换水。所以第10个人等了20分钟才喝到水，因为他换水的时间比较长。（很象是JVM的垃圾收集）</p>
<p>这个例子里面，10个用户并发，并发同样的事务，分别需要1到20分钟。事务的最大响应时间和最小响应时间相差很大，那是什么原因呢？</p>
<p>可以从以下几个角度出发思考问题，发现原因所在。啥角度呢，就是问一下：有什么办法可以提高我的事务请求的时间呢？</p>
<p>1、增加饮水机；（类似于集群，效率提高是非常明显的）<br>2、增加饮水机容量；（类似于提高HeapSize了，在WebLogic中，提高HeapSize的另外一个代价就是GC的时间会变长，在GC这个时间段内，任务都是挂起的。废话，在换水的时候当然所有人只能等待了啊）<br>3、减少每个用户倒水的时间；（比如调整SQL语句，在历次的性能测试过程中，如果硬件条件不变的话，没有比这招更能带来效果的了）<br>4、减少每个用户请求的水资源；（比如优化业务逻辑，这需要测试人员对代码非常熟悉，目前能做到这点的恐怕还只有开发人员）<br>5、增加饮水机的出水率；（提高了单位时间内的ThroughOut，那TPS肯定是提高了）<br>等等；<br></p>
那么这样子之后就可以回答上面的问题了：<br>有可能是SQL语句效率不高，有可能是业务逻辑太复杂了，也有可能是有可能是硬件条件实在太差。<br><br>当然，假如有人非要让你回答，<span class=smalltxt><span class=bold>事务的最大响应时间和最小响应时间相差很大，那是什么原因？这时候可以很大声的说，因为要排队啊。<br><br>呵呵，另外发现我们公司的食堂是一个非常有意思的性能测试环境。每天11:20起，每20分钟并发1000多号人去吃饭，共计5拨，另外食堂有10个排队窗口，可容纳1200人同时就餐。<br><br>嗯，思路还没整理好，这篇先这样，以后再来看看。</span></span> 
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/30838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-07-28 17:57 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/07/28/30838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LoadRunner中实现一个系统下多用户多业务同时并发的场景设计</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/07/01/29279.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Sun, 01 Jul 2007 09:47:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/07/01/29279.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/29279.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/07/01/29279.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/29279.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/29279.html</trackback:ping><description><![CDATA[场景要求如下：100个用户，其中10个用户执行A业务逻辑、20个用户执行B业务逻辑、30个用户执行C业务逻辑、40个用户执行D业务逻辑；要求这100个用户的操作是同时并发的。<br><br>由于多业务操作，那么首先会想到录制4个脚本＋Group方式去执行这个场景，但是真的能做到吗？<br>每个单独的脚本中，都能控制同时执行A、或者B；但是怎么样控制ABCD同时执行呢？<br><br>所以我的办法是录制1个脚本，脚本中分别包含ABCD四个业务逻辑，分别用TrasactionA、TrasactionB、TrasactionC、TrasactionD表示。<br>首先确认以上操作是能够完成的，哪怕是录制4个脚本，然后手工将这四个脚本合并。<br><br>完成以上操作之后我们就有了这样的1个脚本，在这个脚本中是一个顺序执行的脚本，ABCD，如下：<br><br>Action<br>｛<br>TransactionA；<br>TransactionB；<br>TransactionC；<br>TransactionD；<br>｝<br><br>然后通过判断VUserID的方式来进行用户的分配，首先在ParameterList中新建一个VUserID类型的参数，定义为NewParam_VUserID；<br>那么在LoadRunner脚本中可以这样子引用到；<br><br>char ParamVUID_Nbr[24];<br>int ParamVUID_INT;<br>sprintf(ParamVUID_Nbr,"%s",lr_eval_string("{NewParam_VUserID}"));<br>lr_save_string(ParamVUID_Nbr,"ParamVUID_Nbr");<br>通过atoi函数进行字符串和数字之间的转换；<br>ParamVUID_INT = atoi( lr_eval_string("{ParamVUID_Nbr}"));<br><br>然后改写脚本为<br>Action<br>{<br>在这里加入集合点;<br>if (ParamVUID_INT&lt;=10)<br>TransactionA；<br>if (((ParamVUID_INT&gt;10)&amp;&amp;(ParamVUID_INT&lt;=30))<br>TransactionB；<br>if (((ParamVUID_INT&gt;30)&amp;&amp;(ParamVUID_INT&lt;=60))<br>TransactionC；<br>if (ParamVUID_INT&gt;60)<br>TransactionD；<br>}<br><br>OK，这下子应该可以顺利实现100个用户的按比例分发，并且让A、B、C、D并发执行了。<br><br><br>超级PS：前几天试验了一下，集合点是可以跨脚本的，所以这个方法基本上是又破又长了，^_^<br>
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/29279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-07-01 17:47 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/07/01/29279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在LoadRunner中快速获得毫秒数</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/06/28/29197.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Thu, 28 Jun 2007 11:36:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/06/28/29197.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/29197.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/06/28/29197.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/29197.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/29197.html</trackback:ping><description><![CDATA[最近在51上看到的，自己也尝试了一下，觉得挺好使的。<br><br>1、打开Loadrunner，进入VUser录制脚本界面；<br>2、进入Parameter List界面，New一个参数出来，参数名自定义，我在这里定义为sec；<br>3、Parameter Type选择为Date/Time；<br>4、Date/Time format选择为%Y-%m-%d %H:%M:%S.000；<br>5、删除前面的%Y-%m-%d %H:%M:%S，只留下.000；然后在小数点前面再加个0吧；<br>6、这样子，Format就变成0.000；<br>7、OK，回到脚本编辑界面，键盘一敲，输入：<br>&nbsp;&nbsp;&nbsp;&nbsp; lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;lr_log_message(lr_eval_string("{sec}"));<br>&nbsp;&nbsp;&nbsp; &nbsp;return 0;<br>8、run一下，看到结果：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Starting action Action.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.698<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.699<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.700<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.701<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.702<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.703<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.705<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.706<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.707<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.709<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ending action Action.<br>9、下面就是怎么引用的问题了，^_^
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/29197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-06-28 19:36 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/06/28/29197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过用户ID和迭代次数生成LoadRunner参数的情况</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/05/21/27357.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Mon, 21 May 2007 02:00:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/05/21/27357.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/27357.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/05/21/27357.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/27357.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/27357.html</trackback:ping><description><![CDATA[<p>在这次性能测试过程中，有这样的一个场景：<br>要求数据：<br>交换局：2W<br>网元：2W<br>用户端口：2000W<br>交接箱：4W<br>分线盒：160W<br>主干＋配线线对：5000W</p>
<p>性能测试场景：<br>每用户地址可开1000门电话，即1个用户地址下挂1000个号码资源；<br>并发用户数从400起，每5分钟增加10个用户直到满足以下三个条件时退出：<br>1、总体事务错误率在统计区间内的平均值首次大于1％；<br>2、服务器CPU负载在统计区间内的平均值首次大于80％；<br>3、被测系统任一服务器主机发生操作系统重启情况；</p>
<p>根据以上场景，和开发人员讨论、和预测试的经验，初步判断系统可并发用户为500左右，则系统运行时间为1小时左右，每装一门电话系统运行时间为10&#8243;钟左右，think_time设定为3*3＝9&#8243;钟，迭代次数预估计为180次，也不排除更多的可能性；<br>则计划需要20W条基础数据，数据建立规则如下：<br>号码段从99000001到992000000；<br>用户地址从&#8220;XX街道XX小区XX号13B000001&#8221;到&#8220;XX街道XX小区XX号13B002000&#8221;；<br>每分线盒下挂100个资源，分线盒资源编号从000001到000200；<br>用户端口、线对编号后六位从000001到200000；</p>
<p>由于参数量比较大，所需要参数化的内容也比较多，所以经过尝试后不打算使用参数文件或者从数据库读取参数的方式；<br>而是使用VUserID＋IterationNumber生成参数；<br>参数化的过程如下：<br>1、在系统参数中为脚本建立ParameteType为VUser ID 和IterationNumber的参数，分别使用％3S【NewParam_VUserID】和％3D【NewParam_ItrationNbr】；<br>2、将两个参数叠加，形成六位数字，作为基本参数；<br>3、当迭代数超过200时，VUserID＋500，IterationNumber－200，重新生成六位基本参数；<br>4、分线盒资源参数、地址资源参数通过基本参数的换算后得到；<br>所使用到的函数以及方法都是比较常用的，如下：<br>1、sprintf：合并两个参数，并将其保存为基本参数；<br>sprintf(ParamVI,"%s%s",lr_eval_string("{NewParam_ItrationNbr}"),lr_eval_string("{ParamVUID_Nbr}"));<br>2、lr_save_string：保存参数用；<br>lr_save_string(ParamVI,"ParamVI");<br>3、atoi：字符转数字；<br>4、itoa：数字转字符；<br>5、intlength：判断字符串长度；</p>
<p>当这样做了之后，会发现参数化的过程也变得非常简单，简单的将需要参数化的内容替换成{ParamVI}即可，为调试脚本和数据节约了大量的时间，也为测试结果打下了比较好的基础；</p>
<p>PS：总的来讲过程比较简单，但想法比较有意思，所以Blog出来希望给出指导建议。<br></p>
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/27357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-05-21 10:00 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/05/21/27357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>明天起进入预测试阶段～！</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/05/17/27089.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Wed, 16 May 2007 17:22:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/05/17/27089.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/27089.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/05/17/27089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/27089.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/27089.html</trackback:ping><description><![CDATA[明天进入预测试阶段，也终于从无尽的调试脚本中解放出来～～<br>今天很难得上了一下网，记录一下这个时间点。<br><br>这次测试前准备工作中收获还是比较多，测试完成后再写一下，今天太晚了，呵呵
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/27089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-05-17 01:22 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/05/17/27089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LoadRunner如何监控不同操作系统的服务器？</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/05/09/26780.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Wed, 09 May 2007 07:33:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/05/09/26780.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/26780.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/05/09/26780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/26780.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/26780.html</trackback:ping><description><![CDATA[<p>其实挺差劲的，工作到现在只接触过OS为HPUX和IBMAIX的机器，那几天听同事谈论几种操作系统的差别，谈到Linux、Solaris和FreeBSD，非常的遗憾，没有真实的接触过。<br><br>以上是题外话，我把如何在LR中监控以上服务器性能的办法Blog一下，以后如果碰到其他OS的机器，我想也都可以使用同一办法搞定的吧。<br><br>首先需要在被监控机器上打开值守程序，一般默认是不开的。<br><br>找到etc目录下inetd.conf文件，用Vi编辑器进行编辑。找到rstatd的那一行，前面有个#号，表示注释掉了，删掉这个#号后保存退出。有些人不习惯Vi的话可以FTP到本地，编辑后上传覆盖。<br><br>然后就是使用ps命令将inetd程序重启一下；Ps -ef|grep inetd，找到该inetd的进程号，将其干掉；再度执行一下inetd命令即可，不知道该命令如何执行的话，就直接引用Ps出来的命令行即可。<br><br>&gt;ps -ef|grep inetd（显示inetd的进程）<br>root&nbsp; 254076&nbsp; 188552&nbsp;&nbsp; 0&nbsp;&nbsp; Apr 24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp; 0:00 /usr/sbin/inetd <br>root 2301994 1642496&nbsp;&nbsp; 0 15:57:18&nbsp; pts/2&nbsp; 0:00 grep inetd </p>
<p>&gt;kill 254076（杀死进程）</p>
<p>&gt;/usr/sbin/inetd（重启命令，其实就是上面ps命令查询出来的）</p>
<p>&gt;ps -ef|grep inetd（验证一下是否启动）<br><br>这样子就可以直接在LR中监控了，选择UnixResource，Add Measurement，输入Unix机器的IP选择监控指标即可。<br><br>至于那些指标究竟表示的什么意思，其实很好理解了啊。不过还是不要以如下解释为准，先看一下LR的帮助手册里面的定义，然后再去专业网站上仔细看看吧。<br>CPU：CPU利用率；<br>AvLoad：最近一分钟内的系统平均负载；<br>PageRate：磁盘与内存交换数；<br><br><br><br><br></p>
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/26780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-05-09 15:33 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/05/09/26780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何调试LoadRunner脚本？</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/05/08/26742.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Tue, 08 May 2007 08:50:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/05/08/26742.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/26742.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/05/08/26742.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/26742.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/26742.html</trackback:ping><description><![CDATA[<p>最近调试Web协议脚本的工作做的比较多，有了一些收获，于是写下来。</p>
<p>1、设置断点<br>&nbsp;&nbsp;&nbsp; 其实和很多开发工具一样，LR中也能设置断点，具体菜单在：Insert － Toggle BreakPoint；<br>&nbsp;&nbsp;&nbsp; 设置完断点后，当调试执行该脚本时，即会在该处停留，其后的步骤可以使用单步执行等。LR比较笨的是，断点是和行数绑定的，而不是和脚本。我经常在脚本的前面增加代码后，导致断点失位。我用的版本是8.0，不知道现在的新版本有没有改进这些问题。</p>
<p>2、增加Log<br>&nbsp;&nbsp;&nbsp; 一种办法就是手工打Log；<br>&nbsp;&nbsp;&nbsp; 我比较喜欢这样，但只是在需要调试参数的时候使用；在某一行写上类似于lr_log_message("getvalue:ParamVUID_Nbr %s", lr_eval_string("{ParamVUID_Nbr}"))这样，就可以了。执行到这一步骤时，会在日志中打出该参数的值，如getvalue:ParamVUID_Nbr 001001。<br>&nbsp;&nbsp;&nbsp; 另一个办法就是在RunTimeSetting中设置ExecuteLog了。<br>&nbsp;&nbsp;&nbsp; 分别有三种ExecuteLog。<br>&nbsp;&nbsp;&nbsp; ParameterSubStitution：日志中显示每行脚本中执行时的参数；<br>&nbsp;&nbsp;&nbsp; DataReturnByServer：日志中显示从服务端返回的值，这招在手工关联时非常管用；大家在手工关联需要动态获取服务端返回值的时候肯定都会去ViewTree的吧？但是有时候Tree不显示，告诉你：无法显示XML。这时候想要知道服务端究竟回给了哪些数据就可以使用这个ExecuteLog了。不过我现在也很懒，很少有耐心去打印这个日志，当我想知道服务端回给了哪些值的时候，我就直接去脚本目录查看data目录下的文件～～汗啊<br>&nbsp;&nbsp;&nbsp; AdvancedTrace：日志中显示每行脚本中执行的函数以及参数；这个我用的时候觉得没啥意思。</p>
<p>3、被测系统日志<br>&nbsp;&nbsp;&nbsp; 有时候这样做需要有开发人员的协助；在VUGenerator模拟执行的过程中被测系统也可以在关键步骤中打印日志，这样可以更好的协助测试人员调试脚本。</p>
<p>不过大部分脚本调试起来都不会很麻烦，以上几个步骤完全是因为在广州做入网测试的时候，电信方要求过多，被逼出来的～</p>
<p><br>&nbsp;&nbsp;&nbsp; </p>
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/26742.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-05-08 16:50 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/05/08/26742.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LoadRunner8.0场景运行中能否获取唯一的参数值？</title><link>http://www.cnitblog.com/EyeSmoke/archive/2007/04/18/25877.html</link><dc:creator>晴耕雨读</dc:creator><author>晴耕雨读</author><pubDate>Wed, 18 Apr 2007 07:03:00 GMT</pubDate><guid>http://www.cnitblog.com/EyeSmoke/archive/2007/04/18/25877.html</guid><wfw:comment>http://www.cnitblog.com/EyeSmoke/comments/25877.html</wfw:comment><comments>http://www.cnitblog.com/EyeSmoke/archive/2007/04/18/25877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/EyeSmoke/comments/commentRss/25877.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/EyeSmoke/services/trackbacks/25877.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman">最近在电信进行2.0系统的入网测试，其中在性能测试环节遇到了一个问题：<br><br>电信要求我方提供的参数具备如下要求：<br>1、唯一性；<br>2、随机性；<br>3、数据量能支持8小时疲劳测试且不违反上述规则。<br><br>接着局方就通过交流中建议，在LR脚本中通过调用DLL的方式实现上述规则。<br><br>根据局方的意思，就是LR中设置参数时把&#8220;Select Next Row&#8221;属性设为&#8220;Unique&#8221;，按场景需要把&#8220;Allocate&nbsp;values for each user&#8221;属性设置一个值，这个功能并不可靠。<br><br>说实话，在以前测试的过程中，我还没有遇到Unique参数设置失效的情况，但既然局方表态了，我们还得照着他们的意思改，谁让甲方乙方的关系摆在这儿呢。<br><br>所以Unique是否有效这个问题暂时不讨论，如何实现DLL的功能呢？<br><br>经过讨论，决定使用【迭代次数＋用户ID】形成唯一的值，根据这两个值，从DLL中产生需要的参数；<br><br>Test.DLL在VC中创建，基本写法如下：<br>int ReturnParam(int VuserID, int ItrationNumber) <br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int ReturnRes;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Res = 业务逻辑，在此省略;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ReturnRes;<br>} <br><br>在LoadRunner中调用时如下：<br>lr_load_dll("Test.dll");<br><span lang=EN-US><font face="Times New Roman"><font size=2>lr_message("Param1 %d",ReturnParam({VUserID},{ItrationNumber}));<br><br>实现完毕，下一步就是参数化的过程了&#8230;&#8230;</font></font></span></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman">&nbsp;</p>
<img src ="http://www.cnitblog.com/EyeSmoke/aggbug/25877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/EyeSmoke/" target="_blank">晴耕雨读</a> 2007-04-18 15:03 <a href="http://www.cnitblog.com/EyeSmoke/archive/2007/04/18/25877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>