lua|工作十年,这些是我在互联网公司的测试感悟

lua|工作十年,这些是我在互联网公司的测试感悟

文章图片


之前看了一些互联网公司的测试经验和技术介绍 , 总感觉少了点什么 , 后来小编用一顿奶茶贿赂了我们松勤的金牌讲师——心田老师 , 让他来聊了一聊他在行业内的一些感悟 。

主要有百度 , 腾讯 , 阿里下属的几个子公司 , 内容比较杂 , 有介绍测试经验和测试技术的 , 也有介绍自己的测试工具和自动化平台的 。
总结了一下 , 主要优点体现在以下几个方面:
第一 , 尽早测试;
第二 , 尽可能深入 , 测试从最底层开始 , 逐步上升集成;
第三 , 尽量减少手工执行用例的工作量 , 大量使用自动化测试;
第四 , 各种测试工具的开发和应用;
第五 , 测试人员可以直接接触到线上系统和最终用户 , 这个渠道是畅通的 。


第一点:尽早测试
这个是测试行业公认的准则 , 一个BUG发现的越早 , 修复的成本就越低(说到这里 , 我非常佩服《软件测试的艺术》这本书的作者们 , 这些大师们在上个世纪提出的思想现在依然适用) 。
最快最省事的就是程序员在编码阶段中发现并修改的 , 这个在目前最主要的保证手段就是单元测试 。
看了好几家公司的介绍 , 对单元测试都非常看重 , 甚至在淘宝网的文档中有一个表格 , 专门对代码质量从各个角度进行打分 , 其中单元测试的覆盖率就是一项很重要的指标 。
另外在以前听一个讲座的时候也讲到 , 一个正确的测试体系应该是金字塔形状的 , 单元测试是最底层 , 同时占测试的比例也是最大的 , 大量的基本功能和编码错误应该在这个阶段就暴漏出来 , 而不是延迟到后端 。



第二点:尽可能深入

测试从最底层开始 , 逐步上升集成 。
这个其实和第一点有类似的地方 , 同样也是强调单元测试的价值和重要性 。 除此之外又强调把测试的工作和思想融入到整个开发过程中 , 这其实又包含了全功能研发团队的思想 。
开发人员在编码时就开始考虑如何测试并进行测试 , 测试人员从单元测试开始 , 依次到白盒测试 , 模块级别的接口测试 , 系统级别的集成测试 , 场景级别的验收测试 。
在每个级别有不同的测试策略和侧重点 , 越向上测试的角度越高 , 同时发现的问题也应该越少 , 如果到集成测试或者验收测试还发现有基本功能问题 , 那是应该好好分析下原因了 。
我始终坚持一个观点:测试人员应该深入了解产品 , 深入到代码级别 , 只有这样才能够发现产品的潜在问题 , 或者说才有资格去和开发人员PK 。 只是做黑盒测试 , 很多场景是考虑不到的 , 很多问题也是无法想到的 。
这一点上和我们的领导有冲突 , 他们认为测试应该站的层次更高 , 视野更开阔 。 我只想说 , 我觉得我们现在欠缺的是基本功 , 阅读代码 , 分析代码 , 理解业务 , 先把这些能力培养起来再说 , 如果基本功能都保证不了 , 何来的高大上?


第三点:尽量减少手工执行用例的工作量
大量使用自动化测试
这些自动化测试框架有业界通用的如jenkins , RF等 , 也有自己开发的平台 。 目标和功能基本都是相同的 , 周期性的有持续集成的版本 。
代码修改和提交后能够第一时间启动构建验证正确性 , 绝大部分的回归测试自动化执行 。
甚至有篇文档中说验收测试是唯一需要手工执行用例的阶段 , 虽然我不太相信这样是否真的可行 , 不过也可以看出他们对自己产品质量和自动化测试能力的自信 。



第四点:各种测试工具的开发和应用

我印象最深的有两个 , 一个是自己开发的持续集成 , 自动化执行用例并输出测试报告的平台 , 类似于jenkins 。
另一个是支付宝开发的外部支付系统的模拟器 , 为了模拟各种不同银行的支付场景 , 方便测试 。 这个模拟工具和我之前开发并且一直在用的模拟器比较像 , 都是被测产品和外部系统有强交互关系 , 而外部系统又无法控制 。
所以自己开发工具来模拟这些外部系统 , 来方便构造各种真实环境中存在 , 但是研发过程中又很难产生的场景 。


第五点:测试人员可以直接接触到线上系统和最终用户

这个渠道是畅通的 。 这个真的非常重要 , 像我们现在的产品 , 将来发布出去如何部署 , 用户的使用场景是什么 , 整个研发内部都是很模糊的 , 仅有的一些信息都要经过好几层中转 , 往往是已经用到现场出现问题了以后 , 这才知道用户原来是这么用的 。
而像淘宝 , 他们的研发人员自己就是自己产品的用户 , 可以直接接触到线上系统 , 直接对线上系统的运行状态和日志进行分析 , 这样可以最真实的了解到产品的使用场景和最终用户的需求 , 更好的完善优化产品 。
最后还有一点 , 测试人员的价值体现在什么地方呢?有一篇文档中说的很好 , 原话我记不太清了 , 大概意思是:测试人员的价值体现在发现设计和编码人员思维狭隘的地方 , 帮助他们修正这个期间产生的错误 , 提出自己的建议 , 还有提前识别可能的风险和问题 , 预防缺陷的产生 。
从这个角度来讲 , 测试人员的工作不仅仅是发现BUG , 向后一步包括如何修改BUG , 向前一步包括如何预防BUG 。
【lua|工作十年,这些是我在互联网公司的测试感悟】


    推荐阅读