zoukankan      html  css  js  c++  java
  • QTP快速入门和简易猴子测试的实现

    说明:本文中代码段主要参考自《QTP自动化测试实践》。

    一、软件安装

      按照提示,勾选"安装Microsoft Script Debugger",完全安装即可。

    二、软件启动

      选择测试对象所需要加载的相应插件,在欢迎窗口选择“Blank Test”。

    三、自带资源

      F1可以获得丰富的帮助文档,菜单Help—>Product Feature Movies中包含了几段示例视频,同时在开始菜单的QTP程序目录中可以看到练习示例程序flight。

    四、进行测试

      QTP使用的是VBScript作为测试脚本语言,因此需要对它有一定的了解,比如数据类型、循环结构等,此处不再赘述。

      菜单Automation—>Record and Run Settings进行设置。在针对“Windows Application”的测试中,有几种选项,“Record and run test on any open Windows-based application”用于录制和运行所有系统中出现的应用程序,“Record and run only on”需要进一步指定录制和运行的程序,又分为三种:

      "Application opened by QuickTest" 仅录制和运行由QTP调用的程序,调用方法:

    '创建Wscript的Shell对象
    Set Shell = CreateObject("Wscript.Shell")
    '通过Shell对象的Run方法启动记事本程序
    Shell.Run "notepad"
    '程序可以使用绝对路径,但文件夹名不能含有空格

      另一种方法

    Invokeapplication "E:\SVN\debug\demo1.exe"

      以及

    SystemUtil.Run "E:\nms\demo1.exe","E:\nms\demo1.exe","open"

      "Applications opened via the Desktop(by windows shell)"仅录制由开始菜单、桌面或者从Windows文件浏览器启动的程序。

      “Application specified below”录制列表中的程序。

      设置好之后就可以进行Record,QTP将会记录下用户的相关操作。使用Run可以重现。录制好的脚本可以直接编辑,方便调节细节和增加功能,也便于捕捉对象。QTP的功能不限于此,这里不深入研究了。下面利用猴子测试各个模块简单学习下脚本语言的应用。

     五、猴子测试

      猴子测试也叫随机测试,原理是利用测试工具随机产生键盘敲击和鼠标点击事件,就像一个猴子在狂敲键盘。在这次项目开发中,猴子测试确实发现了不少异常和错误,大量重复运行由计算机完成,节约了不少人力。以下是用到的代码,其中一些功能模块没有使用到,因此被注释掉了。

    Set myapp = CreateObject("Wscript.Shell")
    myapp.Run "C:\fa ke\flight4a.exe"
    Dialog("NMS登录").WinEdit("Edit").SetSelection 0,3
    Dialog("NMS登录").WinEdit("Edit").Set "201"
    Dialog("NMS登录").WinEdit("Edit_2").SetSelection 0,2
    Dialog("NMS登录").WinEdit("Edit_2").Set "7"
    Dialog("NMS登录").WinButton("确定").Click


    wait(3)
    Window("MySnmp").WinListView("SysListView32").Click 111,46

    '开始性能计数器记录
    '
    SystemUtil.Run "logman", "start perf_log"


    '利用DotNetFactory获取屏幕高度和宽度

    Set var_CreateInstance = DotNetFactory.CreateInstance("System.Windows.Forms.Screen", "System.Windows.Forms")
    Width = var_CreateInstance.PrimaryScreen.WorkingArea.Width
    Height = var_CreateInstance.PrimaryScreen.WorkingArea.Height
    'MsgBox Width & "," & Height
    '注意:WorkingArea不包括任务栏、停靠窗口和停靠工具栏


    '通过WMI对象获取屏幕高度和宽度
    '
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    '
    Set colItems = objWMIService.ExecQuery( _
    '
    "SELECT * FROM Win32_DesktopMonitor",,48)
    '
    For Each objItem in colItems
    '
    Height = objItem.ScreenHeight
    '
    Width = objItem.ScreenWidth
    '
    Next
    '
    MsgBox Width & "," & Height

    ' 循环执行测试次数
    For i = 1 To 20
    For j = 1 To 4
    z = RandomNumber(1,7)
    Window("MySnmp").WinToolbar("ToolbarWindow32").Press z
    If z = 5 Then
    Window("MySnmp").Dialog("MySnmp").WinButton("确定").Click
    Elseif z = 6 Then
    Window("MySnmp").Dialog("配置").WinButton("取消").Click
    Elseif z = 7 Then
    Window("MySnmp").Dialog("重启").WinButton("取消").Click
    End If
    wait(2)
    Next



    ' 初始化随机数产生器
    '
    Randomize
    '
    ' 随机选取0到屏幕宽度之间的整数
    '
    set x = Int((Width * Rnd+0) )
    '
    ' 随机选取0到屏幕高度之间的整数
    '
    set y = Int((Height * Rnd+0) )
    '
    'MsgBox x & "," & y

    ' 也可使用RandomNumber
    x = RandomNumber( 0, Width)
    y = RandomNumber(0,Height)
    'MsgBox x & "," & y

    ' 通过Extern访问Windows API函数
    ' Extern.Declare micVoid, "MouseEvent","user32.dll","mouse_event",micInteger,micInteger ,micInteger ,micInteger ,micInteger
    '把鼠标移到该位置
    'Extern.MouseEvent 80+1,10, 100, 0, 0
    ' 鼠标左键单击
    ' Extern.MouseEvent 2+4,0,0,0,0
    ' Extern.Declare micInteger, "WindowFromPoint","user32.dll","WindowFromPoint",micInteger,micInteger
    ' Msgbox Extern.WindowFromPoint (0,0)

    ' 先在C#中包装好Windows API函数,然后在QTP中通过DotNetFactory访问
    '
    Set APIINstance = DotNetFactory.CreateInstance("WinAPI.MouseAPI", "C:\Documents and Settings\Administrator\桌面\snmp\MonkeyTest2\MonkeyTest2\WinAPI.dll")
    Set APIINstance = DotNetFactory.CreateInstance("WinAPI.MouseAPI", "C:\Users\WY\Desktop\MonkeyTest2\MonkeyTest2\WinAPI.dll")
    ' 鼠标移到该位置
    APIINstance.MoveMouse x,y
    '记录测试信息
    Reporter.ReportEvent micDone, "MouseMove", "鼠标移动到:" & x & "," & y
    '鼠标左键单击
    Window("MySnmp").Activate
    wait(1)
    APIINstance.ClickMouse "Left", x , y , 0 , 0
    ' 记录测试信息
    Reporter.ReportEvent micDone, "MouseClick", "鼠标左键单击位置:" & x & "," & y

    StrArray = Array("1234567890" , "abcdefghijklmnopqrstuvwxyz ","~!@#$&*_")
    n = RandomNumber(0, 2)
    str = StrArray(n)
    ' 'msgbox str
    '
    '
    ' 调用.NET的SendKeys类的SendWait方法来输入字符串
    Window("MySnmp").Activate
    wait(1)
    Set SendkeyInstance = DotNetFactory.CreateInstance("System.Windows.Forms.SendKeys","System.Windows.Forms")
    SendkeyInstance.SendWait str
    'SendkeyInstance.SendWait str

    ' 取得当前时间
    str =Time
    ' 由于时间字符串不能直接作为文件名,Windows文件名不允许包含“:”,因此使用正则表达式把它替换掉
    Set regEx = New RegExp
    regEx.Pattern = ":"
    regEx.IgnoreCase = True
    regEx.Global = True
    str = regEx.Replace(str, "_")
    'Set regEx1 = New RegExp
    '
    regEx1.Pattern = "\"
    '
    regEx1.IgnoreCase = True
    '
    regEx1.Global = True
    '
    str1 = regEx1.Replace(str, "_")
    '
    str2 = regEx.Replace(str1, "_")
    str2 = str &"_" & RandomNumber(0,1000)
    ' 截屏
    Window("MySnmp").CaptureBitmap "C:\Users\WY\Desktop\MonkeyTest2\" & str2 & ".png"
    'Window("MySnmp").CaptureBitmap "C:\Documents and Settings\Administrator\桌面\snmp\MonkeyTest2\" & str2 & ".png"
    '
    Dialog("Microsoft Visual C++ Debug").CaptureBitmap "C:\Users\WY\Desktop\Err_" &str2 & ".png"

    Next
    '结束性能计数器记录
    '
    SystemUtil.Run "logman", "stop perf_log"

    wait(10)
    Window("MySnmp").Close
    'Dialog("Microsoft Visual C++ Debug").WinButton("中止(A)").Click
    Dialog("MySnmp").WinButton("否(N)").Click

      这段代码提供了性能日志记录、关键部分截屏功能,测试内容是进入软件、随机点击窗体按钮(产生对话框的直接关闭对话框)、键盘随机敲击、软件窗体进行随机点击。考虑到程序的响应,加入了wait进行等待(没有使用同步工具)。可以作为一个比较通用的模板(事实上它本身就是来自于书本的模板)。




  • 相关阅读:
    paip.提升安全性时间判断
    paip.提升安全性本机硬件绑定
    paip.提升性能服务器环境及编程语言架构选择
    paip.提升用户体验提示语
    paip.提升效率输入框不能粘贴的问题
    paip.银联支付接口订单号uuid算法
    paip.Net Framework各个版本的功能不同总结
    Answer 3.0 .NET开源网站功能API说明
    Paip.YXSHOP易想商场功能模块说明
    paip.提升效率文件搜索工具总结
  • 原文地址:https://www.cnblogs.com/wuyuegb2312/p/2318370.html
Copyright © 2011-2022 走看看