软件测试到底难在什么地方?

发表于:2021-8-31 09:24  作者:佚名   来源:知乎

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: 软件测试 职业发展

  一直以来,在整个IT行业中,一说起软件测试这个工作,人们脑子中浮现的都是一群软件测试工程师用双手在键盘上或在手机上“点点点”的场景,所以很长一段时间,软件测试工程师都被戏称为“点点点”工程师。不过,现在0202年都过了这么久了,如果还抱着这种态度来看待“软件测试”这个职业,未免有点太过时了。这就跟前几年台湾人民觉得祖国大陆人民吃不起茶叶蛋一样,“Out的妈妈给Out开门,Out到家了”。
  况且,现在的软件测试跟传统的软件测试相比已经发生了非常大的变化,不管是测试范围还是测试手段,都有很大的不同。所以,现在我们更专业的叫法是“测试开发工程师”,从这个名字就可以看出来,传统的点点点已经没有市场了,掌握开发技能的测试工程师才有未来。
  不过光是这样说,其实对于很多未入行的童鞋,甚至是行业内做过多年但没有接触过软件测试职位的人来说,仍然不知道具体测试这玩意难在哪里(没办法,人一旦有了偏见就很难客观起来)。仅仅是多了个写代码的技能吗,那为什么不直接招几个开发来做测试,他们代码写得还更溜一些,还要啥测试开发工程师呢?
  其实,真正所谓的“测试开发”,并不是简单地指“测试+开发=测试开发”,这其中蕴含着技术、流程、架构等一系列复杂的变化,现在要想做好一个大型复杂系统的测试是非常不容易的一件事。所以,今天这篇文章,咱们就聊细一点,让大家明白,我们说的测试很难,究竟是难在哪里。
  一、软件研发流程的变化。
  · 瀑布模型
  在最早的软件研发过程中,软件测试工作还只是整个研发过程中的一个阶段而已,如下图所示:
  这个图很像一个瀑布的形状,所以我们把这种研发流程俗称为瀑布模型。大家从上面这幅图就可以看出,软件测试只在整个研发过程的差不多结尾的地方才开始。所以那时的系统大多都比较简单,功能也不复杂,但等产品都差不多开发完后再来测试,势必会带来很多风险。大家可以想象一下,这就如同修建一栋大楼,在差不多封顶时,才发现这栋大楼在打地基的时候就出了问题,后果不言而喻。所以,这样干是不行的。
  · V 字型模型
  既然不能这样干了,过了若干年,聪明的码农们又进一步改进了上面那个流程,这次改成了这样的一个 V 字型的流程,俗称 V 字型模型:
  这个 V 字型模型的变化跟上面瀑布模型的变化其实不太大,但好在它相对清晰地划分了测试活动的不同级别,还将其不同级别的测试活动与软件开发各阶段清晰地对应了起来,旨在强调测试在整个开发过程中的重要性。但不幸的是,在 V 模型中,测试仍然是编码之后才开始的,测试介入的时间仍然太晚,比如需求阶段出的问题,要在系统测试阶段才能发现。所以还是不行,还得继续改。
  · W 模型
  随着时间的推进,另一个俗称 W 模型的过程出现了,大家应该可以猜到它就是长得像一个字母 W,如下图所示:
  从上面的 W 模型示意图可以看出来,W 模型是把 V 模型左边的每一个活动都加了一个测试设计活动,这样就体现了“尽早和不断地进行测试”的原则,真正做到了测试前置。
  不过,W 模型只是看起来很美,但它其实并不完美。因为不管是 W 模型也好,V 模型也罢,它们都把整个研发过程视为需求、设计、编码、测试等一系列串行的活动,无法支持快速迭代的研发需求及变更调整。而恰好这也是我们现在互联网产品的常态,996 短平快,是国内互联网产品的主流旋律,市场竞争如此激烈,没有哪个用户会等着你慢慢研发出来。
  举个例子,遇到需要根据市场及监管要求,快速调整项目需求时,比如今年这个疫情,ZF紧急要求上线全国人民都要使用的健康码监管系统,这种系统按照常规完整开发没个半年是搞不定的,但我们在短短一周内就上线使用,速度之快难以想象。这种时候如果按照 W 模型或 V 模型的串行做法,不仅无法快速响应,还会影响整个软件的质量,肯定是无法满足要求的。
  · 迭代模型
  终于到我们的迭代模型登场了,这才是现在主流的研发模型。所谓迭代,就是指将整个系统需求拆分成多个不同的小部分,一次只完成其中的一部分。这种开发方式的特点是小步快跑,增量实现,风险可控。所以,这种模式还有一个名称叫敏捷开发模式(Agile development)。PS:我觉得发明这些词的人真他娘的是个天才,太形象了。
  在这种研发模式下,我们会将大型项目拆分为多个迭代,每个迭代本质上是一个小项目,每个项目都包含了需求分析、设计、编码、测试等一系列项目活动。由于它是增量的,所以它要求我们先完成部分系统功能或业务逻辑,然后依据客户反馈来进一步明确需求,最后通过一次次的迭代来给用户交付达标的产品。
  比如,我们在实现一个大产品时,会先实现一个最小可用版本(MVP,Minimum Viable Product),然后等用户在使用过程中收集反馈,在后面的迭代中就能及时调整。
  从以上这些研发模型的演进过程,我们可以看到,整个研发过程是随着技术与业务的变化逐渐演化的。而测试则在整个过程中,由最开始的最后一道工序,不断地前置,最终逐渐被提前到敏捷开发中的每一个迭代版本中,足以证明软件测试在软件研发过程中发挥着越来越重要的作用。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海信义律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2021, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道