51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4713|回复: 17
打印 上一主题 下一主题

[原创] QTP自动化查询脚本设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-1-8 16:23:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
脚本设计思路:
1、录制查询脚本。
2、参数化查询条件。
3、创建数据库检查点并参数化数据库查询条件(对象属性中个修改)。
4、创建输出值输出查询页面中的查询数。
5、设置数据库检查点属性(关联输出值与数据库返回值)。
6、设置脚本运行顺序(把数据库检查点放到输出值语句后)。

希望大家发表自己的看法。。。

[ 本帖最后由 borisman 于 2010-1-8 17:18 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-1-9 08:29:09 | 只看该作者
只检查总数,不检查具体内容?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-1-9 09:14:48 | 只看该作者
kankandfsdfsdfdsfds fdsfsdfsd fdsf sda
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-1-10 14:09:34 | 只看该作者

回复 2# 的帖子

不错,可以继续试着检查内容。。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-1-11 09:53:46 | 只看该作者
建议用框架.....这样做多了会很痛苦...很痛苦
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-1-11 10:56:40 | 只看该作者
有几点想法和大家讨论一下:
1、首先是关于测试的需求和范围,既然是用自动测试来测试查询,那么测试重点自然应该在查询结果的正确性上,而像页面跳转这样的检查点,则不应该纳入进来。我觉的对于自动化测试来说,测试需求和测试范围永远是第一位的,不能支持测试需求的检查点就最好放弃,不然会导致自动化测试的目标涣散。之所以不建议把页面跳转纳入自动化测试这样的检查点,一是因为它不是重点用例;二即使跳转出现问题依然不会影响用户核心的业务流程和工作,三自动化测试的投入产出比很低,四和手工测试相比,这样的检查点并没有体现出自动化测试的优势来。校验查询结果的数据正确性,远比校验页面跳转来的更有意义。
2、对于查询结果的校验,还是建议从页面取值,而且预期文件要事先准备,不应该使用数据库检查点。因为对于查询来说,很有可能出现的情况就是数据库中存储的数据是对的,但是页面展现却是错误的。这样的话虽然数据库检查点通过了,但是页面上的错误却漏过去了。还有,按照LZ的思路,如果脚本的检查点失败了,我们也很难定位缺陷是出在数据库数据存储上,还是出现在页面展现上;对于数据库检查点,我应用的最多的是检查数据库的变化,验证数据库里是否按照我预期的结果来运行,比如说导入了一个3000家单位的列表,导入结束后是否出现了重复行,旧数据是否被覆盖,是否有脏数据。因为这些问题有时会隐藏的比较深,页面结果无法展现的,往往在系统运行到后期时会出现数据上的冲突,所以用脚本来时刻做检查是比较合适的
3、从截图来看,LZ所测试的软件是一个行业软件,不知道会不会有兼容性测试的需求,如果有的话,那么那种数据库连接的方式就有问题,因为客户还有可能用ORACLE,DB2,这样的话就得考虑如果被测系统的数据发生了变化,那么测试脚本如果用最少的时间完成最完善的变动,这恐怕就要用到一定的设计模式了。当然如果这个系统永远只是给这一个客户用,那么可以忽略
我暂时就想到这么多了,楼下继续
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-1-11 13:29:52 | 只看该作者

回复 6# 的帖子

支持,说的很全面
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-1-11 16:38:11 | 只看该作者
对于多条件查询的情况该怎么处理?
查询结果的具体内容怎么检查?
我们有一个系统几乎全部都是查询功能,多表多条件联合查询(查询中间数据库,进行前台页面的数据展示),由于本人不会编程,也是初学者,这个功能的自动化测试不会弄啊,请各位帮忙
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-1-11 17:06:59 | 只看该作者

回复 8# 的帖子

这个问题跟编程其实没多大关系,重点还在于测试用例如何设计。
多条件的查询还是要把不同条件的组合列出来来,然后每个组合对应一个预期结果。你问具体内容怎么检查,我不太明白你的问题是否在于如何获取页面的查询结果?如果是的话,解决方法很多的,通过getProperty获取文本属性,或者识别table对象检查单元格的值,都是可以的。
在我的工作中也涉及到多条件查询,因此我们先准备了一套比较完善的数据,然后对这套数据执行不同的查询,并校验查询结果的正确性,这样做的好处是在维护的时候我们只需要考虑不同的测试输入就行,测试数据基本上就不用再改动了。
你提到自动化测试不会弄,那你也得告诉大家具体问题吧,比如说是用例不会设计?对象获取不到?有了具体问题才能有具体的讨论嘛
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-1-11 17:37:00 | 只看该作者
您好:
测试用例的设计没有问题
您说的:多条件的查询还是要把不同条件的组合列出来来,然后每个组合对应一个预期结果---是将所有的组合方式一一罗列出来,每一个都对应一个预期结果。这个在实际的QTP应用中如何实现?
我之前的做法:将查询条件进行参数化,列举所有的条件组合,然后每条datatable中的数据对应一个sql语句,但是由于sql语句太大,都是七八张数据表联合查询,还包含一些计算和数据转换,所以没能成功
你问具体内容怎么检查,我不太明白你的问题是否在于如何获取页面的查询结果?----就是对不同的查询结果进行检查,有页面检查和数据库检查
向您请教。

[ 本帖最后由 mizhe521 于 2010-1-11 17:39 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-1-12 11:09:14 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-1-12 11:14:42 | 只看该作者
对于检查点的实现,我的做法是一个预期结果就是一个EXCEL或者文本文件,里面保存的查询的预期。然后脚本从页面中获取测试结果,并将测试结果按照同样的格式写入EXCEL或者文本文件中,最后将两个文件的内容进行比较。这样做的好处是预期结果维护起来很方便。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2010-1-12 11:36:41 | 只看该作者
您有没有这个实例,发给我一个可以吗?您说的方法我能理解,但还是不知道具体该怎么处理脚本
我的QQ:932671715
非常感谢
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2010-1-12 12:55:30 | 只看该作者
有一段JAVA的代码是最近完成的,使用JXL封装了有关的EXCEL的操作,作用是根据给定的文件名和工作表名,以二维数组的形式返回EXCEL的内容,你参考一下吧。其实VBS实现起来的话原理是一样的,只是编码的时候会有所区别
  1. public String[][] getExcelValue(String filename,String sheetname){
  2.                 this.createtExcelObject(filename, sheetname);
  3.                 String[][] array = new String[row][col];
  4.                 for(int i = 0; i < row; i++){
  5.                         for(int j = 0; j < col; j++){
  6.                                 array[i][j] = readSheet.getCell(j, i).getContents();
  7.                                 // 如果预期值中包含公式名称并且公式处在第一位时将执行公式
  8.                                 if (array[i][j].contains("[CUR_TIME]")
  9.                                                 && 0 == array[i][j].indexOf("[")) {
  10.                                         array[i][j] = this.getCurrentDate("yyyy-MM-dd");
  11.                                 }
  12.                         }
  13.                 }
  14.                 close();
  15.                 return array;
  16.         }
复制代码

[ 本帖最后由 dreamever 于 2010-1-12 12:56 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2010-1-12 14:13:33 | 只看该作者
谢谢了,先学习一下
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2011-4-25 16:16:22 | 只看该作者
对于检查点的实现,我的做法是一个预期结果就是一个EXCEL或者文本文件,里面保存的查询的预期。然后脚本从页 ...
dreamever 发表于 2010-1-12 11:14




我的想法是:

1. 在页面和数据库里分别多条件查询,获得数据结果集。获取页面记录的总条数,获取数据库里记录的总条数,两个值对比;
2. 每获取页面上的一条记录,就在数据库的数据结果集中查询(遍历每条记录的每个字段),检验是否存在该条记录。

不过我觉得这个方法的缺点是:当查询出的结果集数量比较大时,就会非常的花费时间。

请问 , 在数据量比较小时,这个方法是否可行?
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2011-4-25 16:19:19 | 只看该作者
对于检查点的实现,我的做法是一个预期结果就是一个EXCEL或者文本文件,里面保存的查询的预期。然后脚本从页 ...
dreamever 发表于 2010-1-12 11:14


为什么不直接用数据库里的测试数据,将页面上查询结果和数据库查询的结果逐条比对。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2011-5-9 21:27:37 | 只看该作者
本帖最后由 hotsmile99 于 2011-5-9 21:55 编辑

对于页面元素太多的,例如一个详单的查询,楼上的有啥好的方法?
我希望提取出公用方法出来
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-20 06:30 , Processed in 0.078070 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表