写点什么

Robot Framework 作者建议如何选择自动化测试框架

  • 2012-06-04
  • 本文字数:1971 字

    阅读完需:约 6 分钟

软件自动化测试,作为手工测试的替代,越来越受到关注。 Pekka Klärck ,作为 Robot Framework 的创建者和核心开发者,按照系统级别,介绍了几种不同的自动化测试方法的区别

一、记录回放的方式流行于商业工具之中,无需编程技能即可快速上手。然而这种方法相对脆弱,一旦UI 变化测试就会受到影响,分散的脚本不可重用且难以维护,而且系统在测试前必须可用(也就意味着无法使用A-TDD 方法)。因此这种方法并不适合大型自动化测试。

二、线性脚本允许使用各种语言来编写非结构化脚本,脚本直接与被测系统交互。能够快速上手,灵活性强。但是编写脚本需要编程技能,系统中一个改动会影响所有脚本,没有经过模块化或重用的大量脚本难以维护。因此这种方法适合简单任务,不适合大型自动化。

三、模块化脚本由两部分组成:驱动脚本执行测试,测试库函数完成与被测系统交互。驱动脚本编写起来非常简单,这样可以更快地建立新测试,容易维护。然而需要花时间和编程技能建立测试库,并将测试数据嵌入脚本,建立新测试就需要新的测试脚本。因此,只要拥有编程技能,这种方法还是适合大型项目,但不适合非编程人员。

四、数据驱动方法,将数据与测试脚本分离,基于模块化的测试库,一个驱动脚本可以执行多个相似测试,这样非常容易建立新测试。维护工作可以分离,测试人员负责数据,程序员负责写测试库。然而,不同类型测试仍需要新的驱动脚本,初始建立数据解析器和重用组件需要花人力。这种方法适合大型项目,只需要较少的编程技能。

五、关键字驱动,将数据与关键字结合来描述如何使用数据执行测试。这种方法具备数据驱动的优势,同时非编程人员也能建立新类型测试。所有测试由同一个框架来执行,无需不同的驱动脚本。然而初始成本很大,但是可以使用开源方案!因此非常适合大型项目。

Pekka 对以上五种方法的介绍其实也是对自动化测试发展史的介绍,同时也体现了 RobotFramework 背后的设计思想。

除了测试框架的选择,要想做好自动化测试,还要关注其他方面。

自动化测试需要关注可测性。自动化最难的部分是与被测系统交互,特别是 GUI 层。确保系统容易被测试,比如给 GUI 元素增加标识、输出易于解析的文本、提供自动化接口等。

系统一般可以分为 GUI 层以及 GUI 之下的业务层。GUI 层测试需要调用与普通用户同样的接口,但是某些 GUI 技术缺乏好的工具支持,会使测试变得脆弱,而且执行相对较慢。从业务层开始测试相对容易,执行快。但 GUI 层仍然需要被测试,以保证 GUI 正确连接到了业务层,甚至有时 GUI 层也具有业务功能。Pekka 建议考虑对业务层进行完全测试,而部分地对 GUI 层实行端到端测试。 不是所有系统都具有 GUI 层,却可能具有 API、数据库、服务器、命令行等。自动化测试框架可以调用不同驱动来进行测试。这些非 GUI 层相对容易测试,只要把测试用例看作另一个客户端而已。

那么自动化测试应该在什么阶段进行?如果开发完成后单独做自动化,这是典型的瀑布式过程,不同团队之间存在沟通障碍,反馈周期慢,产品在后期难以获得可测性,从而导致复杂和脆弱的测试方案。相反,典型敏捷式过程中,程序员和测试人员协同完成自动化。把自动化看作团队开发的一部分,可测性不再是问题,团队做技术决定时就可以考虑可测性和工具选择,程序员可以提前加入提供可测性的钩子特性。

自动化测试需要版本控制和持续集成来支持。将测试和代码放在一起,像管理代码一样管理测试脚本,那么多可用工具,SVN、GIT、Mercurial,没道理不用。持续集成是全方位自动化的关键,当测试或代码有所改动立即执行测试。如果测试运行时间比较长,也可以定期运行。使用 Jenkins Hudson Cruise Control BuildBot 吧,自己写定时脚本或 Cron Job 可以休矣。

选择商业自动化工具还是开源工具?好东西肯定贵,但是贵的不见得好,再便宜的许可证也会阻止整个团队的协作。而且商业化工具难以和其他自动化工具(特别是其他厂商的)或版本控制、持续集成进行整合和定制化。另外,产品终止或公司关门是潜在的风险。开源工具可供选择余地很大,当然也是良莠不齐。开源工具通常容易与其他工具整合,关键是免费,谁都可以随意使用和定制化,还永远不会消失。至于免费软件,越来越少了,很多自由软件都已经开源。免费软件同样不能定制化,且存在中止的风险。

做自动化需要哪些技能?一般来说,包括 Python、Ruby、Perl、JavaScript、正则表达式、XPath 和 CSS 定位、SQL 语句、版本控制等。

有了自动化,手工测试还需要吗?当然需要!! 不过,要避免手工执行脚本来测试,还是将其完全自动化吧,测试人员可以更多关注于探索性测试。 记住,机器擅长回归测试,人类善于寻找 Bug。


感谢郑柯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-06-04 05:5215221

评论

发布
暂无评论
  • 自动化测试:为什么程序员做测试其实是有优势的?

    其实,程序员的主要工作就是打造各种自动化工具,无论是为了业务的支撑,或者是对于开发过程本身的支持。

    2021-08-11

  • 软件开发:如何利用可观测性进行驱动?

    这节课,我们更近距离看看可观测性驱动的软件开发,看看它如何更加有效地帮助我们分析生产环境问题,保障生产环境的服务可靠性。

    2022-09-28

  • 构建测试的体系化思维(基础篇)

    构建测试的体系化思维的基础篇,从测试的基本职责出发展开,介绍了相关的方法、工具和实践,适合初级测试人员。

    2022-01-05

  • 从手动测试到自动化测试(下)

    前文说道[从手动测试到自动化测试(上)](https://mp.weixin.qq.com/s/zcouE06eNEt-AVUFnFjRIg) `` 2022-10-10``,接下来分享后面的内容。

    2022-10-14

  • 一个好的自动化测试长什么样?

    之所以测试会出现这样那样的问题,一个重要的原因是这些测试不够好。

    2021-08-13

  • App 自动化测试是怎么实现 H5 测试的

    移动端 app 自动化框架很多,但是有一些框架因为不支持混合应用测试,一直没有完全流行。比较典型的是经典的 Python 框架 uiautomator2, 这个框架简单好用,没有 appium 那样复杂的 api 调用,受到不少 python 自动化工程师的青睐。

    2022-07-22

  • 搞测试是件费脑子的事

    搞测试是件费脑子的事,由于从来没接触过这个玩意,现在还是一头雾水。写测试书,写道怀疑人生,还是直接写代码来的开心快乐啊

    2021-07-06

  • 测试小白入门必知必会的 8 个测试工具

    工具掌握不在多,而在于能够覆盖到日常工作场景,多快好省地完成测试任务。 以上8个测试工具基本覆盖了功能测试,接口测试,自动化测试,性能测试,项目管理,测试管理,掌握好这8个基本能够胜任日常的测试工作了。

    2021-12-10

  • 在线正则表达式大全测试

    在线正则表达式大全测试

    2022-03-29

  • app 自动化测试 webview 怎么操作

    移动端 app 自动化框架很多,但是有一些框架因为不支持混合应用测试,一直没有完全流行。比较典型的是经典的 Python 框架 uiautomator2, 这个框架简单好用,没有 appium 那样复杂的 api 调用,受到不少 python 自动化工程师的青睐。

    2022-08-10

  • IntelliJ IDEA 的 Code Coverage 测试

    IntelliJ IDEA 是可以帮我们进行 Code Coverage 测试的。

    2023-02-08

  • 22|质量保证(上):每次上线都出 Bug?你需要 E2E 测试

    接下来两节课,我们将进入大中型React项目最重要的实践之一:自动化测试的学习。

    2022-10-20

  • 从改善设计的角度理解 TDD (2)

    当我们理解TDD之后我们至少会发现下面这三点: 1. TDD是一种更加自然的编程方式 2. 先写测试还要求我们站在使用者的角度来编写测试,这样可以自然的驱动出更好的设计 3. 由于TDD天然的特性,无需担心测试覆盖率不够

    2022-09-04

  • 怎么学自动化测试

    首先,你需要有心理准备,不是说会自动化,就不用干手工测试了。 自动化测试没有办法完全取代手工测试,有些测试场景,自动化的成本要明显高于手工。

    2022-08-10

  • 软件测试 | 白盒测试方法

    白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测

    2023-02-09

  • 一文带你了解 K8S 容器编排(上)

    K8S目前是业界容器编排领域的事实标准,是几乎所有云原生架构的首选。目前随着云原生架构越来越流行,测试开发人员需要掌握K8S技术栈已经成为越来越迫切的需求。

    2022-09-01

  • 开篇词|为什么 TDD 是当前最具工程效能的研发流程?

    我相信,我掌握了测试驱动开发那天,我才成为了可靠、高效的职业程序员。

    2022-03-16

  • 32|测试(一):开发到重构中的测试

    在很多讲TDD测试的书或文章中,通常会偏概念化,希望通过今天的学习,你能对它有更具象的了解。

    2022-12-01

  • SpringBoot 整合 Swagger 自动生成在线 API 文档

    现在大都数项目都已是前后端分离的啦,那么接口文档就成了项目中非常重要的一部分啦,SpringBoot整合Swagger可以自动生成RESTFUL风格的API文档,也可以在其中进行测试,比起以前手写的文档,不仅方便很多,而且也易于修改和测试。

    2022-07-27

发现更多内容

第九周作业

dll

程序员的五年:双非学历,两年进入苏宁,五年跳槽到阿里,建议收藏!

996小迁

Java 架构 面试 JVM Spring全家桶

sync.singleflight 到底怎么用才对?

cyningsun

并发 Concurrency singleflight Cache Miss Go 语言

量化自动交易系统开发,量化炒币

薇電13242772558

数字货币 策略模式

案例研究之聊聊 QLExpress 源码 (四)

小诚信驿站

刘晓成 小诚信驿站 28天写作 QLExpress源码 聊聊源码

安卓开发详解!Flutter全方位深入探索,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

testing

潘建伟团队再登Nature:建成全球首个集成量子通信网,全长4600公里

京东科技开发者

云计算

创业失败启示录|校园微生活(故事篇 2)

阿萌

创业 28天写作 创业失败启示录 青城 人生故事

量化交易机器人系统开发|市值管理系统开发搭建

W13902449729

量化交易机器人系统开发 市值管理系统开发搭建

即构推出低延迟直播产品L3,可将直播延迟降到1s

ZEGO即构

波场链智能合约软件开发|波场链智能合约APP系统开发

系统开发

真是太刺激了!美团CTO五轮面试,Java岗高级工程师一二三四五面面经(已拿到offer)

Java架构之路

Java 程序员 架构 面试 编程语言

脱不花:怎样成为高效学习的人 学习笔记

魔曦

LeetCode题解:236. 二叉树的最近公共祖先,存储父节点,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

连续三年蝉联第一,Flink 荣膺全球最活跃的 Apache 开源项目

Apache Flink

Apache flink

Java 程序经验小结:避免使用float和double表示精确数据

后台技术汇

28天写作

市值管理机器人系统开发|量化策略交易系统开发搭建

W13902449729

市值管理机器人系统开发 量化策略交易系统开发搭建

SD-WAN:网络走向业务

JiangX

创业 投资 网络 28天写作 SD-WAN

Dubbo 版 Swagger 来啦!Dubbo-Api-Docs 发布

阿里巴巴云原生

Java 云原生 dubbo 大前端 中间件

Alluxio Day 2021 线上直播

腾讯云大数据

大数据

SpringCloud 从入门到精通 09--- 支付服务集群

Felix

求职阿里Java 技术岗位的经历,三轮技术面+HR面,面试也不过如此

Java架构之路

Java 程序员 架构 面试 编程语言

【设计模式】断路器模式

soolaugust

设计模式 28天写作

面向对象之魔术方法· 第1篇《__init__方法,__new__方法》

清菡软件测试

测试

毕业三年,从小公司到大厂,先后四面阿里、小米、美团等,终于收到offer!

Java架构之路

Java 程序员 架构 面试 编程语言

Lock锁 精讲

伯阳

Java 多线程 lock lock锁

阿里开发7年大牛:闭关60天学懂NDK+Flutter,大厂面试题汇总

欢喜学安卓

android 程序员 面试 移动开发

WireMock 使用

hungxy

测试 WireMock

week8-homework

J

静态代理,jdk动态代理以及Cglib区别

Java架构师迁哥

Robot Framework作者建议如何选择自动化测试框架_软件工程_申健_InfoQ精选文章