我们需要先对软件测试进行一场“再”认识。
软件测试是软件开发行业成熟度更高的产物。
从“成熟度”来讲,软件开发行业的整体成熟度更高,人们对软件开发的理解也更为全面深入。正因为这样,人们也更习惯将软件测试和软件开发放在一起比较。虽然软件开发和软件测试都属于产品研发,但是人们的关注点是不同的。软件开发偏向“创造”,而软件测试却偏向“验证”和“确定”,所以软件开发和软件测试对技能要求也是不同的。
人们将软件测试和软件开发放在一起比较的时候,容易陷入“用软件开发的要求来评价软件测试”的思维中,只看到软件测试和软件开发相比的弱势,却看不到软件测试自身的优势。
那么作为软件测试,和软件开发相比,又有哪些优势呢?
一、软件测试的优势
虽然软件测试存在不少困境和迷局,但是这并不能掩盖软件测试自身的优势。
和软件开发相比,软件测试入门相对更容易些。这是软件测试行业的一大特点,其实也是软件测试的优势之一。较低的“门槛”给了软件测试行业和软件测试从业者更多的选择余地。一些企业在招聘软件测试人员的时候,不一定只招聘有计算机、通信相关经验的人,他们可能会根据产品的特点,招聘一些更能理解产品和用户需求的人员,如金融、财会专业的人等,所以软件测试从业者可以是“杂家”,或者说对某些领域来说,“杂家”反而更适合软件测试。从软件开发相对“封闭”的行业特点来说,软件测试就要“开放”多了。另外对想改行从事软件研发工作的人来说,选择“软件测试”作为转型的切入点也是比较合适的。
在软件开发项目中,大多数软件开发工程师都会被分配一个或几个“模块”来编码实现,几个软件开发工程师合作才能完成一项功能是非常普遍的现象。这种割裂式的开发工作模式,让其中的软件开发工程师很难理解产品的全貌,甚至不知道最终用户会如何使用自己的产品。相对来说,软件测试人员是产品研发团队中最理解产品全貌、最理解用户的人,这是由软件测试的工作内容决定的。
软件测试人员不必关心产品究竟是如何编码实现的,不必关心用的是C语言还是C++,不必关心这部分代码是软件开发人员从网上复制下来的还是自己原创的;他们需要关注的是“产品的实现是否和开发承诺要实现的功能是一致的”,这让测试人员自然会去关注“功能”,理解产品的全貌,而不会陷入实现细节。
软件测试人员还会对产品进行“黑盒测试”,这种看似“摸瞎”的系统测试方法,需要站在用户的角度分析用户使用场景,所以软件测试人员必须想办法去全面理解用户,不仅要理解用户明确的需求,还要理解用户“隐形”的需求,如用户的使用习惯、用户行业潜在规则等。所以在产品研发领域,测试人员才是最理解用户的人。
在大多数人的印象中,软件开发整天面对着电脑,两耳不闻窗外事,十指翻飞只为编写程序,是一个很“宅”的职业。你千万不要以为软件测试也是一样的,和软件开发相比,软件测试人员需要有一定的沟通交流能力,这不仅有助于就产品测试中发现的bug和开发人员进行沟通,更重要的是,在很多企业,软件测试人员都会作为产品研发的接口,在用户出现问题的时候和用户进行沟通。除此之外,想要做好测试,协调能力、风险评估能力、数据统计分析能力和报告撰写能力都是必不可少的“软技能”。所以和软件开发要求“深度”不同,软件测试更注重“广度”,要求软件测试人员是“多面手”,有很强的综合能力。
软件测试的这一特点,让软件测试人员可以有更多的职业外延可供选择。换句话说,即使一名软件测试工程师在从事了几年软件测试工作后转行其他管理工作、产品工作,都可以很快上手,并得到认可。这是因为软件测试人员对产品理解,在研发领域可能不够“深入”,但是在非研发领域却做得很好。在广度方面,软件测试人员不会输于其他非研发领域的从业人员;对用户需求的理解,软件测试人员也不会逊色;而沟通协调、分析总结、风险意识等软能力也能帮助软件测试人员很快掌握新领域的知识技能。所以相对来说,软件测试人员其实更能适应这个复杂多变的社会。
二、软件测试的劣势
客观来讲,和软件开发相比,软件测试也存在很多劣势。
“入门低”虽然给软件测试行业和软件测试从业人员带来了更多的选择机会,但是也会导致软件测试在软件研发领域的认可度降低,认为软件测试是一项相对简单、没有技术含量(或技术含量低)的工作。这个“印象”直接导致了软件测试当前的困境和迷局。
虽然软件测试的“出口”看起来很广阔,但是和同在软件研发领域的软件开发人员相比,软件测试在软件研发领域的发展却比软件开发人员有限得多,至少这是现状。我们很少看到软件测试人员去做产品研发管理工作,成为开发代表、产品线经理或研发总监;很少看到软件测试人员去做系统架构师(SE)。很多企业,软件测试在管理上的职位,最高就是测试代表或测试经理,在技术上甚至没有职位,没有发展方向。
如果从业者的职业发展目标本就不在产品研发,而只想熟悉产品,那么软件测试无疑是获得这项经验一种很好的实践;但是如果从业者的目标就是软件测试,最后却“被迫”转岗,这样的“宽出口”就不是“优势”,而是当前软件测试的无力之处了。
选自《测试架构师修炼之道:从测试工程师到测试架构师》