zoukankan      html  css  js  c++  java
  • 测试架构师修炼之道

    系统架构师是大家耳熟能详的一个高端职位,但似乎由来属于研发人员奋斗的目标。然随着软件测试行业的兴起,随着测试职位从业人员的增多,测试架构师,这个光辉的职位也应运而生。

    测试架构师,向一座灯塔,指引着我们前进的方向,像隐形的翅膀给我们前进的动力。然而这条伟大的“修仙之路”,是近在咫尺or远在天涯?下边的一些感悟,似乎会给我们启示。

            起源:

            测试架构师,起源于微软,原本公司中测试工程师往上发展就是系统测试工程师,系统测试工程师再往上应该叫什么呢?最后参考软件开发的title,就开创性的在公司内部叫测试架构师。并开始从事了很多从公司层面而仅非单个测试经理层面所需要的新的测试工作职责,例如:领导负责一个产品线或一个大产品的测试技术规划,early testing,系统测试工程师的培养,与开发架构师一起设计和改进架构的设计质量,测试执行活动质量的审查保障,亲自指导重点测试方案的设计,为了不断降低公司研发成本而进行新测试技术研究实践和推广,基于风险的测试,基于模型的测试,安全性测试,兼容性自动化测试,分布式自动化测试,性能压力测试,需求测试等专项测试技术领域的研究,并支撑新领域重点市场项目活动等等。

    核心能力:

            准确的商业理解力。 商业成功的核心竞争力是什么?测试技术和测试资源是否能真正地保障或支撑商业成功的核心竞争力?这些都是测试架构师需要准确识别的,如果测试架构师识别错误了,那么有可能在需要重点保障的领域,测试技术和测试资源投入不足,导致最后产品的商业竞争力得不到支撑,得不到质量保障。例如:某产品对外宣传是业界可靠性最高的产品,可是测试人员在测试活动中惯性地把主要精力都花在了性能测试中,对各种异常的测试验证并不是业界最丰富的。结果在与业内其他产品比较的第三方测试报告中,该产品的可靠性得分却并不是第一,虽然性能是第一,但该产品在特定的重视可靠性的市场中基本失去了商业竞争力。

            区分测试重点和测试难点因为资源和时间是有限的,而完美工作的追求是无限的。因此,我们如何在有限的资源和时间下,保障基本的质量目标,并尽可能提升质量目标。就需要在分清测试重点后,优先针对测试重点目标进行系统地测试技术研究,测试技术攻关,测试资源主要投入。对于非测试重点的测试难点部分就要降低优先级,放在最后考虑。测试架构师不是团队中专门解决测试难点的专家,而是识别测试重点,并支撑测试重点工作的专家。“区分测试重点和难点的能力”不是测试架构师独有,系统测试工程师和测试工程师一样可以具有。与第一篇“准确的商业理解力”一样,第二篇要做的是:做正确的事。

         测试架构师的“成魔之路”

          我始终觉得万丈高楼平地起,一切的看似遥远都始于并不遥远的每一小步。没有比脚更长的路,没有比人更高的山。在我们前进的征程中,要历经哪些风景呢?

      

        

    We have a common dream——测试架构师,一个有点陌生却不太遥远的职位。敏锐的洞察力,观察力。良好的细心耐心责任心。有了这些内功。其实你已经离着测试架构师很近,很近。人人都可以成为测试架构师,只要你愿意。

           从今天起,让我们优化我们思维方式。

           从今天起,让我们加固我们的理论基础。

           从今天起,让我们看清明确的目标,fighting

    软件测试架构师是一个新职位,但确实是一个非常必要的职位,主要有几点:

    -          根据V模型、广义测试概念等,(静态)测试的越早,发现缺陷越早,越有利于产品的质量、加快产品开发周期、降低企业的成本。更重要预防设计出现严重的缺陷,如果设计出现缺陷,在系统集测试发现问题时,所造成的返工将是可怕的。这就需要对设计进行复审、评审,而在这过程中,需要测试人员参与。

    -          对于当前系统越来越复杂,不管是J2EE架构还是.Net架构,不管是集中式网络系统还是分布式系统,不管是主机系统还是服务器集群系统,其设计往往不是一蹴而就,而且要基于以前的经验进行设计,根据教训(发现的问题)而优化系统结构。

    -          软件系统越复杂、提供的功能越多,其测试要求越高,这就决定系统必须具有良好的可测试性,这一点通过开发设计架构师来保证,不是十分保险。

    -          系统的性能、安全性、稳定性、可靠性等的测试,在技术、平台环境构造、系统部署上有很高的要求。

    作为软件测试架构师,其主要责任是:

    -          审查系统架构、系统构件/组件及其接口关系等的设计

    -          确保系统的可测试性

    -          设计软件系统的测试策略和方法,特别是在系统的性能、安全性、稳定性、可靠性等方面的测试方法、技术线路和质量标准

    -          构件复杂的系统测试环境,并分析、解决测试中出现的较深的技术问题(Troubleshooting)和帮助做好缺陷的隔离

    -          对系统(性能、安全性、稳定性、可靠性)测试作出分析、评估,并提出为改善系统性能、可靠性而进行设计修改、代码重构的建议

    -          设计测试自动化的技术框架,主持重要的测试工具的研究、评估、设计。

    -          参与系统部署的设计

    -          参与新技术的评估和引进

    -          帮助改进测试流程、提高测试效率

    同时,招聘软件测试架构师,却是非常困难的,主要的原因有:

    -          对于大多数技术很好的工程师、架构师,对过程管理、测试策略和方法、质量等关注较少,理解不够,缺乏良好的RUP或CMM/CMMI方面的造诣。而测试工程师在技术实现上机会较少、努力不够,技术功底不够,所以具有在系统架构和测试方法等多方面能力很强的人,是不多的。

    -          目前国内业界还存在偏见,具有精湛的技术和丰富的经验的技术人员,更愿意做开发,不愿意做测试,这种现象偶尔表现在公司的薪水体系上、或者企业的管理层对此重视不够、决心不够。

    -          -国内测试专业发展比较迟,自然在人才市场上,有经验的、专业的测试工程师就不多,更何况是技术精湛的测试架构师。

    -          软件测试架构师定位不清楚,企业没有给出清楚的责任和工作内容。

    -          技术人员随着年龄增大,倾向于向管理发展,多数企业的政策也是向这方面引导。例如副总、经理等管理职位薪水要比纯技术人员高。实际,在多数外资企业,很强的技术人员(架构师)完全有可能高于他/她的上司。

    谁能成为测试架构师

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

                         表2-1  测试架构师和软件开发架构师的比较

      测试架构师 软件开发架构师
    目标 ①提高测试的效率和质量
    ②提高系统的可测试性,特别是非功能特性的可测试性
    满足系统非功能特性的要求,如完成高性能、高可靠性和高安全性的系统设计
    主要工作 设计测试平台 设计软件产品的系统架构
    关注 产品的测试过程 产品的研发过程
    影响范围 测试社区、开发团队 开发社区、测试团队
    技术范围 ①系统架构设计模式、自动化技术、建模技术、测试用例设计技术等
    ②测试模型、方法、技术、工具等各方面创新
    ①系统架构设计模式
    ②面向对象的需求分析、设计和编程等全面技术能力
    ③熟练使用软件开发平台(如Eclipse)
    ④资深的编程技术及其他开发技术
    能力 ①足够的技术前瞻能力
    ②足够的影响力
    ③掌握软件系统架构设计知识
    ④深刻理解测试流程
    ⑤精通测试技术、方法
    ①掌握软件系统架构设计知识
    ②掌握一类以上软件开发技术
    ③精通一种以上开发语言

          
            表2-2  测试架构师和测试经理的比较

      测试架构师 测试经理
    目标 ①提高测试的效率和质量
    ②系统的可测试性,特别是非功能特性的可测试性
    ①提高测试的效率和质量
    ②不断改进测试流程
    ③加强团队建设,满足组织发展的需求
    主要工作 ①设计测试平台,包括自动化测试框架
    ②确定测试方法和测试策略
    ①测试团队的管理
    ②测试项目的管理,主要包括计划、人员安排和进度监控等
    责任、决策范围 ①测试方法的有效性
    ②技术解决方案,如自动化测试框架的设计与实施
    ③测试技术规范,包括测试覆盖率衡量
    ④从技术角度来帮助团队理解架构
    ⑤团队的技术发展之路
    ①使客户的价值最大化
    ②团队的能力和绩效
    ③项目的结果,特别是软件产品质量评估结果
    ④事先定义的质量标准
    ⑤和其他团队的沟通、协调
    ⑥非技术问题,包括测试资源调度、项目里程碑确定等
    关注 技术储备、技术问题和发展趋势 测试过程和测试人员的管理
    工作方式 教练式技术指导 疏通、引导等各种技术管理方式
    能力 ①足够的技术前瞻能力
    ②足够的影响力
    ③掌握软件系统架构设计知识
    ④深刻理解测试流程
    ⑤精通测试技术、方法
    ①团队管理能力,包括沟通能力
    ②项目管理能力,包括问题分析和解决能力
    ③测试专业知识,以及其他软件工程知识


             3.软件测试架构师的成果
             软件测试架构师的成果如下。
             对软件产品需求定义、系统设计和代码编程等可测试性做出详细要求的规范性文档。
             对系统设计、单元测试等的验收标准。
             软件新系统的测试方案,包括采用的测试策略、测试技术、测试工具等。
             自动化测试框架,包括自动化系统架构设计、测试脚本语言等。
             得到改善的测试流程,特别是关系到技术层面的单元测试流程、自动化测试实施流程等。
             测试过程性能、测试阶段性成果质量、产品质量等的度量体系。
             软件组织的测试技术规划,包括测试技术发展趋势、新技术引入研究和评估报告、未来待解决的关键测试技术列表等。
             特定的或专项的测试方法或技术的研究成果。
             不同级别测试工程师所要掌握的各种技术能力集合及其技术等级评估办法。
             提升测试效率的各种有效测试方法、实践指导等文章。

  • 相关阅读:
    Oracle的序列、视图、索引和表空间
    MySQL存储过程
    MySQL触发器
    MySQL索引和视图
    完整性约束
    Mybatis的核心对象及运行流程
    Mybatis中配置连接池
    IDEA中创建Maven工程整合Mybatis
    Idea中创建JavaWeb工程
    实现整数集合的并、交、差运算
  • 原文地址:https://www.cnblogs.com/zgq123456/p/14511216.html
Copyright © 2011-2022 走看看