1.3.2 测试的困境和迷局
敏捷开发给测试带来了新的问题,而且没有解决那些测试中的“历史问题”。
1.新生测试力量缺乏对测试行业的正确理解
目前中国依然有很多高校没有提供专门的软件测试课程,在缺乏正确引导的情况下,学生们对软件测试的理解非常容易片面化。他们会认为软件测试是一个重复且缺少创造性的行业。这个行业对技术要求低,从事这个行业的人员没有软件开发人员那么辛苦。
于是软件测试成了很多初出茅庐的同学“退而求其次”的选择:
·我的编程能力不咋样,先找份测试工作凑合干着;
·我成绩不太好,可能得不到好的开发职位,干脆投测试吧;
·我是女生,不想那么累,投测试吧;
……
因为工作原因,我几乎每年都会去做校园招聘,我发现这些年主动投测试岗位的同学,包括那些名校,几乎清一色都是女生。面试时问同学们为什么要选择测试,几乎所有同学的答案里都有“我细心”“我性格好”“我能够做好重复性的工作”这些元素。
也有一些公司对校园招聘采取统一“分配”岗位的政策,那些被分到测试岗的同学,常常会十分沮丧,有的还会为此毁约。
还有很多新生测试力量会通过“测试培训机构”来加入软件测试行业,他们里面很多人都是因为专业不对口或者是学历问题才做此选择的,其中不少人将软件测试作为过渡,先入IT行业,再转别的岗位。
我们很少看到新生测试力量是因为了解测试、喜欢测试或希望成为优秀的测试人员才选择测试工作的。这必然会对中国的软件测试行业造成不利的影响。
2.管理者对测试缺乏正确认识
那些同时管理开发人员和测试人员的管理者,常常会在绩效上更认可开发人员的工作,在资源上更偏向开发人员,例如开发人员容易比测试人员获得更高的薪水和奖金;如果增加团队人数,开发团队会增加得更多;如果减少则往往是先拿测试团队开刀;开发人员还会比测试人员有更多的晋升机会。即便是独立管理的测试团队,测试整体情况也常常不如开发,“重开发,轻测试”在软件行业中依然比较普遍。这是因为还是有很多管理者根深蒂固地认为:“只有开发才能创造价值,测试不仅不能创造价值,还是一种开销。”当开发和测试被放在一起评价时,管理者会认为开发的贡献更大。
还有很多管理者虽然会认为“好质量是测试出来的,测试的价值就是找缺陷,缺陷发现得越多产品质量就越高”,但在实际项目中,“测试进入时间晚”“留给测试人员进行分析和准备的时间少”“测试资源不足”等情况比比皆是,使得测试效果远远达不到管理者的预期,给管理者留下测试能力水平有问题的偏见。
在敏捷开发模式下的实例化需求、开发者测试、自动化测试、重构、持续集成等实践可有效预防缺陷,提升代码内建质量,降低测试开发比,但也会进一步强化一些管理者对测试人员的偏见,那些管理者会认为“没有测试,项目不也好好的”“测试的价值确实不明显”“测试人员的能力水平确实不行”……我曾和一位管理者聊DevOps转型的事情,他的观点是“DevOps转型就是从取消测试开始”。
3.不合时宜的要求
还有一些瀑布或是伪敏捷的团队,在文化、组织、能力、资源没有任何变化的情况下,开始按照敏捷开发的要求对测试团队进行调整:
·追求低测试开发,盲目减少测试人数,使得测试团队长期处于缺人的状态,正常的测试工作都不能有效开展;
·过分看重测试编码能力,否定测试其他能力;
·追求自动化率,但设计、流程跟不上,接口、UI频繁变化;
·要求普通测试人员都能掌控那些非常专业的测试,比如安全性测试。
类似这样的不合时宜的要求还有很多,压得测试人员喘不过气来。
4.低门槛和测试外包
单从“入门”来看,软件测试确实比较容易,只通过点、点、点的操作也能验证系统。但要想成为测试高手,就必须对用户、系统、设计实现等均有深入了解,还要努力培养自己的测试思维,如系统思维、批判性思维、逆向思维和解决问题的思维。测试者的综合素质要求很高,所谓“入门容易,深入难”。
但是现实中,测试“深入难”的特点往往被忽视,“入门容易,门槛低”的特点却被放大——“门槛低”的另一层意思就是“技术含量不高,谁都能做”,这使得在软件行业中测试外包非常普遍。
托马斯·弗里德曼在其名著《世界是平的》一书中将外包归为21世纪铲平世界的十大动力之一。站在企业运营的角度来说,外包的好处是显而易见的,可以让企业更加关注核心业务,建立弹性的人力资源体系。
测试外包有助于企业聚焦核心业务,但这暗示着很多公司并没有将测试作为核心去建设和发展。对正式员工而言,这也意味着企业可能会削弱在软件测试方面的投入,减少对测试员工的培训,没有考虑其职业发展。
对测试外包人员来说,频繁地更换测试产品,导致其无法了解产品核心设计,缺乏归属感,容易一直处于一种低水平的测试状态,自身能力难于提升和进一步发展。这对软件测试行业的整体发展来说势必造成负面影响。
5.缺少发展和规划
国内某知名软件测试网站发布的《中国软件测试从业人员调查报告》中的调查数据显示:52%的公司对测试人员的职业规划不明确,26%的公司对测试人员没有职业规划,只有22%的公司对软件测试人员有明确的职业规划。
对那些工作了两三年的测试工程师来说,他们对产品和测试技术都有了基本的认识,足以胜任日常工作,他们很自然会开始寻找新的发展方向和目标。
一个发展方向是软件测试管理。但即便在瀑布开发模式下,软件测试的管理岗也不多,更别提在敏捷开发模式下测试和开发不断融合、测试开发比不断降低的情况下,管理岗位就更少了。所以测试工程师要想在测试管理方面有所发展,不仅需要能力,还需要机遇。
当测试工程师进入测试职业发展的平台期时,就会变得迷茫、困惑,看不清自己未来的发展方向,需要指引,但又得不到帮助,这会是一件非常痛苦的事情。我的一位同事曾经拿“布朗运动”来形容他自己在平台期的状态和感觉,我觉得这个比喻非常贴切。正如《奥德赛》中描述的一样,还有什么比徘徊不前更让人感到难受的呢?
职业发展遇到瓶颈本来也很正常,但是如果总是得不到改善,就是致命的。在我身边,有很多测试3年左右的同事离职或者转岗。《中国软件测试从业人员调查报告》也指出,中国软件测试行业有超过7成的从业者的工作年限是0~3年,只有18%的人是3~5年。需要注意的是,这个比值从2009年开始就没有发生过变化,这说明中国软件测试人员在工作经验的分布上并不合理,缺乏持续性。我们正在丢失工作3年左右最有潜质的那些测试人员,如果这种情况一直持续下去,很难说中国的软件测试行业会不会出现“青黄不接”的情况。
所以我想,对中国的软件测试行业来说,先进的测试技术、深入的产品知识、完美的测试流程,可能都不是最重要的,最重要的是能帮他们直面问题,能拿出具体发展的办法,在测试工程师“三年之痒”的时候,为他们答疑解惑,帮助他们向更高的目标迈进。