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框架 发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ...
随机推荐
- 【EasyNetQ】- 快速开始
欢迎来到EasyNetQ.本指南向您展示如何在大约10分钟内启动并运行EasyNetQ. 你可以在GitHub上找到这个快速入门的代码:https://github.com/mikehadlow/Ea ...
- (转)mongdb性能优化收集
一.数据库最大连接数问题当你在后台日志中,发现大量“connection refused because too many open connections: 819”信息时,一般跟你没有设置合适的最 ...
- [剑指Offer] 43.左旋转字符串
题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...
- 【bzoj2815】[ZJOI2012]灾难 拓扑排序+倍增LCA
题目描述(转自洛谷) 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学过生物 ...
- BZOJ4557 JLOI2016侦察守卫(树形dp)
下称放置守卫的点为监控点.设f[i][j]为i子树中深度最大的未被监视点与i的距离不超过j时的最小代价,g[i][j]为i子树中距离i最近的监控点与i的距离不超过j且i子树内点全部被监视时的最小代价. ...
- POJ 3801/HDU 3157 Crazy Circuits | 有下界的最小流
题目: POJ最近总是炸 所以还是用HDU吧http://acm.hdu.edu.cn/showproblem.php?pid=3157 题解: 题很长,但其实就是给个有源汇带下界网络流(+是源,-是 ...
- [bzoj 3224]手写treap
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3224 bzoj不能用time(0),看到这个博客才知道,我也RE了好几发…… #inclu ...
- Java拷贝构造函数初尝试
浅复制(浅克隆) :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. 深复制(深克隆) :被复制 ...
- Django项目知识点汇总
目录 一.wsgi接口 二.中间件 三.URL路由系统 四.Template模板 五.Views视图 六.Model&ORM 七.Admin相关 八.Http协议 九.COOKIE 与 SES ...
- JVM内存模型 三
本文章节: 1.JMM简介 2.堆和栈 3.本机内存 4.防止内存泄漏 1.JMM简介 i.内存模型概述 Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉 ...