文章: 软件测试转型之路

标签: 文章 软件测试 转型 | 发表时间:2012-05-08 13:00 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

选择测试之路——路上的迷茫

2010年12月31日,在网易从事了多年开发之后,依依不舍地离开,面临的是一个完全从零开始的全新职位:SQA,也就是tester。

当时对为什么被选择做软件质量保证,而不是继续在研发上进取,持有保留态度:凭什么要我转,不是别人?这个时候,多年的伙伴、领队——雷叔就把我的优点暴露出来了:认真、心细、负责;好吧,基于以上几点,只有“我行”,只能给力了。

从心底里,对质量管理、SQA等概念,我并没有多想,因为根本想不了,脑子里面没有太全面的认知,即使雷叔讲过一些,我还是觉得不够全面,不知道业界是如何做的?所以心里多多少少有点担心!

几个人成立一个新团队,什么都是从零开始,关键还是要有一些流程,这几年开发中也积累了些经验,总结了些问题。在12月底,我提交了《软件质量保证第一季度计划》,这个计划后来也成为了整个质量保证体系的核心,大概 纲要如下:

  1. 搭建项目管理平台
  2. 搭建持续集成平台
  3. 规范开发流程
  4. 制定软件质量保证规范流程
  5. 建立缺陷管理
  6. 建立风险管理库、经验教训库(长远计划)

2011年1月25日,苦于没有规范的流程,做起事来还是不够顺畅,在奋战多日之后,制定了《产品研发质保流程手册》,简单来说,划分了:需求、开发、发布三个阶段,每个阶段定义验收的产物。为什么要制定这个?必须有章可依,否则步伐不稳健,走的再远,也会乱。

道路上,难免遭遇坎坷,要不断提升自己,也有三点切身体会:

  1. 如电影《热血教练》中卡特教练所说,先把基本功练扎实了,才能有胜算。既然从零开始,就不要被困惑不已的琐事所纠缠着,下决心突破,可以研读:质量管理、缺陷预防、软件测试、持续集成等书籍,并且通过互联网了解一些公司是如何开展测试和质量管理的方方面面。
  2. 个人价值迎合团队价值,果断取舍,为团队利益着想。
  3. 坚定信念,避免浮躁,把握远景,不要急于寻求成就感。

同时,在调研期间,我意识到持续集成很重要,并按照当前的需求,重点关注以下几点:持续测试、持续审查、持续反馈。

图:早期的开发、测试流程原型图

无悔选择测试之路——路上的抉择、进取

有了流程规范,接下来是实施和持续改进。这些规范运用在一个项目上,先做了三个月,不停地测试,编写功能测试用例,也走了2条弯路:

  1. 用例花了大量时间编写,就连打开浏览器、输入xx、点击登录,这些也记录了(这种是早期状况)。 我居然还请缨加入开发,因为看到一些任务完成不了。后来雷叔也指明,测试做测试应该去做的,如果我当时帮忙做开发,那么很多测试都完成不了,一样保证不了质量。
  2. 所以,测试人员除了要了解业务,使用简单、清晰的语言结构来进行测试之外,还应该准确定位自己,明白自己在整个版本迭代中,控制质量的位置!

事后想想,那段日子锻炼了什么?那三个月无法忘记,每天高强度测试,用的最多的就是:功能测试(边界值、场景法),白盒测试。其实就是锻炼了测试的基础技能和流程管理。

后来测试管理流程逐步建立起来,但是在测试过程中,应当如何提高代码质量?这个阶段我们参考了 敏捷开发中高质量 Java 代码开发实践,做了一些适合团队的改进,见下图:

图:质量提升的模式

这种迭代版本中java代码质量提升的模式,已经采用了将近一年,非常有效。

同年Q2,我们对测试管理进行了改进,其中是受到 @段念-段文韬 《组织敏捷测试》影响,采用类似“一页纸计划”的测试文档(在此要感谢 @段念-段文韬)在 redmine进行管理。之前每次整理测试计划,发送给开发人员,实际上耗费了一些时间,并且成效不大,现在的任务:需求、开发、测试,全部交给redmine管理,所有事情一目了然,对任何人都是可见的,有没有完成,进度如何,非常清晰。

为了规范整个开发测试流程的管理,包括开发、测试的交互,我们又制定了轻量级的 SQA框架,见下图:

图:最初制定的SQA框架

不过此后这个框架也发生了比较大的变化,做得更好、更轻量级。无独有偶,我偶然的机会买了一本 @朱少民老师的: 《全程软件测试》,发觉这个SQA框架也是渗透到目前的每个环节,更适合目前团队的scrum模式,在此也要感谢@朱少民老师,真是相见恨晚,不然可以少走很多弯路!!!

大家可能会问:Scrum模式、用户故事,测试人员怎么利用?为什么想到这个?如果遗漏了测试场景,团队会很不爽,怎么避免呢?结合 @Aullyxiao《软件测试之魂》提到分层测试的想法,想了想,还可以这么整:

图:分层测试图

对于目前的开发架构来说,一个用户故事,涉及这四个点,可以从这四个点入手来进行质量保证。如何做呢?单元测试就开发人员处理了;代码审查,测试人员可以参与和监督,其实就是要保证:将开发任务与提交到SVN的代码进行关联。这样一来,当测试人员检查开发任务的时候,就可以找到改变过的代码。我曾经试过从这些代码里面查看逻辑,找到分支场景,补充到测试用例里面。

在此期间,我还看过 @架构师Jack原创的《功能测试用例基础设计模型》,这个文档2天转发已超过150次,我也向所有同行推荐该测试设计模型实例化的测试用例,供大家消化该设计模型。想要的朋友可以去微盘下载 《功能测试基础设计模型(24个设计方法的实例化用例)》

我当时还借鉴了 @季哥来自淘宝的《探索式测试》系列文章,包括: 《探索式测试的秘密——记在淘两年》《组合测试法中的全对偶测试法》《探索式测试实践之缺陷大扫除和结对测试》

当然这么多东西,我觉得自己还需要时间来消化。

继续测试之路——路上的风景

也许会有人问:有没有后悔做tester?

我过去也常问自己:做得开心吗?产品质量提升了吗?看到自己的前景了吗?找到high点了吗?

现在我可以回答:OK,我做到了,并且还可以持续做得更好。

可能有很多测试人员会问:测试人员的价值到底何在?在这里,我套用和整合@朱少民老师的一些术语,给出我的回答。

我认为,Scrum中测试人员价值应当体现在:

  1. 预防缺陷的手段,提高洞察力,增强业务知识。
    缺陷在需求、开发前期就已经存在了,关键是用什么手段去挖掘出来预防。在sprint前获取到的需求,测试人员可以站在客户角度上来阐述自己的观点,与开发人员进行充分交流和讨论,使自己在用户体验、业务逻辑等等方面的经验充分体现出来。

  2. 在开发过程中,测试人员除了站在客户的角度进行测试,还应当提供更全面的质量反馈,包括代码质量的检查,这个可以通过redmine与SVN双向关联来做检查依据。目前整个过程测试人员尚未参与代码编写,应当参与并推进代码评审,将代码问题及时反馈出来;并且参与或者推进单元测试,检查单元测试状态(确保单元测试达到80%以上覆盖率,帮助开发人员开发出具有良好可测试性的代码),自始至终将质量问题及时反馈出来,保证在sprint的整个过程中质量受到足够的关注,提高质量改进的持续性和可视性。

  3. 随着版本任务的增加,每个版本回归测试的成本增加,可以适当考虑部分稳定功能进行自动化测试。当然,这是远景。

  4. 持续改进、反馈,充分发挥每个版本统计报告的作用,对缺陷进行分析,总结出一些规律,帮助开发人员建立良好的习惯,改进代码的质量。

测试人员,应当在自己的道路上看到风景,以前作为开发,写好一个功能,很high;测试人员也要有这种心境,提高了产品质量,预防了缺陷,很high。找到自己的high法,才可以把测试玩得更爽 ,我知道 @朱少民老师@季哥来自淘宝@段念-段文韬@架构师Jack,都玩得很爽,但是有一点:要爽得靠自己,多跟高手交流,有利于提升自己,但是不要刻意复制别人成功的经验,因为每个团队的模式和环境不大相同。

总结

每个人离开自己熟悉的领域,投入到新的领域中(说实在软件测试也囊括了开发领域),必然存在一些迷茫,不知如何入手,身边如果有一个靠谱的高手,指点一下,眼前将会一片明亮。可惜,现实总是残酷的,往往很多时候,都要靠自己去摸索,只有经历了、深刻体会了,才知道如何改变,以及如何迎接新挑战,调整到恰到好处的心态。这样子,才能够稳健进入转型的轨道。不要害怕改变和投入,一定要坚定信念,在前进的道路上,多参考同行的成功经验: @朱少民老师@段念-段文韬@季哥来自淘宝@架构师Jack@Aullyxiao,迎合团队价值,不断修正自己的偏差,走出一条华丽的直路!

我很庆幸,经历了一个测试团队从无到有的创建,同时也帮助开发人员掌握了一些测试的基本技能,用于推进质量保证,让整个团队达到共识。现在的我,只是刚过了转型的痛苦期,测试工作也仅仅是刚刚开始,还有很多有意义的事情需要去做。

路漫漫其修远兮,吾将上下而求索!


给InfoQ中文站投稿或者参与内容翻译工作,请邮件至 [email protected]。也欢迎大家通过新浪微博( @InfoQ)或者腾讯微博( @InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

相关 [文章 软件测试 转型] 推荐:

文章: 软件测试转型之路

- - InfoQ cn
2010年12月31日,在网易从事了多年开发之后,依依不舍地离开,面临的是一个完全从零开始的全新职位:SQA,也就是tester. 保持某些系统的高可用性,是一些企业的重中之重,如何设计. 海量数据处理,海量视频分发,架构热点难点,尽在架构师峰会. ArchSummit全球架构师峰会报名启动. 当时对为什么被选择做软件质量保证,而不是继续在研发上进取,持有保留态度:凭什么要我转,不是别人.

软件测试的原则

- - CSDN博客推荐文章
 在软件测试中有很多重要的指导原则,这些原则看上去大多是显而易见的,但是总是被我们忽略,作为虫师,我们当然应该把这些原则牢记于心,作为专业测试人员的基本素养. 原则1 测试用例中一个必需部分是对预期输出或结果的定义.  这条原则是软件测试中常犯错误之一,但是如果不按照这条原则进行,由于“所见即所想”这样的一个心里现象的存在,某个似是而非的错误结果可能会被当成是正确的结论.

软件测试中的心理学

- - 技术改变世界 创新驱动中国 - 《程序员》官网
软件测试是一项技术性工作,但同时也涉及经济学和人类心理学的一些重要因素. 在理想情况下,我们会测试程序的所有可能执行情况,而在大多数情况下,这几乎是不可能的. 即使一个看起来非常简单的程序,其可能的输入与输出组合可达到数百种甚至数千种,对所有的可能情况都设计测试用例是不切合实际的. 对一个复杂的应用程序进行完全的测试,将耗费大量的时间和人力资源,这样在经济上是不可行的.

软件测试用例编写建议

- - CSDN博客推荐文章
软件测试人员(SQA/SQC),做的最频繁并且最主要的活动之一就是编写软件测试用例了. 首先,请记住以下所有的讨论都是关于编写软件测试用例,而不是设计/定义/确认测试用例(TC).   这项主要活动有几个重要的关键因素,让我们先来大概了解一下吧.   A、软件测试用例要易于定期修改和更新.   我们生活在一个不断变化的世界,软件也不能免于变化.

软件测试知识库管理方案——大结局

- Ben - Taobao QA Team
淘宝测试团队的知识沉淀发展到今天,经历了无数风风雨雨,到现在各个产品线的沉淀方式,仍然没有完全统一,处于群雄割据的局面. 我们先简单看看淘测试的知识沉淀的发展历史. 在混沌初开的年代,大家基本都是用MS Word来编写沉淀文档,然后放在一个共享目录下面. 后来wiki概念兴起,产生了很多这一类型的web应用程序,MS share point(SP)是被普遍使用的.

8月AV-Comparatives杀毒软件测试结果出炉

- 建军 - cnBeta.COM
AV-Comparatives是来自奥地利的杀毒软件评测机构,在国际上享有盛名,是公认信得过的独立测试机构. 每月AVC都会更新动态测试结果,日前,8月份动态测试结果也出炉了. AVC的动态测试是测试恶意网站及其威胁拦截测试,所有杀软采用默认设置,并且当杀软弹出提示时采取的选择也是杀软默认给出的.

Web软件测试中数据输入的检查清单

- - InfoQ cn
检查清单(Checklist)可以帮测试人员节省时间,因为很多有效的方法并不需要每个测试人员重新发现,前人已经有了充分的总结,并做了大量的有效性验证,其次,检查清单可以帮助测试人员避免遗漏,人的记忆是有局限的,难免会有遗漏的地方,通过检查清单检查可以有效的防止遗漏. 最近,IBM工程师苏京刚 总结了Web软件测试中数据输入的检查清单,对Web测试人员提供了很好的参考.

如何开发高质量软件?及软件测试观点

- - 我的宝贝孙秀楠 ﹣C++, Lua, 大连,程序员
也许是因为我经常在twitter上鼓吹“代码质量来自code review和单元测试”,老赵的这篇文字 http://blog.zhaojie.me/2012/01/a-case-requirement-to-practice-unit-testing-or-tdd.html 也at我一下,抱歉的是最近欠债太多,正在着手完成答应侯伯薇的那篇关于appengine的文字.

Google软件测试之道之读书笔记

- - ITeye博客
以下是看完Google软件测试知道之后书中摘录以及整理的笔记.主要摘录自己认同的,有启发性,指导性的内容.并且适当对书中的内容做了一些整理,欲看全部内容请购买原版图书. 第一章:Google软件测试介绍. 1.Google的测试团队并非雄兵百万,我们更像是小而精的特种部队,我们依靠的是出色的战术和高级武器.

探索式软件测试读书笔记

- - 行业应用 - ITeye博客
2011年4月买的书,2014年1月才读,罪过罪过,后悔莫及.中括号里面的内容是自己的评注. 1.软件失效的主要原因是因为开发人员没有理解,预见或测试所有可以运行软件的环境 [环境应该只是失效的一个因素]. 2.测试人员拥有那种"如何才能攻破这个功能"的态度和开发人员那种"如何才能实现这个功能"的态度是相辅相成的 [可以说是相辅相成,换个角度也可以说明大家都不完美 ,才导致有分工].