选择测试之路——路上的迷茫
2010年12月31日,在网易从事了多年开发之后,依依不舍地离开,面临的是一个完全从零开始的全新职位:SQA,也就是tester。
当时对为什么被选择做软件质量保证,而不是继续在研发上进取,持有保留态度:凭什么要我转,不是别人?这个时候,多年的伙伴、领队——雷叔就把我的优点暴露出来了:认真、心细、负责;好吧,基于以上几点,只有“我行”,只能给力了。
从心底里,对质量管理、SQA等概念,我并没有多想,因为根本想不了,脑子里面没有太全面的认知,即使雷叔讲过一些,我还是觉得不够全面,不知道业界是如何做的?所以心里多多少少有点担心!
几个人成立一个新团队,什么都是从零开始,关键还是要有一些流程,这几年开发中也积累了些经验,总结了些问题。在12月底,我提交了《软件质量保证第一季度计划》,这个计划后来也成为了整个质量保证体系的核心,大概 纲要如下:
搭建项目管理平台
搭建持续集成平台
规范开发流程
制定软件质量保证规范流程
建立缺陷管理
建立风险管理库、经验教训库(长远计划)
2011年1月25日,苦于没有规范的流程,做起事来还是不够顺畅,在奋战多日之后,制定了《产品研发质保流程手册》,简单来说,划分了:需求、开发、发布三个阶段,每个阶段定义验收的产物。为什么要制定这个?必须有章可依,否则步伐不稳健,走的再远,也会乱。
道路上,难免遭遇坎坷,要不断提升自己,也有三点切身体会:
如电影《热血教练》中卡特教练所说,先把基本功练扎实了,才能有胜算。既然从零开始,就不要被困惑不已的琐事所纠缠着,下决心突破,可以研读:质量管理、缺陷预防、软件测试、持续集成等书籍,并且通过互联网了解一些公司是如何开展测试和质量管理的方方面面。
个人价值迎合团队价值,果断取舍,为团队利益着想。
坚定信念,避免浮躁,把握远景,不要急于寻求成就感。
同时,在调研期间,我意识到持续集成很重要,并按照当前的需求,重点关注以下几点:持续测试、持续审查、持续反馈。
图:早期的开发、测试流程原型图
无悔选择测试之路——路上的抉择、进取
有了流程规范,接下来是实施和持续改进。这些规范运用在一个项目上,先做了三个月,不停地测试,编写功能测试用例,也走了2条弯路:
用例花了大量时间编写,就连打开浏览器、输入xx、点击登录,这些也记录了(这种是早期状况)。 我居然还请缨加入开发,因为看到一些任务完成不了。后来雷叔也指明,测试做测试应该去做的,如果我当时帮忙做开发,那么很多测试都完成不了,一样保证不了质量。
所以,测试人员除了要了解业务,使用简单、清晰的语言结构来进行测试之外,还应该准确定位自己,明白自己在整个版本迭代中,控制质量的位置!
事后想想,那段日子锻炼了什么?那三个月无法忘记,每天高强度测试,用的最多的就是:功能测试(边界值、场景法),白盒测试。其实就是锻炼了测试的基础技能和流程管理。
后来测试管理流程逐步建立起来,但是在测试过程中,应当如何提高代码质量?这个阶段我们参考了敏捷开发中高质量 Java 代码开发实践,做了一些适合团队的改进,见下图:
图:质量提升的模式
这种迭代版本中java代码质量提升的模式,已经采用了将近一年,非常有效。
同年Q2,我们对测试管理进行了改进,其中是受到 @段念-段文韬《组织敏捷测试》影响,采用类似“一页纸计划”的测试文档(在此要感谢@段念-段文韬)在redmine进行管理。之前每次整理测试计划,发送给开发人员,实际上耗费了一些时间,并且成效不大,现在的任务:需求、开发、测试,全部交给redmine管理,所有事情一目了然,对任何人都是可见的,有没有完成,进度如何,非常清晰。
为了规范整个开发测试流程的管理,包括开发、测试的交互,我们又制定了轻量级的 SQA框架,见下图:
图:最初制定的SQA框架
不过此后这个框架也发生了比较大的变化,做得更好、更轻量级。无独有偶,我偶然的机会买了一本@朱少民老师的:《全程软件测试》,发觉这个SQA框架也是渗透到目前的每个环节,更适合目前团队的scrum模式,在此也要感谢@朱少民老师,真是相见恨晚,不然可以少走很多弯路!!!
大家可能会问:Scrum模式、用户故事,测试人员怎么利用?为什么想到这个?如果遗漏了测试场景,团队会很不爽,怎么避免呢?结合@Aullyxiao的《软件测试之魂》提到分层测试的想法,想了想,还可以这么整:
图:分层测试图
对于目前的开发架构来说,一个用户故事,涉及这四个点,可以从这四个点入手来进行质量保证。如何做呢?单元测试就开发人员处理了;代码审查,测试人员可以参与和监督,其实就是要保证:将开发任务与提交到SVN的代码进行关联。这样一来,当测试人员检查开发任务的时候,就可以找到改变过的代码。我曾经试过从这些代码里面查看逻辑,找到分支场景,补充到测试用例里面。
原文转自:http://www.infoq.com/cn/articles/transformation-way-software-testing