清华学长详谈:软件测试到底难在哪?

一直以来,在整个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),然后等用户在使用过程中收集反馈,在后面的迭代中就能及时调整。
在这里插入图片描述

从以上这些研发模型的演进过程,我们可以看到,整个研发过程是随着技术与业务的变化逐渐演化的。而测试则在整个过程中,由最开始的最后一道工序,不断地前置,最终逐渐被提前到敏捷开发中的每一个迭代版本中,足以证明软件测试在软件研发过程中发挥着越来越重要的作用。

最后为方便大家学习软件测试,特意给大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面。

包括,软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2021软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助,关注我公众号:程序员二黑,即可免费领取!

如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们的群:785128166 大家一起讨论交流,里面也有各种软件测试资料和技术交流。

精彩推荐

在职阿里6年,一个29岁女软件测试工程师的心声

拒绝B站邀约,从月薪3k到年薪47W,我的经验值得每一个测试人借鉴

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员二黑

V:testerhei

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值