【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

  • 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:079716

评论

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

今日谈:BoltDB数据库,一款纯Go实现的KV数据库

Regan Yue

Go 语言 11月日更

又谈mysql,面试官问表结构设计要注意啥?

微客鸟窝

MySQL 11月日更

在线等比数列项数生成器

入门小站

工具

.NET Core 中对象池(Object Pool)的使用

喵叔

11月日更

flutter 开发中 vscode 插件推荐 3

坚果

flutter 11月日更

阿里云 EventBridge 事件驱动架构实践

阿里巴巴云原生

阿里云 云原生 事件驱动 事件驱动架构 EventBridge

18 K8S之存储卷简述

穿过生命散发芬芳

k8s 11月日更

【死磕Java并发】-----Java内存模型之从JMM角度分析DCL

chenssy

11月日更 死磕 Java 死磕 Java 并发

一份数据的6种Plotly画法

Peter

数据分析 可视化

完善Django的MVT框架开发,记得添加路由哦~

老表

Python django web开发 11月日更 博客系统

Electron常见问题 48 - Electron 获取本机 MAC 地址

liuzhen007

11月日更

Prometheus Exporter (二)Windows Exporter

耳东@Erdong

Prometheus exporter 11月日更 Windows Exporter

测试左移实践介绍

刘冉

TDD 自动化测试 测试驱动开发 测试左移 ATTD

“零信任”的世界,让女性更安全

脑极体

redo Log 的持久化过程

卢卡多多

Redo Log 11月日更

前缀和后缀运算符有什么区别?

devpoint

JavaScript 11月日更 前缀运算符 后缀

前端开发:Node版本引起的报错问题

三掌柜

11月日更

元宇宙、区块链和潘家园

脑极体

[Pulsar] Delayed message原理

Zike Yang

Apache Pulsar 11月日更

架构实战 - 模块四

唐敏

「架构实战营」

网络安全之浏览器端的威胁要塞防御

喀拉峻

网络安全 安全 信息安全

如何设计高性能高可用存储架构

天天向上

架构实战营

linux总结10大危险命令

入门小站

Linux

☕【Java技术指南】「技术盲区」看看线程池是如何回收和维持运作线程的核心技术体系

洛神灬殇

Java 线程池 11月日更

不用找了,这本书帮你完全搞定Spring Cloud Alibaba

胡弦(关注公众号架构随笔录)

分布式架构 spring cloud alibaba

dart系列之:创建Library package

程序那些事

flutter dart 程序那些事 11月日更

【Flutter 专题】04 图解第一个程序遇到的安装依赖问题

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

Android C++系列:Linux文件系统(一)

轻口味

c++ android jni 11月日更

Python中的控制流:break和continue

Peter

Python 控制流

[ Kitex 源码解析] 函数式编程

baiyutang

golang 微服务 Go 语言 11月日更

Serverless 下的微服务实践

阿里巴巴云原生

阿里云 Serverless 微服务 云原生 SAE

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