http://blog.csdn.net/KerryZhu/article/details/886176
http://blog.csdn.net/broadview2006/article/details/7464652
系统架构师是大家耳熟能详的一个高端职位,但似乎由来属于研发人员奋斗的目标。然随着软件测试行业的兴起,随着测试职位从业人员的增多,测试架构师,这个光辉的职位也应运而生。
测试架构师,向一座灯塔,指引着我们前进的方向,像隐形的翅膀给我们前进的动力。然而这条伟大的“修仙之路”,是近在咫尺or远在天涯?下边的一些感悟,似乎会给我们启示。
起源:
测试架构师,起源于微软,原本公司中测试工程师往上发展就是系统测试工程师,系统测试工程师再往上应该叫什么呢?最后参考软件开发的title,就开创性的在公司内部叫测试架构师。并开始从事了很多从公司层面而仅非单个测试经理层面所需要的新的测试工作职责,例如:领导负责一个产品线或一个大产品的测试技术规划,early testing,系统测试工程师的培养,与开发架构师一起设计和改进架构的设计质量,测试执行活动质量的审查保障,亲自指导重点测试方案的设计,为了不断降低公司研发成本而进行新测试技术研究实践和推广,基于风险的测试,基于模型的测试,安全性测试,兼容性自动化测试,分布式自动化测试,性能压力测试,需求测试等专项测试技术领域的研究,并支撑新领域重点市场项目活动等等。
核心能力:
准确的商业理解力。 商业成功的核心竞争力是什么?测试技术和测试资源是否能真正地保障或支撑商业成功的核心竞争力?这些都是测试架构师需要准确识别的,如果测试架构师识别错误了,那么有可能在需要重点保障的领域,测试技术和测试资源投入不足,导致最后产品的商业竞争力得不到支撑,得不到质量保障。例如:某产品对外宣传是业界可靠性最高的产品,可是测试人员在测试活动中惯性地把主要精力都花在了性能测试中,对各种异常的测试验证并不是业界最丰富的。结果在与业内其他产品比较的第三方测试报告中,该产品的可靠性得分却并不是第一,虽然性能是第一,但该产品在特定的重视可靠性的市场中基本失去了商业竞争力。
区分测试重点和测试难点因为资源和时间是有限的,而完美工作的追求是无限的。因此,我们如何在有限的资源和时间下,保障基本的质量目标,并尽可能提升质量目标。就需要在分清测试重点后,优先针对测试重点目标进行系统地测试技术研究,测试技术攻关,测试资源主要投入。对于非测试重点的测试难点部分就要降低优先级,放在最后考虑。测试架构师不是团队中专门解决测试难点的专家,而是识别测试重点,并支撑测试重点工作的专家。“区分测试重点和难点的能力”不是测试架构师独有,系统测试工程师和测试工程师一样可以具有。与第一篇“准确的商业理解力”一样,第二篇要做的是:做正确的事。
测试架构师的“成魔之路”
我始终觉得万丈高楼平地起,一切的看似遥远都始于并不遥远的每一小步。没有比脚更长的路,没有比人更高的山。在我们前进的征程中,要历经哪些风景呢?
We have a common dream——测试架构师,一个有点陌生却不太遥远的职位。敏锐的洞察力,观察力。良好的细心耐心责任心。有了这些内功。其实你已经离着测试架构师很近,很近。人人都可以成为测试架构师,只要你愿意。
从今天起,让我们优化我们思维方式。
从今天起,让我们加固我们的理论基础。
从今天起,让我们看清明确的目标,fighting
软件测试架构师是一个新职位,但确实是一个非常必要的职位,主要有几点:
- 根据V模型、广义测试概念等,(静态)测试的越早,发现缺陷越早,越有利于产品的质量、加快产品开发周期、降低企业的成本。更重要预防设计出现严重的缺陷,如果设计出现缺陷,在系统集测试发现问题时,所造成的返工将是可怕的。这就需要对设计进行复审、评审,而在这过程中,需要测试人员参与。
- 对于当前系统越来越复杂,不管是J2EE架构还是.Net架构,不管是集中式网络系统还是分布式系统,不管是主机系统还是服务器集群系统,其设计往往不是一蹴而就,而且要基于以前的经验进行设计,根据教训(发现的问题)而优化系统结构。
- 软件系统越复杂、提供的功能越多,其测试要求越高,这就决定系统必须具有良好的可测试性,这一点通过开发设计架构师来保证,不是十分保险。
- 系统的性能、安全性、稳定性、可靠性等的测试,在技术、平台环境构造、系统部署上有很高的要求。
作为软件测试架构师,其主要责任是:
- 审查系统架构、系统构件/组件及其接口关系等的设计
- 确保系统的可测试性
- 设计软件系统的测试策略和方法,特别是在系统的性能、安全性、稳定性、可靠性等方面的测试方法、技术线路和质量标准
- 构件复杂的系统测试环境,并分析、解决测试中出现的较深的技术问题(Troubleshooting)和帮助做好缺陷的隔离
- 对系统(性能、安全性、稳定性、可靠性)测试作出分析、评估,并提出为改善系统性能、可靠性而进行设计修改、代码重构的建议
- 设计测试自动化的技术框架,主持重要的测试工具的研究、评估、设计。
- 参与系统部署的设计
- 参与新技术的评估和引进
- 帮助改进测试流程、提高测试效率
同时,招聘软件测试架构师,却是非常困难的,主要的原因有:
- 对于大多数技术很好的工程师、架构师,对过程管理、测试策略和方法、质量等关注较少,理解不够,缺乏良好的RUP或CMM/CMMI方面的造诣。而测试工程师在技术实现上机会较少、努力不够,技术功底不够,所以具有在系统架构和测试方法等多方面能力很强的人,是不多的。
- 目前国内业界还存在偏见,具有精湛的技术和丰富的经验的技术人员,更愿意做开发,不愿意做测试,这种现象偶尔表现在公司的薪水体系上、或者企业的管理层对此重视不够、决心不够。
- -国内测试专业发展比较迟,自然在人才市场上,有经验的、专业的测试工程师就不多,更何况是技术精湛的测试架构师。
- 软件测试架构师定位不清楚,企业没有给出清楚的责任和工作内容。
- 技术人员随着年龄增大,倾向于向管理发展,多数企业的政策也是向这方面引导。例如副总、经理等管理职位薪水要比纯技术人员高。实际,在多数外资企业,很强的技术人员(架构师)完全有可能高于他/她的上司。
表2-1 测试架构师和软件开发架构师的比较
测试架构师 | 软件开发架构师 | |
目标 | ①提高测试的效率和质量 ②提高系统的可测试性,特别是非功能特性的可测试性 |
满足系统非功能特性的要求,如完成高性能、高可靠性和高安全性的系统设计 |
主要工作 | 设计测试平台 | 设计软件产品的系统架构 |
关注 | 产品的测试过程 | 产品的研发过程 |
影响范围 | 测试社区、开发团队 | 开发社区、测试团队 |
技术范围 | ①系统架构设计模式、自动化技术、建模技术、测试用例设计技术等 ②测试模型、方法、技术、工具等各方面创新 |
①系统架构设计模式 ②面向对象的需求分析、设计和编程等全面技术能力 ③熟练使用软件开发平台(如Eclipse) ④资深的编程技术及其他开发技术 |
能力 | ①足够的技术前瞻能力 ②足够的影响力 ③掌握软件系统架构设计知识 ④深刻理解测试流程 ⑤精通测试技术、方法 |
①掌握软件系统架构设计知识 ②掌握一类以上软件开发技术 ③精通一种以上开发语言 |
测试架构师 | 测试经理 | |
目标 | ①提高测试的效率和质量 ②系统的可测试性,特别是非功能特性的可测试性 |
①提高测试的效率和质量 ②不断改进测试流程 ③加强团队建设,满足组织发展的需求 |
主要工作 | ①设计测试平台,包括自动化测试框架 ②确定测试方法和测试策略 |
①测试团队的管理 ②测试项目的管理,主要包括计划、人员安排和进度监控等 |
责任、决策范围 | ①测试方法的有效性 ②技术解决方案,如自动化测试框架的设计与实施 ③测试技术规范,包括测试覆盖率衡量 ④从技术角度来帮助团队理解架构 ⑤团队的技术发展之路 |
①使客户的价值最大化 ②团队的能力和绩效 ③项目的结果,特别是软件产品质量评估结果 ④事先定义的质量标准 ⑤和其他团队的沟通、协调 ⑥非技术问题,包括测试资源调度、项目里程碑确定等 |
关注 | 技术储备、技术问题和发展趋势 | 测试过程和测试人员的管理 |
工作方式 | 教练式技术指导 | 疏通、引导等各种技术管理方式 |
能力 | ①足够的技术前瞻能力 ②足够的影响力 ③掌握软件系统架构设计知识 ④深刻理解测试流程 ⑤精通测试技术、方法 |
①团队管理能力,包括沟通能力 ②项目管理能力,包括问题分析和解决能力 ③测试专业知识,以及其他软件工程知识 |