写点什么

自动化测试——回顾与展望

  • 2014-02-25
  • 本文字数:2801 字

    阅读完需:约 9 分钟

2013 年已经过去,在这篇文章里,我希望和大家一起来整理一下 2013 年自动化测试领域一些比较值得关注的变化,也展望一下 2014 年可能发生的变化,希望读者可以从中可以发现一些线索,进而做相关延伸阅读。

在过去的 2013 年里面,自动化测试领域发生了几大变化:

  • 自动化测试的重要性不断提升 随着敏捷的热度不断提升,持续集成、持续交付作为敏捷的核心实践之一,越来越受到重视。然而大家很快发现,自动化测试是持续集成、持续交付的灵魂,没有有效的自动化测试保证,持续集成和持续交付就仅仅是一个无用的躯壳了。

  • 分层测试观念受到进一步重视 自动化测试是一个老大难问题了,这里面一个非常重要的思路就是分层自动化测试(或测试金字塔),有兴趣可以参见 Martin Fowler 的这个博客: http://martinfowler.com/bliki/TestPyramid.html

    在 2013 年里,我们高兴地看到从分层自动化测试方面,出现了一部力作——@公公直直 - 黄利 翻译的《Google 如何测试软件》,这本书对分层自动化测试给出了非常具体的解析,个人认为此书是 2013 年度最值得阅读的自动化测试书籍,强烈推荐。我自己也建立了一个“分层自动化测试”QQ 群:20442181,也成为了一个有 800 成员的大群了,欢迎大家加入分享讨论。

  • 商用工具昨日黄花,开源工具如日中天 自动化测试工具方面几年前一直是商用工具的天下,这几年以 Selenium 为首的一系列开源工具不断攻城掠地,不但国内的互联网公司,国内的大型行业客户(如金融行业,交通行业)也纷纷拥抱开源自动化测试工具。Selenium 的 WebDriver 测试接口协议也成为了 W3C 规范草案( http://www.w3.org/TR/webdriver/ ),被各大浏览器厂商认可,这说明了 Selenium 的江湖地位已经牢不可破了。坦率地来讲,在 Web 界面自动化测试领域,已经没有任何理由采用商用工具了。从下面两张趋势图可以看出,在世界范围内,QTP2009 年就已经开始走下坡路;而在国内,Selenium 的绝地反击是在 2012、2013 年开始的。如果大家对这方面的内容感兴趣,可以考虑参加 QCon 2014 北京大会的技术训练营: http://www.qconbeijing.com/node/468

接下来说说我对 2014 年的展望吧:

  • 移动测试成为热点 随着移动互联网的爆发,移动测试自动化很快地被提到议事日程上面来了。这方面今年会有几本国内作者原创的图书出版:@厚脸皮 - 芈峮的《iOS 测试实践》,@Monkey 陳曄曄 - 陈晔的《大话测试——移动互联网 Andoird、iOS 应用测试》。

  • 从工具方面,很高兴地看到这方面的开源工具风起云涌,如 Robotium、Frank 等等,但是,从目前趋势来看,我个人非常看好 Appium:一种支持 WebDriver W3C 协议,同时支持 Android,iOS 的开源测试工具(参见 Appium 支持测试原生、混合及 Web Android 应用: http://www.infoq.com/cn/news/2013/05/appium-android )。

  • REST 接口测试成为 Web 自动化测试的补充: 随着前端 MVC 框架的大范围应用,REST 接口应用范围也越来越广,基于 REST 接口的自动化测试成为一种投入产出比很理想的测试方式,相对于 Web 界面自动化,REST 接口相对而言更加稳定,测试案例也更容易维护。REST 接口测试可以成为 Web 自动化测试的有益补充:REST 接口测试可以关注于服务器逻辑验证,而 Web 自动化测试可以关注于页面展示逻辑及界面前端与服务器集成验证。REST 接口测试框架有许多种不同的实现方式,我个人会推荐使用开源工具 Robot Framework 加上 Requests 库来进行 REST 接口测试。(感兴趣的读者可以参见下面的文章,其中有对 Robot Framework 的介绍: 功能测试工具研讨会: http://www.infoq.com/cn/news/2009/09/functional-test-tools/ ,Robot Framework 作者建议如何选择自动化测试框架 , http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest

  • 用例辅助生成技术初露端倪: 用例录制回放技术一直是许多测试人员(领导)心中的一个梦想,但是,我要残酷地告诉大家,这是一个白日梦,所有宣称能够通过录制回访技术来全自动获取可维护测试脚本的个人和厂商无疑都是骗子。测试脚本也是程序,也需要经过仔细设计,应用若干设计模式,才能达到简洁、易读、易维护的目标。(有兴趣的读者可以参考:Martin Fowler 对将 page 对象用于 Web 测试的基本经验法则 http://www.infoq.com/cn/articles/martin-fowler-basic-rule-of-thumbon-for-Web-testing ,以及 GUI 功能测试自动化模式: http://www.infoq.com/cn/articles/gui-automation-patterns )。

    但是,我们不能否认,确实可以利用录制技术,在特定工具的帮助下,自动捕获一些信息,再自动应用一些设计模式来辅助案例的编写工作,尤其在接口测试方面,可行性非常大,这一块会是本人今年的一个研究重点。对这方面有兴趣的读者,可以参见这两个工具 vcr( https://github.com/vcr/vcr )和 BetaMax( http://freeside.co/betamax/ )。

  • Mock 系统技术逐步普及: 在自动化测试过程中,构建稳定的测试环境至关重要,其中一个重要手段就是将外部系统或不稳定的系统 Mock 起来。这方面去年 @dreamhead- 郑晔已经开源了一个支持 HTTP 协议的 Moco 框架(感兴趣的读者可以参见:郑晔谈 Moco 框架的开发:写一个好的内部 DSL,写一个表达性好的程序, http://www.infoq.com/cn/news/2013/07/zhengye-on-moco ),@横刀天笑 - 余昭辉也分享过他们在去哪儿网的实践 (参见:为功能测试构建通用 mock server 系统, http://www.infoq.com/cn/articles/auto-test-mock-server )。

    诚然由于环境的复杂性,上述工具未必可以完全解决大家在各自测试中的各种系统隔离需求,但是我相信他们解决这些问题的思路,应对会让大家深受启发。

  • 测试 DSL, 实例化需求走向前台: 《实例化需求》一书是 2012 年 Jolt 图书大奖的获得者,当年就引进中国。实例化需求的思想其实和验收测试驱动(Acceptance Test Driven Development)类似,限于篇幅这里就不详细展开解释了。但是两者都需要测试案例具备很高的抽象层次,可以被业务人员和开发人员很容易地读懂,这就需要实现测试 DSL(Domain Specific Language),也就是说需要在一个特定领域之内,将特定测试能力封装成一门易于业务、测试、开发理解沟通的专用测试语言,然后用这门 DSL 来编写实际测试案例。Robot Framework 作为一个关键词驱动框架,可以很好地支持测试 DSL 的定义。下面就是我们团队在一个客户出实现的测试 DSL,供大家参考:

我本人认为,作为一名测试人员,不应该区分手工测试人员和自动化测试人员,自动化测试技术是每个测试人员都必须掌握的技能,希望在 2014 年所有 InfoQ 的测试行业读者都能在自动化测试技术方面更上一层楼。

吴穹

资深敏捷专家,Agilean 联合创始人

wuqiong@agilean.cn

公共微信号: Agile-Testing-China


感谢侯伯薇对本文的审校。

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

2014-02-25 21:079805

评论

发布
暂无评论
发现更多内容

crm系统哪家好?好用的crm管理系统推荐

优秀

CRM系统

体验远超Hue,这才是技术人员最喜欢的SQL工具

雨果

sql hue DaaS数据即服务

艺术与科技的狂欢,云端XR支撑阿那亚2022砂之盒沉浸艺术季

阿里云弹性计算

vr 视觉计算 云XR平台 沉浸式体验 GPU实例

Linux进阶切换用户

flow

8月月更

说了半天跨平台,今儿咱就来跨跨!(完结篇)——Kubernetes上手实践

为自己带盐

Docker WSL2 k8s入门 签约计划第三季 8月月更

论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题

隐语SecretFlow

密码学和算法 机器学习/深度学习

Wallys/QCA 9880/802.11ac Mini PCIe Wi-Fi Module, Dual Band, 2,4GHz / 5GHz advanced edition

wallys-wifi6

MySQL数据指令

武师叔

8月月更

阿里云张新涛:支持沉浸式体验应用快速落地,阿里云云XR平台发布

阿里云弹性计算

视觉计算 云XR平台 沉浸式体验 GPU实例

毕昇编译器优化:Lazy Code Motion

华为云开发者联盟

云计算 后端 表达式 毕昇编译器

用Python自动生成 图文并茂的数据分析 报告

程序员晚枫

Python pip Office 自动化办公

秋招面试大厂总被刷下来,你这样做保准你事半功倍!

简说Linux内核

面试题 Linux服务器开发 C/C++后台开发 秋招+

作为开发人员,您应该熟悉的 7 个 JavaScript 概念

flow

8月月更

Linux进阶显示用户UID和GID

flow

8月月更

Linux进阶删除用户组

flow

8月月更

【Python】:如何处理异常报错?

翼同学

Python 编程语言 异常处理 8月月更 入门学习

Linux进阶新增用户组

flow

8月月更

OpenHarmony——内核对象队列之算法详解(下)

OpenHarmony开发者

OpenHarmony

分贝通SAAS企业大数据体系建设经验分享

阿里云大数据AI技术

大数据

怎样选择一个好的SaaS知识库工具?

Geek_da0866

传统数据中台又贵又复杂?何不试一试永久免费的下一代数据中台

雨果

数据中台 DaaS数据即服务

进行知识管理的好处有哪些?

Geek_da0866

Linux进阶删除用户

flow

8月月更

Go-Excelize API源码阅读(五)—— Close()

Regan Yue

Go 开源 源码刨析 8月日更 8月月更

【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点

华为云开发者联盟

云计算 华为云 开发者大赛

【Python】:如何利用Python实现文件操作

翼同学

Python 编程语言 文件操作 8月日更 入门学习

叮~点击定制你的数字车手证,参与挑战吉尼斯世界纪录™ 称号

亚马逊云科技 (Amazon Web Services)

Amaozn DeepRacer

不是吧,连公司里的卷王写代码都复制粘贴,这合理?

Liam

前端 代码 手写代码 代码阅读 写好代码

对数学直观、感性的认知是理解数学、喜爱数学的必经之路,这本书做到了!

图灵教育

高中数学

华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款

华为云开发者联盟

云计算 后端 华为云 流浪方舟

Substrate 源码更新导读八月第1周: 新版事务化存储层启用默认模式, Polkadot v0.9.27发布

彭亚伦

Substrate polkadot 波卡

自动化测试——回顾与展望_语言 & 开发_吴穹_InfoQ精选文章