后值得强调的是,真正能够保证产品质量的是开发人员而不是测试。在一个完整的软件工程周期中,开发人员从建设的角度保证产品质量,测试人员从破坏的角度检验产品质量。如果在测试用例执行环节提交了成百上千的bug,即便终每个bug都被修复,新产生的bug数量一直在收敛,这样的软件产品恐怕也不是让人有足够信心发布出去的产品。实际上,从经验来看,总是有大量的bug被用户发现,即使测试人员采用了单元、接口、自动化、Monkey等诸多手段进行测试,由于受限于测试场景、测试次数等因素,这种情况仍然是无法避免的。

  让测试人员在项目早期介入,与开发人员一起评审技术设计,是减少这种情况并从根源上提高产品质量的方法之一。但是需要指出的是,这只是理想化的假设。一是测试工程师缺乏项目经验,测试开发与开发毕竟是两种工作,评审技术设计有一定的难度;二是如果测试工程师有大量的项目经验,很容易与开发人员从同样的角度思考问题,这便偏离了初衷。

  由此可见,成为一个的测试工程师并不是一件容易的事情,既需要有专业的技术,又需要能够从技术中抽身,从不同的角度考虑问题;既要有吹毛求疵的完美主义精神,又要能够权衡效率,并对自己的选择所可能产生的风险有所估量。运用之妙存乎一心,这实际上是大量实践中才能获得的经验了,无法详述。

  Notes:

  ①关于这种说法需要进一步关注Model-based Testing;另,Software Development Life Cycle(SDLC)是一个让人眼花缭乱的概念,务虚,但又十分有用。

  ②这实际上是采用了自顶向下的设计方法

  ③测试策略:Traceability Matrix等,待完善

  ④我希望Test Cases成为一个池子,测试条件放在System Testing Specification文档中来统一归档,该文档中还应当包括测试环境等相关配置。除此之外,如果有Test Procedure,也使用另外的文档用来管理。

  ⑤测试技术:等价类划分、边界值条件等

  ⑥敏捷、探索性测试待深入理解

  百度贴吧:

  新浪微博:

  网易126邮箱:

  淘宝网: