正式定档!QCon 北京站改期为2024年4月11-13日,地点:北京·国测国际会议会展中心 >>> 了解详情
写点什么

敏捷中的 QA

  • 2013-02-01
  • 本文字数:2667 字

    阅读完需:约 9 分钟

说到 QA,通常指的是质量保证(Quality Assurance)工程师,但我更喜欢定义敏捷中的 QA 为质量分析师(Quality Analyst),主要基于以下几个方面的原因:

  • 质量保证更偏向于工业说法,称参与软件测试的人员为质量分析师感觉更恰当;
  • 质量保证师更多的还是把测试当作软件质量的最后把关着、看门人,而敏捷中的 QA 更多的是建议提供者而非看门人,把 QA 称为质量分析师更能体现敏捷中团队对质量负责的原则;
  • 质量分析师更重视业务价值,关注业务价值的分析。

QA,质量分析师,显然与测试有关。敏捷中的 QA,也就是与敏捷测试有关。敏捷测试就是在敏捷开发模式下对软件进行的测试,要求尽早测试、频繁测试,以及时提供反馈。敏捷测试要求团队对软件产品的质量负责,而不是某个带有 QA 头衔的特殊人员。敏捷中的 QA 可以是参与敏捷测试的所有团队人员,而并不一定是特定的专职的测试人员。

这听起来是不是有点特别?跟传统开发模式下的测试人员是不是有些不一样?别急,我们先来看看敏捷中的 QA 是如何进行日常工作的。

敏捷 QA 的日常活动

从迭代到发布,敏捷测试的生命周期各个阶段 QA 的活动主要有:测试分析,测试自动化策略分析、框架构建等,故事测试,迭代计划会议和客户演示,测试自动化的维护和执行等。如下图示:

QA 通常不是仅仅工作在某个迭代,而是并行的同时工作在多个迭代:要对当前迭代的故事进行验收测试、探索性测试,和开发人员结对实现测试自动化;还要和业务人员结对分析下一个迭代的故事,编写验收标准和测试用例。

在单个迭代内部,伴随着故事生命周期,QA 的活动有哪些呢?用户故事生命周期包括以下几个阶段:故事分析、故事计划、故事开发、故事验收、故事测试/探索性测试、系统测试和客户演示。QA 参与故事的整个生命周期,在每个阶段都会发挥作用。

  • 故事分析阶段:需求澄清,业务场景和验收测试的确认
  • 故事计划阶段:拆分测试任务,在每个故事开发估算基础上考虑测试的时间和估算
  • 故事开发阶段:和开发人员结对实现自动化测试,和团队沟通发现的问题和缺陷
  • 故事验收阶段:开发人员开发完故事后,QA 和业务分析人员要在开发机器上进行验收,以提供快速的反馈;同时还要对测试覆盖率(单元测试、组件集成测试、功能测试)进行确认和提出反馈
  • 故事测试/探索性测试阶段:执行自动化验收测试,执行探索性测试,强调会阻碍故事发布的因素,和团队就测试覆盖率进行沟通,为发现的缺陷添加自动化测试
  • 系统测试和客户演示阶段:执行端到端的系统测试,执行业务或集成的用户测试场景,和团队及客户就功能特性的质量和稳定性进行沟通,参与给客户演示功能和特性

正如前面提到的,在每个阶段,QA 除了要独立进行测试,通常还需要跟不同的角色结对,包括业务分析人员、开发人员、以及客户。

  • QA 与业务分析人员结对:通常在业务分析师分析用户故事的时候,QA 要与业务分析人员结对编写验收标准。通过与业务分析人员结对,QA 能够更好的理解领域知识,从而有利于定义合适的测试用例;QA 从测试角度添加的验收测试用例可以帮助整个团队对产品功能性有更好的理解。
  • QA 与开发人员结对:QA 和开发人员分别能给团队带来不同的技能集,认识到这一点很重要。作为一个团队,最好通过平衡不同的技能集来获得共同的目标。这对于传统的瀑布式团队来说是一个很重要的心态改变。通常在实现测试自动化的时候,QA 与开发人员结对是比较理想的方式。这样结对实现的自动化测试质量相对较高,有测试意识较强的 QA 参与能够保证自动化测试测得是真正需要测试的部分,而开发人员的编码能力有利于写出简洁可维护的自动化测试代码。另一方面,QA 通过与开发人员结对,编码能力也会相应有所提高,而开发人员通过与 QA 结对,测试意识也会增强,更有利于编写质量较高的产品代码,更有利于形成全功能团队。
  • QA 与客户结对:客户是业务领域专家,通过与客户结对,QA 能够更好的从终端用户的角度理解系统,从而定义或者增加更多的端到端的测试用例;一旦 QA 理解了领域知识和终端用户的观点,其业务价值分析能力会有所提高,在团队需要的时候可以承担业务分析角色;在用户验收测试(UAT)阶段,QA 通过与客户结对,帮助客户熟悉使用系统,在必要时可以帮助客户解决一些系统问题。

敏捷 QA 的这些日常活动,的确反映出敏捷 QA 的日常工作内容和方式都跟传统开发模式下的测试人员有很多不同。下面为大家来详细介绍一下两者的不同,以及敏捷测试对 QA 的要求有哪些。

敏捷 QA 与传统测试人员有何不同

我们分别从团队构成、测试阶段、工作方式、关注点、业务知识来源以及发布计划制定几个方面,来看看敏捷 QA 与传统测试人员有哪些不同:

传统测试人员 敏捷 QA 单独的测试团队 多角色开发团队的一员 在开发流程后期才开始测试 测试贯穿于整个开发流中 通常是独立工作 QA 和不同角色进行结对 被当作最后也是唯一的质量保证 关注并强调风险 缺乏与业务人员的直接沟通 和业务人员直接沟通 没有机会参与发布计划制定 参与发布计划的制定从上表的对比可以看到,敏捷 QA 是特殊的,主要体现在:

  • 敏捷 QA 是提出建议者而非看门人,需要在参与的每个阶段提出自己的建议,而不是等到开发流程最后来对系统进行验证;不仅要验证开发设计是否满足需求,还要发现需求是否能真正体现业务价值,分析是否有不恰当或缺失的需求。比如说,敏捷 QA 在跟业务人员结对编写验收标准的时候发现故事分析过程中漏掉的需求,在跟开发人员结对过程中跟开发人员讨论某个测试放在哪层实现比较合理等。
  • 发现风险,并将风险与团队及客户沟通。QA 参与整个开发流程,对系统整体的认识和把握可以说是团队里边最全面的,因此也更容易看到系统存在的风险。
  • 及时向团队提供关于产品质量的反馈,便于调整。在每个迭代结束时候,QA 需要分析统计该迭代的缺陷,并结合自己通过测试对系统质量的了解,及时跟团队反馈,讨论分析质量下降的原因以尽快作出改进,或总结质量上升的经验,鼓励团队再接再厉。
  • 在制定产品和版本的发布计划的时候,QA 可以根据自己对产品质量的了解,从测试人员独有的视角提出一些关键的建议。
  • QA 通过参与开发流程的每个阶段,能够协助团队从内部提升质量,让质量融入到产品开发中来。比如:在故事验收阶段对测试覆盖率的确认。

这些特殊性对敏捷 QA 也提出了更高的要求,需要做到:

  • 具有丰富的产品知识和对用户业务目标的准确了解
  • 对不同系统和数据库所用到的技术知识的了解
  • 和不同角色以及客户进行有效沟通
  • 主动验证质量目标并及时说出自己的想法
  • 编写测试计划,列出需要执行的活动并进行估算
  • 自动化测试的能力和对测试工具的基本了解
  • 在团队内部进行知识分享,协助整个团队参与到测试活动中来
  • 持续提供并获取反馈
2013-02-01 01:585791

评论

发布
暂无评论
发现更多内容

美团3面(Java后台):NIO+BIO+Zookeeper+线程池+Redis+kafka

钟奕礼

Java 编程 程序员 架构 面试

浅论指针(一)

Integer

c c++ 指针

缓存为什么会被污染?

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

K8s 原生 Serverless 实践:ASK 与 Knative

阿里巴巴云原生

Serverless 容器 云原生 k8s 存储

技术中台之DevOps动态表单体系构建

EAWorld

中国唯一入选 Forrester 领导者象限,阿里云 Serverless 全球领先

阿里巴巴云原生

阿里云 Serverless 容器 开发者 云原生

一年增加 1.2w 星,Dapr 能否引领云原生中间件的未来?

阿里巴巴云原生

容器 微服务 云原生 k8s 中间件

支付宝高级研发一二三面题目:CMS+CAS+线程锁+事务+雪崩+Docker

钟奕礼

Java 编程 程序员 架构 面试

爆肝一周总结了一份Java学习/面试自测指南!200+道Java最常见面试题。

Java架构之路

Java 程序员 架构 面试 编程语言

会声会影最新版:会声会影2021中文版它来啦!

奈奈的杂社

视频剪辑 视频后期 自媒体 视频处理 会声会影

oktoken跟单社区系统开发|oktoken跟单社区APP软件开发

系统开发

引入单点登录,需要考虑哪些问题?

龙归科技

SSO 单点登录

【操作系统】存储器管理

学Java的猪猪侠

2021面试跳槽宝典:BATJ大厂核心面试解析600题

比伯

Java 架构 面试 程序人生 计算机

maven打包,常用启动方式

秋天

mavne

硬件测试的思考和改进:有道词典笔的高效测试探索

有道技术团队

大前端

怎样从零开始设计一个数据库

学Java的猪猪侠

何止一个惨字形容!水滴Java面试一轮游,壮烈了,问啥啥不会,数据库血崩,我该怎么办?

钟奕礼

Java 学习 编程 程序员 面试

重点人员可视化研判分析系统搭建,可视化大屏系统

JVM 诊断之 jps 工具使用

hepingfly

JVM jvm调优 jvm诊断 jps

又是一些小细节!3面成功入职字节跳动:算法+数据库+中间件+JVM

Java架构之路

Java 程序员 架构 面试 编程语言

Flink程序优化及反压机制

大数据技术指南

flink 3月日更

Apache Iceberg学习日志

InfoQ_Springup

数据湖

后端服务器网络编程之 IO 模型

Linux服务器开发

后端 网络编程 web服务器 Linux服务器开发 网络io

「产品经理训练营」第八章作业

Sòrγy_じò ぴé

字节跳动5面喜提offer!分享给朋友们面试感受

Java架构之路

Java 程序员 架构 面试 编程语言

2021版金三银四Java面试突击手册开源(涵盖p5-p8技术栈),“吊打”面试官的“葵花宝典”

Java 编程 程序员 架构 面试

MapReduce的运行机制详解

五分钟学大数据

hadoop 3月日更

oktoken对冲合约软件APP开发|oktoken对冲合约系统开发

系统开发

源码解读:KubeVela 是如何将 appfile 转换为 K8s 特定资源对象的

阿里巴巴云原生

容器 云原生 k8s API 应用服务中间件

关系数据理论是个什么牛马

学Java的猪猪侠

敏捷中的QA_研发效能_林冰玉_InfoQ精选文章