1、从Ansible playbook到测试能力编排陈哲 Bilibili陈哲负责Bilibili创作中心质量保证以及能力建设工作,7年测开经验,2年效能中台研发经验,对质量体系建设有丰富的经验,对测试的赋能、提效有深刻思考Bilibili 质量保障部 资深测试开发工程师目录CONTENTS编排的传统意义1 Ansible中编排2 测试的行为&提效3 设计与实践4 未来的方向&愿景5 01编排的传统意义01字典解释02编排的造物编排的传统意义编排的传统意义按照一定的目的依次排列编排音符形成乐谱,音符是固定个数,但是音符可以组成不同的节拍,形成无数的曲谱02Ansible中的编排01Ansilbe0
2、2赋能03剧本Playbook04由下至上Ansible中的编排Ansible是一款自动化运维工具,换言之,Ansible是一款运维提效工具Ansible本身不具备任何能力,他的能力都是由不同模块(task plugins)去实现的,通过Ansible去调度模块的执行Playbooks 是 Ansible的配置,部署,编排语言.他们可以被描述为一个需要希望远程主机执行命令的方案,或者一组IT程序运行的命令集合.底层丰富的能力基础模块(task plugins),遵循Playbook的语法,配置方式,供其调度,从而执行不同的运维方案03测试的行为&提效测试的行为测试的行为从测试这个行为本身出发,
3、测试具体是在做什么保证需求高质量的如期上线业务需求的增量测试历史场景的回归测试测试case设计测试节奏规划黑盒&白盒手工&自动化精准&混沌测试目的测试设计测试范围测试手段测试提效测试提效测试提效的角度与实践的方向数据准备提效问题定位提效执行过程提效自动化框架压测平台混沌平台执 行中 台锚定问题结合Ansible的设计思路,与测试提效的方向,我们以解决以下痛点为目的,去做测试能力编排复杂场景构造跨语言能力复用过程代码重复编写重复能力重复建设跨团队数据构造锚定的问题业务划分因公司而异,不同的部门负责的业务不同,测试时面向的数据实体对象可能不同,即使相同,需要的数据属性可能也不同跨团队能力我们在写提
4、效工具时,同业务代码一样,按照需求调用接口,处理数据流程代码锚定问题锚定问题 解法思路解法思路为什么是使用编排解决问题,从问题成因与解法思路去解释业务拆分,数据流切断,上下游相互依赖,跨部门沟通成本业务线需求之间能力建设设计思路不同,可能语言也不同,能力复用困难业务场景复杂,大量流程代码的重复编写编排提供抽象思路,并提供底层基础封装与拓展(plugins)编排能提供调度与复杂业务描述方式,测试同学不必编写过程代码,专注能力本身弱化能力实现,转为抽象思路下的能力提供,互相赋能,相互调用成 因解 法04设计与实践设计与实践首先介绍以下几个在测试能力编排中的概念单点能力:完成一个行为的能力章节(Ch
5、apter):几个连续的节点的组合,完成一个有意义事件节点(Step):完成一个有意义事件的单点动作剧本(playbook):编排动作的结果,是可执行剧本动作(Act):剧本中每一步执行行为,可以是单个节点,可以是一个章节抽象的依据是一切的基础,抽象的结果决定了后续设计的方向,抽象的维度与深度因系统的性质决定设计与实践 抽象入参配置成为模板来描述具体的业务语义单点能力=通信方式+入参有业务语义单点能力就作为编排中的最基础的音符设计与实践 抽象能力的关注点在于能力的本身的业务意义抽象的依据是能力的请求方式与请求模板不关注能力的实现是使用何种语言,还是靠sql,甚至一个与使用redis指令,只要具
6、有其业务含义,就能成为编排剧本的中的一个节点触达的3层含义触达方式入参模板(赋予业务意义)模板的入参(与模板组成完整的入参)设计与实践 章节&剧本拥有了基础的音符后,就能编排出自己的剧本每个Node是有业务语义的节点从NodeA-NodeE是一个完整的剧本NodeB-NodeD组成了一个完整的功能点,我们将这几个节点按照顺序赋予一个新的章节的概念ChapterAChapterA可以在任意其他需要使用他能力的剧本中使用设计与实践 剧本存储剧本的执行,需要记录剧本本身以及执行行为的本身剧本执行的进度剧本历史步骤的执行结