写点什么

百度技术沙龙第 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:264823

评论

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

你不知道的开源分布式存储系统 Alluxio 源码完整解析(上篇)

腾源会

大数据 开源 数据湖

这一次,Google 终于对 Web 自动化下手了!

星安果

chrome 自动化

范学雷的专栏《深入剖析 Java 新特性》

IT蜗壳-Tango

11月日更

直接破防了,阿里大咖DDD(领域驱动设计)不破不立,GitHub直接霸榜,今天share给大家~

编程 程序员 领域驱动

jodconverter实现在线预览

小鲍侃java

11月日更

linux下清理系统缓存并释放内存

入门小站

Linux

架构设计

AHUI

「架构实战营」

新能源汽车补贴没了,行业还能快速发展吗?

石云升

学习笔记 新能源汽车 11月日更

你不知道的开源分布式存储系统 Alluxio 源码完整解析(下篇)

腾源会

大数据 开源

赢在2022,面试官常问的软件测试面试题总结

六十七点五

软件测试 面试题 自动化测试 经验总结 测试工程师

中央银行、不平等和新技术:使用分布式账本、可编程合约和密码学的蓝图

CECBC

【算法技术专题】如何用Java实现一致性 hash 算法( consistent hashing )(上)

洛神灬殇

算法 一致性hash 11月日更

识别AI换脸!百度这项技术夺冠了!

百度大脑

人工智能 百度

你现在可以在元宇宙里 “打工”了!

CECBC

【LeetCode】重新排序得到 2 的幂Java题解

Albert

算法 LeetCode 11月日更

请问软件测试和渗透测试的区别是什么?

喀拉峻

网络安全 渗透测试

何止一个惨字形容,水滴Java面试一轮游,壮烈了,问啥啥不会,数据库血崩,我该怎么办?

Java 编程 程序员 面试

一个基于PoS共识算法的区块链案例

Regan Yue

区块链 共识算法 11月日更 细讲区块链

在线假单词随机生成器

入门小站

工具

gitlab registry占用存储过大问题解决

ilinux

15 K8S之容器安全上下文

穿过生命散发芬芳

k8s 11月日更

浏览器的几种防护策略

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

监管打压加码!虚拟货币挖矿再遭围堵 “漏网之鱼”当休

CECBC

NodeJs 深入浅出之旅:V8 内存分配🧙‍♂️

空城机

大前端 Node 11月日更

数据同步:教你如何实时把数据从 MySQL 同步到 OceanBase

OceanBase 数据库

数据库 开源 oceanbase 分布式,

在华为云专属月,找到开启互联网第二增长曲线的一把钥匙

脑极体

科技热点周刊|马斯克套现 440 亿;苹果推出数字身份证;Meta 与微软合作;华为捐赠欧拉

青云技术社区

云计算 物联网

验证码

卢卡多多

图片验证码 11月日更

华为初面+综合面试(Java技术面)附上面试题,share给大家~

Java 编程 程序员 面试

1 分钟学会 30 种编程语言

AlwaysBeta

一起听、一起看、一起唱掀起Z世代青年社交浪潮

声网

人工智能 算法 音视频

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