敏捷开发(Scrum)与敏捷测试
1、敏捷测试流程和传统测试流程
软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,也是对软件产品质量持续的评估过程,其目的是尽快尽早地发现在软件产品(包括阶段性产品)中所存在的各种问题,尽最大可能地消除软件开发过程中所存在的产品质量风险。
传统的软件测试:制定周详的测试计划,测试计划又可能分为单元测试计划、集成测试计划、系统测试计划,甚至验收测试计划,没有评审的测试计划,将无法开展有效的测试互动。瀑布模型的研发流程都是线性方式进行。传统的软件开发模型->瀑布开发模型如下 :
软件测试和软件生命周期的关系如下:



比如:某个软件系统拥有20个功能,传统的瀑布模型,需先将20个功能对应的需求规格说明书编写完成,评审通过后,进行20个功能模块的概要设计与详细设计,设计评审通过后,进行20个功能的编码,20个功能的编码完成后,再组织测试团队进行20个功能的测试,通过后发布上线。
敏捷测试:为了顺应敏捷开发流程而提出的一种测试实践。强调团队成员间的交互,注重跟随需求不断调整的速度。
敏捷开发流程:
敏捷开发有几个关键的概念:迭代故事、用户故事、任务、站立会议、持续集成、最简方案、重构。

比如:Scrum则不同,20个功能,根据用户期望软件实现的商业价值,列出20个功能的优先级,根据优先级分解产品需求列表,比如先做优先级最高的5个功能,分析需求、设计、开发、测试,交付可运行的版本,再开发5个功能,依次迭代,每个迭代过程结束后均能交付增量功能,最终完成产品开发。
敏捷测试流程:


- 分析测试对象:根据待办事项列表、用户故事、需求大纲等资料,总体掌握被测对象情况。
- 分析测试需求:将用户故事或需求大纲作为测试步骤进行测试。
- 设计测试用例:可采用等价类、边界值、正交试验、状态迁移等设计方法进行。(需评审)
- 搭建测试环境:根据研发环境模拟搭建测试环境。
- 执行测试用例:首先对待测功能模块实施冒烟,再次开展测试活动。如遇不完整,及时更新测试用例。
- 跟踪处理缺陷:使用缺陷管理工具进行缺陷处理。一般进行3次甚至更多的迭代过程,多次回归,在规定时间内达到sprint结束可发布或交付的标准。
- 输入测试报告:以数据为依据,衡量被测对象的质量状况,并提交测试结果报告给项目经理或产品经理。一般功能测试报告:被测对象的缺陷数量、缺陷状态统计、缺陷分布、是否通过测试等信息。
- 实施自动化测试:对需求稳定、测试周期长、存在大量重复操作的业务实施自动化测试。
- 实施性能测试:与功能测试一样的流程。
2、敏捷测试与传统测试的区别及注意事项
敏捷测试工作注意事项:
- 明确验收要求:在产品需求明确、细化为项目时,应明确每个用户故事的验收要求。
- 跟踪处理缺陷:化整为零、尽早接入,根据测试需求,可开展单元测试、接口测试。(具备代码阅读、检测能力)
- 及时沟通反馈:加强沟通,及时反馈。
敏捷测试与传统测试的区分:
|
传统测试 |
敏捷测试 |
|
强调测试的独立性,将“开发人员”和“测试人员”角色分得比较清楚。 |
可以有专职的测试人员,也可以是全民测试,即在敏捷测试中,可以没有 “测试人员”角色,强调整个团队对测试负责。 |
|
具有阶段性,从需求评审、设计评审、单元测试到集成测试、系统测试等,从测试计划、测试设计再到测试执行、测试报告等 |
更强调持续测试、持续的质量反馈,阶段性比较模糊。 |
|
强调测试的计划性,认为没有良好的测试计划和不按计划执行,测试就难以控制和管理 |
更强调测试的速度和适应性,侧重计划的不断调整以适应需 求的变化。 |
|
试强调测试是由“验证”和“确认”两种活动构成的 |
始终以用户需求为中心,每时每刻不离开用户需求,将验证和确认统一起来。 |
|
试强调任何发现的缺陷要记录下来,以便进行缺陷根本原因分析,达到缺 陷预防的目的,并强调缺陷跟踪和处理的流程,区分测试人员和开发人员的各自不同的责任。 |
敏捷测试强调面对面的沟通、协作,强调团队的责任,不太关注对缺陷的记录与跟踪。 |
|
更关注缺陷,围绕缺陷开展一系列的活动,如缺陷跟踪、缺陷度量、缺 陷分析、缺陷报告质量检查等 |
更关注产品本身,关注可以交付的客户价值。 在快速交付的敏捷开发模式下,缺陷修复的成本很低。 |
|
鼓励自动化测试,但自动化测试的成功与否对测试没有致命的影响 |
敏捷测试的基础就是自动化测试,敏捷测试是具有良好的自动化测试框架支撑的快速测试。 |
3、敏捷开发
敏捷开发的精华:短、频、快。
敏捷开发:通俗的讲,化整为零,逐个击破,循序迭代的过程中,保证软件系统始终处于可用状态。
- 以用户需求进化为核心,采用迭代、循序渐进的方法进行软件开发;
- 弱化文档,关注用户核心价值;
- 简化流程,关注目标结果。
敏捷开发提倡尽早交付与持续增量提供价值的理念,主导拥抱变化,个性与交互胜过过程与工具,不再受限于条条框框,以结果为导向,持续改进,持续优化。
敏捷开发是一种思想,scrum模型是采用较多的敏捷开发模型,禅道遵循的就是scrum。
4、Scrum开发模型

(2)Sprint Backlog(阶段性任务划分和安排),这时候需要明确具体要实现的功能特性和任务,作为测试,这时候要特别关注“Definition of Done”,即每项任务结束的要求—— 即任务完成的验收标准,特别是功能特性的设计和代码实现的验收标准。ATDD(使用验 收测试驱动开发)的关键一步也体现在这里,在设计、写代码之前,就要将验收标准确定 下来。一方面符合测试驱动开发思想,最初就要把事情做对,预防缺陷;另一方面持续测 试和验收测试的依据也清楚了,可以快速做出测试通过与否的判断。
(3)在每个迭代(Sprint)实施阶段,主要完成 Sprint Backlog 所定义的任务,这时除 了测试驱动开发(TDD)或单元测试之外,应该进行持续集成测试或通常所说的 BVT(Build Verification Test)。而且开发人员在设计、写代码时都会认真考虑每一组件或每一代码块 都具有可测试性,因为测试任务可能由他们自己来完成。如果有专职的测试人员角色,一 方面可以完善单元测试、集成测试框架,协助开发人员进行单元测试;另一方面可以按照 针对新实现的功能特性进行更多的探索式测试,同时开发验收测试的脚本。如果没有专职的测试人员角色,这些事情也是要完成的,只是由整个团队共同完成。虽没有工种的分工,但也存在任务的分工。
(4)验收测试可以由自动化测试工具完成,但一般情况下,不可能做到百分之百的自动化测试。例如易用性测试就很难由工具完成。即使对性能测试,是由工具完成,但还需要人来设计测试场景,包括关键业务选择、负载模式等。敏捷的验收测试和传统的验收测试不同,侧重对“Definition of Done”的验证,但基本的思想和传统开发是一致的,任何 没有经过验证的产品特性是不能直接发布出去的。

4.1 Scrum角色
Scrum开发流程主要涉及3个角色:产品负责人、开发团队和Scrum Master.
4.1.1 产品负责人
产品负责人,一般是产品经理,负责市场调研、分解用户需求,实现用户价值。scrum流程中,产品负责人是管理产品待办事项列表的唯一负责人,其根据用户需求、市场需求规划产品,输入并管理产品待办事项列表。产品待办事项列表管理主要包括以下几点:
1)以用户视角,清晰表述产品待办事项列表条目,细化每个条目所体现的用户价值。
2)确定产品待办事项列表条目优先级,便于更有效地实现用户需求
3)确保产品待办事项列表对产品团队成员及其利益相关方透明、公开
4)确保开发团队对产品待办事项列表中的条目能够理解并理解一致。
4.1.2 开发团队
开发团队成员主要包括项目经理、架构设计、开发、UI设计和测试等专业人员,负责在每个sprint的结尾交付可发布、应用的产品增量,保证每个sprint迭代完成。
敏捷开发团队有以下几个特点:
1)团队决定谁做什么?
2)团队决定如何做,如何实现目标,即团队做技术决策
3)团队需要在确保目标的前提下制定团队内的行为准则
4)团队有义务保持过程的透明性
5)团队其实没有角色之分,只有工作内容的区别
6)团队监督和管理他们的过程和进度
一个结构合理的开发团队成员人数在6~9个人左右,包括产品经理及Scrum Master。
4.1.3 Scrum Master
Scrum Master负责确保Scrum模型被产品团队高效、一致理解并有效实施。Scrum Master服务于敏捷团队,根据不同的服务对象,其主要工作大致包括以下几个方面:
1)服务于产品经理
A.辅助产品经理提取、细化并优化产品待办事项列表
B.协助产品经理传达产品目标,清晰用户价值
C.帮助产品经理理解并实践敏捷,从而推动整个团队掌握敏捷流程
D.在管理者的明确授权下,按需推动Scrum活动,优化研发体系。
2)服务于开发团队
A.指导开发团队构建自组织和跨职能的团队
B.教导并领导开发团队迭代实现用户价值
C.解决敏捷过程中可能出现的问题,并保证流程是正确的
D.在管理层、产品经理的明确授权下,按需推动Scrum活动,优化开发模型
F.培训开发团队,推进Scrum实践
4.2 用户故事
用户故事,Scrum敏捷开发模型中将用户需求,表述成用户故事。用户故事从终端用户的角度描述用户期望实现的业务过程。用户故事主要包含3要素:角色(role)、(Activity)活动、得到什么商业价值(Business Value)。
角色:明确功能或业务流程的使用对象。如作为一个测试负责人,需统计测试团队每个成员每天发现了多少个新的缺陷;作为一个店主,需知道每天每种商品的销售情况等。
活动:表述角色期望实现的功能或业务流程,定义为具体的目标结果,如统计成员每天发现新缺陷的数量;统计某件商品当天的销售量。
商业价值:用户通过活动,希望得到什么的价值体现,如作为一个测试负责人,需统计测试团队每个成员每天发现了多少个新的缺陷,以便于我了解当前的版本质量。
4.3 Sprint
Scrum是一种持续迭代、增量式的产品开发方法,将产品实现分解成若干个Sprint迭代。一个Sprint是指一个1-4周工作周期的迭代开发项目。Sprint最终输出结果是可运行的、可用的、实现用户价值可发布的产品增量。新的sprint在上一个sprint完成发布之后立即启动迭代。
一般很多公司将sprint分解成3周,第一、第二周进行设计、开发,第三周进行测试、回归,同时制定第二个sprint内容,以此类推,不断迭代。
4.4 每日站立会
Scrum敏捷模型中,要求敏捷团队中进行每日站会。每日站立会,即敏捷开发团队所有成员,采用每天固定时间、固定地点、站立开会的形式,通常不超过15分钟。一旦预定时间达到,则停止会议,从而从时间上限制会议时间,从形式上见减少会议环节,尽量避免冗余的主题讨论、问题解决,甚至是争论。同时每日站立会应该根据任务分配来召开会议,即以任务驱动,而非角色驱动。敏捷开发模型更强调的是个体交互过程和工具,注重面对面的沟通。每日站立会常规的会议内容包括以下几点:
1)总结过去,发现问题,提出改进措施
2)了解现状,明确下一步目标
3)任务分配,确定当天工作计划
5、敏捷开发中主要的测试活动
|
敏捷开发的主要活动 |
测试活动 |
|
用户故事设计 |
寻找隐藏的假设 |
|
发布计划 |
设计概要的验收测试用例 |
|
迭代 Sprint |
估算验收测试时间 |
|
编码和单元测试 |
估算测试框架的搭建 |
|
重构 |
详细设计验收测试用例 |
|
集成 |
编写验收测试用例 |
|
执行验收测试 |
重构验收测试 |
|
Sprint 结束 |
执行验收测试 |
|
下一个 Sprint 开始 |
执行回归测试 |
|
发布 |
发布 |
6、敏捷开发中的测试人员素质和职责
1、敏捷开发过程中测试人员的素质
敏捷开发过程中测试人员在不同组织中定位不同:测试开发(Test Developer)、质量分析员(Quality Analyst)、软件质量工程师(Software Qulity Engineer)等。
- 具有质量检测和编写代码的能力–> 测试开发
- 具有防止缺陷 (Quality Assurance) 和质量控制 (Quality Control) 的能力–> 质量分析员
- 具有开发和执行测试程序的能力 -> 软件质量工程师
2、敏捷开发过程中测试人员的职责
- 定义质量 (Define Quality):这应该是软件测试人员的基本职责。敏捷方法鼓励测试人员在 Sprint 计划的时候直接与客户交流,从自己的经验出发,共同为产品功能制定质量要求。
- 交流缺陷(Communication):敏捷过程强调团队中的交流。开发人员经常会专注于重要而新奇的功能,测试人员应该抓住细节,寻找设计中的“missing door”;另外,开发人员使用单元测试来保证产品的基本质量,测试人员可以使用验收测试(Acceptance Test)来鉴定客户需求与实际成果之间的不一致性。
- 及时反馈 (Feedback): 敏捷过程强调简单而高效。测试人员需要及时反馈产品目前的质量问题。这样一来,团队才可以立刻着手解决。如果传统的流程是一周汇总一次状态的话,敏捷流程要求每天汇总质量问题。在我们的项目中,内部的测试报告会以网页的形式显示在内部站点上。每个团队成员能够随时获取。另外,我们的测试框架提供自助测试 (Self-assistant Test):通过点击测试用例列表中的某个具体用例,开发人员不需要中断测试人员的工作就可以重现缺陷。
敏捷开发(Scrum)与敏捷测试的更多相关文章
- 敏捷开发 Scrum 综述
敏捷开发 Scrum 综述 这一星期学习了敏捷开发,然后阅读了相关的书籍,从网上查找了很多相关的资料,对敏捷开发scrum有了更加深刻了理解,对敏捷开发做了如下总结: 一.什么是敏捷开发? 敏捷开发提 ...
- 杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》
课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲 师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Developmen ...
- 敏捷开发--scrum
1. 请简述一下什么是敏捷开发(Agile Development),以及什么是持续集成. 敏捷开发是一种以人为核心.迭代.循序渐进的开发方法.在敏捷开发中,软件项目的构建被切分成多个子项目,各个 ...
- 【转】敏捷开发 Scrum 总结
转:http://www.open-open.com/lib/view/open1330413325514.html 最近把之前学习 Scrum 的资料整理为一篇文档,在接下来的团队和项目开发中,根据 ...
- 敏捷开发— —Scrum 学习笔记
敏捷开发模式是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷" ...
- 敏捷开发-Scrum 真实
近期研究前 Scrum 数据编译的文件,在接下来的团队和项目开发.项目根据该引入 Scrum 一些练习,提高团队成员和项目之间的交付质量的合作. 参考资料: <轻松Scrum之旅-敏捷开发故事& ...
- 敏捷开发 scrum管理
项目准备阶段 1.产品经理将整体项目拆分成不同的单独模块,每个模块尽量细化到能够自成一体.例如app的登录注册模块,不能仅仅就是登录注册这两个界面,而是要将所有与这有关的需求整合到一块.要达到的效果就 ...
- 敏捷开发Scrum
- 敏捷开发Scrum学习
官方:http://baike.baidu.com/link?url=VGFzdJpuHX3g90kIX6l1QABWMmBNyf30sTGuEcJ6OJVMq0Cot1G9Imbu1gls-xpI6 ...
随机推荐
- 402. 移掉K位数字
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k.num 不会包含任何前导零.示例 1 : 输入: num ...
- 栈(Stack)和队列(Queue)是两种操作受限的线性表。
(线性表:线性表是一种线性结构,它是一个含有n≥0个结点的有限序列,同一个线性表中的数据元素数据类型相同并且满足"一对一"的逻辑关系. "一对一"的逻辑关系指的 ...
- 04 . Vue组件注册,组件间数据交互,调试工具及组件插槽介绍及使用
vue组件 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的 ...
- mysql之索引组织表
1.二叉树/平衡树.B-tree.B+tree.B*tree 树:最上一层是根节点.最底下一层是叶子节点.(一般左边节点小于右边节点) 二叉树:每个节点最多只能有两个分支,一般只用于教材.二叉树的深度 ...
- thinkphp5.1与layui table表格使用
第1部分:layui 的 html代码, 即第2部分 thinkphp 控制器方法 index/Dataz/returnShowUser 的view页面 <!DOCTYPE html> & ...
- sync_with_stdio(false)和cin.tie(NULL)
std::ios::sync_with_stdio(false) 这个函数相当于是否兼容stdio的开关,默认为true C++为了兼容C,保证程序在使用了std::printf和std::cout的 ...
- HDU100题简要题解(2050~2059)
HDU2050 折线分割平面 题目链接 Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以 ...
- FairyGUI编辑器的和unity里的Obj对应关系
1.在FairyGUI官网上下载好unity的工程,用FairyGUI编辑器打开它的官方案例 2.在FairyGUI编辑器和Unity中,从一个最简单的示例"Bag"着手. ...
- [web安全原理分析]-XEE漏洞入门
前言 1 前言 XXE漏洞 XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致 ...
- 用Camtasia设计微课视频封面,让课程更加高大上
在网络时代,尤其现在疫情影响只能线上学习,微课的应用前景已经越来越广了.但是想把微课做好,只有内容与录制精细是不够的,还需要一个精美的封面来吸引学生.接下来,小编就用微课制作软件Camtasia 20 ...