400-888-5228

课程时长

2天+2天,中间间隔1天~1周。

 

课程思路

一个人不可能在地面上学会游泳!本课程采用完全现场实战的方式,帮助团队快速体验和学会敏捷开发的各种工程实践。

  1. 讲解与练习比例大约1:1,视学员的实际情况灵活推广
  2. 学员分为若干小组,每个小组都有2~3个核心参训人员人
  3. 每个小组需要至少有1人能够维护前端界面,以便在前端自动化测试受阻时调整前端代码
  4. 以自己实际正在开发的产品为练习对象,实施全景实战过程

课程深度

根据学员的基础,此课程可以以不同的深度讲授,由浅入深分别是:

  1. 演示型:讲师以客户的需求,在自己的开发环境中现场操作,学员不实战。(适合4天)
  2. 单案例实战:从学员中抽取一个典型的需求,讲师演示并指导团队完成课程。 (适合4天)
  3. 多案例实战:每组都抽取一个需求,并行接受指导。(适合5天)

大纲脉络

以下内容按时间顺序描述了训练营的整体脉络。除整体脉络外,各个阶段还会穿插相应知识的讲授。

以下描述仅针对其中一个团队,其他团队也各自选定自己的产品,并按顺序执行实践。

  1. 初级篇(大约对应前2天内容,目标是快速体验)
    1. 现场对某个团队的代表性产品进行代码审查,发现潜在需要重构的内容
    2. 在重构前,对这个产品建立自动化单元测试用例(冒烟测试级别)
    3. 在TDD框架下,执行代码重构
  2. 高级篇(大约对应后2天内容,目标是优化效率,系统化测试,全流程质量管理)
    1. 封装单元测试用例,以便快速产生测试用例(为ATDD做准备)
    2. 需求条目化,以便了解有哪些需求需要进行测试(宏观需求)
    3. 对产品的实例化需求进行分解,挖掘出更多正向和反向用例(微观需求)
    4. 从TDD到ATDD:将单元测试的代码进化为验收测试代码
    5. 高级话题总结(限于内容太多,以案例分享的方式进行)

课程受众

项目经理,技术经理,开发骨干,测试骨干

  1. 本课程适合已经对敏捷工程实践有基础经验的学员
  2. 本课程需要在实际工作环境中进行(需要有开发环境,最好有现场部署能力,需学员自行准备)
  3. 学员中的至少1/3应能熟练在工作环境中开发,作为核心参训人员
  4. 学员中至少有2~3人已经能完成对CI环境的基本操作和维护

 

课程大纲

  1. 初级篇(大约对应前2天内容,目标是快速体验)
    1. 代码审查与重构定位
      1. 目标:此阶段完成后,学员发现代码中的不足,并确认重构的大体方向
      2. 理论讲解
        1. 编码的四重境界
        2. 好代码的三级终极奥义
        3. 重构的三种最佳时机
      3.  现场实践
        1. 现场对某个团队的代表性产品进行代码审查,发现潜在需要重构的内容
        2. 代码要求
          1. 代码可以是Java,C#(net),C++
          2. 重构部分代码的长度大约为200~500回车行
          3. 代码最好既有后端也有前端
            1. 有前端才方便界面的自动化测试
          4. 代码最好业务上利于理解
    2. 建立TDD与单元测试
      1. 目标:在重构前,对这个产品建立自动化单元测试用例(冒烟测试级别),以便确认重构前后的产品功能相同
      2. 理论讲解
        1. Selenium分支
        2. 代码单元测试与功能单元测试
      3. 讲师演示
        1. 如何使用MarS快速建立页面自动化测试
      4. 现场实践
        1. 现场编写某个几个功能(页面)的测试用例
          1. 一般为增删改一整套用例,但只包含正向测试
        2. 重点:前端开发人员可能需要持续修改前端代码以便通过测试
    3. 代码重构
      1. 目标:在TDD框架下,执行代码重构;重构后仍能通过之前写的单元测试
      2. 讲师演示
        1. 讲师演示重构的编码次序
          1. 重点:如何保证重构过程每10分钟左右即可编译甚至测试一次
      3. 现场实践(此阶段时间较长)
        1. 学员重构代码
          1. 建立心跳:每测试并通过一次视为一次心跳
          2. 持续检测心跳的频率
  2. 高级篇(大约对应后2天内容,目标是优化效率,系统化测试,全流程质量管理)
      1. 封装单元测试用例
        1. 目标:提升测试用例生产速度,以便快速产生测试用例,为ATDD所需的大量正反向用例做准备
        2. 讲师演示
          1. 讲师演示如何产生模板数据、模板测试,以及如何通过少许修改即可产生大量用例
        3. 现场实践
          1. 学员对测试代码进行重构代码
            1. 将原来的单个正向用例模板化即可
      2. 需求条目化
        1. 目标:建立宏观的需求结构,从而可以确认要编写哪些测试用例
        2. 理论讲解
          1. SEA需求分层方法
            1. 将需求分为Scenario场景,Entity实体,Action行为三层
              1. 实体发现:名词捕捉法
              2. 行为发现:CRUD法
          2. 现场实践
            1. 学员对正在测试的范围(一般只包含一个实体)所在的场景进行需求条目化分解
        3. 实例化需求
          1. 目标:将微观需求实例化,以便产生ATDD所需的测试用例
          2. 理论讲解
            1. 需求实例化方法
          3. 现场实践
            1. 对产品的实例化需求进行分解,挖掘出更多正向和反向用例
        4. 建立ATDD过程
          1. 目标:将单元测试的代码进化为验收测试代码,使得产品随时处于已验收状态
          2. 理论讲解
            1. 测试分层与测试策略
            2. 正向与反向测试
          3. 现场实践(时间较长)
            1. 根据需求实例,编写更多正向和反向测试用例
            2. 保持正向:反向比例为2:4~2:5左右
        5. 高级话题总结(限于内容太多,以案例分享的方式进行)
          1. 目标:建立起敏捷的开发与测试工程流程
          2. 话题:敏捷质量意识
            1. 纵向意识
              1. 质量前移
            2. 横向意识
              1. 破窗原理
              2. 童子军法则
          3. 话题:Scrum的跨职能团队与敏捷工程实践
            1. 提升软件“可测试性”
              1. 可测试性编码规范
            2. 开发与测试分工
              1. 金字塔形知识体系
              2. 自动化测试流程
          4. 话题:QAD量化敏捷开发中的测试度量项及其监控
            1. 基于敏捷功能点的测试度量
            2. 测试覆盖率
            3. 测试密度
            4. 测试用例正反向比例
            5. 测试自动化率
            6. 测试用例生产率
          5. 话题:ATDD,CI,CD之间的关系
            1. 如何做到三者环环相扣
          6. 案例分享:用微服务实现零编码接口自动化测试
          7. 其他可扩展的话题(由电话会议确认)