第一部分:自动化一个测试用例

当你要开始自动化一个测试用例的时候,有一些重要的事情需要完成。当你完成所有这些事情的时候,测试脚本的自动化也随之完成。

在这里,我们将首先在大部分的自动化测试用例里找出所有通用的任务。

让我们用一个例子(GmailLogin)来理解前面所说的内容

为了自动化Gmail Login,你需要写一些代码来做以下的事情:

  • 打开Gmail Url
  • 输入正确的用户名和密码
  • 点击登录按钮

通过下面的图让我们更加详细的理解这一点:

任务1 - 识别对象

  • 在你对任何对象做操作之前,你需要唯一地识别这个对象。比如,在你输入Email之前,你应该知道在Gmail Login界面上的2个输入框那个是Email。一旦你正确的识别出email,你就可以在Email里输入正确的数据
  • 每个控件都有它自己的唯一属性集,用它们,在同一个页面你就可以与其它的控件做区分。例如,Gmail的的登录按钮包含了文本'Sign in',用这个文本就可以明显与其它的按钮做出区分

  • 因此,识别一个对象,你要找出这个对象的唯一识别属性

任务2 - 在对象上执行操作

 

  • 一旦你唯一的识别一个对象,那么下一步将是对这个对象的一些操作
  • 你所执行的操作依赖对象的类型,不同类型的对象包含不同的操作
  • 比如:对于按钮和链接,你可以做点击操作。对于一个输入框,你能执行Set或者Type操作。类似的,对于每个对象都有自己的操作集合

任务3 - 数据处理

  • 数据处理也是在对象上执行操作的一部分
  • 对于像输入框的控件,你需要执行输入一些数据的操作

任务4 - 合并所有单独的操作

  • 为了创建一个测试脚本,你需要合并单独的操作在一起,然后执行它们
  • 比如:Gmail的登录部分将有以下的操作
    • op1: 打开Gmail URL
    • op2: 输入用户名
    • op3: 输入密码
    • op4: 点击登录按钮
  • 您能以Action或者Function的形式合并所有单独的操作
  • 因此一个Action或者Function是一个操作集合,这些操作集合合并成一个业务逻辑流(比如Login, Logout, Search)

任务5 - 重用和不重用的函数

  • 在你的测试脚本里有一些函数,一些是只能用一次,而其他的函数可以用多次
  • 只能用一次的Actions是不可重用的Actions,可以用多次的Actions是可重用的Actions
  • 例子:考虑以下的3个测试用例

  • 上图,你注意到函数Gmail_Login和Gmail_Logout是被用了多次。因此,这些都是可重用的函数,其它都是非可重用的函数。

一个简单测试脚本的结构

以上我们已经列出了你需要执行测试脚本的通用任务

  • 识别唯一的对象
  • 在对象上执行操作
  • 只要需要就要执行数据处理操作
  • 创建重用和非重用的的Action(Function)

第二部分:QTP怎样自动化测试用例

  • 在第一部分,你看到为了创建一个测试脚本你需要完成的通用任务
  • 在这个部分,你将看到QTP怎么样协助我们来完成这些任务
  • QTP有不同的功能和机制来帮助你完成这些任务
  • 让我们看下每个任务以及对应QTP的功能

识别和存储对象

QTP提供一个唯一的机制,使用它,你能找出对象的唯一识别属性。这个机制叫做Object Spy。QTP也提供一个叫做Object Repository的仓库,可以存储一些对象以及他们的属性

在对象上执行操作

QTP有一系列预定义函数库,他们包含了不同对象的相关所有的操作。当你写一个对象在你的脚本里,QTP也提供了智能提示,它可以自动展示与这个对象相关的所有函数和属性

执行数据处理操作

QTP有自己内建的机制,叫做DataTable, 你在这里保存测试数据,稍后在测试脚本里使用它。QTP提供它自己的集合函数,使用它们就可以从DataTable里解析数据

即使你的数据存储在外部文件里,比如Excel或者XML文件,QTP提供许多方法,使用它们你就可以从外部数据源里获取到数据

存储重用和不重用的代码

QTP也提供许多方法,你能用这些方法来存储重用和非重用的的代码。这些机制是:

  • Action:Action是你保存代码最通用的方法之一。你能保存重用和不重用的代码在Actions里
  • Function Library: 函数库是又一个很流行的方法,你几乎可以在所有的QTP项目里的使用它。函数库主要用来存储可重用的代码
  • Business/Scripted Components: 尽管很少用,这个也是你可以存储代码的地方

总结:

  • 为了写测试脚本,你需要知道你要做的一些通用任务是:

    • 识别和存储对象
    • 在对象上执行操作
    • 在脚本里处理测试数据
    • 合并所有的操作形成重用&非重用的动作
  • 你也知道QTP怎么用它的一系列功能来帮助你创建测试脚本:

    • Object Spy和对象库
    • 内建的函数库
    • DataTable和相关的方法
    • Actions,函数库和组件

QTP之对测试用例的自动化过程的分解的更多相关文章

  1. selenium自动化过程中如何操作Flash动画

    最近在看python的爬虫框架(scrapy),一个词概括就是:"酸爽"!等把selenium自动化版块讲完后,打算写一写关于scrapy相关的知识,打算从源码角度解析下scrap ...

  2. Python自动化测试用例设计--自动化测试用例与手工测试用例区别与联系

    1. 前言 手工测试用例是针对手工测试人员,自动化测试用例是针对自动化测试框架,前者是手工测试用例人员应用手工方式进行用例解析,后者是应用脚本技术进行用例解析,两者最大的各自特点在于,前者具有较好的异 ...

  3. excel+requests管理测试用例接口自动化框架

    背景: 某项目有多个接口,之前使用的unittest框架来管理测试用例,将每个接口的用例封装成一个py文件,接口有数据或者字段变动后,需要去每个py文件中找出变动的接口测试用例,维护起来不方便,为了便 ...

  4. 用webdriver+phantomjs实现无浏览器的自动化过程

    环境准备 1. 安装python: 2. 安装pip: 3. 通过pip安装selenium: 4. 下载phantomJS的包并解压缩: 1. 若在Windows系统中,将下载的phantomjs文 ...

  5. selenium自动化过程中遇到的小问题(未完待续)

    1.chrome浏览器调用不起来 代码没出错的情况下,检查下chrome浏览器的版本与chromedriver.exe的版本是否匹配;下面的表格是根据网上及官网整理的chromedriver与chro ...

  6. 15 | 过不了的坎:聊聊GUI自动化过程中的测试数据

  7. Robot Framework入门学习2 创建第一个测试用例

    本文章部分内容引自以下网址,感谢作者的辛苦分享 http://www.cnblogs.com/fnng/p/3871712.html http://blog.csdn.net/tulituqi/art ...

  8. QTP使用技巧

    1QTP基本功能的使用 QTP的基本功能包括两大部分:一部分是提供给初级用户使用的关键字视图:另一部分是提供给熟悉VBScript脚本编写的自动化测试工程师使用的专家视图.但是,并没有严格的区分,在实 ...

  9. 多测师讲解自动化_rf框架搭建_高级讲师肖sir

    robot framework:自动化测试框架(简称RF框架) Python3.7 RIDE(可视化界面).  Wxpython  pip(在线下载) . setuptools(在线安装) . 第三方 ...

随机推荐

  1. java排序集锦

    java实现排序的一些方法,来自:http://www.javaeye.com/topic/548520 package sort; import java.util.Random; /** * 排序 ...

  2. posix thread 浅谈

    用Posix thread进行多线程设计,就不怕跨平台了,因为很多OS都兼容Posix thread,如Linux/Windows等,甚至嵌入式系统上(如rt-thread)都支持posix thre ...

  3. Setting composer minimum stability for your application

    Do you have a confusion of how do you determine the stability when using composer dependency manager ...

  4. cxf简单实例

    CXF是一个基于 Servlet 技术的 SOA 应用开发框架,简单来说,就是WebService的轻量级实现. 1.下载开发包:http://cxf.apache.org/download.html ...

  5. Notes of the scrum meeting(2013/10/23)

    ps:本来是10月23号周三下午开的会,这几天由于各种事情忙,忘记写博客了,现在补上. 软工项目组buaa_smile开始项目第一次scrum meeting meeting time:4:00~5: ...

  6. swift 类 与 结构体

    这两天突然有人问我  swift里面 类和 结构体  有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift  语言 ...

  7. WPF 进程间通讯----inter-process communication

    进程间通讯--inter-process communication  进程间相互通讯的方法有很多,如用web services,xml 等互相读取, 网络的可以使用socket 等. 2个WinFo ...

  8. html5游戏引擎-Pharse.js学习笔记(一)

    1.前言 前几天随着flappy bird这样的小游戏的火爆,使我这种也曾了解过html5技术的js业余爱好者也开始关注游戏开发.研究过两个个比较成熟的html5游戏引擎,感觉用引擎还是要方便一些.所 ...

  9. android 开发不能创建目录

    原来代码: File tempDir = new File(path); //path 是一个参数 if (!tempDir.exists()) { try { tempDir.mkdir(); // ...

  10. php多条件查询

    $sql)"; if(!empty($uid)) { $sql .=" and uid= ".$uid; } if(!empty($time1) && e ...