软件测试架构师需要哪些知识和技能?

282 篇文章 6 订阅
149 篇文章 0 订阅

1. 简介

 IEEE和ISO正在定义软件测试架构这一概念。软件测试架构概念标准化的一个重要方面是了解从事这项工作的人所需要的技能。在工业界和本文中,这些人都被称为软件测试架构师。

现代系统中包括大量的软件,会引入很多风险。测试团队经常做不到完全理解系统的全局,制订的测试计划和策略就不够深入全面。此外,测试行业并不完全理解架构的概念,工程师们在定义软件测试架构和测试环境中遇到很多挑战。正是由于缺乏对测试架构的理解,导致系统发布后失效的可能性增加,同时面临在安全性、可靠性、互操作性、功能、使用方式和其他领域的许多挑战。

有些公司会设置 "软件测试架构师 "的职位,而有些公司可能只是将这些人称为系统或软件工程师,但要求他们拥有搭建软件测试架构和环境相关的知识和技能。最近在www.linkedin.com网站上,有超过2000个职位是招聘软件测试架构师。目前甚至还有专门针对这个头衔的认证。然而,整个行业对于这个角色还是缺乏共识

本文不仅阐述了软件测试架构师应该具备的工作技能和基本知识,还包括对于这些所需技能的思考,旨在为ISO/IEEE/IEC 29119 软件测试系列标准工作提供参考。本文考虑的场景是:由软件驱动的复杂系统可能需要一个架构师针对复杂软件系统,测试架构师的责任是:制订适当的测试计划、测试策略、测试架构和测试环境。


2. 什么情况下需要一个软件测试架构师?

并非每个软件测试项目都需要测试架构师这样有经验的人员。许多软件系统的测试架构比较简单,已经包括在测试计划和策略中。例如,一个单机运行的低风险的PC程序,我们只需要编写简单的手工测试用例,不需要工具支持。那么测试架构就是一个加载了程序的独立的PC。有许多系统可能类似于这种情况,然而,复杂的软件系统数量正在增加,因此催生了对于软件测试架构师的需求。

需要软件测试架构的复杂软件系统的包括:

    • 具有复杂数据分析功能的人工智能系统

    • 包含许多站点/供应商的大数据分析系统

    • 有许多用户的虚拟现实和游戏系统

    • 云计算系统

    • 拥有数百万台设备的移动系统

    • 嵌入式系统

    • 物联网网络

    • 嵌入式连接系统(如现代汽车)

基本上,任何一个复杂的软件系统,其内部和外部的软件系统相互作用,都可能需要某种程度的软件测试架构(STA)。这就需要专门的人员在测试早期和策略制订时负责设计软件测试架构,其工作需要贯穿整个软件开发生命周期。在图1中,每个复杂的系统本身有一个软件架构,必须为它制订测试计划以及定义测试架构(编者注:比较含糊,可以参考 软件测试架构师究竟干哪些工作?)。此外,世界上的每个地区、航空航天、消费者、城市和其他元素都可以通过云计算相互连接起来。这些世界范围内的 互联的系统,最好是在一个超级STA (编者注:更含糊)中进行评估和测试。复杂的软件和测试架构的复杂性随着软件元素、风险和连接的增加而急剧增加。软件元素的数量、风险和连接的增加,软件和测试结构的复杂性也随之激增。

图片

图1 复杂系统无处不在

3. 软件测试架构师的职责

软件测试架构师的定义:软件测试架构师时运用策略、方法、实践、流程和战术来开发软件测试架构的专业人员。(编者注:从这个定义中,说明“测试架构”这个概念很重要,需要实现明确定义,但没有明确定义,是这篇论文的缺陷)

在此基础上,测试架构师的职责包括:

  •  一个高级别的测试技术专家(编者注:测试技术专家可以是一个测试架构师,但写在这里有些突兀),制定适当的测试策略、技术方法和自动化的测试计划,在整个软件生命周期内保障系统的整体质量。

  • 支持管理层完成一个成功的产品和项目。(编者注:比较含糊,团队每个人都有这样的职责)

  • 掌握软件测试行业的最新方法和技术,并根据需要在产品生命周期内将其传递给其他工程师。(编者注:测试架构师不是培训师,虽然测试架构师是测试团队技术Lead,更多是引导、规划)

  •  定义测试系统的软件架构,包括:测试环境、测试基础设施和测试自动化。注:测试系统包括环境、工具和操作,以支持测试工作。

  • 搭建、监测和维护最佳的测试系统、测试架构和测试技术(编者注:测试系统包含了测试架构,测试技术不能搭建,而是规划)。

  • 与其他项目领域(例如硬件、软件、运维等)的角色和利益相关者合作,以确保正确的集成。

  • 和管理层保持在测试计划和情况等方面的持续沟通(编者注:这可能是测试经理/测试总监的主要职责,测试架构师和CTO、研发技术总监等沟通更多)。

  •  识别测试系统的架构要求和限制,从而改进流程,并根据需要选择测试自动化方法、数据、工具等。

  •  记录和跟踪测试架构的风险。

  • 根据需要,创建测试系统模型,包括不同的视图和层次。

  • 通过定义、验证和维护测试架构来划分测试系统的逻辑单元(编者注:可归入第4条)。

  • 和测试人员一起定义和说明测试架构以及测试系统的设计理念。

(编者注:全文问题还比较多、有局限性,没有触及 技术架构、业务架构的评审。这里也不是挑刺,而是培养大家批判性思维😄)

软件测试架构师具有与系统架构师、硬件和网络架构师同等的权力和责任,并且同等重要。

4. 测试架构师的关键经验和技能

软件测试架构师应该是一个经过多年培训、具备丰富的知识和技能的资深专业人员。他们在产品领域的知识和技能涉及测试、软件、系统和其他工程领域。具体来说,这些架构师需要熟练掌握的知识和技能如下:

  • 对需求的业务理解能力、架构和开发能力、测试和质量方面的技能、沟通能力和领导力。

  • 与工程部门、管理部门和利益相关方的紧密合作。(编者注:“紧密合作”不是能力,是不是改为“沟通协调能力”?)

  • 在测试计划、测试策略,和测试架构方面培训和指导他人。(编者注:同上,感觉是职责,不是能力)

  •  成本和进度估算能力。

  • 产品领域的知识和计划能力,包括:

    • 对被测软件系统的理解。

    • 支持产品的合作伙伴和供应商。(编者注:是知识和能力吗?更像职责)

    • 测试管理、标准、认证和指导。(编者注:有点乱,“管理、标准、认证和指导” 不是一类东西)

    • 制订测试和项目过程改进目标。(编者注:更像职责,改为“过程改进知识、PMBOK”)

    • 对软件开发生命周期的理解--传统的、精益的、敏捷的和其他的。

    • 测试/V&V方法和技术。

    • 测试设计、执行和后期分析。(编者注:+ “相关知识”,而且和上面“测试/V&V方法和技术” 有交叉/叠加,违背MECE原则 

    • 测试架构。(编者注:为何不放在第一条? 

    • 测试环境,包括:硬件、软件、工具、操作、仿真,注入技术,组件、用户、原型、数据库、分析及其他适用的元素。

    • 采用先进的或适当的方法制订测试计划和测试策略。(编者注:继续背MECE原则 )

    • 测试自动化,高效地落实项目计划并实现测试目标。

    • 测试和质量计划。

    • 开发团队流程和计划。

    • 工程和测试的全球视野。

    • 软件集成、部署和 操作。

(编者注:概括起来有点乱,但还是有参考意义,开拓大家的思路 )

5. 辅助性知识和技能领域

除了与软件测试相关的知识和技能外,测试架构师还需要了解并能够实践其他工程领域的技能,包括:

  • 硬件

  • 软件

  • 系统

    • 运营和部署

  • 管理、社会技能、领导力和 沟通

  • 开发和流程

    • 系统和软件的要求

    • 设计(包括可测试性)

    • 实施技术

    • 质量保证

    • 配置管理(针对硬件和 软件)

  • 安全

    • 安全设计

    • 加密和数据传输 

    • 渗透测试 (编者注:属于前面测试范畴 )

  • 质量特性 (编者注:这不是辅助,而是基本的知识/技能,比前面“成本和进度估算能力”更重要 )

    • 可维护性

    • 性能

    • 互操作性和集成性

    • 可靠性

    • 其他必要的质量特性 系统所需的其他质量特性

  • 识别潜在的项目/测试风险和影响  (编者注:“测试风险”不是辅助,而是基本的知识/技能)

  • 编写文档和进行技术交流。(编者注:对架构师来讲,技术交流能力也是基本的技能)

接下来,还有一些 "非 "工程和难以量化的概念,这些概念非常重要,包括:艺术、审美以及使科技人员及其技能脱颖而出的人为因素方面。

最后,批判性思维是测试架构师的一项辅助性的关键技能(编者注:作者自己就没用好,未充分地质疑4.、5.两节核心内容😄)。使用多种技能进行思考是必要的,能够从抽象的STA计划演化成具体的设计细节,再到最终的测试结果。架构师必须从系统的 "全局"开始,运用各种技能来实现一个优雅的最佳的STA解决方案,然后将其细化为测试设计。有创造力的测试架构师了解并实践许多技能领域,善于使用适合系统领域的各种模式(图1的例子)。测试架构师需要考虑不同的负面测试情况,这些情况可能被系统和软件架构师忽略,由此产生的STA可能比原来的被测系统更复杂。(编者注:从“架构师必须...”开始的这一段算写得最好的😄)

6.  证据支持和未来工作

第2节和第3节的信息来源于作者20年来在复杂系统中从事这类工作的经验。 这些信息也来自正在编写ISO29119的工作人员。让我们获得这些经验的项目来自航空工业,作者在软件行业工作了35年后退休,其间担任了几个复杂系统的软件测试架构师。最后,还有一些知识来源于互联网上的信息和研究论文。

本文旨在抛砖引玉,成为大家讨论制定软件测试架构师标准和知识体系的起点。目前所需的信息还不完整,期待来自其他领域、架构师和测试人员的输入。

7. 总结

本文的研究表明,在物联网测试架构和环境中需要更多的工作。软件测试架构师的技能和知识与以下的角色是不同的,但是可以互补的

  • 测试经理:专注于预算、人员、计划和后勤保障。

  • 质量经理:专注于跨生命周期和软件/系统版本的流程质量,验证和审查。

  • 测试人员:专注于日常的测试过程、技术选择、执行和分析。

不是每个工程师都能够成为或应该成为测试架构师,就像不是每个人都应该成为经理一样。然而,掌握测试全貌的知识和技能是很重要的。能够支持测试计划制订和流程/产品改进的工程师,通过实践可能会成为优秀的架构师。从事软件测试架构师工作的人需要在所有的软件工程领域内有一定的广度和深度。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值