zoukankan      html  css  js  c++  java
  • 读书笔记:读完互联网测试经验的感受

      之前下载了一些互联网公司的测试经验和技术介绍,因为太忙一直没有时间看。最近又翻出来重新看了一遍,感触还是挺多的,可能也是由于工作时间长了后有了一些新的感悟。
      主要有百度,腾讯,阿里下属的几个子公司(淘宝,支付宝,一淘),豆瓣等等,内容比较杂,有介绍测试经验和测试技术的,也有介绍自己的测试工具和自动化平台的。总体感觉互联网公司的测试工作还是比较高大上的,最起码比我们部门做的好多了。总结了一下,主要优点体现在以下几个方面:第一,尽早测试;第二,尽可能深入,测试从最底层开始,逐步上升集成;第三,尽量减少手工执行用例的工作量,大量使用自动化测试;第四,各种测试工具的开发和应用;第五,测试人员可以直接接触到线上系统和最终用户,这个渠道是畅通的。
      第一点:尽早测试。这个是测试行业公认的准则,一个BUG发现的越早,修复的成本就越低(说到这里,我非常佩服《软件测试的艺术》这本书的作者们,这些大师们在上个世纪提出的思想现在依然适用)。最快最省事的就是程序员在编码阶段中发现并修改的,这个在目前最主要的保证手段就是单元测试。看了好几家公司的介绍,对单元测试都非常看重,甚至在淘宝网的文档中有一个表格,专门对代码质量从各个角度进行打分,其中单元测试的覆盖率就是一项很重要的指标。另外在以前听一个讲座的时候也讲到,一个正确的测试体系应该是金字塔形状的,单元测试是最底层,同时占测试的比例也是最大的,大量的基本功能和编码错误应该在这个阶段就暴漏出来,而不是延迟到后端。
      第二点:尽可能深入,测试从最底层开始,逐步上升集成。这个其实和第一点有类似的地方,同样也是强调单元测试的价值和重要性。除此之外又强调把测试的工作和思想融入到整个开发过程中,这其实又包含了全功能研发团队的思想。开发人员在编码时就开始考虑如何测试并进行测试,测试人员从单元测试开始,依次到白盒测试,模块级别的接口测试,系统级别的集成测试,场景级别的验收测试。在每个级别有不同的测试策略和侧重点,越向上测试的角度越高,同时发现的问题也应该越少,如果到集成测试或者验收测试还发现有基本功能问题,那是应该好好分析下原因了。我始终坚持一个观点:测试人员应该深入了解产品,深入到代码级别,只有这样才能够发现产品的潜在问题,或者说才有资格去和开发人员PK。只是做黑盒测试,很多场景是考虑不到的,很多问题也是无法想到的。这一点上和我们的领导有冲突,他们认为测试应该站的层次更高,视野更开阔。我只想说,我觉得我们现在欠缺的是基本功,阅读代码,分析代码,理解业务,先把这些能力培养起来再说,如果基本功能都保证不了,何来的高大上?
      第三点:尽量减少手工执行用例的工作量,大量使用自动化测试。这些自动化测试框架有业界通用的如jenkins,RF等,也有自己开发的平台。目标和功能基本都是相同的,周期性的有持续集成的版本,代码修改和提交后能够第一时间启动构建验证正确性,绝大部分的回归测试自动化执行。甚至有篇文档中说验收测试是唯一需要手工执行用例的阶段,虽然我不太相信这样是否真的可行,不过也可以看出他们对自己产品质量和自动化测试能力的自信。
      第四点:各种测试工具的开发和应用;我印象最深的有两个,一个是自己开发的持续集成,自动化执行用例并输出测试报告的平台,类似于jenkins。另一个是支付宝开发的外部支付系统的模拟器,为了模拟各种不同银行的支付场景,方便测试。这个模拟工具和我之前开发并且一直在用的模拟器比较像,都是被测产品和外部系统有强交互关系,而外部系统又无法控制。所以自己开发工具来模拟这些外部系统,来方便构造各种真实环境中存在,但是研发过程中又很难产生的场景。
      第五点:测试人员可以直接接触到线上系统和最终用户,这个渠道是畅通的。这个真的非常重要,像我们现在的产品,将来发布出去如何部署,用户的使用场景是什么,整个研发内部都是很模糊的,仅有的一些信息都要经过好几层中转,往往是已经用到现场出现问题了以后,这才知道用户原来是这么用的。而像淘宝,他们的研发人员自己就是自己产品的用户,可以直接接触到线上系统,直接对线上系统的运行状态和日志进行分析,这样可以最真实的了解到产品的使用场景和最终用户的需求,更好的完善优化产品。
      最后还有一点,测试人员的价值体现在什么地方呢?有一篇文档中说的很好,原话我记不太清了,大概意思是:测试人员的价值体现在发现设计和编码人员思维狭隘的地方,帮助他们修正这个期间产生的错误,提出自己的建议,还有提前识别可能的风险和问题,预防缺陷的产生。从这个角度来讲,测试人员的工作不仅仅是发现BUG,向后一步包括如何修改BUG,向前一步包括如何预防BUG。
  • 相关阅读:
    Java实现 LeetCode 56 合并区间
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    JQuery实现对html结点的操作(创建,添加,删除)
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 55 跳跃游戏
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
    Java实现 LeetCode 54 螺旋矩阵
  • 原文地址:https://www.cnblogs.com/tuochao/p/4536965.html
Copyright © 2011-2022 走看看