问:如何才能评价一个SDET的工作情况呢?

  答:关键还是在找Bug的情况上。评价SDET的工作不一定在于他找到的Bug数量,更重要的是还是找到质量更高的Bug。找到质量更高的Bug有时候需要一些运气,但是更多的是基于经验,是对产品深入了解的程度。

  要找到质量好的Bug一定要花费很多的时间。在产品开始阶段,Bug多,可能比较容易找到Bug,随着这些Bug逐渐被修正,Bug的寻找机会越来越困难,能否找到更高质量的Bug需要看SDET对这些代码所付出的努力了。一般来说SDET会对于寻找Bug有经验积累和感觉。开发人员在编写和设计某些代码时可能会欠考虑,一般来说如果一个地方出现Bug,作相应的改动之后,会产生更多的Bug,另外一般有Bug的代码周围会有更多的Bug聚集。有经验的测试人员会根据这点,锁定Bug的特殊特征,然后根据这个特征能够找到更多更好的Bug出来。

  问:这么看起来SDET的工作还是地分繁重的。那么市面上的自动化测试的工具是否能够减轻他们的工作量呢?

  答:首先要判断所要测试的对象适合不适合自动化测试,不是所有的问题都适合做自动化的测试。自动化有它不能或者不适合解决的问题。它善于解决的问题是, 一次编写出来,可以重用,每次软件版本更新,都可以用同一个自动化测试的工具进行测试。然而,自动化找Bug,并且要找到新的Bug的时候,还是离不开人工的操作。通过查看我们的Bug日志也可以发现,新Bug很多都是SDET自己动手找到的。SDET需要对于常规的地方,自己动手进行编写测试工具进行测试,然而也是思考哪些地方可能会出现新的Bug,这些要去手工地进行查找。因为工具毕竟还不能帮助人去思考。

  现在第三方的测试工作和微软的平台软件并没有很好的介入。这个也是由于微软件平台软件的特殊性所决定。 但是对例如URL这些通用并且与平台无关的软件功能模块进行测试的时候,第三方软件会有一些帮助。但是,在API的测试方面做一个通用的工具对它进行测试是很非常困难的。有个工具叫做“Any Unit”,直接照调用API去做一些很基本的测试,例如检验这些API是否有正确的相应和返回正常。但是,如果要做一些索引测试(Index testing)的话,非常困难。这是因为面对的对象,越是特殊,这些工具起到的帮助作用越小。所为作为一个SDET, 需要自己编写测试工具来开展工作。

  TA

  测试架构师(Test Architect)是在微软内测试技术人员技术发展方向的高职位。其实在4、5年前,微软是没有软件测试架构师这个职位的。测试人员发展到高级别是测试主管,然而这是偏管理方向的发展道路。对于那些钟爱技术又十分的测试人员来说缺少这方面的职位发展目标。后来在测试工作的长期发展过程中,需要有人去做整个产品在测试方面的推进工作。慢慢地,随着担任此项工作的人越来越多,软件测试架构师这个职位定位和概念渐渐清晰起来。

  那么对于这要一个职位,都需要具备什么样的素质和特性呢?

  坚持、有毅力、在逆境的时候要能坚持自己的想法和做法。以ATC软件测试经理何浪飞为例,在成为软件测试架构师(Test Architect)之前,他是这样坚持,并且曾经为了一个大家都觉得并不那么重要的Bug,历经周折来为这个小Bug“正身”。

  这个既不会返回错误又不会造成Down机的小小Bug只是在注册表中某个值的默认设置上可能会给一些初级用户带来不便,让他们不知道该如何正确地使用这个值相关的功能。何浪飞当时所在的测试小组中包括那些有20年以上经验的员工,几乎所有人都因为这个Bug造成不便的几率只是可能,所以认为它还到不了必须要去修订的程度,而加入这个测试小组不到2年的何浪飞却坚信改进它非常必要。既然问题出在可能会让用户感到不便,那么用户的反馈将是进行验证的好证据。于是他找到负责相关产品支持的人员,查找该产品用户反馈问题的Top 10列表,发现自己坚持需要修订的Bug在其中。在了解了解决问题所带来的人员支持等所花费的时间和各项费用之后,何浪飞的意见终于被大家欣然采纳,很快修正了那个Bug。

  站在用户的角度上审视产品,相信自己,并且要用例证说话。这是要达到测试工作技术领域的高级别――软件测试架构师所必需具备的。在微软,很多领域都有很强的竞争对手,大家需要付出很长时间的努力,然而也许需要5年才能超过他们,这个时候在市场上很长一段时间都不会有比较明显的表现,所以特别需要给自己信心,相信自己做的工作。在项目组里也是,也许观点大家都不同意,但是如果在分析了事实之后,觉得自己是正确的,需要坚持,而不是简单屈从大多数和经验深厚的人或者是领导的决定。

  然而,要成为软件测试架构师,仅凭这些还不够。因为他们的很多工作都需要和项目经理、开发人员以及项目外部相关人员互相协调和合作,在沟通和影响力传递的方面也需要有很高的造诣。

  那么测试架构师在和项目经理、开发人员以及项目相关的其他外部人员之间如何协调进行工作呢?