敏捷测试文化的转变
敏捷文化是敏捷测试转型的基础,只有具备敏捷文化的氛围,对组织架构、流程和相关测试实践的调整才能起作用。在前面的敏捷测试定义中,敏捷测试是遵从敏捷软件开发原则的一种测试实践,这意味着敏捷的价值观。
此外,从传统测试到敏捷测试的文化转变还包括组织文化转变、管理文化转变,以及在转变过程中可能遇到的障碍等。
一、组织文化的转变
小心变成“质量警察
在传统测试中,测试部门或测试团队是产品发布到产品生产前的最后一道屏障,因此,测试人员在项目中充当了“质量警察”的角色。在项目测试过程中,项目管理办公室或项目经理会咨询测试经理的意见,判断产品是否达到了上线的条件和要求,测试经理的反馈将影响项目管理层的上线决策。
而在敏捷测试中,测试人员不再被赋予这样的权力和职责,项目的发布与否也不再依赖某个人或某个组织,而是整个敏捷团队的决策。因此,测试人员必须转变思想,不要抱有测试人员是决定项目上线的判官这一心理,而是要从实际出发,根据敏捷测试的实践要求进行测试。
保持可持续的速度,而不是在项目的最后阶段进行快速激烈的测试
在传统项目中,测试发生在产品上线前的最后阶段,所以经常看到测试人员在上线前的一段时间非常繁忙,压力很大,甚至经常加班完成测试任务,而组织也默认这种加班文化,认为牺牲项目成员的休息时间来“死守”上线时间也无可厚非。可想而知,测试人员在极度疲惫的情况下,测出来的质量是无法保证的。
而在敏捷测试中,长期加班的文化是不被认可的。在敏捷中,判断团队能否加班的原则之一就是团队能否保持可持续的速度。如果只是偶尔加班处理紧急的事情,不影响整体的交付速度,那无伤大雅;而如果是长期加班使测试人员处于一种疲劳、沮丧、情绪低落的状态,如何还能保证可持续的速度呢?因此,传统模式的最后阶段被切分为不同的迭代片段,并且融入每次的sprint中,这样才能使测试工作趋于平均,从而保证可持续的速度。
合作伙伴式的客户关系
在传统的测试中,客户与测试人员是甲方与乙方的关系,很多测试人员都不愿意主动和客户进行交流,遇到需要澄清的问题不是直接找客户咨询,而是找开发人员或业务分析师,然后再让开发人员或业务分析师与客户沟通,从而失去了掌握第一手资料的机会,也增加了沟通成本。
而敏捷测试中,客户与测试人员不再是甲方与己方的关系,而是合作伙伴关系,大家拥有共同的目标,那就是使项目获得成功,所以客户会更频繁地参与项目各方面,了解客户需要什么、关注什么、担心什么,从而更好地开展测试工作。
二、管理文化的转变
每个团队都有能力做出决策
在传统测试中,决策往往取决于项目中的少数人,如项目经理或项目管理办公室(PMO)等,但是在敏捷团队中,已经没有项目经理或项目管理办公室这类角色,那么谁来做决策呢?答案是团队。
每个团队都有能力做出决策,这个能力有两层含义:一是外部相关,是指组织或公司需要赋权给团队,让团队有权利自己做出相关的决策;二是内部相关,是指团队必须有能力判断并做出正确的决策。
提倡免责文化
在传统测试中,我们经常会看到版本上线后的回顾会变成了追责会,会议的重点是讨论上线后的缺陷应该谁来负责?需求部门把责任推给开发部门,开发部门把责任推给测试部门,测试部门把责任推给需求部门,大家不是在讨论下次如何避免再出现同样的问题而是想方设法把责任推给别人。出现这种情况的原因在于很多组织的绩效考核都与上线后的缺陷挂钩,大家为了各自的利益而拼命“甩锅”。
无论是敏捷还是 DevOps 领域都提倡免责文化,也就是不把犯错误和绩效考核挂钩,原因在于敏捷是基于经验的,在敏捷的环境中,我们需要保持不断创新、不断尝试的勇气,而创新尝试具有很高的风险。在这种情况下,如果还是把失败与绩效挂钩,就会打击尝试者的积极性,久而久之,大家宁愿墨守成规,也不愿意尝试创新,整个组织或项目最终将失去不断自我改进的活力。所以,在敏捷中不但应该不怕犯错,而且应该尽早犯错以便及时调整后续策略。
管理层需要具备敏捷知识
有些领导觉得敏捷是员工应该学习的内容,因为他们是具体工作的人,而管理层没必要学习,这其实是一个错误的想法。Richard Knaster和 Dean Leffngwell 在《SAFe4.0 精粹:运用规模化敏捷框架实现精益软件与系统工程》中提道:“企业的领导者必须拥抱'精益-敏捷’思维。如果领导者只是通过语言而不是自身的行动来支持'精益-敏捷’思维,人们很快就会认识到他们不是在全心全意地推动变革。他们必须知晓方法,强调终身学习,需要用新的行为践行这些价值观、原则和实践。所以在规模化敏捷 SAFe 的系列培训课程中,专门有一门课程叫作 LeadingSAFe,主要对管理层和主管级别以上的领导进行培训。”管理层必须知道与敏捷过程相关的度量标准,如Scrum 中使用Sprint和 Release 燃尽图跟踪用户故事的完成情况,同时还需要通过分享他们的业务观点来鼓励团队将投资回报率(ROI)最大化。
总之,管理层如果具备敏捷知识,并且积极支持和践行敏捷,那么对敏捷测试的转型将会带来非常大的帮助,也会大大提高敏捷测试转型的成功率。
三、文化转型的障碍及解决办法
任何转型都不是一帆风顺的,可以预料,在转型实施的过程中一定会碰到各种障碍以下是部分可能存在的障碍和解决方法。
组织变化带来的恐惧
在敏捷环境中,组织架构不再与传统的职能型部门架构一样,测试人员也不再属于测试部门,这迫使测试人员离开了熟悉的组织环境。新环境会让测试人员感到陌生,从而令他们感到恐惧,例如,以前测试人员碰到问题可以直接向测试部门经理反映,很多事情测试部门经理会帮忙协调和处理,而在新环境中,没有这样的角色可以为测试人员提供帮助,很多事情可能需要他们自己协调团队解决,这种改变会让测试人员无所适从,对未来感到害怕,从而迷失自我。
要移除这个障碍有以下两种解决方法。一是在Sprint 回顾会上正面讨论测试人员的恐惧,团队集思广益,共同解决。要让测试人员知道,如果遇到问题,团队一定不会袖手旁观,从而消除测试人员的恐惧感。二是组织需要规划和制订属于测试人员的职业发展路线,让测试人员能够清晰地知道未来的发展方向,减少其对未来的迷茫感。
缺乏对敏捷概念的基本认识
许多测试人员没有接触过敏捷,也没有参加过相应的敏捷知识培训。不少企业在安排敏捷培训时往往会重点安排开发人员参加,而忽略了测试人员。他们天真地认为敏捷开发,顾名思义,是开发人员的事,测试人员只需和以前一样编写测试用例、点击鼠标执行测试即可。所以,当突然被安排了某个敏捷项目时,一方面因为自身对敏捷流程不熟悉,另一方面项目也没有指南可以帮助克服角色之间的文化差异,测试人员最终无法跟上整个项目的开发节奏和进度。
要移除这些障碍可以参考以下两种解决方法:一为测试人员提供敏捷相关知识的培训,让测试人员至少知道什么是敏捷测试,以及敏捷开发和传统开发的差异等基础知识,一旦测试人员了解相关知识,就会消除恐惧,并且还会逐渐适应这样的环境;二是敏捷导师在辅导团队的时候,需要这些没有敏捷测试经验人员多加关注,耐心的引导和教导他们,让他们能够在相对宽松的实战项目中逐渐进步,提升敏捷知识。
无法满足更高的技能要求
在传统职能型部门,测试人员的任务相对单一,只需要做好相关的测试工作即可、而在敏捷跨职能团队中,测试人员的任务并不局限在测试范畴,还有可能要处理任何对团队有益、能帮助团队更快速交付的活动,如帮助开发人员与业务部门澄清需求、参加开发人员的代码评审等。
这些工作都需要测试人员拥有除测试技能外的更广泛的技能,如代码阅读能力、需求沟通能力等,对测试人员的综合能力要求变得更高了。而这些对于以前只有单一技能的测试人员来说,在短时间内想要提高的难度很大。
要移除这个障碍可以参考如下两种解决方法。一是可以成立测试实践社区,让测试员能找到组织,在组织中,大家互相学习,共同进步,从而提升测试人员的技能;二是对于部分技能要求较高的岗位,可以考虑从外部招聘合适的人员来补充团队力量。
总体来说,企业需要为团队的测试人员给予更多的培训和指导,帮助他们尽快学习敏捷相关知识,克服因为不懂敏捷而带来的恐惧,尽快完成角色转换,以适应项目需要。
阅读后若有收获,不吝关注,分享,在看等操作!!!
相关文章:
敏捷测试文化的转变
敏捷文化是敏捷测试转型的基础,只有具备敏捷文化的氛围,对组织架构、流程和相关测试实践的调整才能起作用。在前面的敏捷测试定义中,敏捷测试是遵从敏捷软件开发原则的一种测试实践,这意味着敏捷的价值观。 此外,从传…...
如何配置线程池参数,才能创建性能最好、最稳定的Spring异步线程池?
配置性能最好、最稳定的Spring异步线程池,需要综合考虑业务场景、硬件资源(CPU核心数、内存等)、并发量、任务特性(CPU密集型、IO密集型等)以及线程池参数。 以下是优化线程池配置的关键点及代码示例: 线程…...

【时间之外】IT人求职和创业应知【80】-特殊日子
目录 北京冬季招聘会 OpenAI CEO炮轰马斯克 英伟达推出全新AI芯片B300 莫欢喜,总成空。本周必须要谨行慎言。 感谢所有打开这个页面的朋友。人生不如意,开越野车去撒野,会害了自己,不如提升自己。提升自己的捷径就是学习和思考…...
Vue中接入萤石等直播视频(更新中ing)
一、萤石: 1. 萤石云开发文档: https://open.ys7.com/help/31 2、安装: npm install ezuikit-js --save 3、在文件中引用:import EZUIKit from ezuikit-js 4、具体代码: 获取accessToken:https://open.…...
如何学习、使用Ai,才能跟上时代的步伐?
目录 1. 打好基础:理解AI的核心概念 2. 学习AI的核心领域 3. 实践:动手做项目,积累经验 4. 利用AI工具提升工作效率 5. 培养AI思维与批判性思维 6. 关注AI领域的最新研究与趋势 7. 培养跨学科能力 总结: 在AI时代…...

RabbitMQ中的异步Confirm模式:提升消息可靠性的利器
在现代分布式系统中,消息队列(Message Queue)扮演着至关重要的角色,它能够解耦系统组件、提高系统的可扩展性和可靠性。RabbitMQ作为一款广泛使用的消息队列中间件,提供了多种机制来确保消息的可靠传递。其中ÿ…...

Linux(Centos 7.6)目录结构详解
Linux(Centos 7.6)是一个操作系统,其核心设计理念是将一切资源抽象为文件,即一切皆文件。比如系统中的硬件设备硬盘、网络接口等都被视为文件。Windows系统一般是分为C、D、E盘。而Linux(Centos 7.6)是以斜线"/"作为文件系统的开始目录&#x…...

upload-labs关卡记录8
黑名单过滤,同时不能进行双写,大小写,特殊可解析后缀,.htaccess,都不能。点击提示发现: 禁止上传所有可解析后缀,抓包试试: 抓包加空格发现也不能绕过,看源码分析吧: $i…...

GXUOJ-算法-第二次作业
1.矩阵连(链)乘 问题描述 GXUOJ | 矩阵连乘 代码解答 #include<bits/stdc.h> using namespace std;const int N50; int m[N][N]; int p[N]; int n;int main(){cin>>n;//m[i][j] 存储的是从第 i 个矩阵到第 j 个矩阵这一段矩阵链相乘的最小…...
Gavin Wood 的 Polkadot 2024 年度回顾:技术突破与未来的无限可能
原文:https://medium.com/polkadot-network/polkadot-roundup-mmxxiv-8d3e880dd637 作者:Gavin Wood 编译:OneBlock 🎄 各位波卡生态的 Buidler 们,圣诞快乐!在这个充满节日气氛的时刻,很高兴与…...
AduSkin、WPF-UI、Prism:WPF 框架全解析与应用指南
摘要: 本文深入探讨了 AduSkin、WPF-UI、Prism 这三个在 WPF 开发领域极具影响力的框架。详细阐述了每个框架的特点、核心功能、安装与配置过程,并通过丰富的代码示例展示其在实际应用场景中的使用方式,包括界面美化、导航与模块管理等方面。同时对它们的优势与局限性进行了…...

【超详细】Git的基本概念和基本使用方式
Git是程序开发中非常重要的工具,是一种分布式版本控制系统,可用于管理和追踪软件开发过程中的变化。那么关于Git的基本操作你知道吗?下面是Git的基本概念和使用方式的解释: 仓库(Repository):Gi…...

【数据结构】单链表的使用
单链表的使用 1、基本概念2、链表的分类3、链表的基本操作a、单链表节点设计b、单链表初始化c、单链表增删节点**节点头插:****节点尾插:****新节点插入指定节点后:**节点删除: d、单链表修改节点e、单链表遍历,并打印…...
外键约束的应用层维护
1.前言 一般来说 对于不同表格之间的属性约束 我们通常直接使用数据库已经实现好的外键来完成 但是数据库底层实现的外键他的性能很差 这是因为在执行数据库修改操作时 他需要遍历其他所有的表来找出其中可能相关联的属性 一并进行数据库修改(应用层的维护则只需要遍历所有关联…...

springboot整合log4j2日志框架1
目录 一 log4j基本知识 1.1 log4j的日志级别 1.2 log4j的日志文件结构* 1.2.1 概述 1.2.2 详解 1.3 log4j的日志格式化api 1.3.1 api详解 1.3.2 演示案例 1.3.3 演示案例 1.4 log4j中onmatch和onmismatch的区别* 1.4.1 案例 1.4.2 onmatch的api 1.5 logback&#x…...
06 - Django 视图view
HttpRequest 和 HttpResponse Django中的视图主要用来接受Web请求,并做出响应。 视图的本质就是一个Python中的函数 视图的响应分为两大类 以Json数据形式返回(JsonResponse)以网页的形式返回 重定向到另一个网页 (HttpResponseRedirect)错误视图(4XX,5XX) (Htt…...
基于云计算的资源管理系统
基于云计算的资源管理系统是一种将云计算技术与资源管理技术相结合,以实现资源高效利用和管理的系统。以下是对该系统的详细分析: 一、系统概述 云计算是一种基于网络的计算模式,通过将计算资源和数据存储在云端服务器上,使用户…...
从0入门自主空中机器人-3-【环境与常用软件安装】
关于本课程: 本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程,包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程,带你从0开始,组装属于自己的自主无人机,并让…...
electron node-api addon开发
解决方案入口 拷贝日志以及json等第三方源码 增加包含目录 编写接口 默认模板已经有一个回调函数了 照葫芦画瓢就行 其中几个重要的点要注意 1.参数传入 比如如下的例子: 头文件定义: public:下增加 Napi::Value StartAnswer (const Napi::Callb…...
如何在嵌入式系统或计算机系统中验证boot程序
在嵌入式系统或计算机系统中,验证boot程序(引导程序)的正确性至关重要,因为它负责初始化系统硬件、加载操作系统内核,并设置系统环境。以下是一些常用的验证boot程序的方法: 一、硬件验证 示波器与逻辑分…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...