敏捷工程实践训练

课程亮点

在实战中学习用户故事分解,需求实例化,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周。

最近培训时间


培训课程