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