测试大咖漫谈如何搞定软件质量?
关于质量保障,好像已经说过太多,但这里还是抽象的唠叨几句。
多年的软件测试和质量保障工作让我越来越清晰的认识到:质量绝对不是一个环节,一个工种可以搞定的。比如:
从对语言的误用,到对第三方组件的误用;
从需求根源就有问题,到需求传递过程中出现的误差;
从设计代码基本逻辑设计不合理,到代码架构设计不合理;
从一些参数配置错误到上线版本的弄混;
从架构师不良的设计,到运维人员不规范的操作;
质量问题可以产生于任何一个环节。
随着系统越来越复杂,单点的问题会累计成片的问题,面的问题,最后产生灾难性事故。这些例子见得太多太多了。因此,**搞定质量是系统性工程,是绝对的。TeamWork。人、流程、技术、标准都是不可或缺的。**如果只尝试从单一角度解决质量问题,即使采用再牛逼的技术,下再多的力气,定再多的流程,也可能只会事倍功半。
但是我发现,很多团队解决问题总是极度偏向一个维度的。
有的组织定义一大堆流程,并严格执行,最后演变成了抠文字的游戏和邮件大战,而对采用落后的技术给生产力、质量带来的极大拖累视而不见;
有的团队极度追求技术,什么新用什么,最新的架构、框架全都用上,却发现开发人员一行单测也不写,连类型转换,不捕获异常,少写个等号这样的基础代码级别的 bug 都要等系统测试阶段再发现;
有的团队开发人员极为强悍,从代码工程角度来看架构、设计、代码、单元测试、评审都无懈可击,但是需求竟然是邮件来回沟通,到最后还是为其所累;
还有的团队似乎每一个点都照顾到了,还过了 CMMI5,貌似一切都很好,但是发现,改一个按钮的需求要搞一个半月才能上线,要知道,开发效率也是质量的一环啊。
以上这些都是我见过的真实的例子。
所以,**如何搞定质量呢?**答案是”综合治理“这几个字。
至于如何做,其实不同的团队实现起来会大不一样。因为团队结构不一样,产品类型不一样,公司文化不一样,怎么会有万灵药呢?
在大多数情况下,质量的长足改进都是对基础的重视和通过无数次磨练团队成员打造出来的,对于老的团队,更需要拿出伤筋动骨的勇气和从每一行代码搞起的决心。
可惜国内大部分团队的质量体系只停留在一个初级阶段(我做过上百人的访谈,还是有一点发言权的)。我们国内大部分 IT 团队离成熟、高效仍然有很远的距离,需要我辈一起努力。
那么问题来了,在这种前提下,测试人员如何开展工作?
我的观点如下:
1. 测试工程师的传统工作边界会越来越模糊甚至会被打破。不再固守”系统测试“这片疆土,而把测试工作左右移是一个必然趋势。
测试左移需要开发技能和开发人员的半成品对接,这是个残酷的现实;测试右移也是趋势,利用生产数据、行为做测试也将是测试人员需要掌握的技能,这里就需要测试人员掌握一些运维知识和数据分析知识,这些也和开发技能难以分开;
而随着系统越来越复杂,各种非功能性测试也会越来越重要,而大部分非功能测试同样需要开发技能(如性能测试,安全测试)。没有这部分技能是无法做好测试的。测试对开发技能既要求广,又要求深,其实挺过分的。
2. 人的认知和学习能力有极限,作为一个群体,又会是正态分布的样子。因此不可能所有人都是大神级人物(企业也招不来养不起或不愿意养),测试会是以 TeamWork 的形式 Cover 各个质量环节的一部分,并形成一张质量网。
在纵切面上会有一些人钻得很深,如安全测试工程师,性能测试工程师,做框架的测试开发工程师,系统测试分析师,这样才有可能把精力集中在一点,搞定技术的难点,把事情做下去;又例如有些业务极为复杂的企业,需要很多 BA 来搞定业务复杂性,有一些 BA 是偏向测试的;
如果组织很大,你就会发现无数流程上的低效率,反模式,这时候其实需要有一些人专注过程,一些测试人员会承担起这些责任。这些都会造成测试人员内部的分工,也会造成测试人员之间的薪酬差异逐步拉开。我觉得做测试的同学应该找准自己的努力方向,要学的太多,精力总是有限的,得有自己的个人发展路线图。
3. 不要把自己局限于”我是测试工程师“,这样你的职业路线才会逐渐开拓,你对组织的贡献才会逐渐加大。这个不展开说了,工作久了并有一定灵性的同学都会懂。
4. 做好测试工程师其实挺难的,甚至可以说投入产出比要低于其他 IT 岗位。测试的上限很高,挑战很大,如果你真的喜欢测试,需要持续突破自我,努力坚持下去。
搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核
评论