QTP自动化测试框架的基础知识
1. 什么是自动化测试框架?
假定你有一个活,需要构建许多自动化测试用例来测试这个应用程序。当你对这个应用程序完成自动化测试后,你对自己创建脚本应该有什么期望吗?你难道不想要-
- 脚本应该按照预期的来执行而且没有发生任何问题
- 脚本和流程应该会被很容易的理解
- 脚本是容易维护的
所有以上观点需要一个合适的自动化测试框架才能被实现
一个自动化测试框架是一个规范或者是约束,你需要让测试脚本遵从一些规则来完成上面提到的3点内容,这些规则或者纲要如下,比如
- 指定一些目录结构用来存储对应的测试用例,函数库,对象库和数据表格
- 决定数据表格格式,比如数据表个应该怎么组织,脚本是怎么访问这些数据表格的
- 遵循正确的代码标准,并且要在代码里有备注,以便别人能看懂你的代码
- 尽可能把一些能复用的代码封装成为函数,以便在发生变化的时候只需要修改很少的一部分
在创建测试脚本的时候始终遵循你设置的准则,这样可以创建一个包含所有你曾经有针对性的功能的自动化测试框架
框架的类型分别如下:
2. 在QTP使用的不同类型的框架
3. QTP里的线性框架
线性框架是你一步一步在测试流程里写测试脚本。在这样的框架类型中,你不需要创建任何函数,所有的测试步骤都是从上到下线性的顺序来写。假如你有一个测试用例,它是按照 Login->Create->Order->Logout的流程来走,那么测试脚本就会按照如下图所写一样:
3.1 在线性框架里的组件和工作流
以下图形展示了关于QTP线性框架的组件和典型的工作流
在这里每个测试用例都有它自己的对象库并且脚本里的数据都是hardcode
3.2 线性框架的优势:
- 不需要自动化的专业知识,你只需要录制和回放的方法就能用来创建脚本
- 快速和容易的方式来创建测试脚本
- 由于脚本是按照从上到下的顺序来写的,所以框架流程理解起来比较容易
3.3 线性框架的缺点:
- 重用代码的唯一方式是不断的复制和粘贴,从而导致大量冗余的代码
- 由于脚本里数据都是hardcode,同一个测试用例不能被不同的测试数据所驱动
- 由于代码在许多地方都是重复的,所以一旦有地方发生变化就需要修改很多地方
4. 关于QTP的模块框架
模块框架就是把所有的测试用例首先要分析下找出可以复用的流程的一个方法。然后把所有可以复用的流程放进函数里封装起来存储在外部文件中,当需要的时候可以在脚本里调用这些函数。考虑以下2个测试用例。
a)Login>Create Order>Logout.
b)Login>Search Order>Logout.
在这里登录和登出是可以复用的流程。那么这些流程就被封装起来保存在外部函数库里。测试脚本应该看起来像这样
4.1 模块框架的组件和工作流
为了可以使用外部库文件里的函数,库文件首先需要和测试用例关联起来。这样测试用例就可以调用库文件里的函数了
4.2 模块框架的优点:
- 由于复用的函数只需要创建一次,测试脚本就只需要调用所需要的函数,而不需要重新再写一遍函数里的内容,那么创建起来就快一点
- 由于代码的复用,创建测试用例所花的功夫也会缩短
- 如果复用的函数里发生任何改变,只需要改变一个地方就会影响到调用它的所有测试用例,因此维护起来也会很容易
4.3 模块框架的缺点:
- 由于脚本里的数据还是hardcode,所以还是不能实现不同的测试数据运行同一个脚本
- 需要花费额外的时间来分析测试用例识别出那些是可以复用的
- 创建和维护函数库需要好的编程知识
5. QTP的数据驱动框架
在数据驱动框架里,测试脚本里的数据不在是hard-code。相反,数据是被存储在一些外部文件里。测试脚本需要首先连接到外部数据源,然后从数据源里解析这些数据。大部分时间,我们一般都会使用Excel表格用来存储数据。其它的经常使用的外部数据源是:文本文件,XML文件,数据库以及一个外部文件以上的组合
5.1 数据驱动框架的组件和流程
5.2 数据驱动框架的优点:
- 由于数据与测试脚本是分离的,可以实现同一个脚本用不同的数据可以运行多次
- 测试数据的更改不会影响到测试脚本,反之亦然
5.3 数据驱动框架的缺点:
- 连接到数据源并读取里面的数据是需要额外的努力和相关专业的知识
- 需要用额外的时间来选择使用那种外部数据源,并且要决定外部数据源里的数据应该怎么被存储或是组织
6. QTP的关键字驱动框架
在关键字驱动框架里,你可以创建一些关键字以及相关联的一些方法和函数。然后你创建一个函数库,它里面包含一个读取关键字的逻辑,然后调用相关的动作。
关键字驱动框架有许多不同的形式,其中一个解释如下:
6.1 关键字驱动框架的组件
- 数据表格或者Excel表格包含了关键字和需要执行特定流程或者动作的步骤
- 一个函数库里包含一些函数,这些函数可以读取Excel里每行数据,然后把他转换为QTP可以识别的格式(也就是QTP脚本),然后最终执行它。比如,函数库读取Excel里的第一行数据,然后把他转化为----Browser(“Title”).Page(“Title”).WebEdit(“UserName”).Set “user1”
- 对象库在这个框架里不是必须的,如果你不想用对象库的话,可以用描述性编程
6.2 关键字驱动框架的工作流
6.3 关键字驱动框架的优点:
- 关键字和函数库变成完全通用的,因此对于不同的应用可以很容易的被重用
- 所有复杂的逻辑都添加到函数库里了。一旦库文件被准备好,在Excel表格里写测试脚本将变得很容易
6.4 关键字框架的缺点:
- 需要花很多时间在初始化创建函数库上,关键字驱动框架的优势只有在它被长时间使用的时候才能被充分体现出来
- 创建复杂的关键字函数库需要很强的编程技术
- 对于新人想快速理解框架是有点困难
7. QTP的混合框架
混合框架的意思是上面提到的一些框架的组合,基于需求,你可以合并以上框架的任何功能来组合成你需要的混合框架的版
有许多不同的方式来创建混合框架。让我们一起看看混合框架中其中一种的结构和工作流程
7.1 关键字驱动框架的组件
- 驱动脚本:它是一个VBS脚本文件,他是运行测试脚本的入口点
- 批处理表格:批处理表格包含了有已经自动化的所有测试用例列表,并且还包含一个叫做Execute的列名,它的值是"Yes"和"No".驱动脚本会读取这个表格,然后执行被标记为"Yes"的测试用例
- 每个测试用例是被分割成不同的业务流程。因此当这个用例包含的业务流程都被执行时候,这个用例才算被完全的执行
- 上面所说的是构成混合框架的主要组件,像函数库,数据表,对象库,配置文件等其它一般的组件也是混合框架的一部分
7.2 混合框架的工作流
7.3 混合框架的优点:
- 这个框架最大优点就是你可以用到其他框架最好的功能
7.4 混合框架的缺点:
- 该框架是非常复杂的,需要具备很好的编程知识和经验来从头到尾的构建混合框架
8. QTP的业务流程测试(BPT)框架
把测试用例分成多个流程,每个流程都用业务流程组件(Business process component)来脚本化的一个框架。当一个具体的测试用例所包含的组件都已经准备好以后,你可以在QC里按照你们的业务逻辑来连接这些组件从而组成一个BPT的测试用例,然后就可以执行它
8.1 BPT框架的组件:
- 应用程序区域:它作为一个容器用来存储业务流程组件和其他相关的项,比如函数库,对象库等等。
- 业务流程组件:就像Action和函数是用来存储可以复用的脚本一样,BPT框架有业务流程组件,该组件包含了一个动作所对应的脚本
- 以上提到的2个组件在BPT框架里是非常有用的,而其它就是一些标准的组件,比如函数库,对象库,数据表等等。这些所有组件组成了BPT框架
8.2 BPT框架的工作流
8.3 BPT框架的优点:
- BPT可以让非技术业务专家可以使用业务组件快速创建测试用例
- 许多功能,比如组件链接&数据参数化,这些都是来自BPT内置的功能。有了这些功能,你不需要花费额外的时间来写实现这些功能的代码
8.4 BPT框架的缺点
- BPT框架只能在QC里使用
- 如果你想为了你的测试脚本用BPT框架,需要为该框架支付额外的费用
QTP自动化测试框架的基础知识的更多相关文章
- 老李分享:qtp自动化测试框架赏析-关键字自动化测试框架
老李分享:qtp自动化测试框架赏析-关键字自动化测试框架 QTP从2005年继winrunner,robot逐渐退出历史舞台之后,占领主流自动化测试工具市场已经10年之久.当初为了提高在自动化测试 ...
- 转:透析QTP自动化测试框架SAFFRON
1.为什么要使用框架? 框架是一组自动化测试的规范.测试脚本的基础代码,以及测试思想.惯例的集合.可用于减少冗余代码.提高代码生产率.提高代码重用性和可维护性.例如QTestWare就是QTP自动化测 ...
- QTP自动化测试框架课程的目标
QTP自动化测试框架课程的目标 随着技术发展演变,qtp自动化测试工具有逐渐被其他工具和技术替换的趋势,所以我们三个POPTEST合伙人决定把qtp自动化测试的一套课程开放免费,这套qtp自动化测试课 ...
- QTP自动化测试框架简述
1.使用框架的原因? 框架是一组自动化测试的规范.测试脚本的基础代码,以及测试思想.惯例的集合,从而减少冗余的代码.提高代码生产率,重用性和可维护性. 2.自动化测试框架的架构 脚本层(业务组件开发) ...
- Vue框架之基础知识
在没有学习基础知识之前,我们需要下载vue的js文件,在使用vue语法之前引包 <script src='./vue.js'></script> 一.模板语法 模板语法是一种可 ...
- 关于Yii框架的基础知识
第一次写博文,也不知道怎么写,不太熟悉,带小伙伴学习一样我日常使用的Yii框架. PHP中的开发框架有很多,比如:ThinkPHP.Yii.CI.Laravel.Phalcon等.现在流行度最高的是L ...
- 【大数据】了解Hadoop框架的基础知识
介绍 此Refcard提供了Apache Hadoop,这是最流行的软件框架,可使用简单的高级编程模型实现大型数据集的分布式存储和处理.我们将介绍Hadoop最重要的概念,描述其架构,指导您如何开始使 ...
- Django学习---Web框架及基础知识
Django学习---Web框架 web框架的本质 我们在学socket,我们创建一个socketserver,然后运行起来,有一个client客户端要连接socket服务端,连接上之后,如果两边都没 ...
- TP框架---thinkphp基础知识
php框架 发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ...
随机推荐
- Partial Class部分类
Partial Class,部分类 或者分布类.顾名思义,就是将一个类分成多个部分.比如说:一个类中有3个方法,在VS 2005将该类中3个方法分别存放在3个不同的.cs文件中.这样做的好处:1.一个 ...
- hdu6121 build a tree(树)
题解: 可以考虑每一层结点的子树大小 必定满足下面的情况,即 a,a,a,a,a,a,b,c,c,c,c........ 然后每一层依次往上更新,结果是不变的 一共有logn层,所以依次扫上去,统计结 ...
- 2017 Multi-University Training Contest - Team 3 RXD and functions(NTT)
题解: 我是参考的 http://blog.csdn.net/qq_32570675/article/details/76571666 这一篇 orz 原来可以这么变换,涨姿势 代码: #includ ...
- [洛谷P3865]【模板】ST表
题目大意:区间静态最大值 题解:ST表,zkw线段树 ST表: st[i][j]存[i,i+$j^{2}$-1]的最大值,查询时把区间分成两个长度相同的小区间(可重复) #include<cst ...
- [链接] Linux下常见的~/.bashrc、/etc/profile、/etc/ld.so.config小科普以及caffe编译遇到的相关问题解决
由于博主设置禁止转载,这里贴一个链接,http://blog.csdn.net/u014266895/article/details/61928602,内容很有用,linux下很多软件问题都是各种路径 ...
- JSOI2008 星球大战 [并查集]
题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧 ...
- Linux内存 性能调优
内存是影响Linux性能的主要因素之一,内存资源的充足与否直接影响应用系统的使用性能. free命令:监控Linux内存使用状况. 由上图可知,空闲内存是free+buffers+cached=155 ...
- ShareSDK入门指南:Android 10分钟快速集成
ShareSDK 官方已提供Android 快速集成教程,以官方教程为参考,本文重点指导大家在集成中遇到的问题. Android 快速集成官方教程:http://wiki.mob.com/Androi ...
- 小程序根据input输入,动态设置按钮的样式
[需求]实现当手机号已填写和协议已勾选时,“立即登录”按钮变亮,按钮可点击:若有一个不满足,按钮置灰,不可点击:实现获取短信验证码,倒计时提示操作:对不满足要求内容进行toast弹窗提示. <v ...
- MyBatis的SQL语句映射文件详解(二)----增删改查
1.select语句 public List<User> findUser() { // TODO Auto-generated method stub List users= ( ...