九种测试反模式及破解之道

多年软件测试经历,现将我所见的几种测试反模式和引发的思考分享给大家:

1、执着于手动的功能测试 · 不想写代码

“就是为了不写代码才做的测试,结果你告诉我测试也要写代码。” 不想写代码的测试不是好司机。研发过程中的角色界限越来越模糊,手动的功能测试所占的比例越来越低,我们有更高效的自动化测试来辅助回归和缺陷预防。不管是自动化测试的实现,还是编写或评审单元测试,亦或是快速识别定位线上问题,都需要测试人员有一定的代码能力。手动的功能测试人员(有些小伙伴戏称之为 “在前端界面上点点点”)面对这种复杂的测试需求将无法快速响应,失去竞争力。

2、迷信自动化测试 · 沉迷细节无法自拔

这让我想起大刘在《球状闪电》中的那句名言:“美妙人生的关键在于你能迷上什么东西。” 技术这件事,真的很容易让人投入热情,造成一种我在努力拓深知识深度的错觉。曾几何时,我也迷恋各种测试工具的使用和选型对比,时常沉溺其中无法自拔,随便调试一下半天就过去了。看着机器跑代码总比手动执行用例要爽得多,有种人机合一的掌控感。然而,随着对质量的理解逐步加深,我也在反思,像这种把有限的生命投入到无限的技术细节中去的行为,到底价值几何。现下可以确定的是,技术只是手段而非目的,技术只是过程而非结论,技术只是工具而非方法。为了技术而技术的行为,无外乎是另一种麻醉自己的精神鸦片罢了。

3、仅使用测试工具 · 知其然不知其所以然

在做QA能力建设时,小伙伴们选择了BDD框架Cucumber作为练习工具。然而在讨论到为什么选择这个框架,这个框架是怎么衍生出来的,适用于什么样的情况等问题的时候,大家面面相觑,显然这些问题在选工具时并未考虑,那我们是怎么选出这个工具的呢?可能是某些项目有用到,可能是听过其他同学介绍过相关内容,但不论是哪种情况,大家对工具背后的故事和原理都是缺乏深入了解的。

再聊聊QA面试的窘境。当聊到接口测试,不同的请求方法还OK,方法之间的区别就不甚了解。工作中用到Postman和JMeter做接口测试,问到这两个工具之间的区别,那就是没有区别了。再追问为什么同样测接口要用两个工具呢,回答是之前的人就是这么设计的,平时就是常规跑一跑,对测试流程比较擅长。那好,那再问问回归、冒烟、持续集成,为什么要TDD、BDD等,就是“我不是、我没有、别瞎问” 的否认三连了。有些甚至工作五年十年的人也不了解,这让我很意外,随即产生一种深深的无力感,感觉行业整体过了很多年也没什么变化。

4、忽略策略和计划 · 不规划直接上手测

“废话少说,做就是了”,代表了相当一部分同学的想法。什么策略啊计划啊,那些东西过于虚无飘渺,产生什么价值呢?那不是我们考虑的事情,我们只管测试就好了。

这让我想到之前在项目上重建工作流的痛苦和阻力。策略层面的内容,如果一开始没有想清楚就贸然动手做,后面带来的修改成本是巨大的,返工的工作量甚至会大于原始的开发量。二八原则用在策略上再恰当不过:之前是想5%做95%恨不能007,之后能不能想50%做50%,甚至想80%做20%?为什么做的精力投入会越来越少呢,因为我们想清楚了,剩下的就是检查点和按部就班的执行了。

5、执着于找Bug · 忽略缺陷预防

在一些质量工作场景下,缺陷的数量是用来衡量测试人员绩效的一个重要指标。但这很容易造成一个误区,片面的追求缺陷数量,而忽略了缺陷预防。在这种度量背景下,测试的目标是破坏软件,缺陷越多越能体现测试的价值,因此测试会绞尽脑汁多提Bug。而开发的目标是实现功能,Bug越多说明实现效率越低。这种追求数量的度量方式很容易引发团队的割裂、针对重大线上问题的追责、质量工作重点的偏离等现象,这是我们不愿意看到的。

进一步说,不同的缺陷之间本身也没有可比性,我们不能说一个重大缺陷等于若干个普通缺陷,因此缺陷数量的绝对值累计是不具备统计意义的。我们应该把更多的精力放到如何预防缺陷产生上面去,关注缺陷预防才能更有效的避免全量测试和频频救火的困境。

九种测试反模式及破解之道

6、只关注软件功能 · 不关注真实用户场景

设想一个场景:迭代的每一个故事卡都测试充分了,集成测试没有问题,上线前的Bug全部修复完成。但是上线后,运维团队却接到了大量的客户投诉,场面一度失控。大家想想,是什么原因导致了这种情况的出现?一个可能的答案是,虽然每一个故事卡都被充分测试,但需求的全景没有从真正的用户场景出发,而是加上了想当然的推理,测试人员在测试过程中也没有识别出来问题所在。如果我们只关注功能逻辑,不关注端到端的用户流程,就有可能在关键时刻失去大量用户,给软件带来巨大损失,甚至是灭顶之灾。

7、只关注测试环节 · 忽略整体效能改进

上需求课的时候,有同学问:“验收标准和测试用例有什么区别?” 这不是一个复杂问题,然而,如果我们只关注测试环节,不关注前置环节的需求有效性,显然也是无法回答的。测试只关注自己行不行,答案是可以,过去我们没想这么多,“随便测测”也能活。但是现在不同了,大环境瞬息万变,竞争者层出不穷,我们要想在众多竞争者中成为最具性价比的一款产品,想做的更好同时又经济友好,就必须关注整体效能和持续改进了,只有这样才能花更少的钱办更多更好的事。

8、只关注当下技术 · 不关注新技术

一叶障目,不见泰山。功利性学习无可厚非,毕竟任何学习都是为了服务于具体场景,需要解决具体的问题。但在环境复杂多变、竞争激烈的当下,掌握单一技能的生存空间会越来越狭窄。具体到测试工作上,我们只关注眼下用到的技术是不够的,还应关注新兴技术和业界最佳实践;甚至只关注测试还是不够的,更应该着眼于端到端的流程:需求如何产生,如何被实现,如何被用户使用,如何持续作用于业务价值等等。

9、只关注专业技能 · 忽视软技能 

“我做好自己的工作,其他的不需要关心。”

“我不需要沟通,你们听我的就好。”

“不用管为什么做,让你做就做。”

专业技能是我们在职场的立身之本,而软技能让我们能更好的与人合作。在现代社会,哪怕是自由职业者,都需要与人合作,软技能的重要性不言而喻。而像思考能力、沟通与引导能力、抽象与迁移能力等软技能,都无法快速习得,需要足够重视,并一点一滴的积累和提升。

破解反模式 · T型人才

软件的高质量快速交付面临着前所未有的挑战,测试行业的门槛在逐渐升高,测试不再是“专找Bug”或者“随便点点”,而是既关注被测软件质量,又关注研发团队效能,集测试专业技能与周边相关技能于一身的综合性角色。

上一页12下一页


留言