QTP自动化查询脚本设计
脚本设计思路:1、录制查询脚本。
2、参数化查询条件。
3、创建数据库检查点并参数化数据库查询条件(对象属性中个修改)。
4、创建输出值输出查询页面中的查询数。
5、设置数据库检查点属性(关联输出值与数据库返回值)。
6、设置脚本运行顺序(把数据库检查点放到输出值语句后)。
希望大家发表自己的看法。。。
[ 本帖最后由 borisman 于 2010-1-8 17:18 编辑 ] 只检查总数,不检查具体内容? kankandfsdfsdfdsfds fdsfsdfsd fdsf sda
回复 2# 的帖子
不错,可以继续试着检查内容。。 建议用框架.....这样做多了会很痛苦...很痛苦 有几点想法和大家讨论一下:1、首先是关于测试的需求和范围,既然是用自动测试来测试查询,那么测试重点自然应该在查询结果的正确性上,而像页面跳转这样的检查点,则不应该纳入进来。我觉的对于自动化测试来说,测试需求和测试范围永远是第一位的,不能支持测试需求的检查点就最好放弃,不然会导致自动化测试的目标涣散。之所以不建议把页面跳转纳入自动化测试这样的检查点,一是因为它不是重点用例;二即使跳转出现问题依然不会影响用户核心的业务流程和工作,三自动化测试的投入产出比很低,四和手工测试相比,这样的检查点并没有体现出自动化测试的优势来。校验查询结果的数据正确性,远比校验页面跳转来的更有意义。
2、对于查询结果的校验,还是建议从页面取值,而且预期文件要事先准备,不应该使用数据库检查点。因为对于查询来说,很有可能出现的情况就是数据库中存储的数据是对的,但是页面展现却是错误的。这样的话虽然数据库检查点通过了,但是页面上的错误却漏过去了。还有,按照LZ的思路,如果脚本的检查点失败了,我们也很难定位缺陷是出在数据库数据存储上,还是出现在页面展现上;对于数据库检查点,我应用的最多的是检查数据库的变化,验证数据库里是否按照我预期的结果来运行,比如说导入了一个3000家单位的列表,导入结束后是否出现了重复行,旧数据是否被覆盖,是否有脏数据。因为这些问题有时会隐藏的比较深,页面结果无法展现的,往往在系统运行到后期时会出现数据上的冲突,所以用脚本来时刻做检查是比较合适的
3、从截图来看,LZ所测试的软件是一个行业软件,不知道会不会有兼容性测试的需求,如果有的话,那么那种数据库连接的方式就有问题,因为客户还有可能用ORACLE,DB2,这样的话就得考虑如果被测系统的数据发生了变化,那么测试脚本如果用最少的时间完成最完善的变动,这恐怕就要用到一定的设计模式了。当然如果这个系统永远只是给这一个客户用,那么可以忽略
我暂时就想到这么多了,楼下继续
回复 6# 的帖子
支持,说的很全面 对于多条件查询的情况该怎么处理?查询结果的具体内容怎么检查?
我们有一个系统几乎全部都是查询功能,多表多条件联合查询(查询中间数据库,进行前台页面的数据展示),由于本人不会编程,也是初学者,这个功能的自动化测试不会弄啊,请各位帮忙
回复 8# 的帖子
这个问题跟编程其实没多大关系,重点还在于测试用例如何设计。多条件的查询还是要把不同条件的组合列出来来,然后每个组合对应一个预期结果。你问具体内容怎么检查,我不太明白你的问题是否在于如何获取页面的查询结果?如果是的话,解决方法很多的,通过getProperty获取文本属性,或者识别table对象检查单元格的值,都是可以的。
在我的工作中也涉及到多条件查询,因此我们先准备了一套比较完善的数据,然后对这套数据执行不同的查询,并校验查询结果的正确性,这样做的好处是在维护的时候我们只需要考虑不同的测试输入就行,测试数据基本上就不用再改动了。
你提到自动化测试不会弄,那你也得告诉大家具体问题吧,比如说是用例不会设计?对象获取不到?有了具体问题才能有具体的讨论嘛 您好:
测试用例的设计没有问题
您说的:多条件的查询还是要把不同条件的组合列出来来,然后每个组合对应一个预期结果---是将所有的组合方式一一罗列出来,每一个都对应一个预期结果。这个在实际的QTP应用中如何实现?
我之前的做法:将查询条件进行参数化,列举所有的条件组合,然后每条datatable中的数据对应一个sql语句,但是由于sql语句太大,都是七八张数据表联合查询,还包含一些计算和数据转换,所以没能成功
你问具体内容怎么检查,我不太明白你的问题是否在于如何获取页面的查询结果?----就是对不同的查询结果进行检查,有页面检查和数据库检查
向您请教。
[ 本帖最后由 mizhe521 于 2010-1-11 17:39 编辑 ] :) 对于检查点的实现,我的做法是一个预期结果就是一个EXCEL或者文本文件,里面保存的查询的预期。然后脚本从页面中获取测试结果,并将测试结果按照同样的格式写入EXCEL或者文本文件中,最后将两个文件的内容进行比较。这样做的好处是预期结果维护起来很方便。 您有没有这个实例,发给我一个可以吗?您说的方法我能理解,但还是不知道具体该怎么处理脚本
我的QQ:932671715
非常感谢 有一段JAVA的代码是最近完成的,使用JXL封装了有关的EXCEL的操作,作用是根据给定的文件名和工作表名,以二维数组的形式返回EXCEL的内容,你参考一下吧。其实VBS实现起来的话原理是一样的,只是编码的时候会有所区别public String[][] getExcelValue(String filename,String sheetname){
this.createtExcelObject(filename, sheetname);
String[][] array = new String;
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
array = readSheet.getCell(j, i).getContents();
// 如果预期值中包含公式名称并且公式处在第一位时将执行公式
if (array.contains("")
&& 0 == array.indexOf("[")) {
array = this.getCurrentDate("yyyy-MM-dd");
}
}
}
close();
return array;
}
[ 本帖最后由 dreamever 于 2010-1-12 12:56 编辑 ] 谢谢了,先学习一下 对于检查点的实现,我的做法是一个预期结果就是一个EXCEL或者文本文件,里面保存的查询的预期。然后脚本从页 ...
dreamever 发表于 2010-1-12 11:14 http://bbs.51testing.com/images/common/back.gif
我的想法是:
1. 在页面和数据库里分别多条件查询,获得数据结果集。获取页面记录的总条数,获取数据库里记录的总条数,两个值对比;
2. 每获取页面上的一条记录,就在数据库的数据结果集中查询(遍历每条记录的每个字段),检验是否存在该条记录。
不过我觉得这个方法的缺点是:当查询出的结果集数量比较大时,就会非常的花费时间。
请问 , 在数据量比较小时,这个方法是否可行? 对于检查点的实现,我的做法是一个预期结果就是一个EXCEL或者文本文件,里面保存的查询的预期。然后脚本从页 ...
dreamever 发表于 2010-1-12 11:14 http://bbs.51testing.com/images/common/back.gif
为什么不直接用数据库里的测试数据,将页面上查询结果和数据库查询的结果逐条比对。 本帖最后由 hotsmile99 于 2011-5-9 21:55 编辑
对于页面元素太多的,例如一个详单的查询,楼上的有啥好的方法?
我希望提取出公用方法出来
页:
[1]