周峰简介:
周峰,同济大学硕士毕业,国家系统分析员,具备多年软件开发和软件测试工作经验。曾供职于华为技术有限公司,从事软件开发、测试以及管理工作,积累了深厚的针对大型复杂软件产品的开发和测试实践经验,对产品测试的方法和管理流程有深刻的认识。51Testing创始人之一,目前负责公司技术研发工作。
关于他:
51Testing:说说您的职业发展历程吧
周峰:挺简单的。我是同济大学自动控制专业研究生毕业,毕业后,经历了两家公司:上海大唐移动通信设备有限公司,从事GSM系统基站控制器的软件开发工作;华为技术有限公司,从事WCDMA系统无线网络控制器的软件测试工作。04年离开华为,和两个伙伴一起创建51Testing,一直到现在。
51Testing:职业发展过程中让您印象深刻的困难或者事情?
周峰:大的困难还真想不出来,如果说印象深刻的事情,应该可以把进入华为技术有限公司从事测试工作算上。因为之前我是在大唐移动从事软件开发的,那时候测试工程师在国内还很少,除了极个别公司外,基本都没有测试部门。在大唐的时候我也几乎没和测试工作打过交道,对这块完全不了解或者甚至有些误解,担心没有技术含量啦、担心没有前途啦。后来反复征求了在华为从事开发和测试两方面工作的同学后,才决定下来。应该说,这个决定改变了我的职业发展和人生。
关于软件测试工具:
51Testing:很多人都是自学进入测试领域的,常常会有"该如何进行测试"的困惑,谈谈您的经验。
周峰:测试工作涵盖的内容很广,从测试阶段来分,一般分单元测试、集成测试、系统测试等;从测试类型来分,有功能测试、性能测试、安全性测试、可靠性测试、兼容性测试等通用的一些划分;另外还可以根据是否执行被测对象来区分为动态测试、静态测试等。不同的测试阶段、进行不同类型的测试,所需要具备的技能都不一样。测试工作入门容易,但如果要做到精深,一定要具备下面几方面的专业知识和能力:
1、计算机相关专业课程,例如数据结构、算法、计算机原理、操作系统原理、数据库原理、编译原理、所测系统的开发语言等等。当然不同业务方向的测试可能需要的这部分专业基础不一样,例如做嵌入式系统测试的,可能对计算机原理、操作系统原理等方面专业知识要求高一些,而如果不涉及到嵌入式数据库的话,可能数据库原理就没那么重要了;
2、测试领域的专业知识,例如测试分析工程方法、测试设计工程方法、常用测试工具的使用、测试代码的编写和调试、性能的监测和调优、模拟器的设计、测试相关的工程流程等;
3、业务知识。一个好的测试工程师,应该是所测业务领域的专家。这个就没有止境了。
作为初级测试工程师,在测试工作入门之初,往往只是做些功能性的黑盒测试,这时候最需要掌握的是业务知识、和必须具备的系统环境的搭建、操作、维护能力。到了中级测试工程师阶段,开始要进行一些测试设计工作,这时候需要掌握各类测试设计方法、能够将测试对象抽象成各类模型,并运用测试方法设计用例去覆盖;另外可能会从只做黑盒性质的功能测试,开始陆续承担例如性能测试、自动化测试、单元测试、接口测试这样的一些工作,这个阶段可能需要有一定的编码能力、系统内部架构分析能力,这时候计算机专业课程基础就可能非常重要了。到了高级测试工程师阶段,就更上了一层,在业务上应该成为业务专家、参与前期需求讨论、确定可测试性需求,在系统设计上前期就参与进去参与评审(静态测试),将BUG消灭在萌芽阶段,在后期测试上主要承担测试分析工作,根据系统需求分析测试需求,保证测试的充分覆盖。