课程亮点
在实战中学习用户故事分解,需求实例化,TDD,重构,自动化测试
课程思路
一个人不可能在地面上学会游泳!本课程采用完全现场实战的方式,帮助团队快速体验和学会敏捷开发的各种工程实践。
讲解与练习比例大约1:1,视学员的实际情况灵活推广
学员分为若干小组,每个小组都有2~3个核心参训人员人
每个小组需要至少有1人能够维护前端界面,以便在前端自动化测试受阻时调整前端代码
以自己实际正在开发的产品为练习对象,实施全景实战过程
课程深度
根据学员的基础,此课程可以以不同的深度讲授,由浅入深分别是:
演示型:讲师以客户的需求,在自己的开发环境中现场操作,学员不实战。(适合4天)
单案例实战:从学员中抽取一个典型的需求,讲师演示并指导团队完成课程。 (适合4天)
多案例实战:每组都抽取一个需求,并行接受指导。(适合5天)
课程受众
项目经理,技术经理,开发骨干,测试骨干
本课程适合已经对敏捷工程实践有基础经验的学员
本课程需要在实际工作环境中进行(需要有开发环境,最好有现场部署能力,需学员自行准备)
学员中的至少1/3应能熟练在工作环境中开发,作为核心参训人员
学员中至少有2~3人已经能完成对CI环境的基本操作和维护
概览
以下内容按时间顺序描述了训练营的整体脉络。除整体脉络外,各个阶段还会穿插相应知识的讲授。 以下描述仅针对其中一个团队,其他团队也各自选定自己的产品,并按顺序执行实践。
初级篇(大约对应前2天内容,目标是快速体验)
现场对某个团队的代表性产品进行代码审查,发现潜在需要重构的内容
在重构前,对这个产品建立自动化单元测试用例(冒烟测试级别)
在TDD框架下,执行代码重构
高级篇(大约对应后2天内容,目标是优化效率,系统化测试,全流程质量管理)
封装单元测试用例,以便快速产生测试用例(为ATDD做准备)
需求条目化,以便了解有哪些需求需要进行测试(宏观需求)
对产品的实例化需求进行分解,挖掘出更多正向和反向用例(微观需求)
从TDD到ATDD:将单元测试的代码进化为验收测试代码
高级话题总结(限于内容太多,以案例分享的方式进行)
课程大纲
初级篇(大约对应前2天内容,目标是快速体验)
- 代码审查与重构定位
- 目标:此阶段完成后,学员发现代码中的不足,并确认重构的大体方向
- 理论讲解
编码的四重境界
好代码的三级终极奥义
重构的三种绝佳时机
现场实践
现场对某个团队的代表性产品进行代码审查,发现潜在需要重构的内容
代码要求
代码可以是Java,C#(asp.net),C++
重构部分代码的长度大约为200~500回车行
代码最好有后端也有前端
有前端才方便界面的自动化测试
代码好业务上利于理解
建立TDD与单元测试
目标:在重构前,对这个产品建立自动化单元测试用例(冒烟测试级别),以便确认重构前后的产品功能相同
理论讲解
Selenium分支
代码单元测试与功能单元测试
讲师演示
如何使用MarS快速建立页面自动化测试
现场实践
现场编写某个几个功能(页面)的测试用例
一般为增删改一整套用例,但只包含正向测试
重点:前端开发人员可能需要持续修改前端代码以便通过测试
代码重构
目标:在TDD框架下,执行代码重构;重构后仍能通过之前写的单元测试
讲师演示
讲师演示重构的编码次序
重点:如何保证重构过程每10分钟左右即可编译甚至测试一次
现场实践(此阶段时间较长)
学员重构代码
建立心跳:每测试并通过一次视为一次心跳
持续检测心跳的频率
高级篇(大约对应后2天内容,目标是优化效率,系统化测试,全流程质量管理)
封装单元测试用例
目标:提升测试用例生产速度,以便快速产生测试用例,为ATDD所需的大量正反向用例做准备
讲师演示
讲师演示如何产生模板数据、模板测试,以及如何通过少许修改即可产生大量用例
现场实践
学员对测试代码进行重构代码
将原来的单个正向用例模板化即可
需求条目化
目标:建立宏观的需求结构,从而可以确认要编写哪些测试用例
理论讲解
SEA需求分层方法
将需求分为Scenario场景,Entity实体,Action行为三层
实体发现:名词捕捉法
行为发现:CRUD法
现场实践
学员对正在测试的范围(一般只包含一个实体)所在的场景进行需求条目化分解
实例化需求
目标:将微观需求实例化,以便产生ATDD所需的测试用例
理论讲解
需求实例化方法
现场实践
对产品的实例化需求进行分解,挖掘出更多正向和反向用例
建立ATDD过程
目标:将单元测试的代码进化为验收测试代码,使得产品随时处于已验收状态
理论讲解
测试分层与测试策略
正向与反向测试
现场实践(时间较长)
根据需求实例,编写更多正向和反向测试用例
保持正向:反向比例为2:4~2:5左右
高级话题总结(限于内容太多,以案例分享的方式进行)
目标:建立起敏捷的开发与测试工程流程
话题:敏捷质量意识
纵向意识
质量前移
横向意识
破窗原理
童子军法则
话题:Scrum的跨职能团队与敏捷工程实践
提升软件“可测试性”
可测试性编码规范
开发与测试分工
金字塔形知识体系
自动化测试流程
话题:QAD量化敏捷开发中的测试度量项及其监控
基于敏捷功能点的测试度量
测试覆盖率
测试密度
测试用例正反向比例
测试自动化率
测试用例生产率
话题:ATDD,CI,CD之间的关系
如何做到三者环环相扣
案例分享:用微服务实现零编码接口自动化测试
其他可扩展的话题(由电话会议确认)
课程时长
2天+2天,中间间隔1天~1周。