软件质量控制实践――Microsoft 篇 (3)

 

  1. 7. invest on test engineer’s career

无论产品使用何种方式保障质量,人总是最核心最关键的因素。提高软件质量有无数种方式和无数个因素,如果非要说一个最最重要的方式,那就是激发测试工程师的工作热情。You can only achieve average by working hard, but passion is the one driving to excellence. 为了最大化激发测试工程师的潜能,微软为测试工程师设计一整套完善的职业发展计划。测试工程师主要有两个职业发展路线。一个是Individual Contributor (IC): 不管人,管技术。另外一个是Manager: 偏重于管人和项目。这两个路线没有好坏之分,因人而异。两个路线都是以技术能力为核心,也是加薪升职的最主要考虑因素。经理未必比个人挣钱更多,“Become a manager is not a promotion”。You are paid for what you cover。”what you cover”就像长方形的面积,面积大小有长和宽同时决定。VP管的很多(长),但是深度有限(宽)。而技术大牛管的很少(长),但是很深(宽),所以两个长方形的面积大小差不多。这也就是为什么 有些技术大牛一个人不管但是挣钱和VP一样多。下面是几个测试工程师常见的职位:

SDET - 初级测试工程师 ,要求是:executor,如果有个问题需要解决,而且告诉你如何解决,你能够很好地把问题解决了。

 SDET 2 - 中级测试工程师 ,要求是:designer,如果有个问题需要解决,你自己找出办法去解决。

 Senior SDET - 资深测试工程师,要求是:planner,你自己去发现问题,然后找出解决办法。

 Principal SDET - 首席 测试工程师, 要求是:thinker,能发现问题并且发现问题的共性,不仅解决问题而且避免问题出现。

对经理的要求也大致如此,除了技术上也要过硬外,还要求经理为手下的人尽可能创造机会以帮助他们成功。

 

另外微软鼓励测试工程师创造性思维,鼓励员工创建好的测试工具用来提高测试效率,好的想法也可以可以申请测试专利或发表论文,并且被邀请到国际性测试会议上做演讲。微软内部有一个测试工具库,有将近1万个测试工具。本人就有一个测试工具在微软内部50多个产品组广泛使用,我也多次做演讲,现在正open source。

最后,我总结的测试工程师必须具备的硬技术能力:

  1. 至少一门编程语言,比如 C++/C#/Java,最好也了解设计模式的基本概念,比如:open-close principle, design to interfaces, favor aggregation over inheritance, encapsulate
    by policy and reveal by need, etc…
  2. 至少一个脚本语言, 比如DOS batch, powershell, perl
  3. 熟悉测试基础,比如功能测试,性能压力测试,安全测试,本地化测试。
  4. 基本测试技能,比如等价类划分,边界值分析,黑白盒测试,组合测试,基于模型测试,探索性测试等
  5. Xml
  6. P/invoke
  7. Reflection
  8. Threading
  9. Code coverage analysis
  10. Network knowledge, such as TCP/IP, HTTP, HTTPS,WCF
  11. Fault injection/dependency injection and mocking

 还有微软鼓励测试工程师take responsibility, make a difference。鼓励员工在做好本职工作同时在某一项技术领域专的更深。比如前面提到的一些测试基础 (test fundamentals) 包含功能测试,性能压力测试,安全性测试,本地化测试,容错测试, TiP等等。可以鼓励测试团队的每一个人选一个领域去专研,把他培养成不仅是产品组里的go-to person, 而且成为公司内乃至更大范围的领域专家。这不仅对产品的质量有帮助,更是对员工本身职业发展的极大激励。工程师是一群特殊的人类,如果一直重复做一件事(比如本职工作),很容易厌倦失去兴趣;相反越是有难度,有挑战,有影响力的工作,越是激发工程师一定要搞定,做好的斗志和恒心,哪怕是没有任何报酬,不为别人,为的是自我价值的实现。英语里有句话:it’s not what you have to do make you success, it’s what else you do . that will make a difference. 所以不仅仅把本职工作做好(这是最低要求了),更进一步将会使你脱颖而出。“更进一步”不是指你的本职工作,也不是让你加班加点,而是指那些自己喜欢的可以实现自我价值,同时对产品质量有深刻影响的东西。没有人逼你做这些东西,你完全可以选择按部就班或平平庸庸。最后引用功夫熊猫里的一句话立志:It’s not about where you came from or what you were, it’s about what you choose to be。所以,what you choose to be?

 好了,关于微软的话题就此打住。感觉好像在写长篇小说,没完没了,越聊话题越多。:)

 小结,英语里面有句话“little steps lead to big change”。我觉得这句话用来描述微软走过的测试路最恰当不过了。微软有几百个产品组,发布过几千个产品。很难有一个或几个因素决定产品的质量。但是上面几个是我个人认为是诸多因素中的几个至关重要的。微软是世界上最伟大的软件公司…..(没有之一)。尤其是在测试方面,微软的投资比其它任何公司都多,在软件测试理论和实践上绝对是首屈一指的领先者。微软就像一个健壮的中年人,而google像一个20岁的青年,facebook可能只是teenager。 但是google,facebook这些公司起源于互联网应用服务,在互联网应用服务质量管理方面的确有很多出色的实践。所以下一次和大家探讨:提高软件质量实践――Google 篇。

 

Stay tuned…

 

----------------------------------------

关注我:新浪微博:@billliu_seattle https://www.weibo.com/windowsazure 或twitter: @billliu_seattle