前言

书写自动化测试用例是测试开发日常的工作内容。

自动化的技术栈也有难度梯度。

本文是翻译 Google2015 年的一篇文章《Just Say No to More End-to-End Tests》(https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html)。

借此学习并思考,自动化测试设计中的分层思想。

主要思想

不要迷信 e2e 测试,也就是 e2e 测试用例不是多多益善。

为什么呢?

先解释什么是 e2e 测试以及作者认为理想的测试金字塔结构。

什么是 e2e 测试?

模拟真实用户场景的测试

理论上 e2e 测试很好

实践中 e2e 测试的问题

作者举了这样一个例子,在 Google Docs 产品里面,他们是这样运行 e2e 测试用例的:

为了保持产品质量的高标准,要求 e2e 用例通过率必须达到 90% 才能上线。(我:看起来合理安排和要求,应该很多公司也是这么做的)

然后,一次一个新功能还有 1 天就要发布,然后发生了下面的情况:

剩余天数 通过率 % 备注
1 5% 一切都被打破!登录服务已损坏。几乎所有测试都会登录用户,因此几乎所有测试都失败了。
0 4% 我们依赖的合作伙伴团队昨天在他们的测试环境中部署了一个糟糕的构建。
-1 54% 昨天(或前一天?),开发人员打破了保存场景。一半的测试会在某个时间点保存文档。开发人员一天中的大部分时间都在确定它是前端错误还是后端错误。
-2 54% 这是一个前端错误,开发人员今天花了一半时间弄清楚在哪里。
-3 54% 昨天检查了一个错误的修复程序。不过,这个错误很容易发现,并且今天检查了正确的修复程序。
-4 1% 我们的测试环境在实验室中发生了硬件故障。
-5 84% 隐藏在大错误后面的许多小错误(例如,登录失败、保存失败)。仍在处理小错误。
-6 87% 我们应该在 90% 以上,但由于某种原因不是。
-7 89.54% (四舍五入到 90%,足够接近。)昨天没有检查任何修复,所以昨天的测试一定是不稳定的。

复盘一下整个过程:(我:是不是有一种似曾相似的感觉)

(我:看到哪些典型的问题)

针对这个问题,作者引出自己的观点

测试真正的价值

建立正确的反馈回路

想得更小,而不是更大

结语

我个人还是比较同意作者的大部分观点。

测试金字塔的分层的抽象思想在很多年前就看过,但是再次去看它还是会有更深的体会。并且,我自己工作中一些测试设计也一直是基于此思想实践的。


↙↙↙阅读原文可查看相关链接,并与作者交流