QTP自动化测试 测试报告

实验(一) QTP自动化测试

一、 实验目的和要求

测试登录模块的功能。

二、 实验步骤和原理

1、设计好测试用例,当然这步可以先做,这里我们使用5个测试用例来进测试。 A:用户名、密码为空,点击登录,期望系统提示:请输入用户名,测试数据无。 B:输入用户名、密码为空,点击登录,期望系统提示:请输入密码,测试数据

test ,空。

C:输入错误的用户名、密码,点击登录,期望系统提示:用户名不存在,测试

数据test,test。

D:输入正确的用户名、错误的密码,点击登录,期望系统提示::密码不正确,

测试用例:admin,test。

E:输入正确的用户名、密码,点击登录,通过系统验证,进入系统,测试数据:

admin,admin。

2、录制脚本,录制正常的业务流程,如用户admin登录后,进入管理界面,然后再退出。

A:输入要测试的地址:

B:输入用户名和密码提交:

C:正常进入系统后,退出,然后停止录制。

3、保存脚本。

4、增强脚本,先将登录用户名参数化为usename,datatable选本地表。

5、将登录密码参数化为password,同样的datatable选本地表(同4)。

6、在datatable中创建一个预期值列表status。

A:双击列名

B:输入列名status

7、按照测试用例的设计,填写用户名usename,密码password以及预期值status的参数值。

将第一步设计的用例和期望值写入参数化表。

8、切换到专家视图(看代码),创建相应的变量(dim i)

9、创建一个表示datatable中行号i。

10、使用for语句,使qtp在测试时能够自动读取每一行中用户名和密码

行数使用函数自动获得。

11、插入一个文本输出点,输出系统的实际提示信息,并将该值保存datatable中action1的outmsg列,就是系统的输出值和我们的预期值进行比较用,先到图形界面,选中系统的输出点击右键。然后放到我们设计的参数里去(outmsg,同样也是本地表)

12、定义一个读取系统实际提示信息的变量outputvalue。

13、将系统实际提示信息赋予定义的变量outputvalue。

Dim outputvalue

14、定义一个变量读取预期的提示信息istatus。

15、将预期提示信息的值赋予定义的变量istatus。

Dim istatus

16、进行实际提示信息与预期提示信息进行比较,如果一致,则继续执行测试用例,如

不一致,给出错误报告。在进行比较之前,我们必须给上面两上变量赋值

17、设置自动获取action1中下一行值继续执行测试

18、调度脚本(注意action区别大小写)

19、如无问题,则执行测试,并分析报告

20、报告中有两个错误报告,表明此处存在bug,实际输出值与预期输出值不一致。

三、 实验环境

硬件:计算机

软件:Windows 2000和QuickTest Professional

四、 算法描述及实验步骤

l.录制脚本

(1)双击桌面QuickTest Professional快捷图标,出现如图1所示窗口。勾选web,然后点击“ok”按钮。

QTP自动化测试测试报告

(2)出现的窗口中,点击“Blanke Test“如图2所示,建立一个新的测试。

QTP自动化测试测试报告

(3)将登陆测试web工程的war文件“loginTest.war”拷到Tomcat安装目录下的webapps目录下如图3所示。打开Tomcat安装目录下的bin文件夹,双击“startup.bat”,启动Tomcat服务器。在浏览器地址栏中输入http://localhost:8080/loginTest/。能够启动longinTest工程。如图所示。(或者是将loginTest这个工程导入到Myeclipse中运行)

QTP自动化测试测试报告

QTP自动化测试测试报告

(4)点击在QuickTest Professional窗口工具栏上的“Record”按钮。在弹出的Record an Run Settings 窗口web选项卡中勾选“ Open the fellowing address when a record or run session begins”,在其下面的文本框中输入:http://localhost:8080/loginTest/,如图5所示,然后点击确定按钮。默认浏览器为IE,若需要使用其他浏览器可以在“Open the fellowing browser when a record or run session begins”下拉菜单中选择其他浏览器。

QTP自动化测试测试报告

图5

(5)QTP自动开始录制,IE会自动开启进入用户登录界面。然后我们在用户名中输入:admin 密码:admin,然后点击确定按钮。 如图所示。

QTP自动化测试测试报告

(6)登录成功进入管理界面,点击退出按钮如图所示。回到用户登录界面,关闭窗口。

QTP自动化测试测试报告

图7

(7)在QTP工具栏,点击“stop”按钮,停止录制。

(8) 点击“Expert View”查看专家视图,如图8所示。

QTP自动化测试测试报告

图8

(9) 点击“keyword View”查看关键字视图,如图9所示。

QTP自动化测试测试报告

图9

(10) 录制完后,点击“run”运行脚本,回放一次,检查录制的过程有无错误。在弹出的run窗口中直接点击确定。显示Test result 如图10所示,表示录制无误。

QTP自动化测试测试报告

图10

(11) 增强脚本

1) 点击“keyword View”进入关键字视图,先将登录用户名参数化usename, datatable选本地表。点击username的Value列的“<#>”。如图11所示。在弹出的窗口中选择并填入数据如图12所示,点击ok。

QTP自动化测试测试报告

图11

QTP自动化测试测试报告

图12

2) 同上一步骤将登录密码参数化为password,同样的datatable选本地表。

3) 在datatable中创建一个预期值列表status。双击列名C,输入列名status。如图13所示。

QTP自动化测试测试报告

图13

(12)按照测试用例的设计,填写用户名usename,密码password以及预期值status的参数值。如图14所示。

QTP自动化测试测试报告

图14

(13) 切换到专家视图(看代码),创建相应的变量(dim i), 使用for语句,使qtp在测试时能够自动读取每一行中用户名和密码行数使用函数自动获得。如图15所示。

QTP自动化测试测试报告

图15

(14) 先到关键字视图,选中系统的输出点击右键,选择“Insert Output Value”如图16所示。

QTP自动化测试测试报告

图16

(15)点击ok出现“Output Value Properties”窗口,勾选Property中的value。在点击Modify按钮。

(16)在“Output Options”窗口的Output Types选择Data Table,Name框中输入列名outmsg,

勾选“Current action sheet(loacl)”。点击确定。打开专家视图(看代码)如图17所示。

QTP自动化测试测试报告

图17

(17) 定义变量outputvalue, 将系统实际提示信息赋予定义的变量outputvalue。定义变量status, 将系统预期提示信息赋予定义的变量status。并进行实际提示信息与预期提示信息进行比较,如果一致,则继续执行测试用例,如不一致,给出错误报告。在进行比较之前,我们必须给上面两上变量赋值如图18所示。

QTP自动化测试测试报告

图18

(18)点击“run”运行脚本程序,观察Data Table和登录页面的变化。运行完成后会自动弹出测试结果如图19所示。展开左边树形结构,查看各个测试结果,并分析原因。

QTP自动化测试测试报告

图19

(19)查看Run-Time Table数据。如图20所示。

QTP自动化测试测试报告

图20

五、调试过程

IE浏览器版本过高。

六、实验结果

如实验步骤。

七、总结

IE浏览器有问题会导致录制不了。通过本次实验了解了QuickTest Professional的用法

 

第二篇:QTP自动化测试原理

QTP自动化测试原理

QTP主要采用的是使用GUI模拟人的操作。它在模拟人的操作时会记录操作的对象及所做的操作和顺序,然后在回放时按记录顺序操作这些对象。而在这个模拟的过程中,最重要的莫过于界面对象(控件)的识别,那QTP是怎么做的呢?下面就举一个小例子来说明:

比如我们要测试内网论坛http://XXX.XXX.XXX/bbs/index.php用正确的用户名和密码是否能成功登录。登录界面如下:

测试步骤大概如下:

1. 要先识别用户名输入框、密码输入框、登录按钮控件

2. 在用户名输入框中输入正确的用户名

3. 在密码输入框中输入正确的密码

4. 点击登录按钮

5. 验证是否登录成功,要验证是否成功登录,那就得知道成功登录与失败登录的区别。成功登录后的页面如下:

我们可以通过验证红色框中的内容或验证绿色框中的内容来标识登录是否成功,然后记入测试报告。 以上只是一个小例子,从中可以看出识别对象是一个很重要的问题也是一个很困难的问题,毕竟现在的控件类型越来越多(包括第三方插件或自己开发或定义的控件)。那QTP是怎么来识别对象的呢,下面通过讲解QTP识别以上小例子中的控件的方法来说明一下:

首先,QTP是通过记录控件的属性来标识对象的(当然具体用哪一些属性,QTP是有默认的,也可以配置)。假设QTP使用“html tag”和“name”属性来识别对象,QTP是怎么处理的呢?请先看下图:

QTP自动化测试原理

QTP自动化测试原理

图-QTP对象识别

在使用QTP录制时,QTP会把对象存储到对象库中。而对象是按如上图的方式存储于对象库中。即,QTP会默认给录制的对象取一个名字(这个名字可以自己改,只要在脚本中使用到此对象时保持和此名字一样就可以了),然后把识别此对象的属性和属性值存储到对象库中,我们可以先把识别对象的属性集合认为是一个属性包,接着就是把识别此对象的属性包与定义的对象名进行关联,也叫做对象映射。这样一个对象就存入对象库了。

接着来说明QTP是如何调用这个对象的。例如,在“用户名输入框”中输入“a用户”,伪代码如下: WebEdit(“用户名输入框”).Set “a用户”

现在分析一下这个语句:

首先,QTP会通过“用户名输入框”这个名字到对象库的对象名中查找,会找到以下这个对象名:

QTP自动化测试原理

然后通过找到的对象名,找到对象名映射的属性包,如下图:

接着QTP就会通过这个属性包来匹配页面上的控件的属性,如果在页面上找到一个唯一与此属性包匹配的控件,那QTP就会认为此控件为要找的控件。

然后QTP根据“WebEdit”来确定控件的类型,并调用QTP对于此类控件内置的操作方法“Set”把“a用户”赋予了控件

至于其他控件的识别和操作,基本原理和上面一样。检验登录是否成功,也是通过比对登录成功后的页面特有的控件的属性值来判断。

QTP还提供描述性编程,从而可以不使用对象库,如在“用户名输入框”中输入“a用户”,可以使用以下伪代码:

WebEdit(“Html tag:=INPUT”,” Name=username”).Set “a用户”

细心的朋友可能已经发现,上面只是把识别对象的属性包中的属性和属性值按一定规则直接写到了“WebEdit()”的括号内了。这时QTP将不通过对象库,而是直接使用括号内的属性和属性值到页面上去找匹配项。然后操作与使用对象库的操作一样。

QTP自动化测试原理

QTP自动化测试原理

当然,QTP还提供了一些其他的功能,比如参数化,划分模块(Action)等。但最重要的还是对象的识别。

相关推荐