51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3667|回复: 9
打印 上一主题 下一主题

[转贴] 数据驱动在QTP的运用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-10-13 16:39:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  最近看了不少朋友写的blog文章后,就越显自己的文章比较稚嫩.但我觉得这也是一种 学习 的方式,现在抱着一种共同学习的态度来探讨一下数据驱动在 QTP 中运用.很希望看我文章朋友能不吝啬的发表一下自己对这个方面的看法,那真是万分感谢啊.

   所谓数据驱动就是用一个数据文件把 测试 脚本驱动起来,来达到更接近用户化更智能的测试.其目的是把测试人员从维护复杂的脚本程序中解放出来,只需维护好数据文件即可,减少了很多修改脚本的麻烦.下面讲一下通过四种途径来达到数据驱动.

1. datatable

        QTP本身程序就给我们提供了这么一个数据表,我们可以把测试数据或 测试用例 填入这个数据表中.

如:设计用例

   username  passwd

case1  mercury mercury

case2 xxxxxxx xxxxxx

录制脚本

For i="1" to Datatable.GetRowCount
Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)
Dialog("Login").WinEdit("assword:").Set DataTable("passwd", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
datatable.GlobalSheet.SetNextRow
Next

        本例是验证一个登录系统,通过DataTable不同的用例设计,驱动起这段脚本,达到测试的效果.当然上面的例子中还少一个很重要的步骤,那就是结果比较.如果不能进行结果比较的 自动化测试 不能够称为自动化测试.
        当然我们这里主要讲的是数据驱动,所以不在对上面的例子进行补充.

2. 文本文件

        我们可以把文本文件当成数据文件,通过对文本文件的读写操作,来实现数据驱动.

例:文本文件内的内容

  mercury,mercuy

读文件的代码

Function writeorderno(orderno)
Dim fso, myfile,username,passwd
Set fso="CreateObject(""scrīpting.FileSystemObject")
Set myfile="fso.openTextFile(""C:\testing.txt",1,false)
tmp=split(myfile.readline,",")
username=tmp(0)
passwd=tmp(1)
myfile.close
End Function

写文本文件的代码

Function writeorderno(orderno)
Dim fso, myfile
Set fso="CreateObject(""scrīpting.FileSystemObject")
Set myfile="fso.openTextFile(""C:\result1.txt",8,false)
myfile.writeline orderno
myfile.close
End Function

3 . EXCEL文件

        我们可以把EXCEL文件当成数据文件,通过对EXCEL文件的读写操作,来实现数据驱动.

        可以把EXCEL文件当作对象的方式来完成写的操作

Dim Excel,ExcelSheet
Set Excel="CreateObject(""Excel.Application")
Set ExcelSheet="CreateObject(""Excel.Sheet")
ExcelSheet.Application.visible=true
ExcelSheet.ActiveSheet.Cells(1,1).value=1
ExcelSheet.ActiveSheet.Cells(1,2).value=2
ExcelSheet.ActiveSheet.Cells(1,3).value=3
Excel.Save "C:\test.xls"
Set ExcelSheet="Nothing

        用ADO的方式连接EXCEL文件来做读的操作


Dim conn,input,filename
filename="D:\公基本情况(tb_gsgk)-标准格式.xls" '
Set conn= createobject("ADODB.Connection")
conn.Open "rovider="Microsoft.Jet.OLEDB.4.0ersist" Security Info="False;Data" Source="&filename&";Extended Properties="'Excel" 8.0;hdr="yes'""
Set input= createobject("ADODB.Recordset")
input.Open "select * from [公基本情况-标准格式$] " ,conn,2,2
input.close
Set input="nothing

4. 数据库

        可以利用设计数据表,把测试数据和测试用例放在数据表里,用ADO或者 其他 任何可以访问连接数据库的方式连接数据库,来实现数据驱动

   Dim res,cmd,sql
Set Res="createobject(""adodb.recordset")
Set Cmd="createobject(""adodb.command")
Cmd.activeconnection="rovider=SQLOLEDB.1assword=111111ersist Security Info="True;User" ID="sa;Initial" Catalog="xhq;Data" Source="192.168.191.142""  '这句话是连接数据库的数据源,要做修改
Cmd.CommandType = 1
sql ="selec t * from 表 where name="username""
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing

以上四种方法都可以帮助我们实现数据驱动,应该说数据驱动在自动化测试中运用的比较的广泛,才有必要拿出来探讨一下.

此文来源于51testing博客,转载请注明出处
原始链接:http://www.51testing.com/?26649/action_viewspace_itemid_1224.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-10-14 01:35:47 | 只看该作者
写的非常好.但是有一点疑问:针对第1.2.3种方法是一个脚本一个驱动文件?还是所有的脚本共用一个驱动文件?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2007-10-14 21:29:40 | 只看该作者
    刚才我还在纳闷这是哪位高手写的总结呀,一看原来是xiaonan 版主写的。呵呵!学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2007-10-15 10:56:58 | 只看该作者
    正在学习数据驱动,可以参考下了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-10-15 13:29:18 | 只看该作者
    哈哈之前在blog里就看到过,多谢xiaonan 版主
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-10-15 16:05:24 | 只看该作者
    能不能这样理解:所谓的数据驱动方式就是脚本获取参数的方式呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-10-15 16:37:40 | 只看该作者
    补充一下,还可以使用XML文件做数据驱动,在某些时候使用XML文件能达到其它文件很难达到的效果。比如存在某个可选子项(1个或多个,数量由数据文件中的子项数决定),每个子项包含多个子数据字段,这个时候使用XML文件就非常方便~(Excel应该也能实现,不过相对麻烦点~)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-10-16 18:45:51 | 只看该作者
    原帖由 zhumingwei 于 2007-10-14 01:35 发表
    写的非常好.但是有一点疑问:针对第1.2.3种方法是一个脚本一个驱动文件?还是所有的脚本共用一个驱动文件?



    怎么没人回答这个问题呢?难点大家都不知道?还是太简单了,不屑回答?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-10-16 19:44:09 | 只看该作者

    回复 8# 的帖子

    脚本和数据文件之间可以是多对多的关系,具体情况要看实际需求了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-10-19 11:03:04 | 只看该作者
    看了这个终于明白什么是数据驱动了.
    能不能给一个XML 实现数据驱动的例子啊,看到很多地方提到XML做数据驱动,但不知如何做,哪位有例子啊?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 11:50 , Processed in 0.080336 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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