细说敏捷测试-敏捷实战中的探索 | 京东云技术团队

京东云开发者
• 阅读 341

1 什么是敏捷?

敏捷开发是一种思想或方法论,就是通过不断迭代开发和增量发布,最终交付符合用户价值的产品

敏捷思想源于最初的《敏捷宣言》:

【敏捷软件开发宣言】

  • 个体和互动高于流程和工具;
  • 工作的软件高于详尽的文档;
  • 客户合作高于合同谈判;
  • 响应变化高于遵循计划;

《敏捷宣言》代表敏捷的价值观,敏捷开发原则则帮助我们通过更灵活的方式思考开发方法和组织;具体十二条敏捷开发原则:

  1. 我们最重要的目标是通过持续不断地快速交付有价值的软件使客户满意;
  2. 欣然面对需求变化,即使在 开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
  3. 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
  4. 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
  5. 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
  6. 不论团队内外,传递信息效果最好、效率最高的方式是面对面交谈。
  7. 可工作的软件是进度的首要度量标准。
  8. 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其不掉稳定、延续。
  9. 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
  10. 以简洁为本,它是激励减少不表要工作量的艺术。
  11. 最好的架构、需求和设计出自自组织团队。
  12. 团队定期地反思如何提高成效,并依此调整自身的举止表现。

敏捷开发模式

细说敏捷测试-敏捷实战中的探索 | 京东云技术团队)

2 什么是敏捷测试?

‘敏捷测试’既不是一种测试方法,又不是一种测试方式,而是为了适应敏捷开发而特别设计的一套完整的软件测试解决方案。这个解决方案应该能够支持持续交付,涵盖所需的、正确的价值观、思维方式、测试流程,一系列优秀的测试实践和更适合的测试环境,以及自动化测试框架和工具。

敏捷测试可以采用目前已有的各种测试方式,与传统测试相比,侧重点有所不同,主要的差别是价值观、思维方式、流程和实践等。

敏捷测试包括(但不限于)的测试活动:在工作中用具体的实例指导开发人员做测试,评审测试想法和假设,开发测试自动化,执行探索性测试,执行验证质量属性的测试,如性能、可靠性、安全性等。

2.1 传统测试和敏捷测试的差别

细说敏捷测试-敏捷实战中的探索 | 京东云技术团队)

3 敏捷思维方式

包括 成长性思维、团队对质量负责的思维 上下为驱动的思维与用户思维

3.1 成长性思维

成长性思维其宗旨是“请相信,你可以进步”,拥有成长性思维的人相信人的能力是可以被培养的,总是努力并不断成长;可以接受失败,但不会成为失败者,充满自信,内心有力量,认为今天的失败不代表明天会失败,相信自己的潜力是未知的,一定能克服困难,于是越战越勇,最终走向成功;

拥有成长性思维的测试工程师和拥有固定性思维的测试工程师的对比

细说敏捷测试-敏捷实战中的探索 | 京东云技术团队)

3.2 对团队质量负责的思维

敏捷中,我们强调的是共担

测试人员守护质量,提供质量信息,甚至帮助团队改进质量,自然很有价值,但是如果依赖测试来保证质量,那么其实是很难保证质量的,而且成本很高。应该让整个团队关注质量,从需求开始尽可能一次把事情做对,从而构建出高质量的产品,这对企业来讲更有价值效率更高成本更低。

3.3 上下文驱动的思维

在敏捷测试中要认识到上下文是一直在变的,测试策略和方法也要根据上下文几时调整,不断优化,尽可能达到更有效、更高效的测试状态;上下文可以简单地理解为项目所处的环境,包括人员、风险变化、研发状态和质量标准等。

3.4 用户思维

从用户视角出发,从用户故事角度思考的思维方式;

4 scrum 模式下的 测试流程

细说敏捷测试-敏捷实战中的探索 | 京东云技术团队)

Scrum模式下的敏捷测试六层有7项活动:测试的分析与定义、测试计划、测试设计、BVT、持续测试、版本验收测试以及测试交付与反思,但是不能理解位7个阶段,许多互动都是并行的,包括计划、设计都是贯穿整个迭代的。

  1. 测试分析与定义,对用户故事进行需求评审,为每一个用户故事建立验收标准,确保它具有可测试性,并从业务需求触发,了解要做哪些测试,初步界定测试范围
  2. 测试计划,这里指当前迭代的测试计划,包括进一步明确具体的业务要求和质量标准,制定测试目标,明确测试范围和测试项,分解测试字母表识别出测试风险并制定测试策略等。计划是一个覆盖整个迭代的过程,也就是前面所说的,要基于上下文不断调整或优化测试计划,只是在迭代计划时先写出初步的测试计划,按照计划开始执行后续的测试过程。
  3. 测试设计,这里强调的是粗粒度的测试设计,包括事件流图、状态图等
  4. BVT(build verification testing)版本构建测试,每日构建或代码提交触发的软件版本构建,需要对软件版本进行自动验证,只有高成功率的持续集成才有意义。
  5. 不但包括传统的冒烟测试,也包括代码扫描,检查代码规范性,安全性等 静态代码分析。
  6. 持续测试是在迭代中的主要活动,包括设计评审、单元测试、用户故事实现的验证和集成测试等,也包含持续的新功能测试和持续的回归测试,以及性能测试、安全测试、兼容性测试等专项测试
  7. 版本验收测试。敏捷的验收测试通常是指对用户故事的验收标准验证。
  8. 测试交付与反思。测试交付还包括质量分析,并要回顾、审视整个测试过程,找到测试不加的地方,从而在下一个迭代版本中改进。

5 敏捷模式下如何开展测试?

5.1 构建强大的敏捷测试基础设计

持续集成和持续测试
持续集成(continuous integration,CI),在1998年就被列入极限编程的核心时间。2006年 马丁 福勒提出了比较完善的方法和实践:
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,这也就意味着每天可能会发生多次集成,每次集成都通过自动化的构建(测试)来验证,从而尽快发现集成错误。
持续交付(continuous delivery CD ),持续交付是一种能力,能够以可持续方式,安全、快速底把代码编程(包括特性、配置、缺陷和试验)部署到生产环境上,让用户使用。

在持续集成中的测试活动
通过与自动化测试工具/框架的集成,在持续集成环境中执行自动化测试,但是这里需要考虑持续集成中测试范围和提供快速反馈之间的平衡,一般持续集成自动化测试活动应该只包含 单元测试、代码静态测试和BVT(基本功能验证)

细说敏捷测试-敏捷实战中的探索 | 京东云技术团队)

测试左移:代码评审,有助于提前发现缺陷,提高代码规范性进而促进研发团队知识共享。

5.2 敏捷测试的设计和执行

1)创建DOD
用户故事DOD维度
迭代DOD 维度
发布版本DOD维度

DoD(definition of done) 任务完成的定义。在迭代初为一个迭代建立DOD,并且在迭代完成时检查完成情况。

  • 所有代码通过静态检测,严重问题都已修改;
  • 所有新增代码得到人工评审;
  • 所有完成的用户故事都有对应的测试用例;测试用例都已执行;
  • 所有完成的用户故事得到Product Owner的验证。
  • ……

2)将用户故事转化成测试场景
3)探索式测试和角色扮演的场景挖掘
4)自动化测试、UI自动化测试

5.3 测试右移

把软件测试从研发阶段延伸到运维阶段,从研发阶段的持续测试延伸到部署上线后的在线监控和在线测试。

1)在线性能测试

  • 全链路压测
  • 在线性能监控
  • 流量回放

2)AB测试
运营分析手段根据用户的不同反馈采取进一步的产品设计方案。

3)监控警告系统
4)安全性监控
5)混沌工程

在受控的情况下,提前发现生产环境中的薄弱环节,提高系统的可用性。但可用性的提高不能完全依赖混沌工程,更为重要的是为系统弹性做好设计。

6)智能运维与测试

6 分析测试结果和评估测试工作的质量

1)需要度量哪些方面:
测试质量(测试覆盖率,bug遗漏率)和测试效率(测试用例设计、执行、自动化转化率,缺陷验证周期等)

2)数据驱动改进

  • 做好测试过程、产品质量相关的数据收集工作
  • 做好数据的抽取与分析
  • 度量结果的数据可视化呈现
  • 更深入地进行数据挖掘,找出更有价值的数据。

作者:京东物流 史松浩

来源:京东云开发者社区

点赞
收藏
评论区
推荐文章
【敏捷研发系列】前端DevOps流水线实践
软件开发从传统的瀑布流方式到敏捷开发,将软件交付过程中开发和测试形成快速的迭代交付,但在软件交付客户之前或者使用过程中,还包括集成、部署、运维等环节需要进一步优化交付效率。因此Devops的产生将敏捷的相关理念扩展到运维侧,从而将产品、设计、开发、测试、运维团队更紧密的结合在一起。而从交付给客户产品视角看,前端研发通常又是在整个产品设计开发链条的最终节点,意味着前端团队受到上游变更的影响是最大的,并且从经营理念效率出发,提升前端交付效率是至关重要的。
ArchKeeper (开篇):架构守护平台的问题与理念
在敏捷开发环境下,系统通过迭代增量的交付价值,系统架构也是如此。团队不可能在项目之初就建立完美的系统架构,系统架构应该随着系统迭代不断演进。架构演进和架构腐化是看待架构的不同视角:架构腐化着眼于现状,架构演进侧重于未来架构腐化不可避免,随着时间流转腐化现象必然发生。而我们需要做的是:通过某种方式及早发现和修正
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
Scrum 实操流程
Scrum是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开发过程。敏捷的原则和方法必须在每天的实践中落地,对人和管理要求高。所以有scrummaster为了适应变化,敏捷的迭代周期短特征1.迭代开发:这意味着你应该重复开发过程。2.增量交付:意味着你应该一步一步地创建产品的“可用”子集
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
敏捷开发 敏捷开发
7个月前
敏捷开发模式下如何快速提升产品质量
在团队选择敏捷开发模式下,敏捷测试部分也同以往的软件测试流程有所不同。如何平衡敏捷的快速迭代开发和解决Bug的矛盾?
敏捷开发 敏捷开发
4个月前
敏捷激流中的测试
敏捷开发浩浩荡荡流行了20多年,彻底改变了软件研发行业。如果说敏捷开发对产品、开发和测试这三种类型的工作哪一个影响最大,我会选择测试。因为敏捷开发模式下迭代周期缩短,很多问题会更集中地暴露出来,比如用户故事拆分往往不够细致精确、开发和测试无法并行展开、开发
敏捷开发 敏捷开发
4个月前
测试工程师在敏捷项目中扮演什么角色?
敏捷团队中的测试人员主要负责执行各种测试,以满足“已完成”的定义,从而为团队在重复迭代中努力交付的持续价值创造做出贡献。对于测试人员来说,拥有敏捷的心态是至关重要的,如果没有敏捷的思维方式,他们可能就不能果断地计划、划分优先级并执行他们的任务,因此会无意中
敏捷开发 敏捷开发
4个月前
实践了上万次,原来这些才是敏捷测试需要遵循的原则
与传统的阶段性测试不同的是,敏捷测试能够将测试集成到整个软件开发过程中,尽早、及时地发现缺陷,帮助交付有价值的高质量产品。传统测试与敏捷测试的比较大的区别在于:在瀑布方法中,测试只能在开发结束后进行;在敏捷方法中,测试是贯穿在整个开发过程中的,同时可以在需