软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件测试工具>>Mercury>>正文
WinRunner的问题整理
文章出处:51testing论坛 作者:朴春龙 发布时间:2005-11-24
多数问题是在MSN上,论坛上其他测试人员提出的问题,我回答后发现很多人问到同样的问题,这里整理了一下希望对大家有帮助!

1.WinRunner如何把Real类型转化为指数表示方法
答:
   指数类型转化为real类型,可以通过下边的代码
   var = 5.3569E+10;
   pause(var);
   #显示 53569000000
   
   Real类型转化为指数表示方式
   var = sprintf("%e",53568544768);
   pause(var);
   #displays 5.356854e+010

2.什么是同步点,怎样用它?他和Wait有什么不同?
答: 从功能上他们都可以实现脚本和被测试程序同步的问题,不过同步点有window/object,bitmap方式,她等待的是某个等待的对象     窗体,bitmap的出现,一定程度她也可以作为验证点
     wait这点上无法实现相同的效果。有的脚本中即使你加入wait,但是你无法知道下边的对象窗体图片是否就是成需要运行的正确     出现的
3.tl_step和tl_step_once的区别
答:tl_step和tl_step_once都是把运行状态信息放到运行结果中去,区别在如果连接TD,TL_STEP把每步状态信息都插入到测试结果中去,tl_step_once如果连接td,只是插入一次运行步骤的名字
   
代码例子:
--------------------------------------------------------------------------------

for (i=1;i<4;i++){  
     tl_step("Step", PASS, "reporting step, #" &i);  
     tl_step_once("Step Once", PASS, "reporting step once, #" &i);
}

--------------------------------------------------------------------------------

WR中的报告:
Step: Step, Status: PASS, Description: reporting step, #1
Step: Step Once, Status: PASS, Description: reporting step once, #1
Step: Step, Status: PASS, Description: reporting step, #2
Step: Step Once, Status: PASS, Description: reporting step once, #2
Step: Step, Status: PASS, Description: reporting step, #3
Step: Step Once, Status: PASS, Description: reporting step once, #3

TD中的报告:
Step: Step, Status: PASS, Description: reporting step, #1
Step: Step Once, Status: PASS, Description: reporting step once, #1
Step: Step, Status: PASS, Description: reporting step, #2
Step: Step, Status: PASS, Description: reporting step, #3

4.WinRunner和TD集成后脚本运行很慢是什么原因呢?
答:安装TD和WinRunner服务器上需要独占100GByte,TD需要10OGHZ时钟速度16GB RAM的处理平台

5.WR是否支持vs.net
  根据Mercury的介绍,他们的对.Net的支持转移到QuickTest Pro上了,如果你需要自动化测试.Net程序(不是web的),建议用

QuickTestPro。也就是说wr不支持vs.net开发的程序

6.我对比两个文件file1.txt和file2.txt,文本内容如下
  file1.txt 内容如下:
  10523 8315 6804 8387 3643 4550 3457 3649

  file2.txt内容如下:
  190176 155737 117417 145194 65314 81431 64522 63324
  
  代码如下:file_compare("C:\\file1.txt","C:\\file2.txt","save");
  为什么每次对比这两个文件结果都是通过的。
答:这个问题的原因在于它在前面的脚本中对文件进行了操作,没有关闭,所以这段代码运行总是通过

7.如何在winRunner中用Windows的API函数
  在使用该API函数前需要先加载该函数然后声明API函数,代码如下
load_dll("user32.dll");
extern int PostMessageA(in long, in long, in long, in long);
win_get_info("{class:window, MSW_class:AfxMDIFrame42, label:\"!WinRunner.*\"}", "handle", hWnd);
PostMessageA(hWnd, 16, 0, 0);

请在尝试以上代码的时候,保存脚本,呵呵!  

8.怎样处理跟踪键盘操作?
答:下边的代码希望对你有帮助
    function GetKeyStatus(in vKey){  
      auto pid, thread_id, win_desc, hWnd, KeyState, win_log_name, win_full_desc, focused_obj_desc;
      win_desc = "{active:1}";       
      if (win_exists(win_desc)==0)        {           
         win_get_desc(win_desc, "", "", "", win_full_desc);
                GUI_map_get_logical_name( win_full_desc, "", win_log_name, "bla");
             win_get_info(win_desc, "handle", hWnd);
              pid = GetWindowThreadProcessId(hWnd, NULL);
            thread_id=GetCurrentThreadId();
               AttachThreadInput(pid,thread_id,TRUE);
             KeyState=GetKeyState (vKey);
            AttachThreadInput(pid,thread_id,FALSE);
             if (KeyState < 0)              
            return(0); # Key is pressed
           else           
            return (1); # Key is not pressed       
        }
        else
                return (-1); # No active window found, so cannot determine key state
    }

9.WinRunner如何处理excel?
答:其实解决方法有很多,这里列举两种。
   一.利用其他语言特性开发出dll提供给winrunner使用(vb,vc,delphi等)
   二.在其他环境中实现,用winrunner调用
   第一种我在这里不举例子了,第二种我利用vbs往excel中赋值给大家提供一种思路,代码如下:

'vbs中的代码
   Dim ExcelApp
   Dim itemX
   if WScript.Arguments.Count < 2 then
    r = msgbox("Requires 2 arguments", 48, "change_sheet")
   else
    dim fso
    set fso = createobject("scripting.filesystemobject")
    xlBook = fso.GetAbsolutePathName(WScript.Arguments(0))
    xlSheet = WScript.Arguments(1)
    set fso = Nothing
    Set ExcelApp = CreateObject("Excel.Application")
    ExcelApp.Workbooks.Open(xlBook)
    Set itemX = ExcelApp.ActiveWorkbook.Worksheets.Item(xlSheet)
    itemX.Activate
   
    excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("A1").Select
    excelapp.ActiveCell.FormulaR1C1 = "1"
    excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("B1").Select
    excelapp.ActiveCell.FormulaR1C1 = "2"
    excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("c1").Select
    excelapp.ActiveCell.FormulaR1C1 = "3"

    ExcelApp.ActiveWorkbook.Save()
    ExcelApp.ActiveWorkbook.Close(1)
    ExcelApp.Quit()
   
    Set itemX = Nothing
    Set ExcelApp = Nothing

end if

winrunner中的调用代码:
dos_system("wscript \"C:\\excel_sheet.vbs\" \"C:\\SheetBook.xls\" \"Sheet2\"");  
   
10.在WinRunner中如何实现得到transaction时间?
答:一般情况下transaction的时间只能在最后结果中得到,如何在脚本得到这个时间呢,下边的代码可以

帮助你:
public transactions[];
function start_my_transaction(in transaction_name)
{
        transactions[transaction_name] = get_time();
        tl_step("Start transaction: \"" & transaction_name & "\"",PASS,"Timestamp: " &

transactions[transaction_name]);
        return (transactions[transaction_name]);
}
function end_my_transaction(in transaction_name)
{
        auto end_time = get_time();
        auto rc;
        if(transactions[transaction_name] == "")
        {
                tl_step("End transaction: \"" & transaction_name & "\"",FAIL,"Transaction was

never started.");
                rc =  -1;
        }
        else
                tl_step("End transaction: \"" & transaction_name & "\"",PASS,"Elapsed Time: "

& (rc =  end_time - transactions[transaction_name]));
        delete transactions[transaction_name];
        return rc;
}

start_my_transaction("my_transaction");
wait(2);
rc = end_my_transaction("my_transaction");
pause("Elapsed time = " & rc);

站内搜索
相关文章
◎Winrunner TSL命令简介(四)
◎Winrunner TSL命令简介(三)
◎Winrunner TSL命令简介(二)
◎Winrunner TSL命令简介(一)
◎使用LoadRunner测试TUXEDO
◎TD7.6 字段中英文对照表
◎Winrunner Context Sensitive命令列表
◎LoadRunner监视的性能计数器
◎让LoadRunner走下神坛
热门文章
◎主流测试工具介绍(1)
◎Winrunner经验总结
◎主流测试工具介绍(2)
◎主流测试工具介绍(3)
◎Winrunner TSL命令简介(一)
◎LoadRunner监视的性能计数器
◎四款主流测试工具的测试流程
◎Loadrunner中参数的设置
◎LoadRunner的一个解决方案
◎让LoadRunner走下神坛
◎WinRunner 脚本标准格式
◎LoadRunner简化国泰航空测试流程
◎WinRunner如何实现自动化测试
◎利用loadrunner测试ORACLE存储过程的性能
◎jboss tomcat weblogic websphere 性能对比测试
◎Winrunner TSL命令简介(四)
◎Winrunner TSL命令简介(二)
◎使用LoadRunner测试TUXEDO
◎TestDirector项目数据迁移完整过程
◎LoadRunner函数介绍
◎关于"RPC server is unavailable"的解决方案
◎Winrunner TSL命令简介(三)
◎使用Winrunner进行性能测试
◎TD7.6 字段中英文对照表
◎LoadRunner本机录制http协议程序遇到的问题以及解决方法
◎Winrunner Context Sensitive命令列表
◎WinRunner使用经验介绍
◎TD中Case的复用
◎对脚本的建议
◎MI测试工具介绍
◎QTP的登陆脚本设计
◎如何用QTP解析PDF
◎winsock协议错误编码解析
◎TD 7.x 升级到 TD 8.0 的一些经验(SQLSERVER 下)
◎QuickTestPro SP考试心得
◎loadruner报错:Step download timeout(120 seconds)的解决方法
◎使用LoadRunner来测试BEATUXEDO (LoadRunner 7.6)
◎QuickTestPro中的快捷键
◎ERP功能测试最佳实践:10个步骤确保ERP系统的可靠性
◎高级测试管理的工具和技术
◎winsock的buffer简单解析
◎何谓 Keyword-Driven Testing?
◎LoadRunner学习——LoadRunner的安装
◎QTP的学习历程
◎使用LoadRunner来测试BEA TUXEDO(LoadRunner7.6)
◎LoadRunner函数介绍续
◎QTP的登陆脚本设计
◎关于"The RPC server is unavailable"的探讨及解决方案
◎改进质量和测试管理
◎QuickTestPro处理带有IFRAME的问题

Google提供的广告