qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

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都是测试同一个软件,可以重用它们的对象库respositories,操作步骤是:
  先保存login这个action的对象库,后缀是“.tsr",然后选择Resources|Associate Respositories,选定刚刚保存的对象库文件,然后下面的Available Action选择login模块,右边的Associated Action选择Test_Parameters模块:
  于是,在测试参数的模块中就可以直接使用login的对象库了。 第三步,因为测试参数是一个繁杂的过程,有很多种组合方式,而且每个参数输入框都要求输入一遍,但是好在参数输入框的规则都是一样的,比如不能输入符号,字母,负数,小数,空格等等,除此之外还有范围限制,于是我就采用数据驱动测试的方法来做这个脚本。先写好输入参数的过程:
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的显示如下:
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生成的测试报告中:
  开始我是这么写的:
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种情况都会失败。
  于是,我再写成这样的:
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有没有把测试人员要求的结果描述统一到一个页面来的功能呢,有待挖掘。

posted on 2014-05-22 10:11 顺其自然EVO 阅读(360) 评论(0)  编辑  收藏 所属分类: qtp


只有注册用户登录后才能发表评论。


网站导航:
 
<2014年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜