十年测开如何理解自动化测试里的数据驱动、关键字驱动思路
优采云 发布时间: 2022-07-07 11:30十年测开如何理解自动化测试里的数据驱动、关键字驱动思路
初次接触自动化测试时,对数据驱动和关键字驱动不甚理解,觉得有点故弄玄须,不就是参数和函数其嘛!其实其也体现了测试所不同与开发的一些特点(主要指系统测试),以及和对技术发展的脉络的展现。
01录制/回放的神话
实际上可以理解为一种自动测试脚本和测试用例的紧耦合,既有测试脚本维护的难度,也与系统测试中面向用户的思路相抵制。
每一家自动化测试工具厂商都会宣传,他们的工具非常容易使用,没有技术背景的测试人员只要简单录制测试的操作过程,然后播放录制好的测试脚本,就可以轻松自动化所有的测试。这样的说法是非常不负责的。
现在我们来分析一下自动化测试不能单单只依靠录制/回放来完成的原因。通过录制建立的脚本,基本上都是用脚本语言以硬编码的方式编写的,当应用程序变动时,这些硬编码也随之需要更改。因此,维护这些录制好的脚本,成本是非常高的,高到几乎不能接受。
所有的测试脚本都必须是在应用程序可以正确执行时才能录制,如果在录制过程中发现缺陷,测试人员必须向缺陷管理机制报告,等到该缺陷修正了,整个录制脚本的动作才能继续下去。在这样的情况下,如果仅仅依靠录制脚本来进行测试,效率是十分低下的。
同时,这些录制好的脚本不是非常可靠,甚至在应用程序完全没有变动的情况下直接播放,也可能因为一些意外状况而无法执行。如果录制脚本时测试人员使用了错误的脚本语言,则脚本就必须重新录制。
综上所述,通过录制的方式来建立自动化测试脚本的方式看似容易,但实际上会遇到下列问题:
02数据驱动的自动化测试框架
“什么是数据驱动呢?
很大一部分人肯定认为数据驱动就是把需要参数化的东西写在EXCEL里,然后在跑脚本时调用。如果我告诉你,这其实不是数据驱动,而只是较高级的参数化,你肯定会很惊讶!
现在我来解释一下:首先为什么叫数据驱动呢,那么它肯定有驱动的含义,比如你用EXCEL可以控制测试的业务流吗?回答 是不能的。那又如何作到驱动呢?所以说我们将测试数据放在独立的文件里只是高级的参数话。而数据驱动,你必须有数据来控制测试的业务流。比如你测一个 WEB程序,有很多页面,你可以通过一个数据来控制每次是在哪个页面下工作的(即通过数据来导航到相应的页面)。它是关键字驱动的低级版本,他控制的是函 数级的,而关键字是控制动作级的。所以数据驱动应该是可以控制整个测试的”。
在一些复杂的测试用例中,同一个用例包含了很多的测试流程,其中不同的测试流程采用不同的测试输入数据,这个时候测试数据的输入不仅仅是参数的输入,还有业务流程的控制字段的输入(可以理解为逻辑参数),这种情形会更深入的体现数据驱动的含义。
数据驱动的自动化测试是针对上述开发与测试之间紧密耦合问题提出的测试方法。通过建立测试与开发定义的软件元数据的关联——元数据映射表,在测试与开发之间建立松耦合关系。不论测试人员修改测试脚本,还是开发人员修改软件,只需要修改元数据映射表,既可以满足测试与开发同步进行。这样,可以减少测试脚 本调试的工作量,更好的实现自动化测试。
数据驱动的自动化测试框架是这样的一个框架,从某个数据文件(例如ODBC源文件、Excel文件、Csv文件、ADO对象文件等)中读取输入、输出 的测试数据,然后通过变量传入事先录制好的或手工编写的测试脚本中。其中,这些变量被用作传递(输入/输出)用来验证应用程序的测试数据。在这个过程中, 数据文件的读取、测试状态和所有测试信息都被编写进测试脚本里;测试数据只包含在数据文件中,而不是脚本里,测试脚本只是一个“驱动”,或者说是一个传送数据的机制。
数据驱动脚本就是那些和应用程序相关联的脚本。这些脚本通过录制或手工编写写进自动化工具私有的语言,然后对其中的变量赋予合适的数值,作为测试数据的输入。这些变量作为一些关键应用程序输入的媒介,使脚本能通过外部的数据来驱动应用程序。
优点:
缺点:
03关键字驱动的自动化测试
关键字驱动的来源非常自然,从面向对象的思路出发,同样的业务逻辑会自然的编写成一个类或者函数作为关键字来被不同的测试脚本所调用。当测试框架发展到所有 的测试过程都已经可以被写好的函数和类所组合完成时,就进化到了关键字驱动的一个高级阶段,这个时候测试用例的开发就变成了测试数据和关键字的组合,并把 这种组合工作简化为所有人都很熟悉的表格填写任务,从而最终达到一个由数据和关键字驱动整个测试的效果。
在关键字驱动框架里,你可以创建一些关键字以及相关联的一些方法和函数。然后你创建一个函数库,它里面包含一个读取关键字的逻辑,然后调用相关的动作。
关键字驱动的自动化测试(也称为表驱动测试自动化),是数据驱动自动化测试的变种,可支持由不同序列或多个不同路径组成的测试。它是一种独立于应 用程序的自动化框架,在处理自动化测试的同时也要适合手工测试。关键字驱动的自动化测试框架建立在数据驱动手段之上,表中包含指令(关键词),而不只是数 据。这些测试被开发成使用关键字的数据表,它们独立于执行测试的自动化工具。关键字驱动的自动化测试是对数据驱动的自动化测试的有效改进和补充。
这种自动化测试的模型主要由核心数据驱动引擎、组件函数、支持库和应用映射表组成。自动化测试首先由初始脚本开始执行,这个脚本把高层测试表传递给高层驱 动器,高层驱动器在处理这些表的过程中,遇到中层测试表后就调用中层驱动器,中层驱动器处理中层表时也作类似的处理。当低层驱动器处理低层表时,它尝试着 使应用与测试保持同步。当低层驱动器遇到对某一个组件的低层关键字组件时,它判断这个组件的类型并调用相应的组件函数模块来处理这个指令操作。所有这些元 素都要依靠映射表中的信息,它是自动化测试模型和被测应用程序的桥梁。支持库主要完成一些文件处理,日志记录和邮件发送等等的功能。
推荐学习
推荐码同学精选好课8月8日开课《高级测试经理管理课》课程。码同学联合曾带领某一线互联网压测团队50人+,且擅长测试团队搭建、测试体系建设,另外对职场思维、情商培养方面也有丰富的经验的互联网新贵公司测试总监。讲师与课程内容100%好评!
不想错过就把我们设为星标吧!
第一步:点击顶部蓝字“自动化软件测试”,进入公众号主页
第二步:点击右上角“···”
第三步:点击“设为星标”