首页 > 代码库 > 【测试求职】自动化测试相关
【测试求职】自动化测试相关
数据驱动与关键字驱动的区别。写出一种你熟悉的测试框架,解析它架构。
【数据驱动】通过用数据来控制测试的业务流,即在测试中用不同的数据来导向不同的测试结果。
四种途径来达到数据驱动.
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("Password:").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: esting.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:
esult1.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=http://www.mamicode.com/1
ExcelSheet.ActiveSheet.Cells(1,2).value=http://www.mamicode.com/2
ExcelSheet.ActiveSheet.Cells(1,3).value=http://www.mamicode.com/3
Excel.Save "C: est.xls"
Set ExcelSheet=Nothing
用ADO的方式连接EXCEL文件来做读的操作
Dim conn,input,filename
filename="D:公基本情况(tb_gsgk)-标准格式.xls" ‘
Set conn= createobject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Persist 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.activec ‘连接数据库数据源,需要修改
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
以上四种方法都可以帮助我们实现数据驱动,应该说数据驱动在自动化测试中运用的比较的广泛,才有必要拿出来探讨一下.
利用SQL connection访问
Dim conn
set conn=Createobject("ADODB.Connection")
Dim Srvname
Srvname="DSN=Dblis50;UID=sa; PWD=;APP=QuickTest Professional;WSID=ADMIN;DATABASE=Dblis50" ‘连接数据库数据源,需要修改
conn.connectionstring = Srvname
conn.Open
Dim Rec
Set Rec = CreateObject("ADODB.Recordset")
Dim SQL
SQL="select top 1 * from Lis_List"
Rec.open SQL ,conn
Dim Username
Username=Rec.fields("PatName")
Msgbox Username
利用SQL connection访问
Dim conn,res,cmd,sql,strconn
set conn=Createobject("adodb.connection")
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
strconn="DSN=Dblis50;UID=sa; PWD=;APP=QuickTest Professional;WSID=ADMIN;DATABASE=Dblis50" ‘连接数据库数据源,需要修改
conn.connectionstring = strconn
conn.Open
Cmd.Activeconnection= conn
Cmd.CommandType = 1
sql="select top 2 * from Lis_List"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Dim Username
Username=res.fields("PatName")
Msgbox Username
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
【关键字驱动】通过关键字来控制测试的业务流,即在测试中用不同的关键字来导向不同的测试结果。
关键字驱动技术在QTP火起来之后才被大家开始关注,关键字驱动测试技术是数据驱动测试的一种改进类型,主要关键字包括三类:被操作对象(控件)、操作(事件)和值,用面向对象形式可将其表现为控件.操作(值),将测试逻辑按照这些关键字进行分解,形成数据文件,用关键字的形式将测试逻辑封装在数据文件中,测试工具只要能够解释这些关键字即可对其应用自动化。拿具体步骤解释关键字驱动:
1.建立对象库:
将所有对象(控件)属性及方法进行封装
2.编制脚本,使用封装好了的控件及其对应的方法,给所进行的操作赋值
关键字驱动测试表示没有必要真正进行录制、回放,没有必要等软件非常稳定时再开展自动化测试,而且只要测试人员对软件业务足够了解,即可直接介入
最初用QTP就是简单的录制,然后修改脚本,缺点如下:
1. 应用软件必须具备一定的稳定性,并且在整个业务流程上都必须完整的实现了,否则顺序录制整能实现?
2. 自动化脚本的维护性成本非常的高
3. 自动化脚本的可重用性比较差
随之出现了关键字驱动的概念,一切都以对象为出发点,这有点像编程语言中从过程化向面向对象转化,在QTP中的具体实现方法是:
1. 在单个程序界面上将测试所涉及到的对象手工添加到对象库中
2. 在专家视图中基于对象库中的对象编写自动化测试脚本
以上这样做的明显的优点在于:
1. 脚本的可控性非常的强,模块化组织也比较好
2. 可以在开发完全实现所有的业务流程功能前就建立测试脚本,占据了比较大的主动性,为时间上的安排提供了更大的空间,一个词概括:“测试先行”
摘自:http://bbs.51testing.com/viewthread.php?tid=113729&extra=&highlight=%CA%FD%BE%DD%C7%FD%B6%AF&page=1
【测试求职】自动化测试相关