理解数据库检查点

上一篇 / 下一篇  2007-05-14 16:12:59 / 个人分类:QTP学习

  • 如何生成或修改SQL语句

通过Insert->checkpoint-databasecheckpoint生成数据库检查点,在生成过程中,要求设置查询语句,并会根据查询语句得到一个查询结果表,该表中的数据即为预期数据。将来在运行脚本的过程中,QTP又根据查询语句从当前的数据库中获取实际数据,然后将实际数据与预期数据相比较,从而得知检查点是否成功。

检查点语句生成以后,会产生一个DbTable对象,该对象在关键字视图可以看到,在仓库中也存在。可以通过设置该DBtable对象的object properties属性“Source”来修改SQL语句。修改了SQL语句就表示修改了查询结果。

修改了SQL语句后,不能相应的修改预期数据表。

  • 如何理解检查点的属性(checkpoint properties

上面的表是创建检查点时截取的。(无论什么时候打开本属性窗口, 表中的数据都不会改变,但可以通过窗口中的“Configure value->Constant”来手工修改表中的数据,通过这种方式修改了数据后,就相当于对截图进行了修改。如果通过“Configure value->Parameter”来将单元格的数据参数化,虽然看起来是数据被修改,但是如果再选择Constant,数据就会恢复,因此通过参数化数据的方法,不会真正影响截图的数据。)

我们在表中指定想要检查的区域。(区域中的显示的值就是预期值。预期值可以是常数,也可以是参数变量。当Cell Identification页中设置by position时,本表的列必须与实际查询表的列相对应,否则检查不能通过。如在生成检查点语名时查询语句为“select username,id,realname from sys_user t”,后来通过修改object properties,将查询语句改为“select username,realname,id from sys_user t”,则执行检查时是不能通过的,因为查询表中第23列的数据已经不能与截取的表相对应。同理,如果在Cell Identification页中设置行by rownumber时,也会有同样的问题存在。)

以下是属性框三个页签中的内容:

l        Expected Data设置预期值,可以是常量或参数。如,可以要求QTPDAta table中取值作为预期值。

l        Settings设置预期值与实际值相比较时的语法规则。

l        Cell Identification指导QTP放置被检查的数据。如,假设你想检查位于检查点属性框中第一行第2列的数据,但是你明白,每运行一次测试脚本,查询出来的数据的行的排序可能发生改变。因此,让QTP通过列名和行row containing a known value in akey column来定位单元格,而不是通过列数或行数来定位单元格。

Tip: The value matching settings and cell identification criteria apply to all selected cells in the checkpoint. If you want to use different value matching or cell identification criteria for different cells in the table or database, create separate checkpoints and specify the relevant cells for each.

检查点属性窗:

Checkpoint timeout指定检查点运行的最长时限,QTP在检查点通过(在本时间范围内)或超时后,才进行下一步操作。如果在最长时限时还没有检查通过,则本检查失败。

例如,检查点装载数据需要一定的时间,增长checkpoint timeout时间,可保证检查点有足够的时间通过检查,不会超时失败。

:Checkpoint timeout选项仅仅对table检查点有效,对于database检查点无效。

Insert statement在新增检查点时,指明检查点语句在脚本中的插入位置。

注意:Insert statement选项在录制或修改检查点时无效,只在新增检查点时有效。

注意:当一列是key column时,该列不一定是被检查的列,key column的数据仅用来帮助确定被检查的数据行。

 

  • 指定数据的比较规则

本设置决定真实数据单元如何与预期数据相比较,本设置对所有单元格有效。

默认情况下,认为真实数据单元是字符串型,并进行精确检查,但是忽略空格。

选项

描述

Verification type

l        指定单元格中的内容是如何被比较的。

l        String Content—默认。将被检查数据以字符串对待。如22.00会被认为是不同的值。

l        Numeric Content—将被检查数据以数值对待。如22.00会被认为是同一值。

l        Numeric Range—只要数据满足一定的范围,就会检查通过,真实数据只要在最小值与最大值之间就可以了。

Exact match

默认。 精确匹配。选中此项,则进行精确匹配;不选中,则只要预期值包含在真实值之中即可。

注意:只有当Verirication typeString Content时,才显示这个选项。

Ignore space

默认。在比较时忽略单元格中的空格。添加或减少空格不会影响检查结果。

注意:只有当Verirication typeString Content时,才显示这个选项。

Match case

区分字母的大小写。

注意:只有当Verirication typeString Content时,才显示这个选项。

Min / Max

指定数据的误差范围。只要数据在误差范围之内都可视为正确数据。

注意:只有当Verirication typeNumeric Range时,才显示这个选项。

 

  • 指定Cell Identification设置

Cell Identification页签中的设定,用以确定QTP如何在实际数据表中查找与预期值对应的数据单元。

 

Cell Identification页签包括以下选项:

Identify columns

指定将与预期数据相比较的实际数据单元在实际数据表中的列位置。

l        By position根据列的顺序位置来定位(即预期数据表中的第N列对应实际数据表中的第N列)。如果列位置产生位移,就会导致不匹配。本选项一般用于Table检查点。

l        By column name根据列名来定位(即预期数据表中的列名对应实际数据表中的列名)。列的位移不对检查点产生影响。一般用于database检查点,对于Table检查点无效。

Identify rows

指定将与预期数据相比较的实际数据单元在实际数据表中的行位置。

l        By row number默认。根据行的顺序位置来定位(即预期数据表中的第N行对应实际数据表中的第N行)。如果行发生位移,就会导致不匹配。

l        By selected key column(s)选中此项以后,可以设置关键列,关键列列名旁有一个“钥”标记。在定位行时,到实际数据表的关键列中查找与预期数据表关键列的值相匹配的值,所找到的第1个匹配值则是正确的行。行的顺序位移不影响检查结果。如果数据库中有多行同时满足条件,则QTP只检查第1条记录。关键值可以是多个列的联合值。

Use value match criteria to identify data in the key column

在对关键列进行匹配时,使用Setting页签的verification type选项中设置的匹配规则。

注:只有当选中了By selected key column(s)选项时,本选项才有效。

 

 

当选择by row number时,属性窗中预期值所在的行数,应该与真实数据所在的行数相同,否则匹配失败。因此行移位都会导致检查失败。

当选择by selected key column(s)时,属性窗口中预期值可以在任意行位置。执行检查时,以该行Key column列的值为条件在数据库中进行筛选,如果选出了符合条件的记录,则将该记录与预期值进行比较,如果记录数据全部匹配,则检查通过。(当有多个Key Column列时,则筛选条件为这些列的数据的联合)。

要注意几个问题:

(1).            只有被打勾的数据才被检查,其它没打勾的即使不匹配也没关系。

(2).            Key column列的数据如果没有打勾,也不会被检查,它只是提供查询条件。

(3).            属性窗口数据表中的数据本身就是默认预期数据,当然用户可以对这些预期数据进行修改。

(4).            在属性窗口数据表中的数据是相对固定的,除非用户在本属性窗口中特殊别进行了修改。

(5).            本属性窗口数据表中的所看到的数据都是预期数据,真实数据表是看不到的。真实数据表在每次执行脚本时都有可能不同。

(6).            在运行结果(result)中,如果检查失败,则可点击“checkpoint ‘表名”看到检查结果表。双击表中的单元格,弹出窗口显示该单元格的预期值与真实值。当然,本结果表中显示的仍然是预期值。

(7).            如果在属性窗口的数据表中设置了一个检查点数据,但是数据库中有多条满足条件的数据,则只检查第一条满足条件的数据,如果第1条检查完全匹配,则通过,如果不匹配,则失败。

(8).            如果在属性窗口的数据表中设置了多个相同的检查点数据,但数据库中只有一条满足条件的数据,该条数据只与第1个检查点进行匹配检查。其它几个检查点失败。


TAG: QTP学习

 

评分:0

我来说两句

Open Toolbar