软件测试架构师不是一种头衔,而是一种角色,更重要的是一种能力—对团队的影响力。软件测试工程师不是在某一天突然成为一个软件架构师的,虽然他可能会在某一天被某某经理宣布为测试架构师。任何一个人成为软件架构师,都是一个渐进的过程,不断积累经验,不断提高自己的技术水平和业务能力,才能逐渐胜任测试架构师的角色。
测试架构师是测试团队的技术带头人,在系统非功能特性的测试、自动化测试框架等方面发挥着主导作用,对开发团队具有很好的沟通能力和影响力。测试架构师虽然不管理团队,不通过管理权利来驱动下属执行某项工作,但通过沟通与组织协作,让成员愿意采纳其建议,配合其完成某项工作,从而实现个人价值,为公司做出应有的贡献。
测试架构师应具有较强的抽象能力和创新能力,通过一个全局的观点、宏观的视角来理解软件系统作为一个整体是如何工作的,可以将具体问题抽象为一个模型,从而解决一类问题,并通过不断创新,找到解决问题的新方法,推广新的测试技术。同时,测试架构师作为测试技术带头人,就是为测试团队树立技术标杆,提供技术指导、做出技术决策,具体工作有:
●了解国内外技术趋势,具有很好的前瞻性,做好测试团队的技术规划,确保团队朝着正确的技术方向持续前进。
●结合公司具体情况,引入和推广适合公司需要的新技术。
●了解业界的普遍实践,对测试自动化或测试工具所涉及的技术提供很好的支持,或引导团队向正确的方向努力,不断地改进自动化测试工作。
●具有丰富的技术经验,对技术可行性一般能做出正确的评估。
●具有一线的测试经验,可以融会贯通,使技术真正能为测试服务。
●业务基础扎实,能很好理解客户需求,确定测试需求,能为各种技术困难的测试项目提供有效的解决方案。
测试架构师的主要职责如下。
●审查系统架构、系统构件/组件及其接口关系等设计是否合理。
●确保系统的可测试性。
●需要以全局的视角来把握软件测试项目,不仅要关注功能性需求,而且要关注非功能性测试。
●制订软件系统的测试策略和方法,特别是在系统的性能、安全性、稳定性、可靠性等方面的测试方法、技术线路和质量标准。
●构建复杂的系统测试环境,并分析、解决测试中出现的较深的技术问题(Troubleshooting),帮助做好缺陷的隔离。
●对系统(性能、安全性、稳定性、可靠性)测试做出分析、评估,并提出为改善系统性能、可靠性而进行的设计修改、代码重构的具体建议。
●设计测试自动化的技术框架,主持重要的测试工具的研究、评估、设计。
●参与系统部署的设计。
●参与新技术的评估和引进。
●帮助改进测试流程、提高测试效率。
测试架构师通过上述技术活动,帮助测试项目、测试团队提高测试效率和质量。为了更好地理解测试架构师的职责,在这里,将测试架构师和软件开发架构师、测试经理进行比较,如表2-1、表2-2所示。
表2-1 测试架构师和软件开发架构师的比较
(续表)
表2-2 测试架构师和测试经理的比较
(续表)
软件测试架构师的成果如下。
●对软件产品需求定义、系统设计和代码编程等可测试性做出详细要求的规范性文档。
●对系统设计、单元测试等的验收标准。
●软件新系统的测试方案,包括采用的测试策略、测试技术、测试工具等。
●自动化测试框架,包括自动化系统架构设计、测试脚本语言等。
●得到改善的测试流程,特别是关系到技术层面的单元测试流程、自动化测试实施流程等。
●测试过程性能、测试阶段性成果质量、产品质量等的度量体系。
●软件组织的测试技术规划,包括测试技术发展趋势、新技术引入研究和评估报告、未来待解决的关键测试技术列表等。
●特定的或专项的测试方法或技术的研究成果。
●不同级别测试工程师所要掌握的各种技术能力集合及其技术等级评估办法。
●提升测试效率的各种有效测试方法、实践指导等文章。