如何从架构和测试推动敏捷开发_课程大纲_Android

**                                                                    **


课程名称:敏捷下的架构设计、测试与质量管理方法

----------如何从设计与测试来推动敏捷开发


指导老师:高焕堂

举办单位ADT学院

开课日期:20158月13-16日(地点:深圳南山區)

相关询问:高老( 请寄:misoo.tw@qq.com )

培训期间:4(24小时)

课程说明:


设计、测试与开发

----至今,许多敏捷团队都还在摸石头过河的处境里,甚至有些陷入进退维谷的困境里。过去,我们也曾经走了许多弯路,得到的教训是:仅仅专注于敏捷流程管理与代码开发(如桥面)是不够的。其幕后的架构设计和测试(桥墩)的改进才是充分条件。

如何从架构和测试推动敏捷开发_课程大纲_高煥堂_02

----调整测试视角和策略,是推动敏捷“开发”的有效着力点。此外,调整架构设计视角和策略,正是发挥最大着力的杠杆点。

如何从架构和测试推动敏捷开发_课程大纲_敏捷_03

从测试角度推动敏捷

----敏捷本质上就是测试驱动的迭代过程。然而。在版本快速上线的时程上,无法保质量;开发习惯试自己的代码,丢给测试人员的版本经常通不过冒烟测试;产业的敏捷黄金比例(10:1)的开发测试比建议缩减测试人员。此外,敏捷最佳实践需要100%的代码覆盖率能力要求大幅提高,开发者又喜欢写单元测试,导致敏捷迭代的发动机(即测试)熄火了;再有能力的敏捷教练或项目经理也无用武之地。因此,调整测试视角和策略,例如注重实效的单元测试,全生命周期性能工程等,是推动敏捷“开发”的有效着力点。由于敏捷下的设计、测试与开发三者是息息相关的,如下图所示:

如何从架构和测试推动敏捷开发_课程大纲_敏捷_04


----因此,调整架构设计视角和策略,恰可找到最佳的杠杆点,让测试发出最大的动能,驱动敏捷开发流程。


从架构设计角度推动敏捷

----架构是代码的骨架,代码是架构的外貌。在敏捷的快速跌代过程中,敏捷性低的架构师,一心一意追求稳定、可靠、不变的结构,盼望<以不变应万变>,导致团队失去敏捷性。由于传统架构设计视角偏于抽象思维,致力于抽象出稳定、可靠、不变的共同性架构;做为应用发展的基础。然而,这项稳定架构无法迅速得到,不是“足够好”而已,这违背敏捷的Simple Solution的要求,不易迅速推动敏捷迭代。经过多年的观察反思、实务淬炼,我们发现了,调整架构师的思维视角,明确定义接口、迅速落实为代码,然后藉由测试来支持架构设计阶段的敏捷迭代过程,产出可靠的系统架构。此架构则提供高度的重构自由度,来支持测试与开发的变更灵活性,发挥杠杆作用,实现项目的快速、高质量、灵活交付等,有效推动敏捷。

----随着互联网的普及信息普遍共享,商场环境变化加速,业务不停探索,对软件敏捷交付要求大增,比的是哪个团队反应更快,拼的是哪个团队交付更持久稳定。期盼您能掌握“测试”着力点,并透过架构“设计”杠杆,成为敏捷高手,推动您的敏捷开发,提升产品竞争力。

----本课程的设计,以情境体验的Workshop方式,采用理论与实际案例相结合的授课模式,让学员熟悉如何调整架构设计与改进测试方略,让架构、开发与测试三者紧密融合,知道如何藉由架构设计的杠杆作用,发挥测试得着力点,有效推()动敏捷,并让它如滚雪球一般,极大化敏捷价值观及其商业效益。


培训对象:

  • 支持敏捷项目的架构设计、测试和QA相关人员

  • 对于<从架构和测试推动敏捷开发>新观念和技术有兴趣者


课程内容:


第一天

时间

主题

内容

备注

第一天

上午

从架构设计和测推动敏捷开

  • 简介架构设计与测试面临的困境

  • 面对移动开发时,传统架构设计的困境:接口不明确、不能迅速落实成代码等

  • 面对移动开发时,传统测试的困境:成本高、周期长,疏于用户体验测试

  • 敏捷架构设计的新方法(基础)

  • 关键敏捷测试的实践方法;开发自测是有效手段,成本低,见效快

  • 质量是设计出来的。基于架构设计与测试框架,搭建适合敏捷开发的整体质量管控平台

  • 跨平台架构设计及测试策略

  • 用户场景的设计和测试方法;测试用户场景下使用困难,以保证用户体验的优越性




第一天

下午

敏捷设计&测试的实践流程

  • 从敏捷原则谈起

  • 谜题核心:最简方案(Simplest Solution)从那里来?

  • 敏捷下设计的蜕变

  • 架构设计的基本造形:以EIT代码造形

  • EIT造形清晰表述接口设计

  • 接口迅速落实为代码,支持敏捷测试

  • 敏捷设计&测试有效实践敏捷开发




第二天

时间

主题

内容

备注

第二天

上午

敏捷架构设计的案例分享

--从架构提升

Scrum流程的顺畅性








[从敏捷架构师出发,改善敏捷流程]


  • 案例简述:本案例是从一个新视角去观察Scrum等敏捷开发流程的常见困境,这个视角就是:架构是系统的骨架,架构设计流程的敏捷性大幅度影响了系统开发流程的敏捷性。

  • 阐述内容:本案例将阐述敏捷架构师的思维和技能,以及他如何让架构设计更敏捷,也让项目团队更敏捷。

  • 如何达到目标:本案例一开始就试图让架构设计流程先敏捷起来,将代码视为架构的外貌,因而代码开发流程也因而敏捷起来。

  • 案例背景:许多主流敏捷开发方法(Scrum)专注于项目流程与开发管理,却忽略了架构师的敏捷性。

  • 怎么做到? 过去曾经走了许多弯路,得到的教训是:仅仅专注于项目流程与代码开发是不够的。(这部分留待课堂上面对面深度汇谈)

  • 案例启示:本案例可让学员关注于架构设计流程敏捷的重要性;也让架构师们体会到传统追求<稳定、可靠、不变>的架构设计思维,已经不符合敏捷开发的潮流了。



第二天

下午

敏捷架构&测试实践Workshop

[主题1: Android软硬整合架构设计&测试实践]

  • 运用Mock锁定测试目标及范围

  • 客制化整合测试框架(Framework)

  • 活用Android整合测试工具(Tools)



[主题2: 跨平台设计&测试实践]

  • 跨芯片平台设计

  • Android碎片化平台设计

  • 建立自己中间件平台(Middleware)

  • 跨平台自动化测试方案设计




第三天

时间

主题

内容

指导

第三天

上午

测试概念、挑战

及策略

以移动智能设备为例




[概念]

  • 单元、整合与UI测试

  • 自动化单元测试和效能&负载测试工具

  • 功能测试与Story测试

  • UsabilityUAT测试

[移动设备的挑战]

  • 显示屏小、内存量小

  • CPU能量小、电池容量小

  • 多样化的OS平台

  • 一样App,随厂商而异

[策略]

  • 如何选择移动设备的自动化测试工具

  • 如何订定自动化测试策略(Strategy)

  • 如何协助开发者自测?

  • 如何配合敏捷交付?

  • 如何配合架构设计的接口测试?



第三天

下午

敏捷测试的框架与工具

-- Android智能平台为例


[策略]

  • 开发段的:Uint测试、Monkey测试和UI测试

  • QA段的Crowd测试、Stress测试

  • 生产段的Monitoring测试

[工具]

  • Android的测试点

  • Monkey runner的概念和应用场景

  • Monkey runner实例讲解录制脚本和经典demo

  • AndroidInstrumentation框架

  • Robotium的介绍及环境搭建

  • Robotium官网NotePadrobotium的演示




第四天

时间

主题

内容

指导

第四天

上午

Android+敏捷测试()

--智能设备测试深入实战

[实战]

  • BaseLib类设计目的概述

  • Android读取外部文件的方式

  • ObjectStore类设计目的概述

  • 如何在ObjectStore中进行变量的定义

  • 设计该类后如何应对AppUI对象的变化

  • NewSolo类设计目的概述

  • 如何在NewSoloAPI的编写规范

  • Junit提供校验API的不足

  • 重写junit 校验API,提供截屛和向report中写日志的功能

  • 重写API后的架构的改善

  • BussinessLib类的设计目的和应用

  • login为例讲解如何设计业务API

  • InputDataStore类的设计目的和应用

  • VPDataStore类的设计目的和应用

  • API描述信息类的设计目的和应用

  • 截屏类的设计目的和应用



第四天

下午

Android+敏捷测试(二)

--云测试深入实战

[云测试概念]

  • 云测试内容,介绍百度云,易测云,Testin

  • 易测云实例讲解

  • Radar:安卓应用测试录制工具

[实战]

  • JDKLoggerHandlerFormatter的定义和使用方法

  • ReportLib中的具体方法介绍

  • 如何在newVerifyEquals方法中调用接口logWriter来实现与ReportLib的通信

  • 把架构编写人员(精通代码设计),自动化用例编写人员(了解代码),以及用例执行人员(不懂代码)分开

  • UI对象通过自定义变量的方式赋值,增强了脚本的易读性

  • 通过封装soloAPI,使其更加健壮

  • 把常用的业务场景封装成业务方法,便于常用业务的复用

  • 把经常需要修改的内容(例如:登陆用户名和密码)保存在外部文件中,避免了脚本执行人员对测试脚本代码的修改

  • 生成Debug级别的log,使自动化脚本调试人员方便调试程序7.生成回归级别的测试报告,便于不懂脚本的人员查看测试结果

  • 引用Suite执行多个脚本




讲师简介:


高焕堂老師

----高焕堂老师毕业于台湾淡江大学管理科学研究所和美国科罗拉多州(U.of Colorado)大学信息管理研究所。浸淫于软件编程和架构设计,长达37年之久;在嵌入式产品上与日本Minolta等大公司长期合作,至2013年退休。25年来高老师专精于A(投资决策前)架构设计,退休后致力于设计思考与IT架构设计的结合,以其丰硕实践经验、策略思考技术和设计创新能力,提供给新一代架构师宝贵的借镜,培养其思考技术、开拓其创新视野、实践其产品策略。

   在策略创新和思考技术方面,高焕堂老师早已享誉IT产业,被尊称为”台湾架构设计大师”;此外在设计领域学术界也拥有高度声誉。虽然年近60岁了,他的”IT+设计”思考技术仍然宝刀未老、思虑清新。例如,于2012年,率先发现了IT产业界数十年来深具突破性的EIT软件设计造形;并于2013年获得国际学术界的高度认可,应邀于<2013清华设计管理国际大会>进行论文发表。


~ End ~