海盗派方法学,简称BM(Buccaneer Methodology),是一套通用的、可以应用于广阔领域的方法学,专注于研究如何更好地学习和探索未知的事物、如何分析复杂的事物或问题、如何管理不确定性,专注于提升人的思维和技能,整个BM体系构建于启发式(Heuristics)之上,帮助和启发人们更好地面对VUCA(Volatile-Uncertain-Complex-Ambiguous)时代的各种挑战。
Volatile不稳定 异变的;Uncertain不确定; Complex复杂的;Ambiguous模糊,歧义
从海盗派测试到海盗派一切
2016年正式提出海盗派的概念,已经三年了,当时主要讲的是“海盗派测试”,一个海盗派的tester是什么样的呢?
海盗派测试认同的核心测试理念
测试是基于上下文的;要基于风险开展测试;测试即学习、测试即探索;测试人员的思维和技能是测试的核心。
以下是海盗派测试的典型做法:
在海盗派测试中,我们不相信测试可以预先一次性就计划得很好,后续只要遵照执行就可以了;相反,我们制定计划时,一定会有很多没有考虑到的风险和质量因素,一定会对产品有很多不够了解的地方,因此我们需要根据最新掌握的信息不断调整测试策略和测试计划。
在海盗派测试中,我们不相信通过学习产品知识、通过学习测试课程、通过多实践多练习,就可以设计出接近完美的测试ideas,并且执行这些ideas就可以发现绝大部分的软件缺陷;相反,我们做测试分析与测试设计时,一定会设计了多余的不必要的test ideas,也一定会漏掉很多好的应该被执行的test ideas,因此测试分析与测试设计一定是个迭代的过程,而不是一次性的。
在海盗派测试中,我们不相信工具可以代替人类完成测试,工具只能实现部分把test ideas自动化的工作,对于一个复杂的、高质量的软件项目而言,我们也不相信那些重要的缺陷都可以通过automated checking方式捕捉到;相反,我们认为测试人员的技能是所有测试工作的核心,包括使用工具辅助测试的技能,对于缺陷发现和挖掘来说,人比工具起着更重要的作用。
在海盗派测试中,我们不相信写下来的test ideas或者test scripts可以弥补测试人员知识和技能的不足,也不认为写下来的test ideas是测试组织最宝贵的财产;相反,我们认为,很多时候没有必要浪费时间写下所有的test ideas(除非你的测试时间并不紧张),让一个测试新手更快更有效的成长途径是在一个有经验的测试人员指导和带领下开展实际的测试工作,克服一个又一个挑战,“最好的学习就是测试一下”,技巧娴熟的测试人员是测试组织最宝贵的财产。
在海盗派测试中,我们不相信测试人员是不负责任的、恶意偷懒的、不关心产品质量的,不相信通过制定一些定量的的测试度量统计指标就可以准确知晓测试的质量,例如统计test ideas的通过/失败比率,统计test ideas的自动化实现比率、统计需求规格说明的测试覆盖率等等;相反,我们相信每个海盗派tester都是负责任的、不断改进自己的测试的、以及努力把测试工作在受限的上下文下尽可能做到最好的,因为提供高质量的测试服务是每个测试人员的职责所在,我们相信频繁的沟通交流以及测试过程的透明化更有助于管理者了解真实的测试质量状况。
在海盗派测试中,我们不相信测试人员可以独立给出产品是否可以发布的意见,因为测试人员没有权利控制项目资源分配、项目预算等,测试人员没有能力控制产品的质量;相反,我们认为测试人员应该准确的讲述测试的故事,向测试的客户及时提供质量相关的信息,这可能包括测试发现了什么、做了哪些测试、测试做得怎么样等等。
3年过去了,现在海盗派的概念已经由"海盗派测试"推而广之到“海盗派everything”,比如海盗派学习,海盗派设计,海盗派开发。
这是因为,“海盗派”代表着一类做事的想法或风格,只要按照这类风格去做事,您可以把它称之为任何名词XX,而我会把它叫做“海盗派”。
那么,海盗派的style究竟是怎样的呢?
简单来说,八个字 - “学习、探索、匠艺、责任”。
一个合格的海盗,其学习或工作,
不拘泥于形式,不受制于外在的束缚
以自己的思维和技能为核心,基于所处的上下文
尽可能完成快速有效的、高质量的交付。
可以借鉴James Bach提出的“Hum?Really?So?”的方法来理解:
Hum? - 可以对应为KYM(Know Your Mission)的过程;当别人告诉你要怎么做的时候,比如要求你遵守一个流程、接受一个概念、按照一个方法、使用一种工具、遵循一个文档、使用一个模板。。。,此时,海盗的做法是:不盲目否认、也不盲目跟从,先要确认清楚,正所谓知己知彼
Really?- critical thinking,与自己已有的工具箱做比较、提质疑
So?- 最终做出自己的判断,丰富自己的知识体系,在探索中不断学习进步。
一个合格的海盗,
不仅仅热爱学习、勇于探索、孜求匠艺,
更重要的是要对自己的交付质量负责
什么叫“交付以则”?
海盗派方法学
海盗派方法学包含四个部分的内容(分别对应四门课程:《海盗派分析:MFQ&PPDCS》、《海盗派探索技能:KLTDR》、《海盗派探索过程管理:RSEM》和《海盗派学习:PRE》。
名词解释
这些启发式的每一种均是我在多年的软件测试实践中逐步积累和摸索出来的。
任何一个领域的方法体系大体可以分为两类:专有的、通用的。其中专有的方法一般只能用于本领域,比如对于测试领域而言,一些专业的测试概念、测试工具、某一类系统的性能测试方法等均属于专有类;而通用的方法可以适用于本领域的任何一个行业,推而广之的话,对其他领域也是有很大启发作用的,甚至可以直接拿来使用。
海盗派方法学中,如何做、如何思、如何学习、如何管理这些方法均属于通用类的方法,虽来源于测试领域,却适用于所有探索相关的领域,我个人曾使用这些方法用于软件开发的过程、非IT领域的需求了解和顶层设计、玩各种探索类的小游戏、以及生活中的各种场景比如学习西点制作。
海盗派技能
海盗派方法学(BM - Buccaneer Methodology)架构图(海盗派方法学体系结构图)里面涉及很多的技能,或者称之为小工具,即各种Heuristics Tools。
你可以从任何一块感兴趣的地方出发,开始BM学习之旅。不过,从技能夯实的角度看,建议的技能夯实的顺序是自底向上的方式:
- 基础类的技能(Foundational Skills):这类技能是所有上层各类技能集的基础,都要用到,比如结构化处理信息的能力,比如问问题的能力等;
- 核心类的技能集(Core Skillset):KYM和TCO处于BM核心层,无论你想要学习的是海盗派分析(MFQ&PPDCS),海盗派探索(KLTDR),还是海盗派管理(RSEM),基本上都建议先从KYM和TCO入手;
- 特定方向的技能集(Directed Skillset):海盗派分析(MFQ&PPDCS),海盗派探索(KLTDR),海盗派管理(RSEM)各自拥有的技能集,根据个人兴趣和能力所及,灵活选用吧;
- 学习类的技能集(Learning Skillset):这是一类纵向的技能集,因为与每一层都相关,相互促进,主要包含海盗派学习(PRE)相关的技能集。
还要说明一点,Skillset和Skill的区别:
图中,只有基础类的技能使用了Skill这个词,其他地方用的都是Skillset,那是因为每个缩略语(在海盗派里一般称之为Heuristics)都是很多Skills的集合,需要综合用到多种技能才能把这个Skillset做好。比如KYM要想做好,你需要问问题的能力,结构化信息整理的能力,讲述你的故事的能力,挑剔性思考的思维,系统性的思维,Factoring的思维。
基于RESM测试策略
RSEM -Risk and Session Based Exploration Management,这是海盗派探索管理的一个框架,这个框架用来管理“高度探索的、充满不确定性的”活动,两个核心的基础是“基于风险”和“基于Session”,前者是一切策略(做决定)的基础、后者是一切行动的基础。
RSEM的具体做法,可以简单地用DRAW模型概括一下:
Destination - 用 KYM (Know Your Mission)方法识别现状(现有的资源和能力,项目现状)和目标(目标的客户、最终的产品、任务的交付);
Roadmap - 用 TCO (Testing Coverage Outline)方法制定一个战略大纲,可以用这个大纲来测试覆盖目标的程度,注意,此时我们知道了如何从现状抵达目标的一个大致的策略,并不是详细的计划;
Actions - 采取具体的、一个个拆分得比较细致的行动,每一个行动的粒度比较细,对于软件测试来说,一般是1~2个小时左右的Session,可能是一个Modeling Session,也可能是一个测试执行的Session,每个Session都是以当前的能力可以抵达的小目标;
Warnings - 这一路的探索旅途中,实时关注风险的存在,变化是无所不在的,现状可能变化、目标可能变化、风险可能变化,要及时感知变化并据此调整行动和战略,RSEM可以以小时级的频度去感知风险和调整战略。
在具体的行动开始之前要做到:
了解现状(KYM)
确定目标 (KYM)
识别方向 (TCO)
一旦开始采取具体的行动后:
感知风险 (RBT)
踏实行动 (SBT)
及时调整 (RBT)
当然,RSEM只是骨架,思维和技能才是血与肉,RSEM需要配合海盗派技能(MFQ&PPDCS,KLTDR,PRE)使用。
对于RSEM,需要的是深刻理解其精髓、和耐心细致的行动,这与传统的command and control、甩手掌柜式的管理方式是完全不同的。