`
isiqi
  • 浏览: 16356268 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

QTP参数化

阅读更多

QTP参数化

参数化种类:数据表、环境变量、随机数、外部数据参数化
1.
数据表(data table)方式参数化
a
file-->settings-->rundata table iterations中设置控制的是数据表中global里数据的运行方式;global是全局的!当运行方式设置为运行全部或多行时,运行几行数据程序就要回放几次!!不能重新设置!!
b
edit-->action-->action call properties-->rundata table iterations中设置控制的是数据表中该action里数据的运行方式;local 是局部的!当运行方式设置为运行全部或多行时,运行几行数据action”就要回放几次!!
进一步说明:
a、当global有多行数据file-->settings-->run On all Rows action有多行数据action call property->Run On all Rows 程序每次运行时,action中的每行都要执行一次
b
、当global 有多行数据file-->settings-->run On all Rows action有多条数据,action call property->Run one iteration only 而且global的行数>action的行数,action执行到最后一行后,不管此时global 的行数为几,下次回放时action都执行最后一行! 如果global的行数<action的行数,action就执行不到最后一行
c
action call property->Run from rows to rows,就结合上面所说可以理解
d
、当同一个action中有多个参数时,且action call property->Run On all Rows 这个时候每个参数的数据个数需要相等

2.随机数(random)参数化
a
、可以指定随机数的范围
b
、可以为该随机数指定名称,同时需要指定该随机参数产生新随机数的方式。这种情况下该随机数可以在别处使用。
产生新随机数的方式:
a
for each action iteration 迭代运行相同的action随机数不变化,运行不同action才重新产生一次随机数

在一个action保持不变
b
for each test iteration 在每一个测试运行的完整过程,随机数保持不变。重复执行该测试的时候随机数变化,例如在data table设置的global参数执行循环情况下。

在一次系统迭代保存不变
c
once per entire test run在整个测试中随机数保持不变,相当于只产生一次随机数

在整个测试中保持不变

3.环境变量(environment)参数化
a
、环境变量的来源有两种:内部环境变量和用户自定义环境变量。内部环境变量是QTP默认定义的一组变量,包括一些系统信息、项目信息等,例如:testdirOS等信息。用户定义的环境变量需要用户自己定义变量名和值,支持从外部导入,格式为XML文件。
b
、环境变量做参数有一定局限性,它对数据操作没有数据表灵活,环境变量用的最多的还是数据的共享
c
、环境变量做参数时,每个参数值都需要指定,而且不能批量生成,所以它有一定的应用场景:当一个test中的不同action需要同样一个参数,用环境变量去参数化常量是个很好的方法;其次就是不同的test需要用到同样的参数时,用环境变量可以很好解决这个问题

4.外部数据源实现参数化
利用外部数据驱动脚本的运行,这是经常用到的方法,这样可以很方便的组织测试数据。相对前三种方法,这种方式数据的读取、控制稍有些麻烦。下面以常见的几种方式进行说明。
a
、数据文件以excel格式组织
Excel组织测试数据是最常用的了。此种驱动可以采用两种方式,将数据ImportDataTab中或是利用com来操纵Excel文件。下面给出这两种方式的示例代码。(输入flight用户名和密码)

<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1028" type="#_x0000_t75" alt="QTP参数化 - 杰哥 - 杰哥在线" style='width:270.75pt;height:273pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.jpg" o:title="QTP参数化 - 杰哥 - 杰哥在线" /> </v:shape><![endif]-->QTP参数化 - 杰哥 - 杰哥在线

方式一、导入到DataTable
'
获得数据文件路径,并将数据文件导入到DataTable运行表中
DataStr= "d:\data.xls"
DataTable.AddSheet("TestData")
DataTable.ImportSheet DataStr,"Sheet1","TestData"
wait 1
'
输入用户名和密码
For i=1 to DataTable.GetSheet("TestData").GetRowCount
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
DataTable.SetCurrentRow i '
i设置为当前执行行
UserName=DataTable.Value("UserName","TestData")
PassWord=DataTable.Value("PassWord","TestData")
Dialog("Login").WinEdit("Agent Name:").Set UserName
Dialog("Login").WinEdit("Password:").SetSecure PassWord
wait 1
Dialog("Login").WinButton("Cancel").Click
Next

方式二、利用com操纵Excel
DataStr= "d:\data.xls"
Set ExlObj=CreateObject("Excel.Application")
ExlObj.Visible = false'
设置为true的情况,文档会打开
ExlObj.DisplayAlerts = false
Set book=ExlObj.Workbooks.Open(DataStr)
Set sheet=book.Worksheets("Sheet1")

For i=2 to sheet.usedrange.rows.count
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
UserName=ExlObj.WorkSheets("Sheet1").Cells(i,1) '
或者UserName=sheet.Cells(i,1)
PassWord=ExlObj.WorkSheets("Sheet1").Cells(i,2) '
或者PassWord=sheet.Cells(i,2)
Dialog("Login").WinEdit("Agent Name:").Set UserName
Dialog("Login").WinEdit("Password:").SetSecure PassWord
wait 2
Dialog("Login").WinButton("Cancel").Click
Next
ExlObj.Quit
Set ExlObj = nothing

b、数据文件以txt格式组织

<!--[if gte vml 1]><v:shape id="图片_x0020_2" o:spid="_x0000_i1027" type="#_x0000_t75" alt="QTP参数化 - 杰哥 - 杰哥在线" style='width:300pt;height:301.5pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.jpg" o:title="QTP参数化 - 杰哥 - 杰哥在线" /> </v:shape><![endif]-->QTP参数化 - 杰哥 - 杰哥在线

Const ForReading=1
TFilePath= "d:\data.txt"
Set Fso3 = CreateObject("Scripting.FileSystemObject")
Set DataFile= Fso3.OpenTextFile(TFilePath,ForReading,False)
DataFile.SkipLine
Do while DataFile.AtEndOfLine<>true
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
ReadString = DataFile.ReadLine
DataStr=split(ReadString,",")
Dialog("Login").WinEdit("Agent Name:").Set DataStr(0)
Dialog("Login").WinEdit("Password:").SetSecure DataStr(0)
wait 2
Dialog("Login").WinButton("Cancel").Click
loop
DataFile.close
Set Fso3=Nothing

c、数据文件以数据库组织,下面代码是用Access做的,其他类型数据库类似

<!--[if gte vml 1]><v:shape id="图片_x0020_3" o:spid="_x0000_i1026" type="#_x0000_t75" alt="QTP参数化 - 杰哥 - 杰哥在线" style='width:234pt;height:188.25pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image003.jpg" o:title="QTP参数化 - 杰哥 - 杰哥在线" /> </v:shape><![endif]-->QTP参数化 - 杰哥 - 杰哥在线

strDB="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\data.mdb;Persist Security Info=False"
strTableName="data"
Set Conn=createobject("adodb.connection")
Set Rst=createobject("adodb.recordset")
Conn.open strDB
Rst.open "select * from "+strTableName,Conn,2,2
Dim strTest(1)
Rst.MoveFirst
Do while not Rst.eof
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"
strTest(0)=trim(cstr(Rst.fields(1)))
strTest(1)=trim(cstr(Rst.fields(2)))
Dialog("Login").WinEdit("Agent Name:").Set strTest(0)
Dialog("Login").WinEdit("Password:").SetSecure strTest(1)
Rst.MoveNext
wait 2
Dialog("Login").WinButton("Cancel").Click
Loop
Rst.close
Set Conn=nothing

d、数据文件以xml格式组织

<!--[if gte vml 1]><v:shape id="图片_x0020_4" o:spid="_x0000_i1025" type="#_x0000_t75" alt="QTP参数化 - 杰哥 - 杰哥在线" style='width:276pt; height:225pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image004.jpg" o:title="QTP参数化 - 杰哥 - 杰哥在线" /> </v:shape><![endif]-->QTP参数化 - 杰哥 - 杰哥在线



Dim xmlDoc 'As DOMDocument
需要引用xml对象
set xmlDoc=CreateObject("microsoft.xmldom")
xmlDoc.load("d:\testdata.xml")
Set Root=xmlDoc.documentElement
For i = 0 To Root.childNodes.Length-1
systemutil.Run "D:\Program Files\QuickTest Professional\samples\flight\app\flight4b.exe"

Set TestCases = Root.childNodes.Item(i)
For j = 0 To TestCases.childNodes.Length-1
Set TestCase = TestCases.childNodes.Item(j)
If cstr(TestCase.nodeName)="UserName" Then
Dialog("Login").WinEdit("Agent Name:").Set TestCase.text
end if
If cstr(TestCase.nodeName)="PassWord" Then
Dialog("Login").WinEdit("Password:").SetSecure TestCase.text
End If
Next
wait 2
Dialog("Login").WinButton("Cancel").Click

Next
Set root=nothing
Set xml=nothing

分享到:
评论

相关推荐

    QTP的参数化

    QTP参数化详解 QTP参数化是指在QTP脚本中使用参数的方式来实现自动化测试的灵活性和可重用性。参数化可以让测试脚本变得更加灵活和通用,从而提高测试效率和覆盖率。本文将详细介绍QTP参数化的三种常用方法:...

    第8篇-QTP参数化技术

    QTP参数化技术是其核心特性之一,能够提高测试的灵活性和复用性,减少重复工作,增强测试覆盖率。在本篇中,我们将深入探讨QTP参数化的概念、应用场景、实现方式以及实际操作步骤。 **参数化的基本概念** 参数化是...

    qtp描述性编程实现参数化

    ### QTP描述性编程实现参数化 #### 一、QTP描述性编程概述 QTP(Quick Test Professional),现在称为UFT(Unified Functional Testing),是一款非常强大的自动化测试工具,广泛应用于功能回归测试。在QTP中,...

    软件测试工具QTP参数化global和local的区别

    自动化测试local软件测试工具QTP参数化global和local的区别MercuryQuickTest企业级自动化测试工具!目前已经被惠普收购,正式名字为HPQuickTestProfessionalsoftware,最新的版本为HPQuickTestProfessional10.0....

    QTP订机票参数化测试代码

    【QTP订机票参数化测试代码】是一种自动化测试技术,主要应用于航空行业的在线订票系统。QuickTest Professional(QTP)是HP公司开发的一种功能强大的自动化测试工具,它支持多种应用环境,包括Web、Windows、Java等...

    QTP自带Flight示例程序登录模块完整自动化测试

    我们可以使用QTP的参数化功能来参数化这两个参数,以便测试各种情况。例如,我们可以使用DataTable对象来存储不同的用户名和密码,然后使用这些数据来驱动测试。 在本示例中,我们使用了两个DataTable对象,一个...

    QTP入门-检查点输出值参数化 录像

    QTP入门-检查点输出值参数化 录像 检查点 输出值 参数化 同步点 1.检查点 目的: 检查点比较指定属性的当前值与期望值,以判断当前的程序(或站点)功能是否正常。 在密码正确的情况下预期结果是进入主界面,检查...

    QTP自动化测试实践

    此外,QTP还支持关联和参数化,这两项技术对于处理动态数据至关重要。关联可以解决页面元素的值在不同测试步骤中变化的问题,参数化则允许我们将常变的输入值替换为变量,便于管理和复用。 书中还会详细介绍QTP的...

    QTP 技术集锦 学习QTP的好东东

    QTP 参数化实例 - **案例研究**: 提供一系列参数化测试的具体案例,展示其在不同场景下的应用。 - **最佳实践**: 总结参数化测试中的最佳实践和注意事项。 #### 26. 对象库的管理与合并 - **管理**: 如何有效地...

    QTP描述性编程,参数化,读取excel,数据库

    本主题将深入探讨QTP中的描述性编程、参数化、读取Excel以及与数据库的交互等核心知识点。 1. **描述性编程**: 描述性编程(Descriptive Programming)是QTP的一种编程方式,它允许测试者用自然语言式的语句来...

    QTP参数传递的三种方法

    ### QTP参数传递的三种方法详解 #### 一、引言 QTP(QuickTest Professional),现称为UFT(Unified Functional Testing),是一款广泛应用于自动化功能测试的工具,它支持多种类型的软件应用程序。QTP提供了丰富的...

    QTP自动化测试教程

    1. Test Pane的Keyword View和Expert View:Keyword View提供了直观的脚本视图,方便进行参数化操作;Expert View则允许熟悉VB脚本和QTP函数的测试人员直接修改脚本。 2. Data Table:类似于Excel的工作表,用于...

    ( 第5篇-初试QTP脚本录制回放

    【QTP参数化】 为了提高脚本的灵活性和复用性,QTP提供了参数化功能。通过参数化,测试数据可以从外部文件、数据库或其他数据源引入,而不是硬编码在脚本中。这样可以方便地执行不同的测试场景,同时便于维护和更新...

    QTP自动化测试用例登陆模块测试实例

    可以使用QTP的参数化功能,通过参数表达式或外部数据文件来实现参数化。在这个实例中,我们使用参数表达式来参数化用户名和密码。 步骤4:优化脚本 在录制完脚本后,我们需要对脚本进行优化,以提高测试效率和可靠...

    QTP自动化测试—用户登录.pdf

    5.增强脚本:对用户名、密码进行参数化。 6. 在datatable中创建一个预期值列表status。 7. 按照设计的测试用例,填写用户名username、密码password以及期望值status的参数值。 8. 创建相应变量,创建一个表示...

    《QTP自动化测试进阶》样章

    5. **动作和参数化**:QTP的动作是一种组织测试步骤的方式,样章可能涵盖如何创建、修改和链接动作,以及如何进行参数化以实现数据驱动测试。 6. **检查点**:检查点是验证应用程序状态的关键,样章会教授如何设置...

    QTP资料(QTP自动化测试实践.pdf+QTP自动化测试进阶.pdf)

    4. **动作和参数化**:QTP中的动作是可重用的测试步骤集合,参数化则允许将静态值替换为变量,提高测试脚本的灵活性和可维护性。 5. **数据驱动测试**:通过数据驱动测试,QTP可以从外部数据源获取输入数据,进行多...

    qtp的参数化,供大家参考。、

    本文将深入探讨QTP中的参数化技术,这是一种提高测试效率和灵活性的重要方法。 参数化是自动化测试中的核心概念,它允许我们将测试数据从测试脚本中分离出来,存储在外部数据源中,如Excel、CSV文件或数据库等。...

Global site tag (gtag.js) - Google Analytics