热门标签 | 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. 红色——测试架构师或者测试专家

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

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

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

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

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

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

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


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 软件测试人员必备的60个测试工具清单,建议收藏一波!
    据统计,中国软件外包市场的潜力和机会已远远超过软件王国印度,不过由于软件人才的严重不足致使我国软件发展遭遇“瓶颈”。国家为了大力培养软件人才࿰ ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 作为Spring的高强度使用者,没理由不对Spring的发展历程感到好奇吧?想知道Spring的作者,Spring是怎样一步一步的发展到今 ... [详细]
  • 我很清醒。我躺在床上。我满头大汗,但我很冷。在早晨的一小段时间里,梦想如恐怖般生动。我站在客户办公室,我以前来过这里,我知道 ... [详细]
  • DevOps落地实践点滴和踩坑记录(1)
    记录初衷本人一直在从事企业内DevOps落地实践的工作,走了不少弯路,也努力在想办法解决面临的问题,期间也经历过不少人和事情,最近突然有想法把经历过的,不管好的不好的都记录下来,分 ... [详细]
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社区 版权所有