数据驱动在QTP中的运用(四) - 使用SQL数据库

介绍如何进行QTP数据驱动测试 介绍如何进行数据驱动测试 测试脚本的开发和维护是自动化测试的重要环节,适当地调整和增强测试脚本,能提高测试脚本的灵活性,增加测试覆盖面,以及提高应对测试对象变更的能力。数据驱动方式的测试脚本开发是解决这类问题的重要手段。 本章介绍如何在自动化测试过程中使用数据驱动的测试脚本开发方式,对测试脚本进行参数化,包括如何使用QTP的Data Table参数化、Action参数化、环境变量参数化等脚本参数化的方法。 数据驱动的测试方法要解决的核心问题是把数据从测试脚本中分离出来,从而实现测试脚本的参数化。 立即下载

本篇主要讲述Flight打开订单的正确性测试,通过数据库进行数据驱动测试,主要步骤和考虑思路如下:

1.从数据库中随机读取一条存在的记录
2.在Flight中打开本条记录
3.比较数据库中的数据和软件界面上的显示是否一致
   - 其中数据库中读出的记录数据保存在局部变量中
   - 界面显示的实际数据通过Output Value保存到QTP自带的DataTable中.

 

Option Explicit

Dim conn, rst, maxnumber, rndNumber, sql
Dim dbFlightNumber, dbTicketNumber, dbPlaneType, dbCustomerName
Dim oPlaneType
'------------------------------------------------------------------------------------------------------------------------------------------------------

'获取数据库中的记录数据(期望结果)
Const  strConn = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=QT_Flight32"
Set conn=CreateObject("Adodb.Connection")
Set rst=CreateObject("Adodb.RecordSet")
conn.open strConn

'获取最大Order_Number
sql = "select max(order_number) from orders "
rst.Open sql, conn
maxNumber = rst.Fields(0).Value
rst.Close

'随即获取一条记录
rndNumber = RandomNumber(1, maxNumber)
sql = "Select  Flight_Number, Tickets_Ordered, Class, Customer_Name  from orders where order_number =" & CStr(rndNumber)
rst.Open sql, conn

While rst.EOF
 rndNumber = RandomNumber(1, maxNumber)
 sql = "Select  Flight_Number, Tickets_Ordered, Class, Customer_Name  from orders where order_number =" & CStr(rndNumber)
 rst.Open sql, conn
Wend

rst.MoveFirst
While not rst.EOF
    dbFlightNumber = rst.Fields(0).value
    dbTicketNumber =rst.Fields(1).value
    dbPlaneType = rst.Fields(2).value
    dbCustomerName = rst.Fields(3).value
    rst.MoveNext
Wend

conn.close
Set rst=nothing
Set conn=nothing


'------------------------------------------------------------------------------------------------------------------------------------------------------
'录制脚本程序
SystemUtil.CloseProcessByName "Flight4a.exe"
SystemUtil.Run Environment.Value("ProductDir") & "/samples/flight/app/flight4a.exe"
Dialog("Login").WinEdit("Agent Name:").Set "Admin"
Dialog("Login").WinEdit("Password:").Set "Mercury"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set rndNumber  '在这里Set 随机打开的订单
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").Activate


'获取 界面显示的实际数据(实际结果)
Window("Flight Reservation").WinEdit("Flight No:").Output CheckPoint("Flight No:")
Window("Flight Reservation").WinEdit("Tickets:").Output CheckPoint("Tickets:")
Window("Flight Reservation").WinEdit("Name:").Output CheckPoint("CustomerName")

'将界面上的仓位转换为1,2,3
If Window("Flight Reservation").WinRadioButton("First").GetROProperty("Text") = "ON" Then
 oPlaneType = 1
ElseIf Window("Flight Reservation").WinRadioButton("Business").GetROProperty("Text") = "ON" Then
 oPlaneType = 2
ElseIf Window("Flight Reservation").WinRadioButton("Economy").GetROProperty("Text") = "ON" Then 
 oPlaneType = 3
End If


'检查Flight Number
If CStr(dbFlightNumber) = CStr(DataTable("oFlightNumber", dtLocalSheet)) Then
 Reporter.ReportEvent micPass, "打开订单- Flight Number", "期望结果是:" & dbFlightNumber & ", 界面显示实际结果是:" & DataTable("oFlightNumber", dtLocalSheet)
Else
 Reporter.ReportEvent micPass, "打开订单- Flight Number", "期望结果是:" & dbFlightNumber & ", 界面显示实际结果是:" & DataTable("oFlightNumber", dtLocalSheet)
End If

'检查Ticket Number
If CStr(dbTicketNumber) = CStr(DataTable("oTicketNumber", dtLocalSheet)) Then
 Reporter.ReportEvent micPass, "打开订单- TicketNumber", "期望结果是:" & dbTicketNumber & ", 界面显示实际结果是:" & DataTable("oTicketNumber", dtLocalSheet)
Else
 Reporter.ReportEvent micPass, "打开订单- TicketNumber", "期望结果是:" & dbTicketNumber & ", 界面显示实际结果是:" & DataTable("oTicketNumber", dtLocalSheet)
End If

'检查Customer Name
If CStr(dbCustomerName) = CStr(DataTable("oCustomerName", dtLocalSheet)) Then
 Reporter.ReportEvent micPass, "打开订单- CustomerName", "期望结果是:" & dbCustomerName & ", 界面显示实际结果是:" & DataTable("oCustomerName", dtLocalSheet)
Else
 Reporter.ReportEvent micPass, "打开订单- CustomerName", "期望结果是:" & dbCustomerName & ", 界面显示实际结果是:" & DataTable("oCustomerName", dtLocalSheet)
End If

'检查Plane Type
If CStr(dbPlaneType) = CStr(oPlaneType) Then
 Reporter.ReportEvent micPass, "打开订单- Plane Type", "期望结果是:" & dbPlaneType & ", 界面显示实际结果是:" & oPlaneType
Else
 Reporter.ReportEvent micPass, "打开订单- Plane Type", "期望结果是:" & dbPlaneType & ", 界面显示实际结果是:" & oPlaneType
End If

'Close Prog
Window("Flight Reservation").Close

 


 

6种常用数据分析方法详解:从描述统计到时间序列 数据分析是连接数据与业务决策的桥梁。面对海量数据,掌握描述性统计与对比分析可快速了解现状与差距;相关分析与回归分析能揭示变量间的关联与影响大小;聚类分析用于用户分群,时间序列分析则预测未来走势。这些方法广泛应用于用户画像、销量预测、活动效果评估等场景,是数据分析师和运营人员必备的技能。系统掌握这6种核心方法的使用场景、原理逻辑与实操步骤,能够帮助读者建立完整分析框架,真正用数据驱动业务增长。 阅读详情

相关推荐

vue3+SuperMap iClient3D for Cesium实现可视域分析功能

基于Vue3框架及SuperMap iClient3D for Cesium提供的ViewShed3D类实现场景动态可视域分析

qq_43334519的博客 2248

QTP学习笔记(四)

今天把我测试的flight的脚本放上来,请大家一起研究指点。 action1:登录界面 systemutil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe"' 启动flight程序Dialog("Login")....

weixin_34413357的博客 178

当拿到金葡菌的全基因组测序数据后该怎样进行分析呢

很多做科研实验/做课题报告的科研老师们在拿到全基因组测序数据之后要进行一系列的分析,但同时也担心数据庞大分析缓慢导致进度,也有因为不会编程不知道该如何进行拼接分析的...其实需要质控拼接、MLST分析及菌种鉴定等完全可以自己在平台上进行分析,下面以金葡菌为例进行了质控拼接及菌种鉴定等分析。 网络图片(侵删) 金黄色葡萄球菌(Staphylococcus aureus,S. aureus)也称“金葡菌”,隶属于葡萄球菌 属,是革兰氏阳性菌的代表,为一种常见的食源性致病微生物。 那么在取得了金葡菌全基

GenesClouds的博客 1969

[转]QTP数据驱动和关键字驱动

原文地址:http://blog.sina.com.cn/s/blog_4d54c07a0100gk41.html 关键字驱动:   数据驱动技术可以将用户使用工具的关注点放在对测试数据的构建和维护上,而不是直接维护脚本,可以利用同样的过程对不同的数据输入进行测试。关键字驱动技术在QTP火起来之后才被大家开始关注,关键字驱动测试技术是数据驱动测试的一种改进类型,主要关键字包括三类:被操作对象(控

Cheers Li 软件测试博客 1370

SPSS篇—卡方检验

今天依旧跟大家分享一个在SPSS中使用率比较高的分析方法:卡方检验。 在开始做分析之前,我们需要明白两件事情:卡方检验是什么?一般用来干什么?我们只有充分了解分析方法以后才能够正确的使用它。 卡方检验在百科中的解释是:卡方检验是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用,包括:两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。它的原理是...

小白数据营的博客 20万+

【多模态融合】TransFusion学习笔记(1)

工作上主要还是以纯lidar的算法开发,部署以及系统架构设计为主。对于多模态融合(这里主要是只指Lidar和Camer的融合)这方面研究甚少。最近借助和朋友们讨论论文的契机接触了一下这方面的知识,起步是晚了一点,但好歹是开了个头。下面就借助TransFusion论文及其开源代码来串一串这方面的知识。这个很好理解,参考FPointNet网络图示。就是利用现有的2D检测器在图像上提取2D初始框,根据Camera成像原理,捕获2D框视锥内的点云,再利用点云分类模型(如:PointNet)做进一步分类。

4961

[QTP] 数据驱动测试

1. 数据驱动测试方法数据驱动测试方法要解决的核心问题是把数据从测试脚本中分离出来,从而实现测试脚本的参数化。数据驱动测试通常按以下步骤进行:1) 参数化测试步骤的数据,绑定到数据表格中的字段。2) 编辑数据表格,在表格中编辑多行测试数据。3) 设置迭代次数,选择数据行。在QTP中,可以使用多种方式来对测试脚本进行参数化,数据表参数化是其中一种重要的方式,此外还有环境变量参数化、随机数参数化等。首...

weixin_34198881的博客 256

在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch

文章目录在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch结论参考资料解释相关命令版本关系版本选择总结:实验 在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch 结论 使用conda虚拟环境 使用conda命令安装 最重要的是版本关系(python、cuda、cudnn、pytor或者tensorflow框架)的对应。 参考资料 tensorflow2.x安装 理清GPU、

纸上得来终觉浅,绝知此事要躬行! 3万+

QTP中不同脚本间调用action的问题

问题:qtp中两个脚本,用得同一个Environment文件,可是在顺序执行时。如何将第一个脚本的变量值保存起来跟第二个脚本用?尝试方法:1.在Action1里面把要存的值放到Environment中,在Action2中调出来。但此法适用于一个脚本里的两个action调用;2.把要的东西写进文件(excel、txt之类的文件),然后再读出来。写文件可以参考“FileSystemsObject”对象

rital的专栏 1568

Keras神经网络可视化模块keras.utils.visualize_util的安装配置方法

本文介绍了如何安装和配置keras.utils.visualize_util模块,并提供了一个简单的示例演示如何使用该模块来可视化神经网络的结构。在上述代码中,我们首先定义了一个简单的神经网络模型,该模型具有一个输入层、一个隐藏层和一个输出层,其中隐藏层具有512个神经元,输出层具有10个神经元。运行上述代码后,我们将在当前工作目录下找到一个名为model.png的文件,它显示了神经网络的结构图。这种方式有效地展示了整个过程,让我们能够更好地理解神经网络的结构,方便对其进行改进和调试。

. 892

《RT-Thread入门与实战》第1章:RT-Thread概述与核心优势

2006年由熊谱翔发起2017年成立上海睿赛德电子科技公司2021年成为国内首个通过ISO 26262 ASIL-D认证的RTOS。

2301_79143213的博客 986

面试必问的25道数据库测试题

1)什么是数据库测试? 数据库测试也称为后端测试。数据库测试分为四个不同的类别。 数据完整性测试 数据有效性测试 数据库相关的性能 测试功能,程序和触发器 2)在数据库测试中,我们需要正常检查什么? 通常,我们在DB Testing中检查的内容是: 约束检查 验证字段大小 存储过程 将应用程序字段大小与数据库匹配 基于绩效的问题的索引 3)解释什么是数据驱动测试? 在数据表...

a575223的博客 7277

FGC_grasp复现

FGC_GraspNet复现

qq_39568387的博客 385

修炼成QTP高手的十个步骤

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!                 在

gdhjgfr的博客 140

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

面试总结分享:25道数据库测试题

1)什么是数据库测试?数据库测试也称为后端测试。数据库测试分为四个不同的类别。数据完整性测试数据有效性测试数据库相关的性能测试功能,程序和触发器2)在数据库测试中,我们需要正常检查什么?通常,我们在DB Testing中检查的内容是:约束检查验证字段大小存储过程将应用程序字段大小与数据库匹配基于绩效的问题的索引3)解释什么是数据驱动测试?在数据表中,为了测试多个数据,使用数据驱动的测试。

nhb687095的博客 1290

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[转]《QTP自动化测试进阶》读书笔记

[转]《QTP自动化测试进阶》读书笔记(1)<br /> <br />学习《QTP自动化测试进阶》第一章。<br />采用不同的项目开发模型对自动化测试有不同的影响。<br />(1)瀑布模型:瀑布模型在需求定义方面做得很好,这对自动化测试是有益的,包括可以尽早选择合适的自动化测试策略,让自动化测试可以高层次、整体地进行计划。<br />(2)RUP:RUP强调的迭代开发让自动化测试可以应用在开发周期的很大一部分时间中。但是,也意味着频繁的变更,自动化测试需要与开发策略紧密结合,关注早期构建、迭代的速度、风

liumeiccnu的专栏 4394

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【转】《QTP自动化测试进阶》学习笔记

<br />[转]《QTP自动化测试进阶》读书笔记(1)<br />学习《QTP自动化测试进阶》第一章。<br />采用不同的项目开发模型对自动化测试有不同的影响。<br />(1)瀑布模型:瀑布模型在需求定义方面做得很好,这对自动化测试是有益的,包括可以尽早选择合适的自动化测试策略,让自动化测试可以高层次、整体地进行计划。<br />(2)RUP:RUP强调的迭代开发让自动化测试可以应用在开发周期的很大一部分时间中。但是,也意味着频繁的变更,自动化测试需要与开发策略紧密结合,关注早期构建、迭代的速度、风险

lishanshan523的专栏 3661

QTP连接MySQL

1.首先安装mysql数据驱动,qtp在windows系统下操作连接mysql,所以下载mysql-connector-odbc-5.1.8-win32.msi2.安装mysql驱动 ,默认安装即可。3. 添加默认数据源 控制面板->管理工具->数据源ODBC->系统DNS->添加->在“创建数据源”对话框中选择 “Mysql ODBC...

weixin_33751566的博客 153

软件测试mysql面试题及答案_软件测试技术之面试必问的25道数据库测试题

本文将带你了解软件测试技术之面试必问的25道数据库测试题,希望对大家学测试技术有所帮助面试必问的25道数据库测试题1)什么是数据库测试?数据库测试也称为后端测试。数据库测试分为四个不同的类别。数据完整性测试数据有效性测试数据库相关的性能测试功能,程序和触发器2)在数据库测试中,我们需要正常检查什么?通常,我们在DB Testing中检查的内容是:约束检查验证字段大小存储过程将应用程序字段大小与数据...

weixin_28778267的博客 6799
上一篇: 数据驱动在QTP中的运用(三) - 使用ADODB导入EXCEL数据文件
下一篇: GetROProperty,GetTOProperties,GetTOProperty的区别
浩西
博客等级 码龄19年 47粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值