分享

我是如何使用QTP去测试的

 白雪~~~ 2010-11-08

一、文件目录位置分开

不同目录放置不同内容:

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

<script>alert('')</script>

123456

no

no

123

no

123

no

123

<script>alert('')</script>

no

 

四、脚本过程

A、初始操作,可把这一部分写进common

调用外部组件:

如:fucationPath="F:\qtptest\fucation\fucations.vbs" '函数组件

ExecuteFile fucationPath

定义casedatacapture位于系统的位置:

如: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_004login_009

For 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这个发表日志框将回车后剩余的空格也认成字符了, 一次发表所有内容老被截断,这点挺另人晕的.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多