敏捷测试的核心

本文首发于【林子的空间

Q:质量内建跟敏捷测试的关系是什么?能分开吗?

A:我认为质量内建是敏捷测试的核心。

01. 传统测试

敏捷测试是相对于传统测试而言的,在聊敏捷测试之前,我们先看传统测试是什么样的。传统测试通常有如下的特点:

  • 独立的测试部门:测试人员跟开发人员不属于同一个部门,各自独立。
  • 测试工作主要由测试人员承担:功能与非功能测试,手动与自动化测试,冒烟测试、回归测试、发布测试等,基本都是测试人员的事情。
  • 详尽的测试用例文档:测试用例文档一般都要求详细的执行步骤。
  • 集中的回归测试:有独立的集中回归测试阶段,对所有功能进行全面的测试覆盖。
  • 发现更多的bug:测试人员的目的是发现更多的bug,甚至有些部门会把bug数量作为绩效考核的目标。

02. 敏捷测试

敏捷测试是伴随着敏捷开发过程的所有质量相关活动,有着如下的特点:

  • 不能独立存在,不是一种测试类型或方法
  • 敏捷测试不仅是测试人员的工作,敏捷测试是团队的活动
  • 抛开敏捷开发谈敏捷测试没有意义

敏捷测试的目标也不再是发现更多的bug,而是尽快的交付高质量的软件。

那么软件的高质量怎么获得呢?著名质量管理专家指出:质量不是检测出来的,产品生产出来质量已经在那里了。因此,通过加强测试保障没法提高软件质量,需要将质量内建到软件产品中。

03. 质量内建

软件的缺陷暴露的越晚,修复的成本就越高;前期对缺陷预防的少,后期发现的缺陷就会多;前期做好了缺陷预防,后面暴露的缺陷就会减少。因此,我们需要提前预防缺陷,而不是等开发完成了才发现很多的问题,这就是质量内建。

缺陷预防

早在12年前接触敏捷测试的时候,有三个词深深的印在了我的脑海里“Test early,test often,test first(尽早测试、频繁测试、测试先行)”,其实,它们正好对应着质量内建的三个关键实践:测试左移、持续测试、测试驱动开发,是敏捷测试最核心的部分。

测试左移

测试左移要求测试在软件开发生命周期的左侧尽早介入,可以是需求分析阶段,也可以是更早的inception阶段。左移的测试人员可以做的事情可以有一起挖掘需求、分析需求、澄清需求、评审需求、参与技术方案讨论等,主要目的是利用测试人员独有的视角和对系统的了解,在各个环节进行必要的输入,确保团队对于需求理解的一致性,确保团队能够做正确的事情。

敏捷开发生命周期

测试人员参与需求分析的价值主要体现在下面两个方面:

业务价值

  1. 尽早的接触需求能够让测试人员更好的理解业务价值,从而为后续的系列测试工作提供帮助。
  2. 同时,需要测试人员更多的考虑业务价值,在各个需求环节能够从业务价值的角度提供输入,包括终端用户行为、业务流程、业务风险等维度的考虑。可以参考我的文章《敏捷测试如何优化业务价值》。

用户故事

用户故事作为敏捷开发过程中传递业务需求的载体,非常重要。对于用户故事的拆分和用户故事验收条件的描写都有很高的要求,测试人员参与可以帮助评审用户故事,提升用户故事的质量,以更清晰的方式在团队传递需求。要求测试人员能够透彻的理解用户故事拆分的“INVEST”原则,并利用这些原则来评审用户故事:

  • 独立的(Independent):要尽量避免故事间的依赖,做到相互独立,如果碰到两个依赖很强的用户故事,可能需要合并或者换一种拆分方式摆脱依赖。
  • 可讨论的(Negotiable): 故事是可讨论的,不是签署好的合同或者软件必须实现的需求。故事卡是功能的简短描述,细节将在客户团队和开发团队的讨论中产生。
  • 有价值的(Valuable):用户故事要对用户或者客户有价值。注意,有些用户故事可能不会给终端用户带来价值,比如信息配置类的故事,用户不会关心,但是对客户是有价值的。
  • 可估算的(Estimable): 开发人员没法估算某个故事可能的原因是开发人员缺少相关的领域知识或技术知识,也可能是用户故事太大了。对于前者,需要给开发人员讲述清楚业务上下文和相应的领域知识,并且要有相关技能的开发人员参与估算;如果是故事太大了,则需要进一步拆解成更小的可以估算的故事。
  • 小的(Small):故事太大不利于估算,可能需要拆解;故事太小也不利于计划,可能需要合并。故事的大小需要根据团队具体情况来定,但要尽量小一点。
  • 可测试的(Testable):用户故事必须是可以测试的,不然就没法验证开发人员实现的正确性。

持续测试

测试左移是为了让团队清晰一致的理解需求,从而做正确的事情;而持续测试则是在整个开发生命周期里(生命周期的最左侧开始,延续到最右侧的生产环境)的各个环节的测试活动,以帮助快速收集反馈,从而正确的做事情。

持续测试的内容包括对持续功能测试,也包括性能、安全等的内建、持续测试;形式可以是静态分析、评审,也可以是动态的测试,包括手动执行的各种测试,以及持续集成流水线上的持续执行的自动化测试。下面我们从用户故事生命周期为例来看可以有哪些持续的测试活动:

故事生命周期

故事分析: 这个阶段主要是对故事的拆分、故事里的AC(Acceptance Criteria,验收标准)等内容进行评审,包括功能和跨功能需求的确认,看是否有需求遗漏或者不合适的需求,同时可以重点标注一些开发或者后期验证需要特别注意的点。

故事启动: 故事启动是在开发人员开始实现用户故事之前对需求进行澄清,确保业务、开发和测试对该用户故事要实现的需求达成一致的认识,包括功能和跨功能需求(安全、性能等)。

故事开发: 开发人员开始开发用户故事,并完成底层自动化测试(单元测试和接口层测试等);测试人员可以开始设计相应的测试用例和UI层功能自动化测试,同时可以将在测试设计过程中发现/想到的用户故事相关的问题反馈给团队。

故事验收: 故事验收是开发人员开发完成一个用户故事之后,对系统实现进行验收的环节,这个环节跟“故事启动”环节是对应的,同样包括对功能需求和跨功能需求的验证。

故事测试: 完成相应的功能自动化测试,让其在持续集成流水线上按需执行;同时,需要基于该用户故事执行相应的探索性测试。

故事演示: 将开发完的功能演示给客户,一般以特性为单位,需求、开发或测试人员来负责演示都可以,目的是尽早收集到客户的反馈,是客户验收的环节。

测试驱动开发

测试驱动开发就是大家所熟知的TDD,常见的有两种测试驱动开发,分别是:

单元测试驱动开发(UTDD): 在编写产品代码之前,先写单元测试,由单元测试驱动出产品功能代码,主要是为了保证设计的完备性,更好的实现质量内建。单元测试一般都是开发人员来实现的,测试人员不参与实现,但可以在故事验收阶段对开发编写的单元测试进行评审,确保单元测试覆盖的有效性。

验收测试驱动开发(ATDD): 除了单元测试之外,还可以先实现自动化的功能验收测试,在功能开发完成之后,要求所有验收测试都是能通过的。这样做可以尽早利用功能自动化测试收集反馈,更好的保证功能需求实现的正确性。验收测试可以由开发人员和测试人员结对完成或者测试人员独自完成。

说到ATDD,我们通常很容易联想到行为驱动开发(BDD),常被人们混为一谈,有必要再次说明一下。其实,BDD强调的是不同角色之间的协作,更好的理解和澄清需求,确保需求理解的一致性。BDD不是关于测试的,可以没有测试,但是可以指导测试,我们通常可以基于BDD的方式实现自动化测试。而ATDD是关于测试的,必须有测试。更多关于BDD的内容,可以参考我的文章《说起BDD,你会想到什么》。

04. 总结

质量内建
  1. 敏捷测试的核心是质量内建,而质量内建就是缺陷预防;
  2. 测试左移、全阶段的持续测试、测试驱动开发是质量内建成功的关键。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容