敏捷项目管理如火如荼已流行了10多年,例如 Agile、Scrum 和 SAFe。无论是哪个理论最终都离不开技术落地,都要先后进行需求分析、软件设计、编码实现、单元测试、集成测试、验收测试。当然也会换换名字,例如需求分析换作用户故事拆分。原来大堆的设计和说明文档(依据 CMMI 等理论管理的所谓较正式的项目中大多这样)变得少些,但是编写代码、单元测试、集成测试、验收测试等等该做的还是要做,这些活动只是在时间先后、任务颗粒度大小方面进行了重组。那么敏捷项目和敏捷项目中的敏捷测试的意义和价值在哪里呢?在进入咱们的正式话题敏捷测试之端到端的自动化测试之前,先从整体上简单介绍一下为什么要敏捷测试,敏捷测试为谁服务?先知道“为谁辛苦,为谁甜”。
咱们先从企业的愿景说起,怎么要从企业愿景说起呢?要做一个好的测试人员特别是敏捷团队里面的测试人员不仅要懂测试技术、掌握编程技能,也要了解公司的业务。测试出的产品最终是给客户用的,这个客户有可能是外部客户,也有可能是内部客户。客户要使用我们测试人员测试的软件来做什么?客户为什么愿意使用我们的软件,客户为什么愿意为我们的软件付费呢?那就是我们的软件为客户提供价值,这个价值既可以是提高效率,也可以降低成本,也可以是增加收入等等。这就是精益理论的一个核心思想,是企业敏捷的一个重要思想。
互联网企业或者软件企业的传统的产品导入方式如图1所示。
初看上去,这个新产品导入模式似乎对企业研发新产品特有帮助,有利无害。它说明了怎么一步步把新产品交付到客户手中的。业务部门或企业创始人(小企业或初创企业产品概念一般由老板提出,大型企业才会有业务部门提出)形成企业商业模式概念,并根据该概念和愿景来构想所需要的产品。对于互联网企业或软件企业来说就是形成对一个网站或应用的想法。想法描述给研发人员或部门就开始规划产品,网站应用建设和软件应用开发是一个系统化的工程,经过需求收集、需求分析、概要设计、详细设计、开发编码、单元测试、集成测试、用户验收测试(请见图2)。对于企业级的应用工作量可不小,完成网站或应用建设时间跨度小的几个季度,大的若干年。我曾经历过一家大型国企的金融核心系统开发长达3年之久。如果您是这个产品的负责人,当您的产品经过这么长时间的开发首次准备上线交付给客户时,突然发现没有客户群体!产品特征不是用户想要的!竞争对手在您这么长的开发周期当中已经有2.0产品了又有了巨量的用户群!此时您的感觉如何?如何面对投资人?情何以堪!?
一筹莫展之后,给大家介绍一个理论和模式——愿景驱动开发(Vision Driven Development,简称 VDD),它以精益思想和敏捷理论进行客户开发、应用(Application)研发和部署运维。咱们要讲的敏捷测试就是愿景驱动开发的大开发环中应用研发环(这里应用可以是网站、软件、APP 等等)中的测试环。请见图3愿景驱动开发环。
由于本达人课的主体是敏捷测试,对于客户开发、敏捷开发和部署运维的 DevOps 不详细讲解,只简单介绍以免有的童鞋有点生疏。对这些话题感兴趣的童鞋可以关注后续推迟的相关课程。咱们争取把整个愿景开发知识体系和实践讲完。
客户开发总共包括四个步骤,它们是客户探索、客户验证、客户生成和企业建设(对于已成立企业也可以是产品推广)。
第一步,客户探索。把创始人(产品负责人)的愿景转化为一系列商业模式假设,开发一套测试客户反应的方案。例如低保真最小可行产品(Low-fidelity),这需要研发、测试童鞋用尽量短的周期提交出演示或试用产品。
第二步,客户验证:将在客户探索阶段产生的最小可行产品演示给客户,或将使用结果进行总结和分析,看看创始人(产品负责人)提出的商业模式是否具备可重复性和可升级性。如果不可以就返回客户探索阶段重新开始。
第三步,客户生成:这个步骤负责建立最终的用户需求(搞明白用户需求),导入销售渠道,实现企业或产品的扩张。
第四步,企业建设。这个阶段标志着企业或产品的商业模式已经经过验证,可以按照探索出来的商业模式来建设企业或运营产品了。
敏捷研发理论有很多,愿景驱动开发框架下推荐的是 Scrum 敏捷研发管理,Scrum 敏捷研发管理方式采用短期冲刺定期验收演示的方式快速形成最小可行产品。敏捷研发过程里面咱们测试的同学就要上阵了,要和开发同学一起把产品做得快又好,就要做好测试管理、测试规划设计、从单元测试、集成测试到 UI 端测试,尽量采用自动化提高测试效率。
应用开发(网站/软件/APP)开发完成、测试完成就要进行部署,传统部署方式动辄几天,使用 DevOps 方式可以分分秒秒完成,这才是愿景驱动开发的方式,软件部署之前要想保障软件的质量,当然要测试完成,少了测试童鞋的工作,有几个大拿敢说自己编写的软件可以直接部署生成环境不被用户骂个狗血淋头呢?再次强调了敏捷测试不能少哇!
敏捷测试该怎么做?说起来很简单,做起来不易。例如玩玩 BDD(行为驱动开发),玩玩 TDD(测试驱动开发)。前提是测试质量如何保证?测试童鞋该拥有什么样的技术才能做起来?需求老师(产品经理)、研发童鞋、测试童鞋该如何一起玩才能 Happy 的完成工作?
本文先给出个思路,接下来的课程内容将一步一步带领各位童鞋玩下去,在正式开始学习之前,先带大家整体看下本课程的整体思路与内容结构。
导读:敏捷测试价值
本部分主要对敏捷项目的管理过程和相关理论进行介绍,让学习相关课程的同学对敏捷研发和测试的过程有整体了解。
第01课:管理篇——敏捷测试中的人、技术与过程管理
本部分主要对如何管理敏捷测试当中的要素:人、技术和过程进行介绍,让学习相关课程的同学理解并初步学会如何进行敏捷测试管理。
第02课:设计篇——敏捷项目中用户故事分析与验收条件设计
本部分主要对敏捷项目的需求分析技术进行讲解,让学习相关课程的同学学会如何对敏捷故事进行验收测试设计。
第03课:设计篇——验收测试设计及 UI 自动化测试
本部分主要对用户故事验收的自动化测试设计进行讲解,让学习相关课程的同学学会对用户故事进行自动化测试验收,保证用户故事的验收测试范围和测试质量。
第04课:设计篇——接口测试设计及自动化测试
本部分主要对接口测试设计技术进行讲解,让学习相关课程的同学学会以面向服务(SOA)的方法学会接口测试设计。
第05课:设计篇——单元测试设计及自动化测试 本部分主要对单元测试的覆盖和断言设计进行讲解,让学习相关课程的同学理解高质量单元测试的方法。
第06课:设计篇——持续集成中的自动化测试
本部分主要对敏捷测试与持续集成(CI)相结合的方法进行说明,让敏捷测试真正提高效率。
第07课:技术篇——使用 Junit 实现单元测试
本部分主要对如何利用 Java 技术实现单元测试进行讲解,将涉及目前流行单元测试工具介绍和使用。
第08课:技术篇——WebService 接口测试
本部分主要对接口测试的常用规范和协议以及常用的接口测试框架和工具(如 SOAP UI、HttpClient 和 Rest-Assrued)进行讲解,让学习相关课程的同学学会自动化接口测试。
第09课:技术篇——使用 Selenium 实现 UI 自动化测试
本部分主要对 UI 测试技术进行介绍,并举例说明如何利用 Selenium 实现自动化接口测试。
第10课:方法论篇——行为驱动开发
本部分主要对目前在敏捷测试领域比较流行的测试理论和方法进行介绍,让学习相关课程的同学既了解该理论的特点也能够在具体实践中运用。
第11课:附录——自动化测试源代码
本部分将提供本课程中的全部自动化测试框架代码,让学习本课程的同学可以立马动手实践,真正符合敏捷思想中的"Make your hands dirty"!
相信各位童鞋跟完本达人课都想跃跃欲试。如果有的童鞋所在公司或项目组没有玩敏捷开发和测试这个套路,也可以把学到的知识和技能用到传统的软件测试里面去。敏捷和传统不是水火不容,它们当中的很多技能是可以互通的,它们不是既生瑜何生亮哦。敏捷和瀑布只是指导思想和套路不一样,学会了《易筋经》《九阳神功》,无论什么套路都是绝顶高手!
下面开始咱们的套路:测试准备(做好管理规划),做好测试设计,设计用户验收测试、设计集成测试、设计单元测试,编写单元测试、编写集成测试、编写用户验收测试自动化代码,持续集成 & 部署玩起来就大功告成!
GiTBook:十招玩转敏捷测试
微信公众号: