首页 > 代码库 > QTP脚本--测试参数限制

QTP脚本--测试参数限制

以前一直觉得自己没有写代码的资质,太急于求成,以为一天就能写好几个功能,几千行代码,于是就没耐心了,没心情学下去了....但是最近发现其实写代码是一个漫长的过程,都是在修修改改中成长起来的。于是今天试着慢慢用QTP测下参数限制,虽然代码量不多,其实也算不上编程,O(∩_∩)O哈哈~但也是个慢慢积累的过程。

转载要说明来自  博客园--邦邦酱好 哦~

 

首先,我有一段登陆系统的测试模块,可以把它设为可重用的,并且参数化必要的信息,比如登陆用户名密码等等,这些就不细说了。可以参见《QTP自动化测试实践》8.3节 Action测试输入的参数化,调用过程见上一篇关于action的文章。

现在我要测试参数的限制:

第一步,必须要在当前项目下新建一个action,步骤如下:

选择Insert|Call to New Action:

然后在弹出框中填写新建action的name和description,可不可重用,以及新action的位置,这里我的参数检查功能是在登陆模块之后,所以选择第一个At the end of the test。

这样我们就可以在左侧栏看到2个action:

 

第二步,既然2个action都是测试同一个软件,可以重用它们的对象库respositories,操作步骤是:

先保存login这个action的对象库,后缀是“.tsr",然后选择Resources|Associate Respositories,选定刚刚保存的对象库文件,然后下面的Available Action选择login模块,右边的Associated Action选择Test_Parameters模块:

于是,在测试参数的模块中就可以直接使用login的对象库了。

 

第三步,因为测试参数是一个繁杂的过程,有很多种组合方式,而且每个参数输入框都要求输入一遍,但是好在参数输入框的规则都是一样的,比如不能输入符号,字母,负数,小数,空格等等,除此之外还有范围限制,于是我就采用数据驱动测试的方法来做这个脚本。先写好输入参数的过程:

?
1
2
3
4
5
6
Dialog("App(1.0.1.0)").WinEdit("MINS").Set ”1“
Dialog("App(1.0.1.0)").WinEdit("MINX").Set ”1“
Dialog("App(1.0.1.0)").WinEdit("MAXS").Set ”2“
Dialog("App(1.0.1.0)").WinEdit("MAXX").Set ”2“
Dialog("App(1.0.1.0)").WinEdit("IR").Set ”1“
Dialog("App(1.0.1.0)").WinEdit("OR").Set ”2“

 然后根据数据驱动测试的步骤设置参数根据table中的值来输入,详情参见我博客《QTP:数据驱动测试》,Expert View的显示如下:

?
1
2
3
4
5
6
Dialog("App(1.0.1.0)").WinEdit("MINS").Set DataTable("minS", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("MINX").Set DataTable("minX", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("MAXS").Set DataTable("maxS", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("MAXX").Set DataTable("maxX", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("IR").Set DataTable("IR", dtLocalSheet)
Dialog("App(1.0.1.0)").WinEdit("OR").Set DataTable("OR", dtLocalSheet)<br>Dialog("App(1.0.1.0)").WinButton("应用参数").Click    ‘ 点击开始应用参数

我设置了2种参数范围边界的数据,9种服务端会拒绝应用的参数组合,30种客户端限制的参数类型组合。

 

第四步,对测试结果进行判断并显示在QTP生成的测试报告中:

开始我是这么写的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
If   Dialog("App(1.0.1.0)").Dialog("提示").Exist(3) Then
    Dialog("App(1.0.1.0)").Dialog("提示").WinButton("应用参数成功-确定").Click    ‘ 应用成功
    reporter.ReportEvent micDone,"yes","前2个:可以应用成功"
else
    reporter.ReportEvent micFail, "yes"," 前2个:服务端拒绝应用"
End If
 
If Dialog("App(1.0.1.0)").Dialog("错误").Exist(3) Then
    Dialog("App(1.0.1.0)").Dialog("错误").WinButton("服务器不支持该参数-确定").Click
    reporter.ReportEvent micDone,"server no","中间9个:服务端拒绝应用"
else
    reporter.ReportEvent micFail,"server no", "中间9个:服务端居然应用了"
End If
 
If  Dialog("App(1.0.1.0)").Dialog("警告").Exist(3) Then
    Dialog("App(1.0.1.0)").Dialog("警告").WinButton("客户端不支持该参数-确定").Click
    reporter.ReportEvent micDone,"client no","后30个:DTC拒绝应用"
else
    reporter.ReportEvent micFail,"client no", "后30个:DTC居然应用了"
End If

 运行之后发现,每一行参数的结果都有2个fail,因为我设置的三个主if是并列关系!符合其中一种情况之后,另外2种情况都会失败。

于是,我再写成这样的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
If   Dialog("App(1.0.1.0)").Dialog("提示").Exist(3) Then
    Dialog("App(1.0.1.0)").Dialog("提示").WinButton("应用参数成功-确定").Click    ‘ 应用成功
    reporter.ReportEvent micDone,"yes","前2个:可以应用成功"
 
elseif Dialog("App(1.0.1.0)").Dialog("错误").Exist(3) Then
    Dialog("App(1.0.1.0)").Dialog("错误").WinButton("服务器不支持该参数-确定").Click
    reporter.ReportEvent micDone,"server no","中间9个:服务端拒绝应用"
 
elseif Dialog("App(1.0.1.0)").Dialog("警告").Exist(3) Then
    Dialog("App(1.0.1.0)").Dialog("警告").WinButton("客户端不支持该参数-确定").Click
    reporter.ReportEvent micDone,"client no","后30个:客户端拒绝应用"
 
else
    reporter.ReportEvent micFail, "fail"," 结果跟预期不一致"
End If

 现在如果全部测试通过,不会出现fail的情况,但是需要在测试报告中一层层点开,查看对于每个测试数据行的测试结果是不是符合以下描述:

1.前2个:可以应用成功

2.中间9个:服务端拒绝应用

3.后30个:客户端拒绝应用

 

虽然上面的脚本避免了重复输入41种数据,但是后期的结果查看还是一个艰辛的过程,不知道QTP有没有把测试人员要求的结果描述统一到一个页面来的功能呢,有待挖掘。