写点什么

百度技术沙龙第 4 期回顾:Web 测试自动化(含资料下载)

  • 2010-07-28
  • 本文字数:2304 字

    阅读完需:约 8 分钟

在 7 月 24 日 InfoQ 和百度联合举办的第 4 期百度技术沙龙活动上,来自百度的工程师孙景卫和 ThoughtWorks 的工程师张晓庆分别和与会者分享了测试相关的话题,包括百度研发团队在 Web 测试自动化方面的尝试和实践,以及测试驱动开发实战。本次活动还增设了促进交流的 OpenSpace 环节,让“每一个人都是讲师”!

在孙景卫的演讲中,他从 Web 测试自动化的目标谈起,认为让测试自动化并不是为了赢得老板的赞赏,或者认为这是一个很潮的技术,不用就会落后,而是为了网站的质量。随后他介绍了测试自动化的原理,包括感性的时间和空间,记录鼠标键盘的动作;利用如 Http 协议和 Web 服务协议进行测试;或者直接操纵页面控件,如利用 JavaScript 操纵 Dom 等。在分享百度研发团队在测试自动化方面的一些实践时,孙景卫重点介绍了常用的测试工具 Selenium,以及做测试时需要重点考虑的一些地方:

  • 要尽量避免 UI 测试:其原因是 API 和功能层级来说更加稳定,而且其自动化和维护的成本都比较低。在 Google 内部,测试就有一个 721 原则,即 70% 的测试工作集中在底层接口测试和单元测试,20% 的测试工作为集成测试,其他 10% 的测试即为界面测试;
  • 在测试 Case 时,不要试图自动化所有的 Case,另外可以考虑使用 Ipython 等工具来半自动化自己的测试;
  • 在处理业务变更时,利用 ID/Name 定位元素设定 UI Map,向开发团队展示自动化成果和开发约定规则。

最后,孙景卫还介绍了如何设计一个好的模式或者框架来让测试自动化更加便捷,包括要对业务进行分层,关注数据存储和数据驱动,重视 DRY/WET 原则,以及要能够对结果进行验证等。在提问环节,有听众问如何设计 Case,以及当某个 Case 位置变更的时候,应该如何处理,孙景卫分享了百度在设计 Case 时常用的原则:

一般情况下,我们写 Case 的时候倾向于 Case 之间是没有关联的,但是这种情况很难做到,这是我们努力的一个方向。我们希望一个 Case 在执行的时候,它自己能够将初始化和结尾的工作先做好,A Case 和 B Case 不应该有关系,B Case 的成功与失败不应该依赖于 A Case 的成功与失败,一个好的 Case 应该这样设计。但是有时候 A Case 做完,我们需要先添加一个用户,然后再删除这个用户,这种情况下,如果没添加就去删除,则是失败的,两者之间存在一种依赖关系。在这种设计的情况下,有一个解决的思路是支持 Case 间的依赖,你可以定义一个标签去说明某个 Case 依赖于其他的 Case,这样就先执行被依赖的 Case,然后再执行这个 Case,确保了执行的顺序。

也有与会者提到如何使用 Selenium 来对不同的浏览器进行兼容性测试,以及百度的自动化测试率能达到多少,孙景卫的观点是:

Selenium 本身设计上是比较适合做兼容性测试的,但实际上效果并不是那么好,可能会有各种各样的问题,比如对 JavaScript 的支持不同,可能会导致在 Firefox 上运行是 OK 的,在 IE 上运行可能就会失败。兼容性测试方面并没有一个比较好的方法,还是要用 Selenium 来做,虽然它对非 Firefox 浏览器有时候支持的不好,但基本还是可以做的。如果你能提取几个主流的浏览器,比如 Firefox 和 IE,其他的浏览器暂时不关注的话,就可以针对性地设计一些 Case。 至于百度的自动化测试率,各个开发小组的数据是不一样的,但估计不是很高。在 2008 年我们大批做的时候,这个数据达到过 60%~70%,但是现在这个数据已经下来了,估计是 30% 这个级别。我们对这个数据本身已经没有太多的强制要求,有的组可能适合做自动化测试,数据可能高一些,有的组不适合,可能就低一些。

在 ThoughtWorks 工程师,也是 InfoQ 中文站敏捷社区编辑张晓庆的“测试驱动开发(TDD)实战”演讲中,他主要结合代码演示介绍了 TDD 的一些原则,包括:

  • 自上而下的驱动
  • Web 测试要先列出应用场景
  • 要先写测试,哪怕是 Bug
  • 测试即文档
  • 与 QA 讨论测试场景
  • TDD 与语言无关
  • TDD 不是玩具

在会后部分参会者所写的博客中,详细记录了两位分享嘉宾演讲的一些要点,比如 YanHua 的“测试专题活动和奇遇咖啡的 rails 活动小记”以及 sunway00 的“参加 Web 测试自动化与 TDD 应用的沙龙心得笔记

  • WEB 自动化测试只是给基本的业务流程提供一个安全网,主要目的不是发现 bug 的,覆盖率不高,有些人工更方便的使用人工测试好了。从提问的环节得到的信息,其实百度各个组对于 WEB 自动化测试的覆盖率没有硬性的要求,好一点的可能达到 20-30% 的样子;
  • 尽管 TDD 强调在编写任何功能代码前都要先写测试,不过对于 WEB 测试来说由于运行一次的代价比较大,所以可以先在 TestCase 里列出场景,而不写任何测试代码,这样先让这个 TestCase 作为一个文档的作用存在;
  • 通过测试和上层方法进行驱动开发。比如你写 Action 测试时发现需要跳转首页的方法,就驱动在 Action 建立 toIndex()方法。在 Action 发现你需要 Service ,就建立 Service 对象,利用 IDE 的辅助提示功能,快速的进行驱动开发。
  • ……

为了让参会者能够有更多的时间进行相互的交流,本次活动在最后的 1.5 小时中设置了 OpenSpace(开放空间)环节,将大家分成不同的小组,然后自己选择组长自己选择话题,然后和其他人员进行分享。从而让每个人都有发言的机会,“每一个人都是讲师”,并能在相同的单位时间内聆听到关于一个话题更多的观点,更靠近百度技术沙龙所强调的“交流”和“争鸣”目的。这一环节的效果,正如一位参会者会后在网易论坛中对这次活动的图片报道中写到,“真是很活跃丰富的沙龙活动,互动性很强,是我最喜爱的交流方式!希望百度延续这样的方式,给大家一个自由的交流平台。”关于 OpenSpace 环节的讨论,InfoQ 随后会有更深入的总结,本次活动的演讲资料下载链接为:百度技术沙龙第 4 期(7 月 24 日)演讲资料下载

2010-07-28 21:265116

评论

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

面试了个阿里P7大佬,他让我见识到什么才是“精通高并发与调优”

小二,上酒上酒

Java 流量 亿级并发设计

阿里架构师耗时1年,把P8所需要的整个Java体系,都整理到了一起

小二,上酒上酒

Java 架构 面试

Apache HBase 数据上云实践

移动云大数据

HBase

【区块链Go】基础语法

坚毅的小解同志

#go 11月月更

就这样,进字节了?华为的Java面试题和八股文,真牛批

小二,上酒上酒

Java 面试题 八股文 Java面试题

白活了!谷歌架构师10年心血汇成的《24种设计模式》,这才是正解

小二,上酒上酒

Java 设计模式

共36万字!为上岸Alibaba,我把Github上Java面试题都整理了一遍

小二,上酒上酒

Java 面经 大厂面试 Alibaba Java面经

眼见为实:关于微服务熔断这几个知识点,你可能理解错了

KINDLING

Java 微服务 熔断 SpringCloud ebpf

眼见为实:ForkJoin的“分而治之”,竟然有隐藏的坑?

KINDLING

Java Linux 多线程 forkjoin ebpf

还不会正则表达式? 放心 我会出手(万字教学)

坚毅的小解同志

正则表达式 11月月更

【jquery Ajax 练习】图书管理

坚毅的小解同志

ajax 11月月更

面试了个985毕业的大佬,回答“性能调优”题时表情令我毕生难忘

小二,上酒上酒

Java 面试 性能调优

eBPF程序摄像头——力争解决可观测性领域未来最有价值且最有挑战的难题

KINDLING

Java Linux 监控 可观测 #ebpf

Meta force2.0佛萨奇矩阵公排系统开发合约部署搭建

开发微hkkf5566

HTAP 的下一步?SoTP 初探(上):从 “大” 数据到 “小” 而 “宽” 数据 —— 第七届中国开源年会(COSCon'22)

StoneDB

MySQL 数据库 开源 HTAP StoneDB

和鲸科技入选2022年度数字化创新服务商丨Digital 36 调研发布

ModelWhale

云计算 大数据 数字化转型 数据智能 企业服务

数据报告 | 新冠疫情对美国民众消费行为的影响

前嗅大数据

疫情 数据分析 爬虫 数据采集 消费

【jquery Ajax】基础概念与使用教学

坚毅的小解同志

ajax 11月月更

3000人群被字节内部技术图谱炸翻了,惊艳级实用

小二,上酒上酒

Java 架构 技术栈 字节

眼见为实:被误导的Tomcat的工作原理

KINDLING

Java tomcat 多线程 ebpf

【jquery Ajax 】art-template模板引擎案例——新闻列表

坚毅的小解同志

ajax 11月月更

【jquery Ajax 】art-template模板引擎的概念与使用

坚毅的小解同志

jquery ajax 11月月更

【jquery Ajax 】form表单教学+评论案例

坚毅的小解同志

11月月更

干货|无源元件之——电阻器基础知识(超全)

元器件秋姐

【jquery Ajax】接口的学习与Postcode插件的使用

坚毅的小解同志

ajax 11月月更

无序和混乱终结者,极狐GitLab Workflow 到底有什么魔力?

极狐GitLab

DevOps Code Review CI/CD workflow 极狐GitLab

5 分钟带你在本地搭建一套云原生实验环境

谢烟客

Kubernetes 云原生 Service Mesh istio kind

大数据的5V特征分别是什么?

好程序员IT教育

大数据 V5

一文解决 Go 安装和常用环境变量的配置

陈明勇

Go 11月月更

ZETA精彩亮相2022 IOTE展 以全栈式物联生态赋能产业数智化转型

ZETA开发者

物联网 ZETA 物联网技术 LPWAN 技术融合

教育行业数据可视化应用方案与实践

葡萄城技术团队

前端 数据可视化 智慧医疗 智慧工程

百度技术沙龙第4期回顾:Web测试自动化(含资料下载)_Java_霍太稳@极客邦科技_InfoQ精选文章