穿越绝世唐门cp笑红尘:我是如何使用QTP去测试的

来源:百度文库 编辑:中财网 时间:2024/05/03 00:11:34
一、文件目录位置分开

不同目录放置不同内容:
case目录:放置测试用例。
Fucation目录:放置经常调用的库函数。
common目录:放置所测试系统的主函数,和利用描述述编程生成的对象库。
001login目录:放置QTP脚本自动生成的相关文件
data目录:放置测试数据,该数据与测试用例中需要数据驱动的项进行对照
capture目录:放置当系统出现错误时的截图
二、测试用例
将用例进行一定的整理,把数据驱动部分归纳为一个连续,并把实际结果做一个excel的数据有效性判断,即pass为绿色,fail为红色,具体用例如:
ID
validate
expected
actualresults
Failreason
login_001
登录链接
正常链接
login_002
用户名输入框的maxlength
30
login_003
密码输入框的maxlength
30
login_004
正常登录
登录成功,显示已登录
login_005
异常登录
登录失败,用户名或密码错误
login_006
异常登录
登录失败,用户名或密码错误
login_007
异常登录
登录失败,用户名或密码错误
login_008
异常登录
登录失败,用户名或密码错误
login_009
异常登录
登录失败,用户名或密码错误
三、用例对应数据
对照数据驱动部分用例生成相关数据,增加期望值用于判断,并把实际结果做一个excel的数据有效性判断,即pass为绿色,fail为红色,具体示例如:
userName
passWord
expected
实际结果
123
123456
ok

123456
no
no
123
no
123
no
123

no
四、脚本过程
A、初始操作,可把这一部分写进common中
调用外部组件:
如:fucationPath="F:\qtptest\fucation\fucations.vbs" '函数组件
ExecuteFile fucationPath
定义case、data、capture位于系统的位置:
如:casePath="F:\qtptest\case\loginCase.xls"   '用例位置
dataPath="F:\qtptest\data\001login.xls"    '数据放置的位置
capturePath="F:\qtptest\Capture\"        '截图放置的位置
调用初始函数:
如:
CloseIE()          '调用组件中的CloseIE(),结束IE进程
CloseExcel()    '调用组件中的CloseExcel(),结束Excel进程
QTP_Small()    '让QTP最小化运行B、主体脚本过程,此处可使用描述性编程来书写,如使用描述性编程,需从common文件中调用相关的对象库(描述性编程)
确定录制的主体过程,此过程我是通过录制实现的,此处代码为测试脚本的主体部分提供基础代码,即为C部分(下方)的扩展操作提供基础代码。
如:
‘起动浏览器,进入系统登录界面
'打开IE wqs592452,在不同的机器上需要更改一下
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and Settings\wqs592452","open"
Browser("Browser").Navigatehttp://10.9.146.182:8080/index.asp
‘点击登录链接
Browser("Browser").Page("在线考试系统").Frame("top").Link("【登录系统】").Click
‘执行登录操作
Browser("Browser").Page("在线考试系统").Frame("main").WebEdit("uname").Set “123”
Browser("Browser").Page("在线考试系统").Frame("main").WebEdit("pwd").Set “123456”
Browser("Browser").Page("在线考试系统").Frame("main").WebButton("登 录").Click
'返回登录界面,执行下一轮数据的操作
Browser("Browser").Page("在线考试系统").Frame("top").Link("【注销登录】").Click
Browser("Browser").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("Browser").Page("在线考试系统").Frame("top").Link("【登录系统】").Click
C、按照case修改脚本,主要调用库函数中的写入Excel单元格的函数Write_Excel(pathway,sheetname,x,y,content)读取单元格的函数ReadExcelCell(file,sheet,x,y)以及截图函数Qtp_Capture,注意Qtp_Capture应在Write_Excel之前,否则截图时可能为读取Excel的界面
‘点击登录链接
1、 '验证loginCase文档中login_001
Browser("Browser").Page("在线考试系统").Frame("top").Link("【登录系统】").Click
‘如果登录后某对象存在,则case文件login_001 Pass,否则Fail,并截图
If Browser("Browser").Page("在线考试系统").Frame("main").WebButton("登 录").Exist Then
'如果存在此对象,则将case中的actualresults置为pass
Write_Excel casePath,"login",2,"D","Pass"
Else
'如果出现错误,则截图并保存到指定文件夹中
QTP_Capture capturePath,"login_001"
'如果不存在此对象,则将case中的actualresults置为fail
Write_Excel casePath,"login",2,"D","Fail"
‘出现错误后,说明错误的原因
Write_Excel casePath,"login",2,"E","登录系统链接失效"
End If
2、'验证loginCase文档中login_002
‘利用描述性编程,查看width in characters对象是否存在,并且为30
If      Browser("Browser").Page("在线考试系统").Frame("main").WebEdit("name:=uname","width in characters:=30").Exist then
'如果存在此对象,则将case中的actualresults置为pass
Write_Excel casePath,"login",3,"D","Pass"
else
'如果出现错误,则截图并保存到指定文件夹中
QTP_Capture capturePath,"login_002"
'如果存在此对象,则将case中的actualresults置为fail
Write_Excel casePath,"login",3,"D","Fail"
‘出现错误后,说明错误的原因
Write_Excel casePath,"login",3,"E","用户名输入框未设置为30位"
end if
3、’验证loginCase文档中login_003
‘利用描述性编程,查看width in characters对象是否存在,并且为30
If      Browser("Browser").Page("在线考试系统").Frame("main").WebEdit("name:=pwd","width in characters:=30").Exist then
'如果存在此对象,则将case中的actualresults置为pass
Write_Excel casePath,"login",3,"D","Pass"
else
'如果出现错误,则截图并保存到指定文件夹中
QTP_Capture capturePath,"login_002"
'如果存在此对象,则将case中的actualresults置为fail
Write_Excel casePath,"login",3,"D","Fail"
‘出现错误后,说明错误的原因
Write_Excel casePath,"login",3,"E","用户名输入框未设置为30位"
end if、’验证loginCase文档中login_004至login_009For i=2 to 7
‘读取data中,login的数据
Dim username,password,expected
username=ReadExcelCell(dataPath, "login", i, 1)
password=ReadExcelCell(dataPath, "login", i, 2)
expected=ReadExcelCell(dataPath,"login",i,3)
‘执行登录操作,将读取到的username参数化给下面的数据
Browser("Browser").Page("在线考试系统").Frame("main").WebEdit("username").Set username
Browser("Browser").Page("在线考试系统").Frame("main").WebEdit("pwd").Set password
Browser("Browser").Page("在线考试系统").Frame("main").WebButton("登 录").Click
‘判断登录是否成功的文本字符
popok=Browser("Browser").Page("在线考试系统").Frame("left").WebElement("考生姓名:123状   态:已登录").Exist(3)
popno=Browser("Browser").Page("在线考试系统").Frame("main_2").WebElement("操作失败").Exist(3)
‘依据期望结果进行判断
If expected="ok" Then
If popok Then
'将数据源中的期待结果写为pass
Write_Excel dataPath,"login",i,"D","Pass"
'将此结果在测试用例中进行体现
Write_Excel casePath,"login",i+3,"D","Pass"
'返回登录界面,执行下一轮数据的操作
Browser("Browser").Page("在线考试系统").Frame("top").Link("【注销登录】").Click
Browser("Browser").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("Browser").Page("在线考试系统").Frame("top").Link("【登录系统】").Click
else
'如果出现错误,则截图并保存到指定文件夹中
QTP_Capture capturePath,"login_"&i+3
'将数据源中的期待结果写为fail
Write_Excel dataPath,"login",i,"D","Fail"
Write_Excel dataPath,"login",i,"E","正确用户名和密码登录失败"
'将此结果在测试用例中进行体现
Write_Excel casePath,"login",i+3,"D","Fail"
Write_Excel casePath,"login",i+3,"E","正确用户名和密码登录失败"
'出错后,重新进入登录界面
Browser("Browser").Page("在线考试系统").Frame("top").Link("【登录系统】").Click
End If
else
If popno Then
'msgbox "no"
'将数据源中的期待结果写为pass
Write_Excel dataPath,"login",i,"D","Pass"
'将此结果在测试用例中进行体现
Write_Excel casePath,"login",i+3,"D","Pass"
‘pass后返回登录界面,继续执行下一轮操作
Browser("Browser").Page("在线考试系统").Frame("main_2").WebButton("返回上一页").Click
elseif popok then
'如果出现错误,则截图并保存到指定文件夹中
QTP_Capture capturePath,"login_"&i+3
'将数据源中的期待结果写为fail
Write_Excel dataPath,"login",i,"E","错误用户名或密码,登录成功"
' '将此结果在测试用例中进行体现
Write_Excel casePath,"login",i+3,"E","错误用户名或密码,登录成功"
'返回登录界面,继续验证相关数据
Browser("Browser").Page("在线考试系统").Frame("top").Link("【注销登录】").Click
Browser("Browser").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("Browser").Page("在线考试系统").Frame("top").Link("【登录系统】").Click
else
'如果出现错误,则截图并保存到指定文件夹中
QTP_Capture capturePath,"login_"&i+3
'将数据源中的期待结果写为fail
Write_Excel dataPath,"login",i,"D","Fail"
Write_Excel dataPath,"login",i,"E","错误数据,但提示语不正确"
'将此结果在测试用例中进行体现
Write_Excel casePath,"login",i+3,"D","Fail"
Write_Excel casePath,"login",i+3,"E","错误数据,但提示语不正确"
'出错后,重新进入登录界面
Browser("Browser").Page("在线考试系统").Frame("top").Link("【登录系统】").Click
End If
End If
Next
D、执行脚本后,关闭网页和发送相关文档到相关人员的邮箱之中
'执行完之后,关闭网页
Browser("Browser").Close
'执行完此模块的测试后,将测试结果发送到指定的邮件之中
Dim Body '邮件的内容
Dim sendto'收件人的地址
Dim subject '邮件主题
Body="Hi:"&vbCrLf&"此文件为本次自动化测试的Case结果。请查收!谢谢!"&vbCrLf&vbCrLf&"from qwen"&vbCrLf&Now()
sendto="wen.qingshan@byd.com"
subject=now()&"自动化测试的结果"
SendMail sendto,subject, Body, casePath
一直以来不清楚大家是怎么去使用QTP测试的,甚至也不太清楚我这么去做是否能称得上算一个QTP的框架,不过我就是这样使用QTP去做测试的。最后,十分感谢您能够有耐心地看到这里,谢谢。
另外,不知道是不是因为51这个发表日志框将回车后剩余的空格也认成字符了, 一次发表所有内容老被截断,这点挺另人晕的.