文档章节

qtp快速测试入门

crossmix
 crossmix
发布于 2015/03/29 21:06
字数 1415
阅读 392
收藏 2

关于软件测试,其实软件测试与产品测试QC很相同。 其实软件开发与软件测试是两码事。 首先,软件安装

  按照提示,勾选"安装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,3Dialog("NMS登录").WinEdit("Edit").Set "201"Dialog("NMS登录").WinEdit("Edit_2").SetSelection 0,2Dialog("NMS登录").WinEdit("Edit_2").Set "7"Dialog("NMS登录").WinButton("确定").Clickwait(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.WidthHeight = 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").Activatewait(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").Activatewait(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 = Truestr = 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)").ClickDialog("MySnmp").WinButton("否(N)").Click  这段代码提供了性能日志记录、关键部分截屏功能,测试内容是进入软件、随机点击窗体按钮(产生对话框的直接关闭对话框)、键盘随机敲击、软件窗体进行随机点击。考虑到程序的响应,加入了wait进行等待(没有使用同步工具)。可以作为一个比较通用的模板(事实上它本身就是来自于书本的模板)。 关于软件测试可以共同讨论。end

© 著作权归作者所有

crossmix
粉丝 72
博文 305
码字总数 645711
作品 0
广州
高级程序员
私信 提问
UFT入门教程(10)—步骤生成器、描述性编程

步骤生成器 作用 步骤 1.点击“设计-步骤生成器”(快捷键F7)打开“步骤生成器” 2.选择对象-设置对对象的操作 描述性编程 原理 QTP(UFT)对象的鉴别原理:在QTP(UFT)回放时,通过脚本中...

iBazinga
2016/09/26
140
0
QTP常用的几种参数化

本次主要介绍下qtp的各种参数化方法和很多人在参数化时候容易犯的几个错误。   很多人最初接触参数化的时候都是从利用datatable的Global表参数化开始的。因为那是操作实现起来最简单的参数...

OICOmay
2014/09/09
0
0
学习软件测试最正确的姿势,你Get到了吗?

越来越多的人进入到软件测试这一行业中来,软件测试的队伍越来越壮大。但是,怎样学习软件测试才是最正确的姿势呢?今天小编就为大家整理一下软件测试的要点,希望对大家有帮助。 一、软件测...

让往事随风
2016/05/05
162
0
软件测试指南:从入门到精通

所谓:师父领进门,修行靠个人。再好的资源,自身不努力那也是白费。软件测试行业更迭如此迅速,更是如此。分享一篇软件测试的心得,怎么快速入门到精通的思路,非长篇大论,比较精简,各位看...

白一客
2017/04/13
297
1
QTP的那些事--用QTP测试Web上的Ajax

对于ajax,大家做web测试的应该都不会陌生了吧。现在越来越多的web中为了有更好的交互性,一般都喜欢采用ajax技术。正式因为这种原因,给我们测试带来了很多的问题,可能大家遇到的最多的问题...

长征2号
2017/07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
681
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
39
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
25
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
72
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
71
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部