首页 > 其他分享 >细说敏捷测试-敏捷实战中的探索

细说敏捷测试-敏捷实战中的探索

时间:2023-06-19 15:36:17浏览次数:28  
标签:实战 集成 细说 迭代 思维 用户 测试 敏捷

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)数据驱动改进

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

作者:京东物流 史松浩

来源:京东云开发者社区

标签:实战,集成,细说,迭代,思维,用户,测试,敏捷
From: https://www.cnblogs.com/jingdongkeji/p/17491269.html

相关文章

  • Compose能拯救安卓开发吗?Jetpack Compose入门到精通(附资料)含实战、附Demo
    JetpackCompose简述JetpackCompose是用于构建原生AndroidUI的现代工具包。JetpackCompose使用更少的代码,强大的工具和直观的KotlinAPI,简化并加速了Android上的UI开发。这是AndroidDevelopers官网对它的描述。由于Compose基于Kotlin构建,因此可以与Java编程语言完全互操作,并......
  • Jetpack从入门到精通全家桶(含项目实战 附Demo)
    前言开发应用程序就像搭积木。我们对产品业务及功能模块的划分和封装,就像在搭建积木一样。积木不能太大,这不利于修改和拆解;积木也不能太小,否则管理起来可能会很混乱。只有基于稳健、合理的架构,项目才能轻松应对需求的变化,才有可能健康成长。没有良好架构的应用程序,就像没有搭好底......
  • ModelBox实战开发:RK3568实现摄像头虚拟背景
    摘要:本文将使用ModelBox端云协同AI开发套件(RK3568)实现摄像头虚拟背景AI应用的开发。本文分享自华为云社区《ModelBox开发案例-RK3568实现摄像头虚拟背景【玩转华为云】》,作者:AI练习生。本文将使用ModelBox端云协同AI开发套件(RK3568)实现摄像头虚拟背景AI应用的开发。最终运......
  • 【Kotlin】史上超强二合一,Kotlin从入门到精通+高级Kotlin强化实战(附Demo)
    前言Kotlin作为谷歌官方支持的编程语言,目前,不少公司的Android开发工程师岗位表示要有Kotlin基础,同时这也让Kotlin成为了很多人的学习对象。而Kotlin作为Android开发的首选语言,为开发者提供了大量的语法糖和技巧,空指针异常情况也得到了明显改善,使用起来更加顺手,能让开发者更专注于......
  • 快速入门|Flutter完整开发实战详解 谷歌架构师独家分享
    前言这几年在大前端的开发领域,选择跨端方案的公司和部门越来越多,一方面是跨平台的前端框架越来越成熟,另一方面也是因原生开发者正逐年减少。所以,在当下掌握一门跨平台的技术栈还是很有必要的,无论从广度还是从深度都会有所帮助。就目前来说有很多主流的跨平台框架,就比如:Flutter、Rea......
  • 实战!如何在 Jetpack Compose 中拥有一个与众不同的 Modifier
    步入正题!相信大家既然已经学习了Compose,那想必也非常熟悉如何使用Modifer了,由于Compose被Android团推设计的非常容易上手,所以有不了解如何使用的朋友可以去看看文档,即可轻松掌握基础的使用!拥有一个与众不同的Modifier,其实就是实现一个特别功能的Modifier,然后使用它去修饰我们......
  • 谷歌内部流出Jetpack Compose最全上手指南,含项目实战演练!
    简介JetpackCompose是在2019Googlei/O大会上发布的新的库。Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速度。Compose并不是像RecyclerView、ConstraintLayout这种做了一个或者几个高级的UI控件,而是直接抛弃了我们写了N年......
  • 又一开源项目爆火于GitHub,Android高级插件化强化实战
    一、插件化起源插件化技术最初源于免安装运行Apk的想法,这个免安装的Apk就可以理解为插件,而支持插件的app我们一般叫宿主。想必大家都知道,在Android系统中,应用是以Apk的形式存在的,应用都需要安装才能使用。但实际上Android系统安装应用的方式相当简单,其实就是把应用Apk......
  • Kotlin版本的WanAndroid项目实战(三):Kotlin的集合
    集合概述学习方法:扫描一遍下述表格中集合相关的有哪些操作,具体使用时再可以详细去查构造集合Kotlin里面添加了可变集合的概念,目前只是一种接口级别的限制,底层实现还是可变的集合,不是线程安全的,还是可以通过Java代码修改内部元素迭代器(1)Iterable接口的继承者(包括Set与......
  • Kotlin与Java互调原理项目实战
    数天前我将我java开发的工程,全部转换成了kotlin形式的工程。如果你也想做,本身也有一定的java开发安卓程序的功底。本文将比较适合你。创建kotlin工程,拷贝类文件xml文件等核心文件到工程目录下,形成一个kotlin底子的java代码组成的工程,然后通过ctrl+shift+alt+k快捷代码逐个转换......