敏捷开发是一种思想或方法论,就是通过不断迭代开发和增量发布,最终交付符合用户价值的产品
敏捷思想源于最初的《敏捷宣言》:
【敏捷软件开发宣言】
《敏捷宣言》代表敏捷的价值观,敏捷开发原则则帮助我们通过更灵活的方式思考开发方法和组织;具体十二条敏捷开发原则:
敏捷开发模式
‘敏捷测试’ 既不是一种测试方法,又不是一种测试方式,而是为了适应敏捷开发而特别设计的一套完整的软件测试解决方案。这个解决方案应该能够支持持续交付,涵盖所需的、正确的价值观、思维方式、测试流程,一系列优秀的测试实践和更适合的测试环境,以及自动化测试框架和工具。
敏捷测试可以采用目前已有的各种测试方式,与传统测试相比,侧重点有所不同,主要的差别是价值观、思维方式、流程和实践等。
敏捷测试包括(但不限于)的测试活动:在工作中用具体的实例指导开发人员做测试,评审测试想法和假设,开发测试自动化,执行探索性测试,执行验证质量属性的测试,如性能、可靠性、安全性等。
包括 成长性思维、团队对质量负责的思维 上下为驱动的思维与用户思维
成长性思维其宗旨是 “请相信,你可以进步”,拥有成长性思维的人相信人的能力是可以被培养的,总是努力并不断成长;可以接受失败,但不会成为失败者,充满自信,内心有力量,认为今天的失败不代表明天会失败,相信自己的潜力是未知的,一定能克服困难,于是越战越勇,最终走向成功;
拥有成长性思维的测试工程师和拥有固定性思维的测试工程师的对比
敏捷中,我们强调的是共担
测试人员守护质量,提供质量信息,甚至帮助团队改进质量,自然很有价值,但是如果依赖测试来保证质量,那么其实是很难保证质量的,而且成本很高。应该让整个团队关注质量,从需求开始尽可能一次把事情做对,从而构建出高质量的产品,这对企业来讲更有价值效率更高成本更低。
在敏捷测试中要认识到上下文是一直在变的,测试策略和方法也要根据上下文几时调整,不断优化,尽可能达到更有效、更高效的测试状态;上下文可以简单地理解为项目所处的环境,包括人员、风险变化、研发状态和质量标准等。
从用户视角出发,从用户故事角度思考的思维方式;
Scrum 模式下的敏捷测试六层有 7 项活动:测试的分析与定义、测试计划、测试设计、BVT、持续测试、版本验收测试以及测试交付与反思,但是不能理解位 7 个阶段,许多互动都是并行的,包括计划、设计都是贯穿整个迭代的。
持续集成和持续测试
持续集成(continuous integration,CI),在 1998 年就被列入极限编程的核心时间。2006 年 马丁 福勒提出了比较完善的方法和实践:
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,这也就意味着每天可能会发生多次集成,每次集成都通过自动化的构建(测试)来验证,从而尽快发现集成错误。
持续交付(continuous delivery CD ),持续交付是一种能力,能够以可持续方式,安全、快速底把代码编程(包括特性、配置、缺陷和试验)部署到生产环境上,让用户使用。
在持续集成中的测试活动
通过与自动化测试工具/框架的集成,在持续集成环境中执行自动化测试,但是这里需要考虑持续集成中测试范围和提供快速反馈之间的平衡,一般持续集成自动化测试活动应该只包含 单元测试、代码静态测试和 BVT(基本功能验证)
测试左移:代码评审,有助于提前发现缺陷,提高代码规范性进而促进研发团队知识共享。
1)创建 DOD
用户故事 DOD 维度
迭代 DOD 维度
发布版本 DOD 维度
DoD(definition of done) 任务完成的定义。在迭代初为一个迭代建立 DOD,并且在迭代完成时检查完成情况。
2)将用户故事转化成测试场景
3)探索式测试和角色扮演的场景挖掘
4)自动化测试、UI 自动化测试
把软件测试从研发阶段延伸到运维阶段,从研发阶段的持续测试延伸到部署上线后的在线监控和在线测试。
1)在线性能测试
2)AB 测试
运营分析手段根据用户的不同反馈采取进一步的产品设计方案。
3)监控警告系统
4)安全性监控
5)混沌工程
在受控的情况下,提前发现生产环境中的薄弱环节,提高系统的可用性。但可用性的提高不能完全依赖混沌工程,更为重要的是为系统弹性做好设计。
6)智能运维与测试
1)需要度量哪些方面:
测试质量(测试覆盖率,bug 遗漏率)和测试效率(测试用例设计、执行、自动化转化率,缺陷验证周期等)
2)数据驱动改进
作者:京东物流 史松浩
来源:京东云开发者社区