软件测试工程师在工作中常常扮演着用户的角色,但是大家千万不要一看到“用户”就马上联想到“上帝”,认为软件测试工程师的工作很舒服。在实际工作中,每个产品在发布前都会有很多版本,软件测试工程师在每个版本中都要模拟用户使用的各种场景,遍历用户可能会使用到的各种输入参数,通过系统输出来判断这些操作结果是否能够满足预 期。其中很多操作都是重复的,这就需要软件测试工程师有一份“外在”的细致和耐心。
除了“外在美”,软件测试还要求软件测试工程师有“内涵”——懂用户。他们不仅要保证产品满足用户明确提出的功能需求,还需要理解在这些功能背后隐藏的“潜在”需求,如性能、可靠性、易用性、可操作 性、可移植性等。可见,要想内外兼修,真正做好做深软件测试,绝对不是一件容易的事情。
软件测试在“入门”上相对软件开发的确要容易些,但是软件测试和软件开发不同的是,软件开发人员只需要理解自己负责的模块就可以胜任工作,而软件测试则需要对整个系统都要有整体的把握,需要站在用户的角度去理解需求,所以软件测试比软件开发更难深入。
但现实是,测试“深入难”的这个特点往往被忽视,“门槛低”却被放大。“门槛低”的另一层意思就是“谁都能做”,技术含量不高。在这种背景下,软件测试工程师在职业发展上自然很难受到重视
对那些工作了两三年的软件测试工程师来说,他们在产品和软件测试技术上都有了基本的认识,足以胜任每天的日常工作后,很自然就会开始寻找新的发展方向和目标。
一个发展方向是软件测试管理。但软件测试的管理职位其实并不 多,即使是有独立测试部门的大中型公司,也只会到高级测试经理级 别,更别提那些没有独立测试部门的小企业了。所以软件测试工程师在测试管理方面想要有所发展,不仅需要能力,还需要机遇。
软件测试在技术方面又有哪些发展呢?
要想在技术方面有所发展,“深入”是必需的。这本来就不是一件容易的事情,而软件测试技术在“深入”上又比其他领域更难一些,可谓“难上加难”。当软件测试工程师开始进入软件测试职业发展的平台 期,变得迷茫、困惑,看不清自己未来的发展方向,需要指引时,又往往找不到方向。我的一位前辈曾经拿“布朗运动”来形容他自己在平台期的感觉,我觉得这个比喻是非常贴切的。正如《奥德赛》中描述的一样,还有什么比徘徊不前更让人感到难受的呢?
职业发展遇到“瓶颈”本来是一件非常正常的事情,但是如果这种情况得不到改善,老是处于平台期的状态,却是“致命”的。在我身边,就有很多从事测试工作3年左右的同事离职或者转岗。《中国软件测试从业人员调查报告》(2011年)也指出,中国软件测试行业有超过七成的从业人员工作年限是0~3年,只有18%的人是3~5年。需要注意的是,这个比值从2009年开始就没有发生过变化。这说明中国软件测试人员在工作经验的分布上并不合理,缺乏持续性。我们在不断“丢失”工作3年左右的、有经验的测试工程师,如果这种情况一直持续下去,很难说中国的软件测试不会“青黄不接”。
所以我想对中国的软件测试来说,引进测试技术,提升产品知识, 追求更完美的测试流程,或许都不是最重要的。我们需要讨论“发展”, 在软件测试工程师职业发展出现困惑迷茫的时候,可以为他们解惑。
认识软件测试的优势和劣势
我们需要先对软件测试进行一场“再”认识。
从“成熟度”来讲,软件开发行业的整体成熟度更高,人们对软件开发的理解也更为全面深入。正因为这样,人们也更习惯将软件测试和软件开发放在一起比较。虽然软件开发和软件测试都属于产品研发,但是人们的关注点是不同的。软件开发偏向“创造”,而软件测试却偏向“验证”和“确定”,所以软件开发和软件测试对技能要求也是不同的。但是 要广度和深度的认识 ‘’软件‘’ 开发能力必须具备
人们将软件测试和软件开发放在一起比较的时候,容易陷入“用软件开发的要求来评价软件测试”的思维中,只看到软件测试和软件开发相比的弱势,却看不到软件测试自身的优势。
那么作为软件测试,和软件开发相比,又有哪些优势呢?
虽然软件测试存在不少困境和迷局,但是这并不能掩盖软件测试自身的优势。
和软件开发相比,软件测试入门相对更容易些。这是软件测试行业的一大特点,其实也是软件测试的优势之一。较低的“门槛”给了软件测试行业和软件测试从业者更多的选择余地。一些企业在招聘软件测试人员的时候,不一定只招聘有计算机、通信相关经验的人,他们可能会根据产品的特点,招聘一些更能理解产品和用户需求的人员,如金融、财会专业的人等,所以软件测试从业者可以是“杂家”,或者说对某些领域来说,“杂家”反而更适合软件测试。从软件开发相对“封闭”的行业特点来说,软件测试就要“开放”多了。另外对想改行从事软件研发工作的人来说,选择“软件测试”作为转型的切入点也是比较合适的。
在软件开发项目中,大多数软件开发工程师都会被分配一个或几 个“模块”来编码实现,几个软件开发工程师合作才能完成一项功能是非常普遍的现象。这种割裂式的开发工作模式,让其中的软件开发工程师很难理解产品的全貌,甚至不知道最终用户会如何使用自己的产品。相对来说,软件测试人员是产品研发团队中最理解产品全貌、最理解用户的人,这是由软件测试的工作内容决定的。
软件测试人员不必关心产品究竟是如何编码实现的,不必关心用的是C语言还是C++,不必关心这部分代码是软件开发人员从网上复制下来的还是自己原创的;他们需要关注的是“产品的实现是否和开发承诺要实现的功能是一致的”,这让测试人员自然会去关注“功能”,理解产品的全貌,而不会陷入实现细节。
软件测试人员还会对产品进行“黑盒测试”,这种看似“摸瞎”的系统测试方法,需要站在用户的角度分析用户使用场景,所以软件测试人员必须想办法去全面理解用户,不仅要理解用户明确的需求,还要理解用户“隐形”的需求,如用户的使用习惯、用户行业潜在规则等。所以在产品研发领域,测试人员才是最理解用户的人。
在大多数人的印象中,软件开发整天面对着电脑,两耳不闻窗外 事,十指翻飞只为编写程序,是一个很“宅”的职业。你千万不要以为软件测试也是一样的,和软件开发相比,软件测试人员需要有一定的沟通交流能力,这不仅有助于就产品测试中发现的bug和开发人员进行沟通,更重要的是,在很多企业,软件测试人员都会作为产品研发的接 口,在用户出现问题的时候和用户进行沟通。除此之外,想要做好测 试,协调能力、风险评估能力、数据统计分析能力和报告撰写能力都是必不可少的“软技能”。所以和软件开发要求“深度”不同,软件测试更注重“广度”,要求软件测试人员是“多面手”,有很强的综合能力。
软件测试的这一特点,让软件测试人员可以有更多的职业外延可供选择。换句话说,即使一名软件测试工程师在从事了几年软件测试工作后转行,无论他是改行做销售、客服或其他工作,都可以很快上手,得到认可。这是因为软件测试人员对产品理解,在研发领域可能不够“深入”,但是在非研发领域却做得很好。在广度方面,软件测试人员不会输于其他非研发领域的从业人员;对用户需求的理解,软件测试人员也不会逊色;而沟通协调、分析总结、风险意识等软能力也能帮助软件测试人员很快掌握新领域的知识技能。所以相对来说,软件测试人员其实更能适应这个复杂多变的社会。
软件测试的劣势
客观来讲,和软件开发相比,软件测试也存在很多劣势。
虽然软件测试的“出口”看起来很广阔,但是和同在软件研发领域的软件开发人员相比,软件测试在软件研发领域的发展却比软件开发人员有限得多,至少这是现状。我们很少看到软件测试人员去做产品研发管理工作,成为开发代表、产品线经理或研发总监;很少看到软件测试人员去做系统架构师(SE)。很多企业,软件测试在管理上的职位,最高就是测试代表或测试经理,在技术上甚至没有职位,没有发展方向。
车开到这里,有人会反驳我,说不是有 开发测试么;开发测试也是测试,并不是全栈开发,岗位职责的烙印 ‘测试’依旧在身上;不要忘却了,你是测试开发,就不是测试了
-
测试工程师
+关注
关注
6文章
124浏览量
12431
发布评论请先 登录
相关推荐
评论