敏捷工程实践训练

课程亮点

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


最近培训时间


培训课程