性能测试工作室:http://www.cnblogs.com/preftest 个人博客: http://hi.baidu.com/higkoo

发布新日志

  • [论坛] LoadRunner使用MercuryWebTours订机票的问题

    2007-08-13 17:18:55

    先使用默认的HTML模式录制 MercuryWebTours 订一个机票。
    回放前,我取消了所有已订的机票。回放后已订列表里为空,订票没有成功。
    回放日志有错误:

    虚拟用户脚本已启动
    正在开始操作 vuser_init。
    Web Turbo 重播 LoadRunner 8.1.0 for WIN2003; Web 内部版本 4788   [MsgId: MMSG-27143]
    运行时设置文件: "C:\Documents and Settings\higkoo\Temp\noname1\\default.cfg"   [MsgId: MMSG-27141]
    vuser_init.c(12): 在“http://testserver:1080/mercuryWebTours/”中检测到非资源“http://testserver:1080/mercuryWebTours/header.html”   [MsgId: MMSG-26574]
    vuser_init.c(12): 在“http://testserver:1080/mercuryWebTours/”中检测到非资源“http://testserver:1080/mercuryWebTours/welcome.pl?signOff=true”   [MsgId: MMSG-26574]
    vuser_init.c(12): 在 HTML“http://testserver:1080/mercuryWebTours/header.html”中找到资源“http://testserver:1080/mercuryWebTours/images/mercury_logo.gif”   [MsgId: MMSG-26659]
    vuser_init.c(12): 在“http://testserver:1080/mercuryWebTours/welcome.pl?signOff=true”中检测到非资源“http://testserver:1080/mercuryWebTours/nav.pl?in=home”   [MsgId: MMSG-26574]
    vuser_init.c(12): 在“http://testserver:1080/mercuryWebTours/welcome.pl?signOff=true”中检测到非资源“http://testserver:1080/MercuryWebTours/home.html”   [MsgId: MMSG-26574]
    vuser_init.c(12): 在 HTML“http://testserver:1080/MercuryWebTours/home.html”中找到资源“http://testserver:1080/MercuryWebTours/images/fma-gateway.jpg”   [MsgId: MMSG-26659]
    vuser_init.c(12): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?in=home”中找到资源“http://testserver:1080/MercuryWebTours/images/mer_login.gif”   [MsgId: MMSG-26659]
    vuser_init.c(12): web_url("mercuryWebTours") 已成功,52181 个正文字节,1566 介标头字节   [MsgId: MMSG-26386]
    正在结束操作 vuser_init。
    正在运行 Vuser...
    正在开始迭代 1。
    警告 -27077: “每次迭代模拟一个新用户”运行时设置为“开”时,“vuser_init”节将包含 Web 函数。这可能会产生具有多次迭代的不可预测结果   [MsgId: MWAR-27077]
    正在开始操作 Login。
    Login.c(6): web_submit_data("login.pl") 已成功,748 个正文字节,225 介标头字节   [MsgId: MMSG-26386]
    正在结束操作 Login。
    正在开始操作 Flights。
    Flights.c(6): 在“http://testserver:1080/mercuryWebTours/welcome.pl?page=search”中检测到非资源“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”   [MsgId: MMSG-26574]
    Flights.c(6): 在“http://testserver:1080/mercuryWebTours/welcome.pl?page=search”中检测到非资源“http://testserver:1080/mercuryWebTours/reservations.pl?page=welcome”   [MsgId: MMSG-26574]
    Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”中找到资源“http://testserver:1080/MercuryWebTours/images/in_flights.gif”   [MsgId: MMSG-26659]
    Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”中找到资源“http://testserver:1080/MercuryWebTours/images/itinerary.gif”   [MsgId: MMSG-26659]
    Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”中找到资源“http://testserver:1080/MercuryWebTours/images/home.gif”   [MsgId: MMSG-26659]
    Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/nav.pl?page=menu&in=flights”中找到资源“http://testserver:1080/MercuryWebTours/images/signoff.gif”   [MsgId: MMSG-26659]
    Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/reservations.pl?page=welcome”中找到资源“http://testserver:1080/mercuryWebTours/images/fma-products.jpg”   [MsgId: MMSG-26659]
    Flights.c(6): 在 HTML“http://testserver:1080/mercuryWebTours/reservations.pl?page=welcome”中找到资源“http://testserver:1080/MercuryWebTours/images/button_next.gif”   [MsgId: MMSG-26659]
    Flights.c(6): web_url("welcome.pl") 已成功,36126 个正文字节,1668 介标头字节   [MsgId: MMSG-26386]
    Flights.c(17): 警告 -26548: 未对内容类型“*/*”执行 HTML 分析(“ParseHtmlContentType”运行时设置为“TEXT”)。URL=“http://testserver:1080/mercuryWebTours/FormDateUpdate.class”   [MsgId: MWAR-26548]
    Flights.c(17): web_url("FormDateUpdate.class") 最高严重级别为“warning”,3058 个正文字节,159 个标头字节   [MsgId: MMSG-26388]
    Flights.c(25): 警告 -26548: 未对内容类型“*/*”执行 HTML 分析(“ParseHtmlContentType”运行时设置为“TEXT”)。URL=“http://testserver:1080/mercuryWebTours/CalSelect.class”   [MsgId: MWAR-26548]
    Flights.c(25): web_url("CalSelect.class") 最高严重级别为“warning”,227 个正文字节,158 个标头字节   [MsgId: MMSG-26388]
    Flights.c(33): 警告 -26548: 未对内容类型“*/*”执行 HTML 分析(“ParseHtmlContentType”运行时设置为“TEXT”)。URL=“http://testserver:1080/mercuryWebTours/Calendar.class”   [MsgId: MWAR-26548]
    Flights.c(33): web_url("Calendar.class") 最高严重级别为“warning”,3018 个正文字节,159 个标头字节   [MsgId: MMSG-26388]
    Flights.c(43): 资源“http://testserver:1080/mercuryWebTours/images/fma-products.jpg”已在缓存中,不会再次下载   [MsgId: MMSG-26655]
    Flights.c(43): 资源“http://testserver:1080/MercuryWebTours/images/button_next.gif”已在缓存中,不会再次下载   [MsgId: MMSG-26655]
    Flights.c(43): web_submit_data("reservations.pl") 已成功,3366 个正文字节,253 介标头字节   [MsgId: MMSG-26386]
    Flights.c(69): 将表单提交到“http://testserver:1080/mercuryWebTours/reservations.pl”,目标帧=“”   [MsgId: MMSG-27978]
    Flights.c(69): 资源“http://testserver:1080/mercuryWebTours/images/fma-products.jpg”已在缓存中,不会再次下载   [MsgId: MMSG-26655]
    Flights.c(69): 资源“http://testserver:1080/MercuryWebTours/images/button_next.gif”已在缓存中,不会再次下载   [MsgId: MMSG-26655]
    Flights.c(69): web_submit_form("reservations.pl_2") 已成功,2560 个正文字节,253 介标头字节   [MsgId: MMSG-26386]
    Flights.c(80): 将表单提交到“http://testserver:1080/mercuryWebTours/reservations.pl”,目标帧=“”   [MsgId: MMSG-27978]
    Flights.c(80): 资源“http://testserver:1080/mercuryWebTours/images/fma-products.jpg”已在缓存中,不会再次下载   [MsgId: MMSG-26655]
    Flights.c(80): 在 HTML“http://testserver:1080/mercuryWebTours/reservations.pl”中找到资源“http://testserver:1080/MercuryWebTours/images/bookanother.gif”   [MsgId: MMSG-26659]
    Flights.c(80): web_submit_form("reservations.pl_3") 已成功,3276 个正文字节,450 介标头字节   [MsgId: MMSG-26386]
    Flights.c(98): 错误 -27987: 找不到请求的图像   [MsgId: MERR-27987]
    Flights.c(98): web_image("SignOff Button") 最高严重级别为“ERROR”,0 个正文字节,0 个标头字节   [MsgId: MMSG-26388]
    正在结束操作 Flights。
    正在结束迭代 1。
    正在结束 Vuser...
    正在开始操作 vuser_end。
    正在结束操作 vuser_end。
    Vuser 已终止。

    我查了帮助:
    Message Code 26548 HTML parsing not performed for Content-Type 'content-type' ("ParseHtmlContentType" Run-Time Setting is 'setting'). URL='URL'

    把录制模式改成URL,回放没有出错,但机票还是没有订成功,回放日志:

    虚拟用户脚本已启动
    正在开始操作 vuser_init。
    Web Turbo 重播 LoadRunner 8.1.0 for WIN2003; Web 内部版本 4788   [MsgId: MMSG-27143]
    运行时设置文件: "C:\Documents and Settings\higkoo\Temp\noname3\\default.cfg"   [MsgId: MMSG-27141]
    vuser_init.c(12): web_url("mercuryWebTours") 已成功,326 个正文字节,164 介标头字节   [MsgId: MMSG-26386]
    vuser_init.c(21): web_concurrent_start 成功   [MsgId: MMSG-26392]
    vuser_init.c(23): 注册 web_url("header.html") 成功   [MsgId: MMSG-26390]
    vuser_init.c(32): 注册 web_url("welcome.pl") 成功   [MsgId: MMSG-26390]
    vuser_init.c(41): web_concurrent_end 已成功,969 个正文字节,488 介标头字节   [MsgId: MMSG-26386]
    vuser_init.c(43): web_url("mercury_logo.gif") 已成功,1369 个正文字节,165 介标头字节   [MsgId: MMSG-26386]
    vuser_init.c(51): web_concurrent_start 成功   [MsgId: MMSG-26392]
    vuser_init.c(53): 注册 web_url("home.html") 成功   [MsgId: MMSG-26390]
    vuser_init.c(62): 注册 web_url("nav.pl") 成功   [MsgId: MMSG-26390]
    vuser_init.c(71): web_concurrent_end 已成功,2767 个正文字节,418 介标头字节   [MsgId: MMSG-26386]
    vuser_init.c(73): web_url("fma-gateway.jpg") 已成功,46063 个正文字节,167 介标头字节   [MsgId: MMSG-26386]
    vuser_init.c(81): web_url("mer_login.gif") 已成功,679 个正文字节,164 介标头字节   [MsgId: MMSG-26386]
    正在结束操作 vuser_init。
    正在运行 Vuser...
    正在开始迭代 1。
    警告 -27077: “每次迭代模拟一个新用户”运行时设置为“开”时,“vuser_init”节将包含 Web 函数。这可能会产生具有多次迭代的不可预测结果   [MsgId: MWAR-27077]
    正在开始操作 Action。
    Action.c(6): web_submit_data("login.pl") 已成功,748 个正文字节,225 介标头字节   [MsgId: MMSG-26386]
    Action.c(22): web_concurrent_start 成功   [MsgId: MMSG-26392]
    Action.c(24): 注册 web_url("nav.pl_2") 成功   [MsgId: MMSG-26390]
    Action.c(33): 注册 web_url("login.pl_2") 成功   [MsgId: MMSG-26390]
    Action.c(42): web_concurrent_end 已成功,2328 个正文字节,478 介标头字节   [MsgId: MMSG-26386]
    Action.c(44): web_concurrent_start 成功   [MsgId: MMSG-26392]
    Action.c(46): 注册 web_url("flights.gif") 成功   [MsgId: MMSG-26390]
    Action.c(54): 注册 web_url("in_home.gif") 成功   [MsgId: MMSG-26390]
    Action.c(62): 注册 web_url("signoff.gif") 成功   [MsgId: MMSG-26390]
    Action.c(70): 注册 web_url("itinerary.gif") 成功   [MsgId: MMSG-26390]
    Action.c(78): web_concurrent_end 已成功,2898 个正文字节,656 介标头字节   [MsgId: MMSG-26386]
    Action.c(80): web_url("fma-performance-center.jpg") 已成功,27000 个正文字节,167 介标头字节   [MsgId: MMSG-26386]
    正在结束操作 Action。
    正在开始操作 Flights。
    Flights.c(6): web_url("welcome.pl_2") 已成功,564 个正文字节,175 介标头字节   [MsgId: MMSG-26386]
    Flights.c(15): web_concurrent_start 成功   [MsgId: MMSG-26392]
    Flights.c(17): 注册 web_url("reservations.pl") 成功   [MsgId: MMSG-26390]
    Flights.c(26): 注册 web_url("nav.pl_3") 成功   [MsgId: MMSG-26390]
    Flights.c(35): web_concurrent_end 已成功,5464 个正文字节,506 介标头字节   [MsgId: MMSG-26386]
    Flights.c(37): web_concurrent_start 成功   [MsgId: MMSG-26392]
    Flights.c(39): 注册 web_url("in_flights.gif") 成功   [MsgId: MMSG-26390]
    Flights.c(47): 资源“http://testserver:1080/MercuryWebTours/images/itinerary.gif”已在缓存中,不会再次下载   [MsgId: MMSG-26655]
    Flights.c(55): 注册 web_url("home.gif") 成功   [MsgId: MMSG-26390]
    Flights.c(63): 资源“http://testserver:1080/MercuryWebTours/images/signoff.gif”已在缓存中,不会再次下载   [MsgId: MMSG-26655]
    Flights.c(71): web_concurrent_end 已成功,1414 个正文字节,328 介标头字节   [MsgId: MMSG-26386]
    Flights.c(73): web_concurrent_start 成功   [MsgId: MMSG-26392]
    Flights.c(75): 注册 web_url("fma-products.jpg") 成功   [MsgId: MMSG-26390]
    Flights.c(83): 注册 web_url("button_next.gif") 成功   [MsgId: MMSG-26390]
    Flights.c(91): web_concurrent_end 已成功,27200 个正文字节,331 介标头字节   [MsgId: MMSG-26386]
    Flights.c(95): web_url("FormDateUpdate.class") 已成功,3058 个正文字节,159 介标头字节   [MsgId: MMSG-26386]
    Flights.c(103): web_url("CalSelect.class") 已成功,227 个正文字节,158 介标头字节   [MsgId: MMSG-26386]
    Flights.c(111): web_url("Calendar.class") 已成功,3018 个正文字节,159 介标头字节   [MsgId: MMSG-26386]
    Flights.c(119): web_submit_data("reservations.pl_2") 已成功,2312 个正文字节,253 介标头字节   [MsgId: MMSG-26386]
    Flights.c(142): web_submit_data("reservations.pl_3") 已成功,2539 个正文字节,253 介标头字节   [MsgId: MMSG-26386]
    Flights.c(159): web_submit_data("reservations.pl_4") 已成功,2388 个正文字节,286 介标头字节   [MsgId: MMSG-26386]
    Flights.c(187): web_url("bookanother.gif") 已成功,806 个正文字节,164 介标头字节   [MsgId: MMSG-26386]
    正在结束操作 Flights。
    正在结束迭代 1。
    正在结束 Vuser...
    正在开始操作 vuser_end。
    正在结束操作 vuser_end。
    Vuser 已终止。

    How could I do next ?

  • [论坛] 上传一个小测试程序

    2007-08-09 12:51:33


    附件是一个小程序,学习QTP或其它功能测试工具,试验、练手很有用的。


    小测试程序

    程序预览


     

    testApp.rar
    (2007-08-08 15:32:15, Size: 232 kB, Downloads: 10)

  • QTP实现之小谈

    2007-08-06 13:07:37

    前段时间有位朋友发邮件也询问 业务类型 系统QTP如何实现功能测试。

    想想:

    换个角度想一下:

        现在你不考虑QTP的实现问题,假设QTP你已经非常熟练,你该怎么测试?
     
        像这样的业务,难的不是QTP使用和应用,而你测试方案的设计!假设现在你们的系统更新了一个版本,需要全面测试,你该怎么测?
        你会准备一系列数据和动作,然后验证结果。但你手工测试的时候,你会边测试边考虑周边的问题,如果你使用QTP,那么你一次只能走一条路,一步步的走。
     
    举例说明吧:
        A 送审给 B 送审给 C 送审给 D 完成
    用QTP测试你必须设计很多场景:
        A 送审给 B 送审给 C 送审给 D 完成 
        A 送审给 B 送审给 C 送审给 D 退回给 C 再送审给 D 完成
        A 送审给 B 送审给 C 退回给 B 送审给 C 再送审给 D 完成
         ……
    理论上所有可能的业务流程都必须测试,但使用工具测试,思想要转过来,只针对功能!D退回给C这个业务    也可以看成一个动作,测试通过后,再由C发送过的请求都可以不用再考虑了,因为我们只管输入输出。
    重要的就是你的业务流是如何设计的,把所有的业务流转化为动作,然后QTP只是去做这些动作而已。
       
        需要注意的是:
            QTP熟悉程序如何?是否能得心应手?
            时间是否允许,企业最注重的是利润、成本,其次就是效率。
     
    论坛上有个朋友说得很好,如何使用QTP就看你如何设计这个用例了。剩下的问题就是QTP使用的问题,这两个你要分开,才能做好!
  • [论坛] 谈谈业务型系统 功能测试 与 QTP

    2007-07-31 12:47:06

    越来越发现工具的局限性了

    刚了解了一个很大的业务系统:

    几个区域的办公人员,每个区域有不同的部门,各部门分别处理相应的事务。

    几百口人操作此系统,系统有10个主模块,第个模块的里有N个小模块,许多小模块都和业务挂钩……

    举个简单的例子:
    A院张三,新起了一个项目。
    B工程部李四,接受项目。
    返回A院张三审核,再留给下级C局王五负责项目处理。

    每个项目可以有多个模块,每个模块需要分配对应的负责人处理……,处理完成再审批——>报告。

    整个过程涉及很多权限点,大部门流程或子流程,动作过程都可能被退回处理。

    我想使用工具测试整套系统的功能,发现难度非常大,分支判断太多了!

    A.所有功能点都使用工具。  :不可能,总业务可分出N个分支。
    B.仅用工具测试主流程和常用流程。  :有作用,但用处不大,反而需要测试人员都会使用测试工具。
    C.设计一些数据,让工具去执行操作,核对部分结果。 :有作用,剩下的手动工作量仍然非常大。


              不知有没测试同胞在实践过程和我有同样的困惑?你是如何应对和处理的呢?
  • [论坛] LoadRunner虚拟IP,路由更新哪台机?

    2007-07-24 12:17:27

    实际地址是A类:10.1.20.86

    使用IP欺骗模拟地址:192.168.1.1~192.168.1.254

    局域网连接,

    本机:10.1.20.86
    网关:10.1.20.1
    被测试的机器(WEB服务器):10.1.20.10
    局域网内有交换机,应该也有路由器。


    LR提示我需要更新路由表,我要去哪里更新路由表?  

    本机? 网关? WEB服务器? 数据库服务器?  
    WIN服务器? 域服务器? DNS服务器? 路由器? 交互机?

    [ 本帖最后由 higkoo 于 2007-7-24 12:14 编辑 ]
  • [论坛] LoadRunner负载的问题(上传脚本,详细说明)

    2007-07-17 15:31:34

    最近测试碰到一些错误,于是拿示例网站做实验,错误重现,请路过的朋友留目:

    在服务器(机器名testserver)上安装有Xitatix服务,启动MercuryWebTours示例网站,使用LoadRunner进行负载测试。
    录制登录和退出动作,脚本见附件。

    单独回放没有错误,使用Control负载(忽略思考时间):
    1个用户,通过;
    2个用户,通过;
    5个用户,通过;
    8个用户,通过;
    10个用户,8个通过,2个失败,失败事务都在vuser_init 上。

    LR提示的错误信息:
    vuser_init.c(26): 错误 -27792: 将数据传输到网络失败: [10054] Connection reset by peer
    vuser_init.c(26): 错误 -27791: 服务器“testserver”已过早关闭连接
    vuser_init.c(26): 错误 -26377: 找不到请求的参数“CSRule_2_UID2”的匹配项。检查请求的边界是否存在于响应数据中。此外,如果要保存的数据超过 8196 个字节,请使用 web_set_max_html_param_len 增加参数大小
    vuser_init.c(26): 错误 -26374: 以上“找不到”错误可由分别为 0 和 0 的标头和正文字节计数来解释。

    修改web_set_max_html_param_len值,错误仍然存在。
    使用openSTA负载,查看Xitatix连接数可以超过100,因此可认为不网络问题所致。

    请路过的朋友们各抒己见

    WebTours.zip
    (2007-07-17 15:29:59, Size: 506 kB, Downloads: 0)


    LRerr.rar
    (2007-07-17 15:29:59, Size: 7.76 kB, Downloads: 0)

  • [论坛] LoadRunner8.1的监视问题

    2007-07-10 17:33:21

    仔细查看了一个LR的Control和Analysis

    发现在分析器(Analysis)里,确实没有系统资源图,在控制器(Control)里却可以监视。

    分析器里的系统资源图是SiteCope的,Windows的Perfmonce没有包含在里面。为什么?

    是不是哪里有什么设置可以显示出来?

    如下图所示:

    Info.JPG
  • 性能指标及监视可接受阈值

    2007-06-09 16:59:33

    需要监视的数据:

    组件 监视的性能方面 要监视的计数器
    磁盘 使用 Physical Disk\ Disk Reads/sec
    Physical Disk\ Disk Writes/sec
    LogicalDisk\ % Free Space
    Bitmap
    请 小心处理 % Disk Time 计数器。因为该计数器的 _Total 实例不能精确反映多磁盘系统的利用率,因此使用 % Idle Time 计数器也非常重要。注意这些计数器不能显示超过 100% 的数值。
    磁盘 障碍 Physical Disk\Avg.Disk Queue Length(所有实例)
    内存 使用 Memory\Available Bytes
    Memory\Cache Bytes
    内存 障碍 Memory\Pages/sec
    Memory\PageReads/sec
    Memory\TransitionFaults/sec
    Memory\Pool Paged Bytes
    Memory\Pool Nonpaged Bytes
    尽管没有明确的 Memory 对象计数器,但下面的对象对内存分析还是有用的:
    Paging File\%Usage 对象(所有实例)
    Cache\Data Map Hits%
    Server\Pool Paged Bytes 和 Server\Pool Nonpaged Bytes
    网络 吞吐量 协议传输计数器(随网络协议不同而不同);对于 TCP/IP:
    Network Interface\Bytes total/sec
    Network Interface\ Packets/sec
    Server\Bytes Total/sec 或 Server\Bytes Transmitted/sec 和 Server\Bytes Received/sec
    您可能要监视在监视网络活动中描述的网络和服务器吞吐量的其他对象。
    处理器 使用 Processor\% Processor Time(所有实例)
    处理器 障碍 System\Processor Queue Length(所有实例)
    Processor\ Interrupts/sec
    System\Context switches/sec

    可以接受的阔值:

    对象\计数器 建议的阈值 注释
    Physical Disk\% Free Space 15%
    Logical Disk\% Free Space
    Physical Disk\\% Disk Time 90%
    Logical Disk\% Disk Time
    Physical Disk\Disk Reads/sec、Physical Disk\Disk Writes/sec 取决于制造商的规格 检查磁盘的指定传送速度,以验证此速度没有超出规格。通常,Ultra Wide SCSI 磁盘每秒可以处理 50 到 70 次 I/O 操作。
    Physical Disk\Current Disk Queue Length 主轴数加 2 这是即时计数器;观察在多个间隔上的值。对于随时间变化的平均值,请使用 Physical Disk\ Avg.Disk Queue Length。
    Memory\Available Bytes 少于 4 MB 考察内存使用情况在需要时添加内存。
    Memory\Pages/sec 20 研究页交换活动。
    Paging File\% Usage 70% 以上 与 Available Bytes 和 Pages/sec 一起复查该值,了解计算机的页交换活动。
    Processor\% Processor Time 85% 查找使用处理器时间高百分比的进程。升级到更快的处理器或安装其他处理器。
    Processor\Interrupts/sec 取决于处理器;每秒 1000 次中断是好的起点 此计数器的值明显增加,而系统活动没有相应的增加则表明存在硬件问题。标识导致中断的网卡。可能需要安装额外的适配器或者控制器卡。
    Server\Bytes Total/sec 如果所有服务器的 Bytes Total/sec 和与网络的最大传送速度大致相等,则可能需要将网络分段。
    Server\Work Item Shortages 3 如果值达到该阀值,请考虑将 DWORD 项“InitWorkItems”(在启动期间分配给处理器的工作项数)或者MaxWorkItems(服务器可以分配的接收缓冲区的最大数)添加到注册表(在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 下面)。InitWorkItems的范围可以是从 1 到 512,同时 MaxWorkItems 的范围可以是从 1 到 65535。以 InitWorkItems 的任何值以及 MaxWorkItems 的值 4096 开始,并一直加倍这些值直到 Server\Work Item Shortages 阀值低于 3。有关修改注册表的信息,请参阅注册表编辑器帮助。
    Bitmap
    小心
    编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。
    服务器\分页池峰值 物理 RAM 的数量 此值是最大页面文件大小和物理内存数量的指示器。
    Server Work Queues\Queue Length 4 如果值到达此阈值,则可能存在处理器瓶颈。这是即时计数器;观察在多个间隔上的值。
    System\Processor Queue Length 2 这是即时计数器;观察在多个间隔上的值。

  • Windows监视方案

    2007-06-09 14:59:48

    设置监视配置

    设置监视配置是评估系统性能的第一步。要监视 Windows XP 的安装,可以选择以图形方式查看数据,或收集日志文件中的数据以用于其他应用程序。

    为了获得最佳的结果,请阅读以下有关设置监视配置的部分。然而,要快速启动,可以使用“计数器日志”中的预定义日志设置。将这些设置(名为“系统概述”)被配置为创建二进制日志,该日志在手动启动后每 15 秒更新一次,并连续记录直到达到最大大小。如果用这些设置启动日志记录,数据将保存到根目录的 Perflogs 文件夹中,并包括计数器:Memory\Pages/sec、PhysicalDisk(_Total)\Avg.Disk Queue Length 和 Processor(_Total)\% Processor Time。

    选择监视方法

    图形对于本地或远程计算机的短期实时监视非常有用。例如要在系统事件发生时观察该事件。选择更新间隔,以便捕获感兴趣的活动类型。日志对于保留记录和延长监视(尤其是远程计算机)非常有用;记录的数据可以导出生成报告或使用“系统监视器”提供图表或直方图。日志是监视多台计算机最实用的方法。

    选择监视频率

    对于常规监视,通过以超过 15 分钟的间隔记录活动。如果要监视特定的问题,可能需要改变间隔。如果要在特定时间监视特定过程的活动,请设置较短的更新间隔;然而,如果要监视慢速显示的问题(例如内存溢出),则使用较长的间隔。

    选择该间隔时,还要考虑要监视的总时间长度。如果监视时间不超过四个小时,则每 15 秒更新一次比较合理。如果要监视系统八个小时或更长时间,则设置的间隔不要小于 300 秒(五分钟)。将更新间隔设置为速率较快(数值小)可能会使系统生成大量数据,这会导致难以处理并增加运行“性能日志和警报”的开销。

    监视大量的对象和计数器也可以生成大量的数据并消耗磁盘的空间。尝试平衡监视的对象数目与采样频率,以使日志文件大小保持在可管理限度内。

    如果要在记录时维持较长的更新间隔,则仍可以查看在间隔之间发生的数据波动。为此,请参阅使用记录的数据以获得有关在日志中控制时间范围的信息。

    选择要监视的数据

    通过按以下顺序监视下列组件的活动开始:

    • 内存
    • 处理器
    • 磁盘
    • 网络

    下表显示了对监视服务器推荐使用的最少计数器。检查特定资源时,应包含与性能对象有关的其他计数器。

    组件 监视的性能方面 要监视的计数器
    磁盘 使用 Physical Disk\ Disk Reads/sec
    Physical Disk\ Disk Writes/sec
    LogicalDisk\ % Free Space
    请小心处理 % Disk Time 计数器。因为该计数器的 _Total 实例不能精确反映多磁盘系统的利用率,因此使用 % Idle Time 计数器也非常重要。注意这些计数器不能显示超过 100% 的数值。
    磁盘 障碍 Physical Disk\Avg.Disk Queue Length(所有实例)
    内存 使用 Memory\Available Bytes
    Memory\Cache Bytes
    内存 障碍 Memory\Pages/sec
    Memory\PageReads/sec
    Memory\TransitionFaults/sec
    Memory\Pool Paged Bytes
    Memory\Pool Nonpaged Bytes
    尽管没有明确的 Memory 对象计数器,但下面的对象对内存分析还是有用的:
    Paging File\%Usage 对象(所有实例)
    Cache\Data Map Hits%
    Server\Pool Paged Bytes 和 Server\Pool Nonpaged Bytes
    网络 吞吐量 协议传输计数器(随网络协议不同而不同);对于 TCP/IP:
    Network Interface\Bytes total/sec
    Network Interface\ Packets/sec
    Server\Bytes Total/sec 或 Server\Bytes Transmitted/sec 和 Server\Bytes Received/sec
    您可能要监视在监视网络活动中描述的网络和服务器吞吐量的其他对象。
    处理器 使用 Processor\% Processor Time(所有实例)
    处理器 障碍 System\Processor Queue Length(所有实例)
    Processor\ Interrupts/sec
    System\Context switches/sec

    如果上表中列出的某些计数器在算机中不可用,请验证已安装了必需的服务或激活了计数器。

    选择用于监视的计算机

    远程监视计算机时,可以选择如何收集数据。例如,可以在管理员的计算机中运行性能日志,连续绘制来自每台远程计算机的数据。在其他情况下,可以在每台计算机上运行服务来收集数据,每隔一定的时间间隔,就运行批处理程序将数据传送到管理员的计算机进行分析和存档。

    集中式数据收集(即在本地计算机上收集正在监视的远程计算机的数据)很容易实现,因为只有一个日志服务正在运行。可以将多个系统的数据收集到一个日志文件中。然而,这会导致额外的网络通信,并且可能受到管理员计算机上的可用内存限制。要执行集中式收集数据,请在本地计算机运行“系统监视器”时,使用“添加计数器”对话框选择远程计算机。

    分布式数据收集(即在监视的远程计算机中进行数据收集)不会产生集中式收集的内存和网络通讯问题。不过这会导致数据的可用性延迟,需要收集的数据传送到管理员的计算机进行检查。要分布式收集数据,请使用本地计算机中的“计算机管理”来选择要在其上收集数据的计算机。

    监视远程计算机时请注意,远程计算机只允许访问拥有其访问权限的用户帐户。为了从计算机监视远程计算机,必须使用有访问要监视远程计算机的权限的帐户启动“性能日志和警报”服务。默认情况下,在本地计算机的“系统”帐户下启动服务,该帐户通常仅拥有访问本地计算机中服务和资源的权限。要在其他帐户下启动该服务,请在配置数据收集时使用“运行为”选项,或者使用“计算机管理”下面的“服务”,并更新“性能日志和警报”服务的属性。

    保存性能数据的记录

    使用“性能日志和警报”,可以将性能数据记录到 SQL 数据库。如果将记录的数据保留在数据库中,可以查询这些信息并将其包含在报告中。使用数据库分析工具可以查询结果并使用各种参数详细检查结果。也可以使用日志进行趋势分析和容量计划。

    导出监视配置

    使用计数器、更新间隔和其他设置来配置性能工具之后,可以将这些设置保存在本地计算机上。如果将这些设置保存在 Perfmon.msc 名称下,请注意,将永久性更改该计算机上工具的配置。因此,推荐使用其他名称保存文件。

    除了保存监视设置之外,还可以添加其他工具或添加“系统监视器”的多个副本,例如,如果要同时监视图表和报告视图。有关将工具添加到控制台的信息,请参阅创建自定义监视控制台

  • [论坛] 上传一Java程序,讨论如何批量录数

    2007-06-09 12:47:25

    上传一个Java程序,如附图所示。

    是由开发协助写的,本来是我在测试过程中的一些不易回放的控件。

    由于时间紧,这个测试程序没有达到预期的效果。仅图示红圈处是不易录制的。


    过程描述:
    一个C/S的Java程序列表框,有很多行和列。
      标准的列表网格,直接用SetCellData即可参数化和赋值。

    一些自定义控件,用标准的方法不能赋值,或难以参数化。

    用低级录制可以解决问题,但回放的速度太慢,且可维护性很差。

    期望结果:
    假想有很多行数据,如何做到批量录入指定的数据 。

    测试预览.JPG
  • [论坛] QTP中使用 Exist 的问题

    2007-06-09 10:53:19

    现在测一个Web程序,现在碰到一个很神奇的问题。


        我上传一个文件,上传过程中有进度条。上传完成进度条就消失了。


    我就用QTP去判断,直要有进度条就继续等待:

    do Until 进度条.exist(1) = False
        wait(1)
    loop

    后来发现程序一直都在等待,上传完了还在等待。
    Debug才发现   进度条.exist(1) = True 一直都成立。


    原因:进度条和上面的文字只是一个动画,开始上传就为可见;上传完成即为不可见。但一直都是存在的!

    所以,QTP简直太“智能”了!

       但我使用 进度条.object 方法 来调用它的 Visible 属性 居然也一直都为True。
       获取运行时属性也为True。


    不知是QTP自身的问题,还是我哪里思路有问题?


       目前有办法可以解决:不去识别进度条,去识别上传列表。   
    (可以解决部分问题,但列表数据多之后脚本就不好写)

       能识别到进度条 是最好的解决办法, 如何去识别进度条呢?

    测试预览.JPG
  • 在本地和远程系统上,管理和计划性能计数器与事件跟踪日志的收集。

    2007-06-07 21:22:39

    Logman

    在本地和远程系统上,管理和计划性能计数器与事件跟踪日志的收集。

    语法动词 微笑 

    Logman [create {counter | trace} [CollectionName]] [start CollectionName] [stop CollectionName] [delete CollectionName] [query {CollectionName | providers [providerName]}] [update CollectionName]

    参数
    create {counter | trace} CollectionName
    创建对计数器或跟踪收集的收集查询。可以使用命令行选项指定设置。
    start CollectionName
    启动数据收集查询 CollectionName。使用该选项将计划收集更改为手动收集。将命令行中的 update 参数与开始时间 (-b)、结束时间 (-e) 或重复时间 (-rt) 搭配使用,以重新计划收集。
    stop CollectionName
    停止数据收集查询 CollectionName。使用该选项将计划收集更改为手动收集。将命令行中的 update 参数与开始时间 (-b)、结束时间 (-e) 或重复时间 (-rt) 搭配使用,以重新计划收集。
    delete CollectionName
    删除数据收集查询 CollectionName。如果 CollectionName 不存在,将收到一个错误信息。
    Query {CollectionName | providers[providerName]}
    如果未提供 CollectionName 或 providers,则显示所有现有收集查询的状态。使用 CollectionName 可显示特定收集的属性。要在远程计算机上显示这些属性,请在命令行中使用 -s RemoteComputer 选项。将 providers 作为关键字代替 CollectionName,可显示本地系统上安装的注册提供程序。要列出远程系统上安装的注册提供程序,请在命令行中使用 -s 选项。使用 query providers providerName,可以显示可为指定提供程序设置的参数列表,包括这些参数的值以及它们所启用内容的描述。请注意,此信息与提供程序有关。
    update CollectionName
    更新对计数器和跟踪收集的收集查询。对于计数器收集,将停止修改查询,然后重新启动收集。对于跟踪收集,请在命令行中使用下列参数进行查询,无需停止收集:-p provider [(Flags[,Flags ...])] Level、- maxN、- oPathName、-ftMM:SS 或 -fd。

    语法选项

    [-s ComputerName]

    [-config FileName]

    [-b M/D/YYYYH:MM:SS [{AM | PM}]]

    [-e M/D/YYYYH:MM:SS [{AM | PM}]

    [-m [start] [stop]]

    [-[-]r]

    [-o {Path | DSN!CounterLog}]

    [-f {bin | bincirc | csv | tsv | SQL}]

    [-[-]a]

    [-[-]v [{NNNNNN | MMDDHHMM}]]

    [-[-] rc [FileName]]

    [-[-] max [Value]]

    [-[-]cnf [[[HH:]]MM:]SS]

    [-c {Path [Path ...] | -cfFileName}]

    [-si [[HH:]]MM:]SS]

    [-ln LoggerName]

    [-ets]

    [-[-] rt]

    [-p {GUID | provider [(Flags [,Flags...])] Level | -pf [FileName]}]

    [-[-] ul]

    [-bs Value]

    [-ft [[HH:]]MM:]SS]

    [-nb Min Max]

    [-fd LoggerName]

    [-[-]uUserName Password]

    [-rf [[HH:]]MM:]SS]

    [-y]

    [-mode [TraceMode [TraceMode ...]]]

    [-ct {system | perf | cycle}]

    参数
    -s ComputerName
    指定将在远程系统上执行创建、启动、停止、删除、查询或更新命令。默认情况下,本地系统用于执行命令。
    -config FileName
    指定包含命令行参数的设置文件的路径名。
    -b M/D/YYYY H:MM:SS[{ AM| PM}]
    以 24 小时格式指定收集的开始时间。通过在命令行内添加 AM 或 PM,也可以使用 12 小时格式指定收集开始时间。除非另行指定,否则默认情况下,使用当前的日期和时间。使用手动启动选项可立即启动收集。
    -e M/D/YYYY H:MM:SS[{ AM| PM}]
    以 24 小时格式指定收集的结束时间。通过在命令行内添加 AM 或 PM,也可以使用 12 小时格式指定收集结束时间。除非另行指定,否则默认情况下,使用当前的日期和时间。使用手动停止选项,然后使用重复选项,可指定当前实际时间之前的停止时间,否则将收到错误消息。
    -m [start] [stop]
    通过在命令行中使用 start 和 stop 参数,指定手动启动和停止收集。在同一查询的命令行中,不能同时使用 -mstart 和 -b 或 -mstop 和 -e 或 -rf 参数。
    -r
    按照 -b 和 -rf 选项或 -b 和 -e 选项指定的时段,每天重复执行收集。此命令仅对同一天、同一月和同一年中指定的开始时间和结束时间有效。
    --r
    关闭重复选项。
    -o {Path | DSN!CounterLog}
    指定收集性能计数器和跟踪数据的输出文件路径名,或指定 SQL 数据库和数据集的位置。要使用 DSN!CounterLog 格式指定 SQL,请在命令行中使用 -f 选项。默认情况下,收集日志文件的名称是在收集查询名称后添加后缀 .blg(对于性能计数器)或 .etl(对于跟踪数据)。
    -f {bin | bincirc | csv | tsv | SQL}
    指定用于收集性能计数器和跟踪数据的文件格式。收集性能计数器时,可以使用二进制、循环二进制、逗号和制表符分隔或 SQL 数据库格式。必须在带 DNS!counter_log 选项的命令行中使用 -o 选项。对于 SQL 数据库格式,必须预定义数据库系统名称 (DSN),并且必须授予写入数据库的管理凭据。数据集 CounterLog 是在数据库中创建的,并由 DSN 指定。默认设置为二进制。
    -a
    可使用该选项附加文件。
    --a
    关闭附加命令选项,并还原到覆盖模式。
    -v {NNNNNN | MMDDHHMM}
    将版本控制信息附加到输出文件和路径名称的末尾。在版本控制中,使用 NNNNNN 数值格式或日期格式 MMDDHHMM(月、日、24 小时、分钟)。
    --v
    关闭版本选项。
    -rc FileName
    指定在收集结束时或在收集期间关闭文件后运行此命令。将 -rf 选项与 -cnf 搭配使用,以便在收集期间关闭文件。使用 -stop 选项,不会关闭此命令。命令总是在前台运行。
    --rc
    关闭运行此命令选项。
    -max Value
    指定所收集日志文件的最大容量(以兆字节表示)。如果日志文件的容量超过该最大值,收集将停止。对于 SQL 数据库,其最大容量为可写入的记录数。
    --max
    关闭最大容量限制选项。这是默认选项。
    -cnf[[ HH:]MM:]SS
    若输出文件超过最大容量值,或指定的时间已过,则创建新文件。执行此命令时,必须纳入 -v 选项。默认情况下,每次收集期间只创建一个日志文件。
    cnf
    关闭创建新文件选项。
    -c{Path[Path ...] | -cfFileName}
    为日志指定性能计数器路径,或指定列出这些计数器的日志文件的路径名。要列出多个计数器路径,请使用空格分隔命令行,或者使用 -cf 选项在输入文件中列出计数器路径(每行列出一个)。计数器路径的一般格式如下:[[\\Computer]\Object[Parent/Instance#Index]\Counter],其中,格式的父节点、实例、索引和计数器组件可包含有效的名称或通配符。并非所有计数器都必须具有计算机、父节点、实例和索引组件。可以根据计数器本身决定要用的计数器路径。例如,LogicalDisk 对象具有 index 实例,所以必须提供 #Index 或通配符。因此,可以使用下列格式: \LogicalDisk(*/*#*)\* 与之相比,进程对象不要求 Index 实例。因此,可以使用如下格式: \process(*)\ID process 下面列出了可用格式:\\computer\object(parent/instance#index)\counter\\computer\object(parent/instance)\counter\\computer\object(instance#index)\counter\\computer\object(instance)\counter\\computer\object\counter\object(parent/instance#index)\counter\object(parent/instance)\counter \object(instance#index)\counter\object(instance)\counter\object\counter如果在父节点名称中指定了通配符,则将返回与指定实例和计数器作用域相匹配的指定对象所有实例。如果在实例名称中指定了通配符,则当指定索引所对应的所有实例名称都与通配符相匹配时,将返回指定对象和父节点对象的所有实例。如果在计数器名称中指定通配符,则将返回指定对象的所有计数器。不支持部分计数器路径字符串匹配(例如,pro*)。
    -si[[HH:]MM:]SS
    以小时、分钟和秒,指定性能计数器收集的示例间隔。默认值为 15 秒。
    -ln LoggerName
    指定事件跟踪记录会话的用户定义名称。默认情况下,收集名称用作记录器名称。
    -ets
    通过命令行上指定的选项创建和启动事件跟踪会话。可以将此可选参数与 create trace、update、query 和 delete 参数搭配使用。要显示为当前运行的事件跟踪会话所设置的参数和级别,请键入: logman query LoggerName -ets
    rt
    指定事件跟踪会话以实时模式运行,并不记录到文件中。默认情况下,数据会记录到文件中。
    --rt
    关闭实时记录选项。
    -p{GUID | provider[(Flags[ ,Flags ...])] Level | -pf[FileName]}
    为跟踪数据收集指定要用的提供程序(跟踪数据收集程序)。使用 logman 查询提供程序,可从注册提供程序列表中找到 PName(已命名的提供程序)。使用 -pf 选项可列出多个提供程序。-pf 选项识别包含提供程序名称的输入文件。提供程序名称包含在引号 ("") 内,或者带有含在括号、标志掩码和整数(启用级别)中的 GUID。标志采用十六进制 (OXFFFF) 或 (flag, flag) 格式。
    -ul
    指定以用户模式运行事件跟踪会话。如果使用 -ul 选项,则只能为事件跟踪会话启用一个提供程序。
    --ul
    指定关闭用户模式,并以内核模式运行事件跟踪会话。
    -bs Value
    指定跟踪数据收集的缓冲大小(以 N KB 表示)。
    -ft[[HH:]MM:]SS
    以分和秒,指定跟踪数据收集的刷新计时器间隔。
    -nb Min Max
    指定跟踪数据收集的缓冲区最小数目和最大数目。默认最小值是系统上的处理器数目加 2。默认最大值是 25。
    -fd LoggerName
    将现有事件跟踪会话的所有活动缓冲区转储到磁盘。将此命令与 -ln 选项搭配使用。
    -u UserName Password
    指定收集查询在本地或远程系统上使用的帐户名和密码。要开始收集用于收集查询的数据,请将“性能日志和警报”记录到远程系统。在用于将性能数据保存到远程 SQL 服务器的本地计算机上设置配置时,需要使用该选项或“运行方式”命令。可以在命令行中将 * 用作密码,以便产生密码提示符。当您在密码提示符下键入密码时,密码不显示出来。
    --u
    重新设置访问“性能日志和警报”服务帐户的帐户名。
    -rf [[HH:]MM:]SS
    指定收集在规定时段中运行。
    -y
    覆盖收集名称的设置,然后在不查询最终用户的情况下应用新设置。
    -mode[TraceMode[TraceMode...]]
    只有当 TraceMode 为 globalsequence、localsequence 或 pagedmemory 时,才指定跟踪会话的高级选项。Globalsequence 指定事件跟踪程序为接收的每个事件添加序列号,而不管收到事件的跟踪会话为何。Localsequence 指定事件跟踪程序为特定跟踪会话期间收到的事件添加序列号。使用 localsequence 选项时,可以跨所有会话存在重复的序列号,但在每个跟踪会话内,序列号将是唯一的。Pagedmemory 指定事件跟踪程序将在内部缓冲区分配中使用分页内存,而不使用默认的非分页内存池。
    -ct {system | perf | cycle}
    指定当记录每个事件的时间戳时所使用的时钟分辨率。使用默认时钟类型 -ct system 可提供 10 ms 的时间戳分辨率。使用 -ct perf 可提供 100 ns 的分辨率。此外,如果要让消耗的系统资源更少,请使用 -ct cycle。它会以处理器时钟周期收集数据,然后将其标准化至 100 ns。如果您选择 cycle 选项,但硬件平台不支持这种时钟类型,则操作系统会将其更改为 perf。
    /?
    在命令提示符下显示帮助。
    注释

    可以从运行 Windows XP Professional 的计算机使用 Logman 命令的子集,来管理运行 Windows 2000 的计算机。Windows 2000 不支持下列选项:

    -r

    -o,当指定数据库系统名称 (DSN) 时

    -f sql

    -cnf

    -ln

    -ft

    -fd

    -ets

    -mode

    可以使用 -u 选项连接至目标计算机;但不能用它设置远程收集的凭据。收集将运行在配置“性能日志和警报”服务所用的帐户下。默认情况下,这是 Local System 帐户。

    命令行动词 create、update、start、stop、delete 以及 query 的有效选项是:

    -s RemoteComputer

    -[-]u Domain/UserName Password

    create 和 update 的有效选项以及 counter 和 trace 的常用选项是:

    -y

    -b M/D/YYYY HH:MM:SS [{AM | PM}]

    -e M/D/YYYY HH:MM:SS [{AM | PM}]

    -rf HH:MM:SS

    -m [start] [stop

    -f {bin | bincirc}

    -[-]r

    -o PathName

    -[-]a

    -[-]v {NNNNN | MMDDHHMM}

    -[-]rc Command PathName

    -[-]max N

    -[-]cnf HH:MM:SS

    counters 的常用选项只能是:

    -f {bin | bincirc | csv | tsv | SQL}

    -o {PathName | DSN!CounterLog }

    create counter 的常用选项是:

    -c {CounterPath | -cfInputFile}

    -si [[HH:]MM:]SS

    这些选项更新计数器,并将停止和开始收集。

    跟踪收集使用的 update 选项有:

    - max N

    - o PathName

    -ft MM :SS

    -fd

    这些选项将在不停止收集的情况下查询跟踪收集。

    counters 的有效选项只能是:

    -f {bin | bincirc | csv | tsv | SQL}

    -o {PathName | DSN!CounterLog }

    与 create counter 命令一起使用的有效选项是:

    -c {CounterPath | -cfInputFile}

    -si [[HH:]MM:]SS

    create trace 命令的有效选项是:

    -ln LoggerName

    -[-]rt

    -p {GUID | provider(Flags[,Flags ...])Level | -pfFileName}

    -[-]ul

    -bs N

    -ft MM:SS

    -nb Min Max

    -fd LoggerName

    -ets

    使用 -config 选项

    与 -config 选项一起使用的设置文件内容应具有如下格式:

    [CommandOption]

    Value

    其中,CommandOption 是一个命令行选项,由 Value 指定其值。例如:

    [counter]

    logx

    [-s]

    mysystem

    [-u] UserName Password]

    使用 -mode 选项

    如果是高级用户,应该只使用此选项。

    使用 -ct 选项

    默认的 system 时钟类型足以供大多数生成事件的提供程序使用。但是,如果提供程序生成事件的速率能够大于每 10 ms 一次,则使用 perf 时钟类型。

    管理性能监视器

    只能使用 Logman 来管理运行 Windows 2000、Windows XP 或 Windows Server 2003 家族操作系统的系统。

    有关如何将 Logman 合并到 Windows Management Instrumentation (WMI) 脚本中的详细信息,请在 Microsoft Windows 资源工具包网站 上参阅“scrīpting WMI”(编写 WMI 脚本)。

    示例

    下列示例中的日期格式仅适用于美国本地时间。

    要通过开始时间和结束时间、重复收集、版本控制号、计数器路径以及示例间隔来创建日常计数器收集查询,请键入:

    Logman create counter daily_perf_log -b 7/27/2000 13:00:00 -e 7/27/2000 15:00:00 -r -v mmddhhmm -c "\processor(_Total)\% processor Time" "\Memory\Available bytes" -si 00:15 -o "c:\perflogs\daily_log"

    要通过开始时间和结束时间、重复收集、输出文件收集、版本控制号、计数器路径以及示例间隔来创建日常收集查询,请键入:

    Logman create counter daily_perf_log -b 7/27/2000 13:00:00 -e 7/27/2000 15:00:00 -r -o "c:\perflogs\daily_log" -v mmddhhmm -c "\processor(_Total)\% processor Time" "\Memory\Available bytes" -si 00:15

    要使用配置文件而不是命令行文件来创建日常收集查询,请键入:

    Logman -config file daily_perf.txt

    要通过开始时间和结束时间、重复收集、版本控制号、提供程序名称、输入和输出文件收集来创建日常跟踪收集查询,请键入:

    Logman create trace daily_kernel_trace_log -b 7/27/2000 13:00:00 -e 7/27/2000 15:00:00 -r -v mmddhhmm -p "Windows Kernel Trace" 0xFFFFFFFF -rf 100 -o "c:\perflogs\daily_nt_trace"

    要通过开始时间和结束时间、重复收集、版本控制号、Guid 和记录器名称、输入和输出文件收集来创建日常跟踪收集查询,请键入:

    Logman create trace daily_lsass_trace_log -b 7/27/2000 13:00:00 -e 7/27/2000 15:00:00 -r -v mmddhhmm -p "Local Security Authority(LSA)" 0x00000001 -rf 30:00 -o " c:\perflogs\daily_lsass_trace"

    要通过开始时间和结束时间、重复收集、版本控制号、计数器路径、示例间隔、SQL 格式以及输出文件收集创建日常计数器收集查询,请键入:

    Logman create counter daily_perf_log -b 7/27/2000 13:00:00 -e 7/27/2000 15:00:00 -r -v mmddhhmm -c "\processor(_Total)\% processor Time" "\Memory\Available bytes" -si 00:15 -f sql -o perfdb!daily_log

    要通过示例间隔、帐户名和密码来开始日常收集,请键入:

    Logman start daily_perf_log -s \\%computer_name% -u admin "adminpassword"

    要开始手动数据收集,请键入:

    Logman start daily_perf_log

    要停止数据收集,请键入:

    Logman stop daily_perf_log

    要删除数据收集,请键入:

    Logman delete daily_perf_log

    要显示收集查询的状态,请键入如下命令:

    Logman query

    Logman query daily_perf_log

    格式图例

    格式 意义

    斜体

    用户必须提供的信息

    粗体

    用户必须像显示的一样准确键入的元素

    省略号 (...)

    可在命令行中重复多次的参数

    在括号 ([]) 内

    可选项目

    在大括号 ({}) 内;将选项用管线 (|) 隔开。例如:{even|odd}

    用户必须从中选择一个选项的选项组

    Courier font

    代码或程序输出

  • | 初次体验openSTA

    2007-06-02 23:53:03

    最近研究一个开源的性能测试功能openSTA,网上资源确实太少,刚巧最近工作留给我的时间很少。

    今天无奈的我,还是逼自己静下心看Help文档了。有点小成果,赶紧记下来。

    将下面代码复制到 scrīpt Modeler 中,在Commander里运行,查看其Test Report Log。

    !***************************代码头***************************!

    Environment					!1
     	 Descrīption ""				!2
    Definitions					!3
    	iNTEGER i (1-100), scrīpt			!4
    	integer m,local				!5
    code						!6
    	report "m=",m				!7
    	ACQUIRE MUTEX "first"			!8
    	next i					!9
    	set m = i					!10
    	report "m=",m				!11
    	RELEASE MUTEX "first"			!12
    	report "m=",m				!13
    	
    

    !***************************代码尾***************************!

    测试报表

    此脚本虽小,且简单,但你确可从中明白openSTA的一些实现过程。

    一、从UserID你可以知道,并发的三个用户,开始运行是没有先后顺序的。

    二、从Line#你可以知道,代码7行处的m一直等于0,代码11行、13行都是从1递增。

    三、给我留下了一个疑点,ACQUIRE MUTEX 、RELEASE MUTEX 的作用和区别。

    Help文档描述如下: 发呆
    ACQUIRE MUTEX Command 太阳
    This command acquires exclusive access to a shared resource, known as a mutex. The mutex is identified by its name and scope (which must be either LOCAL or TEST-WIDE). A test-wide mutex is one that is shared by all scrīpts running as part of a distributed test; a local mutex is only shared between scrīpts running on the local node.
    RELEASE MUTEX Command 灯泡
    This command releases a named mutex. The mutex to be released is identified by its name and scope, which must correspond to the values specified on the corresponding ACQUIRE MUTEX command.
    看着这翻译和我的理解,结合这结果,让我很不理解 重伤
  • 今天的劳动成果

    2007-06-02 17:48:42

    开始学习openSTA,全E文,好吃力。

    收录今天的代码:

    !********************************************************************!
    Definitions

    character*10 A("admin","viewer","guest"),scrīpt !定义数组A
    character*10 B("123","123","123"),scrīpt !定义数组B

    CHARACTER*10 C, LOCAL   !定义变量C
    CHARACTER*10 D, LOCAL   !定义变量D

    !********************************************************************!
    Code

     ACQUIRE MUTEX "test" !初始化宏
        NEXT A
        NEXT B
        SET C = A
        SET D = B
     RELEASE MUTEX "test" !释放宏

    REPORT  "Output C: " , C
    REPORT  "Output D: " , D


    //譬如:

    !Browser:IE5
    !Date : 2007-6-2
    Environment
     Descrīption ""
     Mode  HTTP
     Wait  UNIT MILLISECONDS

    Definitions
    !********************************************************************!

     CHARACTER*10 AAA("A1","A2","A3"),scrīpt  !定义数组AAA
     
     CHARACTER*10 BBB("B1","B2","B3"),scrīpt  !定义数组BBB
     
      
     CHARACTER*10 CCC, LOCAL   !定义变量CCC
        CHARACTER*10 DDD, LOCAL   !定义变量DDD

    !********************************************************************! 
     ! Standard Defines
     Include   "RESPONSE_CODES.INC"
     Include   "GLOBAL_VARIABLES.INC"

     

    Code
    !********************************************************************!

     ACQUIRE MUTEX "test"
        NEXT AAA
        NEXT BBB
        SET CCC = AAA
        SET DDD = BBB
     RELEASE MUTEX "test"
     
    !********************************************************************!

    REPORT  "Output CCC: " , CCC
    REPORT  "Output DDD: " , DDD

    !********************************************************************!

    用于循环使用变量。

     

     

     

  • [论坛] 这样的场景应该如何理解?

    2007-05-29 21:33:58

    关于LoadRunner的原理,大家也讨论得也不止一次了。

        关于不理解的地方,我描述如下:


         虚拟用户脚本,就有三个动作:   登陆——>查询——>退出


        模拟场景如下:

                  加载10个用户,每1秒增加1个用户,动作持续20秒,完成后每秒减少一个用户。


    有点我很不理解:
          设置忽略ThinkTime,那么运行过程我可以理解如下:

           第1秒,一个用户开始运行。
           第2秒,二个用户在运行。
           第3秒,三个用户在运行。
                ……
           第10秒,十个用户都在运行。


    那么在第10秒的时候,第1秒就开始的那个用户在干什么呢?
    或者 在第20秒的时候,这10个用户分别在模拟什么动作呢?

          实际上,登陆、查询、退出三个动作的运行,实际操作也不到10秒。

    一个用户在模拟场景中运行过程都超过30秒了。
    这30秒中这个被模拟的用户各阶段在执行什么操作呢?
  • [论坛] 系统变量 导致 TD 调用 QTP 失败

    2007-05-25 23:06:48

    最近真是,遇到一系列又一系列的,以前从没遇到过的问题,非常神奇。 得意 

        以前公司人不多,直接一个WorkGroup工作组就搞定。现在不一样了,开始使用域了。这方面之前真没怎么接触过,有些东西还是非常的陌生。

        安装了Win2003系统,费尽了九牛二虎之力,把所需要的工具都安装成功了。文档及访问权限都设置完毕的时候,开始使用。 握手 

        先自我测试,加了一个用户。突然,问题就出来了。怎么使用TD,可以上传图片,不能下载图片。可以上传脚本,不能查看或下载脚本。 难过 



    config.JPG

    可以上传,不能下载。因为下载是从服务器下载到本地一个临时目录,程序提示我认为是临时目录的路径不对导致。 偷笑 

    下载图片的提示如下:

    error.JPG

        查看脚本更是吓我一跳,它居然说库里没有数据。刚开始我还以为是数据丢失呢,后来查实才发现不是这么回事: 大哭 

    QTperr.JPG

        很多同事,硬件很牛;有些同事,软件很懂;可偏偏这是个行业性的软件。如果是通用软件,我想很多问题就很容易搞定了,也许只需百度一下,我就知道了……

        不过,这个问题,我初步确定是由于系统变量导致的。由于系统的临时缓存不是一个绝对位置,所以下载文件无法保存,导致软件出错。但我查了变量信息,也做了很多尝试,时好时坏,尚未找到规律。且我是使用远程域成员登陆所致。 呕吐 

        问题层出不穷,过矣过已……

  • 微软的 WindowsXP 又 开始维权了

    2007-05-25 22:42:06

    最近,一些朋友的电脑都出现如图提示:

     

        “您可能是软件盗版的受害者……”这一句真是吓倒一群人呀。

        而且登陆系统后,任务栏右下角还有一个蓝色的五角星,提示你“您的系统可能存在风险”。 

        不懂电脑的朋友看到此消息多少都会有些心慌。不过,我反而觉得我是盗版软件的受益者。没有这盗版的Windows操作系统,我现在哪里会这么熟悉的去操作它? 

        没有盗版的Windows,Windows在中国就不会有这么大的市场;微软也间接的损失了很多商机;有了大量的盗版Windows,才有了现在多么庞大的软件产业。

        而且据说,这个是由于计算机安装了最新的Windows更新导致的。此更新在控制面版里也卸载不了。 

        相关的办法也是有的,去 百度 或 谷歌 搜搜就有一堆文章了。 

        版盗,相对于Windows这类软件来说,有利也有弊。不过对于一般的商业软件来说,盗版确实是不可言善的。 

        虽然对于盗版的Windows我不于太多的言语,其它软件,我还是提倡使用正版。

    给劳动的人民应有的回报! 

     

  • WR和QTP的破解问题

    2007-05-25 20:20:40

    不惑 今天装了一天测试工具。

        说起来还费了不少周折。安装了Win2003企业版操作系统,没有打系统补丁,加入了域。

        很奇怪,我安装了QTP,直接使用网上的“特别文件”进行注册,居然没有效果。 疑惑 

        然后我安装了VMware,再做了一个Win2003系统(Host系统是公司技术部安装,Guest为自己的虚拟文件安装),VMware也出了一个什么VPN提示,然后我按提示进了VMware的网站,按提示操作问题解决。在虚拟机上安装和注册,一切都正常。接着我又安装了WinRunner,结果一样,“特别文件”没有用。在虚拟机上安装也可以正常使用,真是歪门了! 馋嘴 

        不过之后安装IBM一套,还算顺利了。TD76不支持Win2003,只好装了TD80,如果QC82有LiceS就好了。

    装Office2007,提示我必需打Sp1以上补丁。装了SQL也要装Sp3以上补丁,我装…… 咒骂 

        虚拟机和本机安装路径都是完全一样的,我也尝试用虚拟机上正常运行的文件覆盖本机文件,包括生成的注册文件。可是结果在本机运行仍然不行……

        想下一个WR76,下午却没找到。明天吧…… 耍酷 

  • 开始漫长QTP旅程

    2007-05-16 13:09:30

    最近每天都在coding,QTP的Coding。 委屈 

        我想把自动化做起来,现在正在实践。一个人设计思路、方案、实施、分析。 流汗 

        真的有点累,天天都面对Application和QTP's Code,遇到了问题,没有人可以交流的,最多只能上上51testing发发贴,更多的是按 F1 。 耍酷 

        发现现在英文的阅读能力没那么吃力了。调皮  

        语言是人类最大的进度,有了语言就有了沟通,封闭的世界里是很难进步的。 吃惊 

        继续努力吧!   等我完成这套方案,那么就相当于是一个阶段性的小胜了。 谄媚  

        路还长,还要走……   握手 

  • 开始学习LoadRunner

    2007-01-28 17:34:27

         刚学LR不久,相对QTP而言,对LR的原理感觉有些难理解。
         QTP很直观,回放过程是看得见的,用户操作和界面都可呈现在眼前。但LR就不是,给我感觉是一直在执行代码。且结果也是LR分析出的图表和日志。
          由此,我对LR的过程有产生了疑问:是否能真正模拟若干用户?
          1、一个真正的用户在访问因特网时,网站会用http或其它方式向客户端发送文件。这些文件都保存在客户端的硬盘中。LoadRunner在模拟用户过程中是否可以达到这个目的?如何实现?
          2、根据客户端浏览器设置,IE缓存中的文件可能在不断更新,即一直在执行下载/复制/删除操作,一个用户就是这样,万个用户也这样。LoadRunner是怎么实现这个功能的?是否真正模拟到这种压力?
          3、在场景运行过程中,模拟用户有 初始化/缓冲/运行/停止 等状态,这些都是数字不断的改变,我们如何确定他的正确性/准确性?

          实质上,上述应该是属于我对LoadRunner工作原理的不理解,或可称为怀疑。

          硬件上也有些问题一直让我不解。假若有10000个用户有访问sohu网站首页,如果每个人一条线的话就有10000条网络路径在访问。如果使用LoadRunner在一台机器上模拟10000个用户同时访问,一台机的网络带宽最多就千兆啦,且网络利用率不可能100%。

         就上面提到的第2点,访问上机器是一直在向服务器发送访问请求,服务器接受到请求后发送所需的资源然后发送,客户端接受资源显示资源。LoadRunner是如何模拟这种场景的呢(原理)?假若的10000个用户,发送一次请求,服务器响应并发送资源。若1M/客户端,1000个客户端就约10个G的资源了!10G的资源,服务器传送出来需要多长时间呢?

        仅在一台PC机上运行LoadRunner在模拟这10000个客户访问场景,是否给服务器发送了10000次重复的请求?服务器是否就传送了10000次同样的资源?如果没有,那这种模拟是否能达到我们的负载/压力的目的?

       学习一个软件的操作,只要有足够的资源,给我时间,我想要学会操纵它并不是一件难事。但仅仅操作是远远不够的,就像软件测试的朋友们必需要懂产品业务一样。

        仁者见仁,智者见智。请路过的朋友们指路   微笑 

502/3<123>
Open Toolbar