此刻开始,这里成为了我的心情日记。技术性的话题会慢慢变少.......我想跳出技术圈........

发布新日志

  • 清楚

    2007-10-23 14:39:49

       或许只有在离得最远的时候,才能把曾经走过的那段日子,看的最真确最清楚。 偶尔会想起你,在梦里,在自己伤心迷惑的时候。。。

       遗忘 是我们不可更改的宿命 所有的一切都像是没有对齐的图纸 从前的一切回不到过去 就这样慢慢延伸 一点一点的错开来 也许 错开了的东西 我们真的应该遗忘了。

       我一遍遍的告诉自己需要忘掉你,干干净净,彻彻底底。

  • 转载:LR测试文件/表参数的数据分配和更新方法

    2007-10-23 12:14:39

    转载自:http://www.enet.com.cn/article/2007/0119/A20070119404673.shtml

    因为文章中没有具体的作者,故无法在此注明作者,向该文章的原创者说声抱歉!

    用LR作测试时,往往要设置参数,参数设置的不同直接影响到测试结果,所以是测试中至关重要的一环。曾经在论坛和其他网站上搜寻过类似的问题,想从中找出实际的操作过程,但很遗憾,找到的大都比较零散,或是看了也不明白如何作,实在没办法,才想到了手册,一看之下,才发现用手册上归纳的来作为初步的指导已经绰绰有余。以下是从LR自带的帮助文件里摘出的。

      警戒:以后碰到问题,边在网上搜索,边查手册,不必急着发问,因为你问的别人不一定遇到过,或者根本不理解你的意思,更惨的,放N天也无人问津。

      对于文件和表类型参数,所选的数据分配方法和更新方法会共同影响在场景或会话步骤运行期间 Vuser 用来替换参数的值。

      下表总结了根据所选的数据分配和更新属性的不同,Vuser 所使用的值:

      

    更新方法

    数据分配方法

    顺序

    随机

    唯一

    每次迭代

    对于每次迭代,Vuer会从数据表中提取下一个值

    对于每次迭代,Vuser会从数据表中提取新的随机值

    对于每次迭代,Vuser会从数据表中提取下一个唯一值

    每次出现(仅数据文件)

    参数每次出现,Vuser会从数据表中提取下一个值,即使在同一次迭代。

    参数每次出现,Vuser会从数据表中提取新的随机值,即使在同一次迭代。

    参数每次出现,Vuser会从数据表中提取下一个唯一值,即使在同一次迭代。

    一次

    对于每一个Vuser,第一次迭代中分配的值将用于所有的后续迭代中。

    对于每一个Vuser,第一次迭代中分配的随机值将用于所有的后续迭代中。

    对于每一个Vuser,第一次迭代中分配的唯一值将用于所有的后续迭代中。



      示例

      假设表/文件包括以下所示的值:

      Kim;David;Michael;Jane;Ron;Alice;Ken;Julie;Fred

      如果选择使用“顺序”方法分配数据,则:

      如果选择在“每次迭代”进行更新,则所有 Vuser 就会在第一次迭代使用 Kim,第二次迭代使用 David,第三次迭代使用 Michael,等等。

      如果选择在“每次出现”进行更新,则所有 Vuser 就会在第一次出现时使用 Kim,第二次出现使用 David,第三次出现使用 Michael,等等。

      如果选择更新“一次”,则所有 Vuser 就会在所有的迭代中使用 Kim。

      如果数据表中没有足够的值,则 VuGen 返回到表中的第一个值,循环继续直到测试结束。

      如果选择使用“随机”方法分配数据,则:

      如果选择在“每次迭代”进行更新,则 Vuser 在每次迭代时使用表中的随机值。

      如果选择在“每次出现”进行更新,则 Vuser 就会在参数每次出现时使用随机值。

      如果选择更新“一次”,则所有 Vuser 就会在所有的迭代中使用第一次随机分配的值。

      如果选择使用“唯一”方法分配数据,则:

      如果选择在“每次迭代”进行更新,则对于一个有 3 次迭代的测试运行,第一个 Vuser 将在第一次迭代时提取 Kim,第二次迭代提取 David,第三次迭代提取 Michael。第二个 Vuser 提取 Jane、Ron 和 Alice。第三个 Vuser 提取 Ken、Julie 和 Fred。

      如果选择在“每次出现”进行更新,则 Vuser 就会在参数每次出现时使用列表的唯一值。

      如果选择更新“一次” ,则第一个 Vuser 就会在所有迭代时都提取 Kim,第二个 Vuser 就会在所有迭代时提取 David,等等。

    ===========以下不属于转载文章的内容,来自51testing论坛 shanxi 对我帖子的回复=====================

    以下内容是shanxi对我 http://bbs.51testing.com/thread-93819-1-1.html 问题的回复 深表感谢

    分配给Vuser的第一个unique number=(虚拟用户Run id-1)*Block size per vuser+该Vuser的启动值.
    比如:两个虚拟用户,启动值为1,Block size per vuser为100,
    那么第一个虚拟用户能被分配的数值范围是1~100;第二个是101~200.
    在迭代1 和迭代2 相同的用户中比较数值差异,每步自增1

    另外数值格式(Number format),就是普通的格式控制
    比如%01d,表示个位数字有效.%2d表示两位


     

     

  • 2007年10月18日 LR参数之Unique Number参数类型

    2007-10-18 15:13:37

    今天上午就Unique Number的参数类型做了一个比较细致的关注。发现了几个问题。先看看我整理的一个表格:

    参数类型

    Unique Number

    更新值的时间

    Each iteration

    当超出值时

    Continue with last value

    Block size per vuser

    100

    参数名称

    启动(初始值)

    数值格式(Number format)

    P1

    20071017

    %01d

    P2

    20071001

    %02d

    P3

    20071000

    %02d

    场景12个虚拟用户 迭代1  运行结果:参数被替换2次值 向系统插入了2条记录

    记录1    P1=20071017

    P2=20071001

    P3=20071000

    记录2  P1=20071117

    P2=20071101

    P3=20071100

    场景22个虚拟用户 迭代2  运行结果:参数被替换2次值  插入4条记录

    迭代1

     

     

    记录1    P1=20071017

    P2=20071001

    P3=20071000

    记录2  P1=20071117

    P2=20071101

    P3=20071100

    迭代2

     

     

    记录1    P1=20071018

    P2=20071002

    P3=20071001

    记录2    P1=20071118

    P2=20071102

    P3=10071101

    注:记录中标有红色的数字是与初始值不同之处

    问题:

    1、在这个方案中,参数号码格式起作用了么?起了什么作用?

    2、参数被替换时是不是遵循一定的规律,如果是,是什么?不是以末位数自增的方式么?(实践证明不是)

    3、这个Block size per vuser的具体意义是什么?如果起始值是100,Block size per vuser设置为50,那么数据可选范围是100~149这个我能理解,可是比如我这个表格中,P1的启动值是20071017,设置的Block size per vuser是100,我个人的理解是:P1的取值应该在20071017~20071116.可是P1去能取得2007101118.难道我的理解是错误的。

     ============2007年10月23日=============

    这几天因为需要负责有个项目的验收,所以也没有能够及时看同仁们对我在论坛上的回复,很感激大家的积极发言。对参数的数据分配和更新时间等属性已经理解。但是对当超出值时: Continue with last value 这个,我感觉在上述的试验中仍没有起到作用,还是不明白原因

     

     

  • 2007年10月18日 回答原来参数化的问题

    2007-10-18 11:59:28

    首先感谢qiguojie的回复http://www.51testing.com/?6343/action_viewspace_itemid_64571.html

    ,对我就问题的重新理解帮助很大!

    其次,来解答几个之前理解有误的几个问题:

    1、实际插入到系统中的记录数与迭代的次数有关系。插入记录数与迭代次数相同。

    ---在参数被参数化的值对系统来说都说有效数据的情况下,插入到系统的记录数应该是虚拟用户数*迭代数。插入记录数与迭代次数不一定相等。

    注意:从日志中查询到的参数被替换的值,对于系统来说,未必都是合法的数据。这与你设计的参数属性有关。要注意这个有效性!

    2、从日志上看,参数被替换的参数为: 虚拟用户数*迭代次数。但是通过系统中插入的数据显示说明:在每次迭代过程中,所有的用户都提交相同的值(针对变量在脚本中只出现1次的情况)---不管设置为每次迭代还是每次出现。。。

    ----理解有误,当时没有检测被替换的参数值是否有效,只是关系了被替换的次数。

    3、虚拟用户采用什么方式选取日志中被替换的参数,目前偶还不清楚。恳请大侠们赐教!

    ---只要设置的参数属性和指定的参数数据范围服务系统的设计标准,那么日志中被替换的参数值都会被成功的写入到系统中。

    4、只要有失败的用户,就没有向系统插入数据

    ----进过重新执行验证,不是成功的用户也不插入,是参数化的某个字段值是从数据库中读取。在设置参数属性是忽略了数据的有效性,使得在被替换的参数值中,数据对于系统来说是不存在的。故无法插入到系统中

    5、实际插入到数据库中的记录和迭代次数有关系么?----同1的解答

    6、如果某个参数的更新值时间设置为每次迭代,那么是不是在同一次迭代中,不论设置多少个虚拟用户,都执行相同的参数值?---在参数数据足够的情况下,每个虚拟用户用的参数值都不相同。当然这与设计的参数属性也有关系。

    7、虚拟用户如何选择不同的参数值到实际的系统中呢?这个如何实现?---上面已经有解答。实属理解错误

  • 2007年10月15日 继续原来参数化的问题(疑问一之续二)

    2007-10-15 16:20:25

    首先,通过验证,得出以下结论:

    1、实际插入到系统中的记录数与迭代的次数有关系。插入记录数与迭代次数相同。

    2、从日志上看,参数被替换的菜蔬为: 虚拟用户数*迭代次数。但是通过系统中插入的数据显示说明:在每次迭代过程中,所有的用户都提交相同的值(针对变量在脚本中只出现1次的情况)---不管设置为每次迭代还是每次出现。。。

    3、虚拟用户采用什么方式选取日志中被替换的参数,目前偶还不清楚。恳请大侠们赐教!

    其次,描述一下这次过程的又增加的一些疑问:

    1、设置文件类型参数的属性 如下

     

    补充:参数化对象为向系统录入数据的一个表单内容中的某些字段

    文件类型参数的属性

     

    Select column

    By number:1

    Select next row

    Unique

    Update value on

    Each iterarion

    When out of valies

    Continue with last value

    Allocate Vuser value in the Controller

    Automatically allocate block size

    备注

    该参数一共有6个可选值

     

    场景设置

     

    虚拟用户数/Action迭代次数

    运行结果

    10/1

    表中参数“invoiceNo”的记录数量不足,无法为 Vuser 提供唯一数据。有4个用户运行失败。系统中没有插入数据。日志中共有6个参数替换。

    3/3

    表中参数“invoiceNo”的记录数量不足,无法为 Vuser 提供唯一数据。1个用户运行失败。数据库中没有插入数据。日志中共有6次参数替换。

    2/3

    成功。向系统中插入了3条记录。日志中有参数替换总共6次的记录。

     

    问题:1、只要有失败的用户,就没有向系统插入数据 2、设置的File

    When out of valies

    Continue with last value

    没有起到作用?否则按理来说:当不再有唯一的数据时进行的操作:使用最后的值继续超出值的虚拟用户应该取最后一次的值继续执行并且能成功运行才对啊?

  • 个人空间中日志操作问题

    2007-10-15 16:09:51

    1、如何将已经发布的日志删除?--已经知道了 无意间发现了 窃喜

    2、如何在一篇文章中插入大于等于2张表格?日志的长度是否有限制,最大允许多大字节?

    3、如何向日志中粘贴图片?

    4、我上传一个doc文件,提示不支持该类文件上传,支持什么样的格式?

  • LoadRnner参数化之疑问二

    2007-10-12 16:20:46

    以下问题是最近关注和研究的

    问题1:下拉框如何实现参数化?特别是具有父子关联性的下拉框(子选择框的内容随父选择框选择内容的变化而相应变化)

    问题2:附件能够参数化么?如何实现?

    问题3:用数据库中的值进行参数化(论坛上好像有人谈过,但我没有实践过,想尝试一下oracle)即:LR中脚本参数化时从数据库中提取数据

    问题4:验证:LR参数化的时候能不能从一个EXCEL文件中读取数据的问题

  • LoadRnner参数化之疑问一之续一

    2007-10-12 16:03:17

     

    参数说明

    TBillNo

    tranID

    realCode

    TBillDate

    invoiceNo

    contractNo

    inUnitecode

    参数类型

    都是Unique Number

    Date

    file

    file

    Unique Number

    更新值的时间

    每次迭代

    每次出现

    每次迭代

    每次出现

     每次迭代

    每次迭代

    每次迭代

    当超出值时

    都是contimue with lase value

    File类型还有一个属性:选择下一行:Unique

    原误以为:应该数据库中多了10条不相同的记录

        疑点:1.实际插入到数据库中的记录和迭代次数有关系么?2.如果某个参数的更新值时间设置为每次迭代,那么是不是在同一次迭代中,不论设置多少个虚拟用户,都执行相同的参数值?3.虚拟用户如何选择不同的参数值到实际的系统中呢?这个如何实现?

     

     

  • LoadRnner参数化之疑问一

    2007-10-12 15:57:33

         今天才发现,我以前的很多所谓的‘以为’都是错误的。因为没有仔细查看过,只是按照自己的想法认为就是那样,其结果就没有进一步看问题,也不再思考,以为自己的想法是符合逻辑的,一定是正确的。。。很多时候看到某些内容觉得很容易理解、清晰明了了,就不再去亲自动手去实践。。。此时此刻,才真正领悟了‘没有实践就没有发言权’‘实践是检验真理的唯一标准’的真理!

          言归正传,记录一下今天遇到的问题---暂时没有明白怎么回事?希望看到此文章的同仁们能够给予指点迷津,感激不尽!

          No1:

         执行环境:LR8.1 SP2  参数化类型有日期、文件、唯一编码  设置的变更参数有每次迭代和每次出现(但这个应该不会影响什么,因为脚本没有重复的变量即一个变量只出现了1次)  设置的虚拟用户为5个  Action迭代2次   参数化对象是一张录入表单  所有参数化内容值的设置都大于10条

        运行结果:1.向系统插入了2条数据

                2.日志文件(5个,每个中有2个迭代)---通过‘显示Vuser日志’查看的结果

    日志记录

    TBillNo

    tranID

    realCode

    TBillDate

    invoiceNo

    contractNo

    inUnitecode

    1-1

    201

    201

    201

    2007-10-15

    FP2007101202

    FP2007101202

    201

    1-2

    202

    202

    202

    2007-10-15

    FP2007101201

    FP2007101201

    202

    2-1

    401

    401

    401

    2007-10-15

    FP2007101206

    FP2007101201

    401

    2-2

    402

    402

    402

    2007-10-15

    FP2007101202

    FP2007101202

    402

    8-1

    1

    1

    1

    2007-10-15

    FP2007101205

    FP2007101205

    01

    8-2

    2

    2

    2

    2007-10-15

    FP2007101203

    FP2007101204

    02

    9-1

    101

    101

    101

    2007-10-15

    FP2007101204

    FP2007101203

    101

    9-2

    102

    102

    102

    2007-10-15

    FP2007101203

    FP2007101203

    102

    10-1

    301

    301

    301

    2007-10-15

    FP2007101202

    FP2007101204

    301

    10-2

    302

    302

    302

    2007-10-15

    FP2007101201

    FP2007101203

    302

    插入到系统中的数据

    TBillNo

    tranID

    realCode

    TBillDate

    invoiceNo

    contractNo

    inUnitecode

     

    202

    202

    202

    2007-20-15

    FP2007101201

    FP2007101201

    202

     

    2

     

     

     

    FP2007101203

    FP2007101204

    02

     (参数的相关设置我疑问一续一的文章中上传,附到这文章中,出现问题了,页面不正常了,不知道什么原因)

        

  • God is a girl

    2007-10-12 09:04:35

    Remembering remembering me,
    discover and see all over the world,
    she’s known as a girl to those who a free,
    the mind shall be key forgotten as the past’cause history will last

    god is a girl,
    wherever you are,
    do you believe it, can you recieve it?
    god is a girl,
    whatever you say,
    do you believe it, can you recieve it?
    god is a girl,
    however you live,
    do you believe it, can you recieve it?
    god is a girl,
    she’s only a girl,
    do you believe it, can you recieve it?

    she wants to shine,
    forever in time,
    she is so driven, she’s always mine
    cleanly and free,
    she wants you to be
    a part of the future,
    a girl like me
    there is a sky,
    illuminating us, someone is out there
    that we truly trust

    there is a rainbow for you and me
    a beautiful sunrise eternally
  • 好难的发音

    2007-10-11 11:15:36

         汉语应该是我的第一外语,英语才是我的第二外语。我从6岁开始学习汉语,10岁基本都能听懂。到了大学才真正运用汉语(开口说汉语)。生活在少数民族区的我,在学少数民族语方面(仅限于口语,不懂其文字的)很有天赋,因为我至少会说3种少数民族语(就像英语、法语和德语一样,这样比喻完全是为了让不了解少数民族语言的朋友们知道,少数民族语几乎没有相似之处)。可是学习汉语和英语我就觉得没有那么容易了,感觉我那天赋顿时消音无踪了。感觉其发音方式和我原来接触的不同!而韩语我觉得就容易接受,不知道这是怎么回事。或许真是和自己成长的生活环境的发音习惯有关系,就像广东人说普通话,10个恨不得9个半都能听出来是广东人。

         所以语言很奇妙!

         可能是从小发音方式的问题,有些汉语的发音对于我来说很困难,即使自己觉得很费力的争取读对了,可是老公说还是错的。比如叶子和燕子,我发出来老公说就像一个音。昨晚想说谢幕可被老公听成了羡慕。老公说了,再不好好练口语(汉语口语)就杜绝我和儿子交流,怕儿子学语言时候被搅乱,随我的发音了。

          其实,我一直再努力的学着汉语,并且尽可能的去纠正自己的发音,可是还是做不到很好。虽然是有了进步(我总会这样激励自己 o(∩_∩)o...),但还是有克服不了的困难!有时候真不敢想象播音员的发音是如何练成的?难道人家就是有天赋和基础还是人家比我更努力去克服困难?或许动力也存在差异!

         因为汉语不是我的母语,所以我的汉语很容易受周围环境的影响。在深圳的那段时间,我被老公(当时还是男朋友呢呵呵呵)嘲笑:“你说的是哪的鸟语,能不能好好说话”。可我自己没有感觉出来已经被那里的语言所影响。现在和父母通话或者和朋友聊天,都说我现在已经开口就像北方人了,不过北京味还是没有酝酿成功呢(其实我特别喜欢西安男人说话的那种磁性)。

        社会在进步,语言在提炼,我也一定会去完善我的发音,至少为了我的儿子,我必须要注意自己的发音!!!

  • LoadRunner卸载带来的问题

    2007-10-11 09:19:35

    一直在使用LoadRuner8.1的英文版,后来偶然在网站上获得相应的中文包,不过这个中文包一直好好的被陈置在电脑里,没有去尝试用过。昨天心血来潮,也想看看中文版是不是更方便些,本来偶的英语也不是很好,既然有中文的了,何乐而不安装之呢?

    终于安装到最后一步,问题也接踵而至,提示你的license已经失效。晕,我还以为这只是一个外壳,不至于写进注册表,可惜我错了。真的是不能用了,真的是license失效了。。。怎么办?怎么办?重新执行破解方案?可毕竟安装程序还没有完全结束呢? 不能继续安装了,那就放弃安装,把整个LoadRunner卸载后重装重破解吧。

    在论坛上看到过关于LoadRnner卸载/完全卸载之类的主题,但一直没有进去细看过。简单的认为:卸载无疑就是通过控制面板-->删除应用程序、进入注册表把相应的软件删除、把本地相关的所有文件删除、清空回收站不就ok了。可发现事情没有这么简单。卸载干净以后重新安装,提示:===== 具体信息我忘记了(真是记性不好,不过我以后会补充上的)。然后上网搜索了一把,居然找到了对症下药的帖子。按照他的办法,把一台LR可用的机器上user和 mancine注册表下的LoadRuner导出,然后又导入到了我现在的机器上。。。完了。。。机器启动不了了,还原注册表还是无济于事。。。可能人家说的问题应该是两台操作系统至少相同的方可注册表的导入导出操作(文章没有说,我个人事后想的,因为我导出的系统是windows 2000,而出问题的机器是win XP).

    怎么办?安全模式也进不去了,光盘启动还可以但是只能备份一些东西。。。。还是找不到解决方案,怎么办?重装系统吧,好郁闷的了。

    如果没有破解过,直接用LoadRunner提供的temp license是没有问题的,卸装之后再安装没有问题。破解之后就遇到了上边的问题。如果有时间,我会再重操作一回,然后再总结!

     

  • 原创:使用Ip Spoofer出现的问题

    2007-10-10 12:02:27

    2007年10月10日

    问题描述: 制了一个LR自带的飞机票订票模型的脚本,启用了Ip Spoofer(虚拟Ip都已经成功添加了)和专家模式,运行出现错误,提示信息如下:

    vuser_init.c(12): Error -27792: Failed to transmit data to network: [10054] Connection reset by peer

    vuser_init.c(12): Error -27791: Server "10.1.1.9" has shut down the connection prematurely

    经多次试验得出以下结果:只要不启动IP Sooper功能,运行结果都为pass。

    问题思考:

    1.是不是没有理解好所谓的‘固定Ip’的概念?公司的IP地址是分配的,每个IP与机器的物理地址绑定,但如果用被没有绑定的IP地址(这样网段一样)也可以访问局域网的,只是上不了外网啊?----我会再验证,以取得‘铁证’---一点一点的消除疑点!

    ----其实这个固定IP只是针对运行Controller的机器,即IP地址是设定的而不是自动获取得到的就是了。所添加的Ip与是否绑定物理地址没有关系!

    2.添加虚拟IP后,该生成器的Ip也被改成了第一个虚拟IP地址,难道我的这个观点是错误的?---如果没有,那我也已经将录制脚本中的127.0.0.1改为了第一个虚拟IP地址,而且通过别的(同一局域网内的)机器也能访问修改后的网址----其实不是这样,相当于运行Controller的机子都可以用所有ipconfig/all所得的IP。可以这样去验证,在Controller机子上运行一个程序,虚拟IP设置成功以后,把URL中的127.0.0.1修改成任意一个虚拟IP,网址都能访问。所有被改成了第一个虚拟IP地址的观点我认为是错误的。

    3.如果第2个问题成立,那么原先机器的IP是不是就应该不在ipconfig/all列表里了?---可我现在是在ipconfig/all列表里。

     

    ================2007年10月11日  问题没有重现============

    昨天出现问题没有解决,今天又做了一遍,这次却没有出现任何错误!操作步骤和昨天相同,只是添加的虚拟IP少一些(只是添加了2个)!

    内网(Controller机器启动飞机票程序)外网(51testing)都试过了,除了vuser_init.c(28): Error -27796: Failed to connect to server "www.51testing.com:80": [10060] Connection timed out外没有别的错误提示,而这个提示只是说明部分连接超时,也说明51testing不能够支持这么多用户同时进行一个操作(我设置了18个虚拟用户(不同IP)执行站内搜索操作)

     

    还有一个问题:虚拟IP成功之后,需要再生成器中添加这些IP,才说明虚拟用户用该IP值登录了系统。

     

    如果出现以上错误的提示的朋友,可以看看LR官网给出的信息:

    1.Message Code 27791

    Server 'server name' has shut down the connection prematurely

    The server shut down the connection unexpectedly, possibly in the middle of a response.

    Troubleshooting

      • Ping the remote host to which you were connected. If it does not respond, it may be offline or there may be a network problem. Try again later.
      • Ping a local host to verify that your local network is still functioning.
      • Ping your local router address.
      • Ping a host on the same subnet as the remote host to which you were connected (if you know of one). This will verify that the destination network is functional.
      • Send a "traceroute" command to the remote host. This will not reveal the problem unless you know the router addresses at the remote end, but it may help you determine if the problem is somewhere along the network path.

    2.The standard Windows Sockets error codes are:

    WSAECONNRESET
    10054
    Connection reset by peer

     

  • 北京还是坐车好

    2007-10-10 08:55:45

       北京向来都是以地大人多车多、人杂车乱交通拥挤为名。在北京上班,在路上花费1个小时的属于正常,要是小于1个小时的,就会惊叹:“哇,你太幸福了”,要是说需要1个半小时,则是“不算远”。这对于住在中小城市的上班族来说,我想应该是比较难以想象的。

        我属于哪类?算是“不算远”一族吧。开车要是顺利没有遇上堵车,则需要40多分钟,要是碰上堵车就没准了,最长的一次就是今年的中秋之夜,开车回到家花费了我2个半小时。真是一个汗啊!

        不过最近为了奥运,政府采取了很多好政策来缓解交通压力,比如公交车价格费用调低至4毛(学生是2角)、地铁实行2元通。为了响应这一政策,为了感受这一政策的光环,十一之后我开始乘坐地铁上班,哇,不仅省钱最重要的是很省时间哟。原先6点半出门,到公司都没有普,最快也得7点半。可地铁呢,6点50出门,7点半左右也赶到公司了,虽然人还是比较多的,但这很值得,准备长期改乘地铁上班了!

       要是运气好,能有个坐,就可以小憩一会,偶尔还能眯一会,感觉很惬意!原来我还是很容易满足的!

       正所谓知足者常乐!!!

      

  • 90 percent

    2007-10-09 14:59:45

       对90percent的理解,诸多同仁都发表过自己的见解。本来,我也是一直认为:90 percent就是90%事物的响应时间。但今天看了Zee在51testing上发表的帖子(该帖子附上了有关90 percent的官方网站所描述的),才知道90 percent的来由。

        根据官网所言,90 percent是90%的事物响应时间小于或等于90th percent 的值。这个90th percent 的值又如何得出来的呢?1.将事物实例的值按升序排序 2.去掉10%的极值 3。剩下值里的最大值就是90th percent的值。比如,某个事物包括10个实例值:1,3,5,12,6,22,8,9,30,10 按如下步骤找90th percent的值:1.升序排序 1.3.5.6.8.9.10.12.22.30 2.去掉10%的最大值即30 3.剩下值中的最大值就是90thpercent即22.所以这个 90 percent的值。

       然而问题又来了:这个90 percent在分析结果数据时有什么作用呢?我个人是这样理解的:1.如果这个值客户能接受,那就说明系统性能符合需求.不过我觉得这个值应该还有其他的意义,希望能尽快弄明白并补充完整

  • LoadRunner之繁星

    2007-10-08 14:25:24

    Set screen 90 Percent

     This measurement is not shown in the Controller screen during a run because it is calculated from a list of all values. If a run had 200 measurement points, this would be the value associated with the 180th data point (90 percent of 200).

    Set screen HTTP Responses Summary

      HTTP 200 ("OK") is considered successful.
      HTTP 302 highlights a redirection ("Moved Temporarily"), a normal event.
      HTTP 404 is a "resource not found" error.
      HTTP 500 is a "server busy" error
      HTTP 503 is an authentication denial.
    • 享乐国庆

      2007-10-08 10:33:54

       

          今年的十一我休息了8天,而且是十足的享受型。

         非常感谢TaoTao爸爸对我的关心和照顾,8天几乎都是他一人在带小孩,包括TaoTao的吃喝睡玩都一直都是他,真的很感谢!我可以很惬意的逛街、护理、和看片。。。他都在默默的支持着,我真的是很感动!老公真是让人爱,辛苦了,我亲爱的老公大人!

          老公一直是比较疼人的就是工作的关系,平时很少能和儿子在一起玩玩。他下班回来的时候儿子已经睡了,上班的时候儿子还没有醒。所以,老公说了,十一一定要和儿子好好培养感情!  其实老公一直就是这样,只要我想干什么都会支持我,除了看那些低级的肥皂剧。我本来就多愁善感,老公担心我变得更傻,嘿嘿。。。不过我就是喜欢看(在无聊的时候)我老公总是无奈---阻止不了我。我就是喜欢看那些无需耗脑的东西来赢得消遣。

         老公第一次看到了背小孩的新鲜。乘老公睡觉的时间我想把家务做了,可是儿子已经醒了,怎么办好呢?儿子已经会连续翻身了,如果放在床上就有可能会翻到床下的危险,不过我陪着玩,那家务又得拖到老公起床。。。有了,用秋裤背小孩吧,这样我也能干家务了。哈哈,还终于成了。老公醒了,看见我背着儿子觉得特别新鲜,说也要背(我老公可从来没有见过用秋裤就能背小孩,其实我也没有--自己创意的),还说我挺会琢磨 哈哈  特别喜欢老公夸我。

         因为很多事情老公都觉得我很会折腾,比如用一条毛巾我就会把自己的头发弄得特别好,洗完澡我能把头收拾的和电视里一样,用一块方巾就能给儿子做一个很酷的头巾,吃过的饭菜回家自己也能折腾出来(限于家常饭菜),会刺绣,会。。。老公都觉得特别新鲜,可能是不同民族的缘故吧

         作为女人,牢骚好像是少不了,不过我老公从来不和我计较,都能把我哄乐了。。。

         我要幸福,我一定要比他幸福这是我一直的心愿,老公帮我实现了,感谢我的老公,我爱你们--老公和儿子!

        

         

    • LoadRunner之碎花

      2007-09-21 15:11:23

      1.什么是集合点

      向Vuser脚本中插入集合点是用来模拟服务器的重负载。集合点要求在测试执行过程中,让虚拟用户在某个点等待,然后一起提交执行任务。例如,模拟银行系统的峰值负载,就可以插入集合点,让100个虚拟用户同时向各自的帐户存现。

      集合点是一种特殊情况下的并发,多用于测试系统在瞬间加压的表现。

      设置集合点是为了确保“严格意义上”的并发,其实从本质上看,这主要是一个看问题的粒度大小的问题。集合点的作用是通过工具的控制,确保一个请求严格的“同时”从前台提交到后台。可是如果微观地看,是不存在严格意义上的并发的,即使在客户端通过设置集合点的方式将100个请求同时提交到后台,经过网络上的传输消耗,可能它们并不是同时到达的,而即便100个请求同时到达服务器端,受到中间件和应用系统、数据库的各种连接池、缓冲区, CPU处理队列等的限制,也可能在服务器端产生等待的。

      因此,严格意义上的“并发”可以说是不存在的,我们需要做的是在可以接受的粒度范围内取得一个最佳的平衡点,站在这个平衡点的层面上去看待“并发”这个问题。集合点是一种特殊情况下的并发,通常是在以调优为目的的性能测试中才会用得到,目的是有针对性地对某个可能存在性能问题的模块施压,以便找到性能瓶颈。

      2.在Virtual User Generator中什么时候不能使用日志(log)?什么时候选择标准和扩展日志(standard and extend log)?

      当调试脚本时,可以只输出错误日志,当在场景找你管加载脚本时,日志自动变为不可用。

      Standard Log Option:选择标准日志时,就会在脚本执行过程中,生成函数的标准日志并且输出信息,供调试用。大型负载测试场景不用启用这个选项。

      扩展日志包括警告和其他信息。大型负载测试不要启用该选项。用扩展日志选项,可以指定哪些附加信息需要加到扩展日志中。

      3.如何调试LR脚本?

      VuGen有两个选项帮助调试Vuser脚本。Run Step by Step 命令和断点(breakpoints)。Option对话框中的调试设置(Debug setting)项,可以确定在场景执行过程中执行轨迹范围。 调试信息写在output窗口。可以用 lr_set_debug_messag函数在脚本中手工设置信息类型。如果我们只想接收到一小段脚本的调式信息。

      4.如何在LR中编写用户自定义函数?

      在创建用户自定义函数钱我们需要和创建DLL(external libary)。把库放在VuGen bin 目录下。一旦加了库,把自定义函数分配做一个参数。该函数应该具有一下格式:__declspec (dllexport) char* <function name>(char*, char*)。

      5.什么是Ranp up?如何设置?

      Ramp up这个选项用于逐渐增加服务器的虚拟用户数或负载量。设置一个初始值而且可以在两个迭代之间设置一个值等待。设置Ramp up,请到‘Scenario Scheduling Options’。

      6.用线程的方式运行虚拟用户有什么优点?

      VuGen提供了用多线程的便利。这使得在每个生成器上可以跑更多的虚拟用户。如果是以进程的方式跑虚拟用户,为每个用户加载相同的驱动程序到内存中,因此占用了大量的内存。这就限制了在单个生成器上能跑的虚拟用户数。如果按进程运行,给定的所有虚拟用户数(比如100)只是加载一个驱动程序实例到内存里。每个进程共用父驱动程序的内存,因此在每个生成器上可以跑更多的虚拟用户。

      7.如果出现错误停止脚本执行,该怎么做?

      lr_abort函数放弃虚拟用户脚本的执行。说明虚拟用户停止Action的执行,直接执行vuser_end 然后结束执行。在出现错误情况下想手工放弃脚本的执行,这个函数是有用的。用这个函数停止脚本时,Vuser被指定为“Stopped”状态。为了这个函数起作用,开始时候就不能选择Run-Time Settings中的Continue on error选项。

      8.响应时间和吞吐量之间的关系

      吞吐量图显示的是虚拟用户每秒钟从服务器接收到的字节数。当和响应时间比较时,可以发现随着吞吐量的降低,响应时间也降低,同样的,吞吐量的峰值和最大响应时间差不多在同时出现。

      9.与web服务器有关的问题如何发现?

      通过Web资源监视器,利用这些监控器可以分析web服务器的吞吐量、点击率、每秒http响应数以及每秒下载的页面数。

      10.What is the difference between Overlay graph and Correlate graph?

      Overlay Graph: It overlay the content of two graphs that shares a common x-axis. Left Y-axis on the merged graph show’s the current graph’s value & Right Y-axis show the value of Y-axis of the graph that was merged. 

      Correlate Graph: Plot the Y-axis of two graphs against each other. The active graph’s Y-axis becomes X-axis of merged graph. Y-axis of the graph that was merged becomes merged graph’s Y-axis.

      11.思考时间是什么

      思考时间是真实用户在action之间等待的时间。例如:当一个用户从服务器接收到数据时,用户可能需要在响应之前等待几分钟回顾数据,这种推迟被称为思考时间。

      12.说说以下函数的区别

      lr_debug_message - The lr_debug_message function sends a debug message to the output log when the specified message class is set.

      lr_output_message - The lr_output_message function sends notifications to the Controller Output window and the Vuser log file.

      lr_error_message - The lr_error_message function sends an error message to the LoadRunner Output window.

      lrd_stmt - The lrd_stmt function associates a character string (usually a SQL statement) with a cursor. This function sets a SQL statement to be processed. lrd_fetch - The lrd_fetch function fetches the next row from the result set.

      13.吞吐量—如果随着时间的推移和虚拟用户的增加,吞吐量曲线向上,说明带宽足够。如果随着虚拟用户的增加,吞吐量曲线相对平坦,这可能就是带宽限制数据传输量的一个原因。

       

    • 我的世界从此以后多了一个你 每天都是一出戏

      2007-09-21 11:50:51

      2007年5月10日零时36分  儿子出生了!

      怀胎10月,终于和你见面了,我亲爱的宝。儿子长得很乖,也很可爱。

      爸爸目睹了你出生的整个过程,还不断的给妈妈打气。当你一出来,助产士就报到我跟前让我确认是男孩,我激动得泪眼花花。不是因为你是男孩,爸妈都没有重男轻女的环节,而是因为你是一个健康可爱的孩子。

       

    • 性能测试之点点滴滴

      2007-09-21 09:37:53

      1.什么是负载测试?

      负载测试是测试在大量并发用户、事物/交易的加载下应用程序是否能正常工作以及应用程序能否处理使用高峰期。

      2.什么是性能测试?

      Timing for both read and update transactions should be gathered to determine whether system functions are being performed in an acceptable timeframe. This should be done standalone and then in a multi user environment to determine the effect of multiple transactions on the timing of a single transaction。

      3.什么时候做负载和性能测试?

      一旦完成GUI测试就执行负载测试。现在的系统架构都很大并却很复杂。但单用户测试主要是功能和系统组件的用户界面测试,应用程序的测试关注的是整个系统的性能和可靠性测试。例如,一个典型的应用程序测试场景可能是描述1000个用户同时登录到一个系统。这样就产生了诸如以下的问题:系统的响应时间是什么?系统存在争资源么?在不同的应用软件和平台能运行么?能不能支持这么多成千上万的用户等等。这时我们就该做负载和性能测试了。

       

       

       

    623/4<1234>
    Open Toolbar