初次接触自动化测试时,对数据驱动和关键字驱动不甚理解,觉得有点故弄玄须,不就是参数和函数其嘛!其实其也体现了测试所不同与开发的一些特点(主要指系统测试),以及和对技术发展的脉络的展现。

01、录制/回放的神话

实际上可以理解为一种自动测试脚本和测试用例的紧耦合,既有测试脚本维护的难度,也与系统测试中面向用户的思路相抵制。

每一家自动化测试工具厂商都会宣传,他们的工具非常容易使用,没有技术背景的测试人员只要简单录制测试的操作过程,然后播放录制好的测试脚本,就可以轻松自动化所有的测试。这样的说法是非常不负责的。

现在我们来分析一下自动化测试不能单单只依靠录制/回放来完成的原因。通过录制建立的脚本,基本上都是用脚本语言以硬编码的方式编写的,当应用程序变动时,这些硬编码也随之需要更改。因此,维护这些录制好的脚本,成本是非常高的,高到几乎不能接受。

所有的测试脚本都必须是在应用程序可以正确执行时才能录制,如果在录制过程中发现缺陷,测试人员必须向缺陷管理机制报告,等到该缺陷修正了,整个录制脚本的动作才能继续下去。在这样的情况下,如果仅仅依靠录制脚本来进行测试,效率是十分低下的。

同时,这些录制好的脚本不是非常可靠,甚至在应用程序完全没有变动的情况下直接播放,也可能因为一些意外状况而无法执行。如果录制脚本时测试人员使用了错误的脚本语言,则脚本就必须重新录制。

综上所述,通过录制的方式来建立自动化测试脚本的方式看似容易,但实际上会遇到下列问题:

  • 测试人员大多不具备技术背景,难以完全掌握测试工具;
  • 应 用程序必须达到一定的稳定性,才能开始录制测试脚本;
  • 录制的测试脚本与测试数据耦合得太紧密;
  • 维护自动化测试脚本的成本非常高。

02、数据驱动的自动化测试框架

“什么是数据驱动呢?

很大一部分人肯定认为数据驱动就是把需要参数化的东西写在EXCEL里,然后在跑脚本时调用。如果我告诉你,这其实不是数据驱动,而只是较高级的参数化,你肯定会很惊讶!

现在我来解释一下:首先为什么叫数据驱动呢,那么它肯定有驱动的含义,比如你用EXCEL可以控制测试的业务流吗?回答 是不能的。那又如何作到驱动呢?所以说我们将测试数据放在独立的文件里只是高级的参数话。而数据驱动,你必须有数据来控制测试的业务流。比如你测一个 WEB程序,有很多页面,你可以通过一个数据来控制每次是在哪个页面下工作的(即通过数据来导航到相应的页面)。它是关键字驱动的低级版本,他控制的是函 数级的,而关键字是控制动作级的。所以数据驱动应该是可以控制整个测试的”。

在一些复杂的测试用例中,同一个用例包含了很多的测试流程,其中不同的测试流程采用不同的测试输入数据,这个时候测试数据的输入不仅仅是参数的输入,还有业务流程的控制字段的输入(可以理解为逻辑参数),这种情形会更深入的体现数据驱动的含义。

数据驱动的自动化测试是针对上述开发与测试之间紧密耦合问题提出的测试方法。通过建立测试与开发定义的软件元数据的关联——元数据映射表,在测试与开发之间建立松耦合关系。不论测试人员修改测试脚本,还是开发人员修改软件,只需要修改元数据映射表,既可以满足测试与开发同步进行。这样,可以减少测试脚 本调试的工作量,更好的实现自动化测试。

  • 什么是数据驱动的自动化测试框架

数据驱动的自动化测试框架是这样的一个框架,从某个数据文件(例如ODBC源文件、Excel文件、Csv文件、ADO对象文件等)中读取输入、输出 的测试数据,然后通过变量传入事先录制好的或手工编写的测试脚本中。其中,这些变量被用作传递(输入/输出)用来验证应用程序的测试数据。在这个过程中, 数据文件的读取、测试状态和所有测试信息都被编写进测试脚本里;测试数据只包含在数据文件中,而不是脚本里,测试脚本只是一个“驱动”,或者说是一个传送数据的机制。

  • 数据驱动脚本

数据驱动脚本就是那些和应用程序相关联的脚本。这些脚本通过录制或手工编写写进自动化工具私有的语言,然后对其中的变量赋予合适的数值,作为测试数据的输入。这些变量作为一些关键应用程序输入的媒介,使脚本能通过外部的数据来驱动应用程序。

可变数据,硬编码组件标志

这些数据驱动的脚本经常包含硬编码的数据,有时是一些窗口组件中非常脆弱的识别字符串。出现这种情况时,脚本很容易由于程序的更改而失去作用。

高度技术化的、重复的测试设计

数据驱动脚本的另一个共同特点就是,所有在测试设计上所作的努力最终都体现在自动化工具的脚本语言中,或者复制到手工和自动化测试脚本中。这意味着每个和自动化测试开发或执行有关的人必须对测试环境和自动化工具的编程语言非常精通。

  • 优点与缺点

优点:

在应用程序开发的同时就可以同步建立测试脚本,而且当应用功能变动时,只需要修改业务功能部分的脚本;

利用模型化的设计,避免重复的脚本,减少建立或 维护脚本的成本;

测试输入数据,验证数据和预期的测试结果与脚本分开,存放在另外的数据文件里,利于测试人员修改和维护;

透过判断功能回传值是 “True”或“False”,可作错误处理,增加了测试脚本的健壮性;

自动化测试开发人员创建数据驱动的测试过程,测试员创建测试数据;

在测试的过 程中收集测试结果,并在输入数据的语境中表示测试结果,这样可以简化手工结果分析。

缺点:

对自动化测试工具里的脚本语言必须非常精通;

每个脚本都会对应多个数据文件,这些数据文件需要根据脚本的功能类别存放在各自的目录中,增加了使用的复 杂性;

测试人员除了需要根据具体测试数据维护相应的测试计划,还要将这些数据写入各个需求不同的数据文件中;

在编辑数据文件时,必须注意测试脚本所要 求的传输格式,否则会在处理脚本时产生错误。如由专门的技术人员对其进行维护,依赖于数据驱动脚本的自动化测试框架实现起来更简单、快捷。但是,维护工作 困难,而且还需要保持这种数据驱动的模式,这样,即便长时间的维持也会导致失败。

03、关键字驱动的自动化测试

关键字驱动的来源非常自然,从面向对象的思路出发,同样的业务逻辑会自然的编写成一个类或者函数作为关键字来被不同的测试脚本所调用。当测试框架发展到所有 的测试过程都已经可以被写好的函数和类所组合完成时,就进化到了关键字驱动的一个高级阶段,这个时候测试用例的开发就变成了测试数据和关键字的组合,并把 这种组合工作简化为所有人都很熟悉的表格填写任务,从而最终达到一个由数据和关键字驱动整个测试的效果。

在关键字驱动框架里,你可以创建一些关键字以及相关联的一些方法和函数。然后你创建一个函数库,它里面包含一个读取关键字的逻辑,然后调用相关的动作。

关键字驱动的自动化测试(也称为表驱动测试自动化),是数据驱动自动化测试的变种,可支持由不同序列或多个不同路径组成的测试。它是一种独立于应 用程序的自动化框架,在处理自动化测试的同时也要适合手工测试。关键字驱动的自动化测试框架建立在数据驱动手段之上,表中包含指令(关键词),而不只是数 据。这些测试被开发成使用关键字的数据表,它们独立于执行测试的自动化工具。关键字驱动的自动化测试是对数据驱动的自动化测试的有效改进和补充。

这种自动化测试的模型主要由核心数据驱动引擎、组件函数、支持库和应用映射表组成。自动化测试首先由初始脚本开始执行,这个脚本把高层测试表传递给高层驱 动器,高层驱动器在处理这些表的过程中,遇到中层测试表后就调用中层驱动器,中层驱动器处理中层表时也作类似的处理。当低层驱动器处理低层表时,它尝试着 使应用与测试保持同步。当低层驱动器遇到对某一个组件的低层关键字组件时,它判断这个组件的类型并调用相应的组件函数模块来处理这个指令操作。所有这些元 素都要依靠映射表中的信息,它是自动化测试模型和被测应用程序的桥梁。支持库主要完成一些文件处理,日志记录和邮件发送等等的功能。


最后: 给大家推荐一个 q 群:902061117 里面有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果对你有一点点帮助,各位的「点赞」就是小编创作的最大动力,我们下篇文章见!

好文推荐

2021软件测试工程师面试题汇总(内含答案)-看完BATJ面试官对你竖起大拇指!

什么样的人适合从事软件测试工作?

软件测试和软件开发哪个发展更好

那个准点下班的人,比我先升职了…

十年测开如何理解自动化测试里的数据驱动、关键字驱动思路相关推荐

  1. 自动化测试里的数据驱动和关键字驱动思路的理解

    初次接触自动化测试时,对数据驱动和关键字驱动不甚理解,觉得有点故弄玄须,不就是参数和函数嘛!其实其也体现了测试所不同与开发的一些特点(主要指系统测试),以及和对技术发展的脉络的展现. 1.录制/回放的 ...

  2. python中什么是数据驱动_携程大牛谈自动化测试里的数据驱动和关键字驱动思路的理解...

    对于初次接触自动化测试时,对数据驱动和关键字驱动不甚理解,觉得有点故弄玄虚,不就是参数和函数嘛!其中也体现了测试所不同与开发的一些特点(主要指系统测试),以及和对技术发展的脉络的展现. 一.录制/回放 ...

  3. python关键字数据驱动_携程大牛谈自动化测试里的数据驱动和关键字驱动思路的理解...

    对于初次接触自动化测试时,对数据驱动和关键字驱动不甚理解,觉得有点故弄玄虚,不就是参数和函数嘛!其中也体现了测试所不同与开发的一些特点(主要指系统测试),以及和对技术发展的脉络的展现. 一.录制/回放 ...

  4. 一些测开面试题及答案(个人梳理)

    这里写目录标题 答案对错自辨,文明观看,有错给我说我改 1.白盒测试/黑盒测试 1.1白盒测试 1.2黑盒测试 2.测试流程 3.bug流程 4.压力测试 5.selenium原理 6.选取元素方法 ...

  5. OPPO测开 ——C++

    自我介绍 岗位职责 遇到的问题,解决方法,主要是排查错误的思路 测开的理解 项目 熟悉的语言c++ 指针 深拷贝浅拷贝 链表 Struct和class区别 变量长度 算法:(思路) 怎么判断链表有环 ...

  6. 三个月的2020秋招测开面试经验,包含阿里,百度、华为等面试题

    不知不觉又到秋季了,记得去年的秋季我还是一个每天都在面试的面试人,现在不一样了,现在我是打工人了,上升了一个级别,现在又开始秋招了,所以把去年的秋招面试题总结出来,给大家参考参考,希望对大家有帮助. ...

  7. 测开面经-搜狗,阿里,滴滴,百度,网易,360,京东,小米

    作者:陌上花开_可缓缓归矣 链接:https://www.nowcoder.com/discuss/111661?type=post&order=time&pos=&page= ...

  8. 深聊测开领域之:三种高性价比测试方法

    高性价比测试 1 引言 2 单元测试 2.1 单元测试引入 2.2 投入产出比 3 冒烟测试 3.1 冒烟测试引入 3.2 投入产出比 4 灰度测试 4.1 软件的依赖 4.2 引入灰度环境 4.3 ...

  9. ui自动化测试框架_数据驱动 vs 关键字驱动:对搭建UI自动化测试框架的探索

    谢谢打开这篇文章的每个你 关注我们 点击右上角 ··· 设为星标 UI自动化测试用例剖析 让我们先从分析一端自动化测试案例的代码开始我们的旅程.以下是我之前写的一个自动化测试的小Demo.这个Demo ...

最新文章

  1. 1055 The World‘s Richest
  2. 如果地府需要一个后台管理系统,你会如何设计?
  3. USB、TTL电平、232电平之间的相互转换
  4. 验证多个Filter过滤一个资源时执行顺序
  5. Flink专题-Source
  6. 不到50行代码实现一个能对请求并发数做限制的通用RequestDecorator
  7. llvm编译linux,在Linux上编译LLVM/Clang 8.0.0等全部源代码
  8. Android 设备正在“绞杀”密码!
  9. ES6 中的 Symbol 是什么?
  10. oracle什么时候使用静态监听,Oracle监听之动态监听与静态监听特点
  11. List(JDK1.7)(2)
  12. 安卓电子书格式_不用电脑,6招教你把手机上的电子书传输到Kindle上
  13. 用vs code 搭建stm32 开发环境(详细)
  14. 有哪些公共管理或行政管理学习帮助较大的外文期刊?
  15. EasyExcel导出合并单元格
  16. windows清理_一个Windows系统下好用的内存清理工具
  17. 基于nodejs+vue社区互助平台- vscode项目
  18. 一个简单的拼音输入法,实现常用汉字的输入
  19. 用Unity制作一个很火的找不同游戏,包括核心玩法与关卡编辑器工具的实现
  20. 洗礼灵魂,修炼python(82)--全栈项目实战篇(10)—— 信用卡+商城项目(模拟京东淘宝)...

热门文章

  1. api 原生hbase_hbase之java api实战一
  2. python内置函数len_len是python内置函数吗
  3. 使用百度API实现语音识别——in python
  4. 利用python进行数据分析 笔记_利用python进行数据分析--(阅读笔记一)
  5. 写给互联网上从业的Web程序员
  6. 北交所开市工作准备就绪 定于2021年11月15日开市
  7. 实测哈啰电动车A80探索版:一辆带你行走的聪明“小神兽”
  8. 体验完23万的小鹏P5,凯美瑞不香了 | 视频
  9. iPhone 13系列整机较iPhone 12更重 最重接近半斤
  10. iPhone 13 Pro手机壳曝光 网友:更丑了