热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

02敏捷开发测试流程

一个典型的敏捷开发测试流程为了详细讲解不同阶段或职位(Title)的测试开发所做的工作有哪些不同,我以当前流行的敏捷模式下的软件开发测试

一个典型的敏捷开发测试流程

为了详细讲解不同阶段或职位(Title)的测试开发所做的工作有哪些不同,我以当前流行的敏捷模式下的软件开发测试生命周期为例来讲解。
开发测试流程图

如上图所示,你可以看到,一个软件产品的立项是从软件产品规划(图片顶部)开始的,一般我们根据业务目标把规划的软件产品需求项,基于实际情况(业务目标、公司战略等)拆分为多个 Backlog 进行进一步细化,即 Backlog Grooming

细化之后的需求按照优先级和发布规划,会分为多个 Sprint 进行开发、测试、上线。在每一个 Sprint 内,需求会被拆分为一个个的开发和测试任务,开发人员完成 Task 开发后,就进行自测。

自测没问题,通过提交 Pull Request 的方式,请求提交代码到 Master 分支(这个动作对应于提交测试),请求提交后,代码托管平台比如 GitHub、GitLab 等会触发由 Pull Request 引起的自动构建。之后,自动构建会引导持续集成平台,把开发提交的最新代码打包成可用的测试版本。

同时,开发通过更改 Jira Task 状态的方式(或者平台自动更改 Jira 状态、开发邮件/口头通知等方式),提醒测试人员进行测试验证。

软件测试版本生成后,有两个测试内容会同时进行:

持续集成平台会触发预设的测试脚本进行自动化测试验证(一般是整个产品的主流程冒烟测试);

测试人员根据获取到的软件测试版本,针对开发提交的 Task 进行测试(主要针对新功能,手工执行的方式居多)。

测试人员在进行人工验证时, 先根据测试计划和之前准备的测试脚本进行冒烟测试(主要关注点在于本测试组负责的业务模块)。

冒烟测试通过后,再进行功能、性能、安全等方面的测试验证(也就是图中 Sprint 这个模块内的蓝色的测试验证部分,这是测试人员花费最多时间的地方)。测试人员进行测试验证的依据来自测试计划的制定和细化, 这部分工作通常由项目立项开始,至 Sprint Grooming 后,开发提测之前结束。

如果测试验证不通过,测试失败的结果会被反馈给开发,Pull Request 不会被 Approve,开发人员会修复问题,再次提交 Pull Request 流程;反之,如果测试验证通过,会通知开发人员测试已经通过(这相当于 Approve 之前开发提交的 Pull Request),然后开发就会合并代码到 Master 分支。合并会再次触发新一轮的持续集成流程,如此循环往复。

合并进入 Master 分支的代码,通过自动测试验证后,就会被发布到指定测试环境,测试人员会将自动化脚本在此环境进行新一轮的测试验证,直至没问题后,会依次经历几个测试环境的验证,最终被持续部署平台采用蓝绿部署、灰度发布、滚动发布等方式部署上线。

OK,了解了一个典型的敏捷开发测试流程后,接下来,我们看一下不同阶段的测试人员在这一流程中分别担任怎样的作用。

测试开发、资深测试开发、测试专家的不同工作职责

为了方便你理解,我按照测试开发的不同阶段在上面的流程图中标记了不同的颜色。

1. 蓝色——初级测试开发

从功能测试转为测试开发,你的工作内容会包括帮助功能测试人员编写测试工具及测试框架,进而来提升功能测试的效率,也就是通过开发手段让功能测试变得更简单、快捷。

这一阶段的目的纯粹是助力功能测试,减少人工重复劳动,缩短测试周期。该阶段的测试开发仅仅聚焦在开发这个纯粹的事情上。

举例来说,你通过编写自动化工具/框架,把本应该是手工执行的工作转换为机器自动运行;通过编写造数平台(Data Platform),让构造测试数据变得比以往更为简单。

所以,判断一个测试开发是否合格的标准,是看他能否让功能测试更省力。
2. 橙色和绿色——资深测试开发

资深测试开发不再局限于开发本身,而是从流程出发,检测公司整个软件开发周期中,哪个部分耗时最长,哪个部分最复杂,哪个部分最容易出错;然后资深测试开发就要改造现有流程,通过详尽分析、仔细论证,把最复杂、最容易出错的部分流程自动化掉,纳入当前的持续集成流水线中去。

这一阶段的测试开发,已经不满足于完成功能测试提出的开发需求,而是通过自己的开发技能,把测试各个阶段的任务有机地结合起来,经过消化后重新组织输出。

比如,以前公司没有持续集成、持续部署平台,代码打包都是开发或者测试人工去操作的,那么资深测试开发就要和整个开发团队合作,建立并完善这些流程。再比如,以前测试流水线没有建立,自动化测试脚本需要人工触发执行,那么,资深测试开发就需要把这些流程整合。

因此,判断一个资深测试开发是否合格的标准,是要看他的技术产出是否能融入公司的技术体系中去。换言之,就是要看功能测试的工作是否严重依赖他的产出:如果测试开发停工,那么功能测试就会很痛苦,甚至也被迫停工。

需要注意的是,这一阶段资深测试开发的产出,肯定非常贴切公司的情况,但未必符合其他公司的情况,或者未必跟业界的主流情况一致。

3. 红色——测试架构师或者测试专家

可以看到,这一部分的测试开发重点已经不是测试本身了,而在于整个软件开发全流程的梳理。从项目立项开始,测试架构师就要规划当前的测试框架需要何种裁剪才能保证本项目顺利发布,并且在项目最开始阶段,通过测试左移的手段,对需求、开发技术方案进行分析,在保证可测试性的前提下,把公司现有的测试手段完美嵌入整个开发生命周期中。

在项目发布后,通过测试右移的手段,对生产系统进行监控,对系统本身或业务本身的各种线上情况进行分析,找出薄弱点,反查整个开发测试流程中的短板,然后补齐,从而保证产品的高质量和业务的高可用性。

判断一个测试架构师或者测试专家是否合格的标准,是看他能否在某个领域全部或者部分重新定义测试活动、测试顺序。换言之,这一阶段的工作产出,不仅仅适用于本公司,放到其他公司也可以,从方法论上来说,应该是普适的。

围绕以上三个测试角色,我们简要总结下:

测试开发,即提升测试活动的效率,通过技术手段帮助功能测试工程师提升测试效率;

资深测试开发,即重构测试活动,技术产出完全融入公司的技术体系;

测试专家/测试架构师,即重新定义测试活动,输出普适的测试方法论。


推荐阅读
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 在众多不为人知的软件中,这些工具凭借其卓越的功能和高效的性能脱颖而出。本文将为您详细介绍其中八款精品软件,帮助您提高工作效率。 ... [详细]
  • 不确定性|放入_华为机试题 HJ9提取不重复的整数
    不确定性|放入_华为机试题 HJ9提取不重复的整数 ... [详细]
  • 本文探讨了2012年4月期间,淘宝在技术架构上的关键数据和发展历程。涵盖了从早期PHP到Java的转型,以及在分布式计算、存储和网络流量管理方面的创新。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 本文详细介绍了Java库中com.vividsolutions.jts.io.WKTWriter类的appendGeometryCollectionText()方法,并提供了实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
author-avatar
香福武燕_205
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有