《Scrum精髓》审校后记:关于Acceptance Test

蒙特卡洛法(Monte Carlo method)进行抽样之接受拒绝抽样法(accept-reject sampling method) 接受拒接抽样法 假设有随机变量xxx,其概率密度函数为p(x)p(x)p(x),目标是得到该概率分布的随机样本,以对这个概率分布进行分析。 接受拒绝抽样法的思想是,假设p(x)p(x)p(x)不能直接抽样,我们需要找一个可以直接抽样的分布q(x)q(x)q(x),称为建议分布。在这里要求cq(x)⩾p(x)cq(x)\geqslant p(x)cq(x)⩾p(x),其中c>0c>0c&... 阅读详情

作者:徐毅

我在参与审校《Scrum精髓》的过程中,审译者队伍对于“Acceptance Test”这一词汇应该如何翻译有着不同的意见和理解,经过大量的交流和讨论,非常感谢审议者队伍对于“接收测试”译法的理解和支持!此文正是为了记录选择“接收测试”译法的原因而成,可见于《Scrum精髓》书中的后记一章。

不知道读者看到“接收测试”、“接收测试驱动开发”这样的词汇会不会觉得好奇,接收是什么意思?是不是就是验收测试?跟UAT也即用户验收测试又有什么区别呢?其实不瞒读者朋友们说,就算是在译者、审校和编辑内部,关于“Acceptance Test”应该怎么翻译,也是有不同意见的。最终大家确定下来,采取“接收”的译法,并附加注释和这篇翻译后记,之所以会这样做,当然是因为这个词很重要。简单来说,敏捷的AT跟传统的UAT根本就是形似神不似,其内涵和具体用法有着极大的区别。Gojko Adzic在他的《Bridging the Communication Gap》书中就明确地表达了自己的观点——“它们根本就处在软件项目的两个相对端”。而Janet Gregory和Lisa Cripin在《敏捷软件测试》书中也认为“‘Acceptance Test’这个词特别迷糊人,因为它让一些人认为它就是’UAT’。在敏捷的语境下,它通常被用于指代面向业务的测试,但该术语同时也包括第4象限的面向技术的测试,例如客户对系统性能或安全的要求。”

首先我们要来看一下这些词汇本身的含义和历史,以及是如何诞生的。

传统的UAT概念已存在多年,并无很多争议,它是在软件项目中客户签收交付物并认可其已完成的阶段所执行的一类测试,关注重点在于该解决方案能够解决用户的问题,而非系统本身有无故障、是否满足了需求文档中的要求。

然而,在敏捷方法中经常提到的Acceptance Test则有很大不同。首先,它并不是在最后阶段才执行,而是在开发过程中执行,侧重于验证所开发的功能或故事满足了要求。它并不是一种或一类测试,而更像是一个逻辑概念,像一个框,代表多种不同类型的测试。

Acceptance Test这个词汇的起源,跟FIT这个工具很有关系,最初就是被用来描述一个故事在功能层面的测试,以便与单元测试区分开来。这在很多文献中都可以看到,而且至今也还有很多敏捷实践者仍把Acceptance Test当作是Story Test(故事测试)的同义词,不过Janet和Lisa则认为AT这个词同样可以被用于描述验证远高于故事层级的行为,而不仅仅只是适用于故事。Gojko则认为这个词本身并不好,他自己更偏好于“可执行规格说明书”的说法,因为这描述了它的本质,它本来是就是用于开发的规格说明书,只是用了一种可以被直接执行以检查代码的形式而已。

说了这么多,其实也是想证明,从词汇诞生的历史来看,敏捷的AT和传统的UAT确实就是不一样的。但探究多个概念的含义到底有何区别,不能够只是关注单词本身,还需要考虑词汇所代表实践在特定场景下的实际运用方式等各个方面的因素。

在敏捷开发中,如果说存在着一个完美的情况,那就是开发团队经过一个短迭代的开发之后,可以拿出一个可交付或者潜在可交付的产品增量,那这也就意味着团队需要完成可交付或潜在可交付标准里的所有测试,代码级别的测试就是单元测试,而更高级别的各种测试则被用“Acceptance Test”一个词所代替。

之所以这样做,也是因为在敏捷开发中,进入到高级别测试环节的时候,我们所拿到的或者所面对的并非是一个“完整的”系统,而是“部分”、“少量”特性,甚至只是故事(有人认为故事包含多个特性,也有人认为是一个特性被分成了多个测试,总之不是所有人都认为故事和特性是等价的),如果我们要按照传统的方式把所有的测试阶段、测试层级、测试类型都进行逐一地规划,那么测试管理的成本就太高了。顺应敏捷开发的特点,一切都从一个细小而明确的需求出发,那么团队采取的方式就是在计划时明确地定义需求的边界和验证的标准。如果需求是实现一个新特性,那么测试就大多是功能型的测试;如果需求是要改进系统的响应速度,那么测试主要就是性能测试;如果需求是增加对某款新型浏览器的支持,那么测试很可能就涵盖了功能测试以及兼容性测试等一些类型。然而,不管是何种类型的测试,它们都是用来判断某个具体需求或故事是否已经完成的标准,并称之为“Acceptance Test”。以此方式,也可以简化团队在计划时的工作,团队只需要问“那这个特性要做到什么样子才算完成呢?”至于这些要求如何细化为具体的Acceptance Test,则由交由团队来完成。

然后,待到迭代结束,既然测试的标准是以可交付或潜在可交付来制定的,那也就意味着只要这些测试通过了,我们就可以满怀信心地将它交付出去了。但这些测试也只是给了我们自己信心而已,它与传统UAT代表的客户或用户验收通过的含义相距甚远。

再退一步说,其实真正能够做到研发团队交出来的就是一个可交付或潜在可交付的东西,更多的时候都还需要交给某个专门做更高级别或更接近尾声的测试的部门,例如系统测试、性能测试、全联网测试等等。这也意味着在研发团队完成开发和测试之后,还有一些其他类型或阶段的测试工作需要继续,半成品的系统还没有达到可以交付的水平,当然也远没有到可以去执行UAT的状态或时间点。然而,我们仍然选择用AT来指代研发团队开发过程中完成的所有测试,是用来判断团队产物可不可以进入下一个环节的标准。

再来看,UAT所服务的主体是用户或客户,从某个角度来看,团队和客户是处在两个甲乙双方的关系,“验收”这个词也体现了甲方验收乙方交付物的概念。然而,在敏捷中,AT意味着团队完成了开发测试过程之后,向某个角色或某些角色声明工作已完成的标准。而且AT所服务的主体通常都是产品负责人或是内部干系人,也都归属于乙方的范畴,且不说敏捷方法强调开发人员和业务人员的紧密合作,敏捷宣言同样也明确地提到了“客户合作 高于 合同谈判”,为AT这个术语所选择的中文词汇当然也要提现这种合作的态度和倾向才行。

而且,正如《敏捷软件测试》提到的测试象限图所描述的那样,并不是从传统到敏捷之后,UAT就被AT所取代,而是呈现出一种并存的态势。

如果我们认为在敏捷下仍然存在UAT,而且也翻译为“用户验收测试”的话。那么我们应该把敏捷的AT翻译成什么呢?不管是从敏捷测试理念还是从翻译的角度来看,我们又怎么可能接受在开发过程中有 “验收测试”、而后再执行“用户验收测试”呢?从两个概念在敏捷方法下所发挥的作用来看,AT是支撑团队、支撑开发过程的,而UAT则是支撑用户或客户、出现在开发过程之后的。

从前面一些测试领域专家的意见来看,UAT可以被看作是从AT中挑选出来的一组具有特定意图和目的的测试子集;而且UAT侧重于验收,具有已通过检验、可以付款的意味,而AT则侧重于引导团队与干系人之间的沟通,指引开发过程沿着正确的方向前进。

作为一名敏捷圈内少有的测试出身的敏捷教练,“Acceptance Test”这个词到底什么意思,我也跟众多敏捷测试领域的大师级人物交流过,在国内测试圈内也已经跟很多同行争执过这个术语的翻译,我无法接受在我所审校(或翻译)的书籍中将它翻译成“验收”,所以也跟本书的译者、编辑和其他审校者们争得面红耳赤。我认为实际情况是人们普遍会把传统的UAT简称为“验收测试”,如果我们在翻译敏捷相关作品时,也将敏捷中的“Acceptance Test”翻译或称呼为“验收测试”,从受众的角度来看,几乎不太可能会意识到这跟他们一直所理解的“验收测试”(也即传统的UAT)是不同的概念,在敏捷中的用法也不同。从传播知识的角度,这是我不可接受的结果。

另一方面,老实说,或许“接收”的译法在测试圈内也不一定有共识,但我自认为对敏捷测试的理解还是很到位的,我们不能够因为“觉得跟传统UAT差不多”就沿用了旧的词汇,敏捷测试跟传统测试本就是非常不同的两种主张,要想激发普罗大众形成这样的意识,就更不能够用“旧瓶装新酒”的方式了。如果这本书出版之后,“接收”的译法能够激发读者们去思考、怀疑、挑战它,那也是一件非常值得庆幸的事。即使,更多读者和从业者一起群策群力找到了比“接收”更好的译法,从改变测试世界、引导正确认识敏捷测试理念的角度来看,我们决定在本书中将“Acceptance Test”译为“接收”岂不是产生了更大的价值?

所幸最后,“接收”的译法得到了大家的理解和认可,但大家也都觉得,这段故事不应该被埋没在书本纸张的墨水之下,也应该让更多的人看到这本书,看到这些译者字斟句酌的认真态度。正是出于这样的考虑,大家决定,用这篇翻译后记来记录我们在翻译过程中的纠结和争论,以及最终选定“接收”译法的考虑。

亲爱的读者朋友,如果你对“Acceptance Test”这个词该怎么翻译也有想法,不管是怀疑、挑战、支持、建议或是任何思绪,我诚挚地邀请你与我联系,我非常愿意交流这个话题!

徐毅,敏捷顾问、敏捷测试专家

kaverjody@gmail.com, kaverjody.com

参考资料:

关于《Scrum精髓》和购买地址

35、验收测试驱动开发(Acceptance TDD)全面解析 本文深入解析了验收测试驱动开发(Acceptance TDD)的核心理念与实践方法,涵盖与客户协作编写测试的团队构成、验收测试带来的多重好处、测试内容的设计与执行、测试数据的准备以及测试效果的评估和持续改进。通过具体流程图、表格和示例,为读者提供了一套完整的验收测试驱动开发指南,旨在提升软件开发质量与团队协作效率。 阅读详情

相关推荐

敏捷开发的必要技巧10:验收测试(Acceptance Test)

博文链接:https://wingel.iteye.com/blog/37727

接受-拒绝采样/拒绝采样(accept-reject sampling/reject sampling)

蒙特卡洛法 核心:随机抽样。 抽样方法:直接抽样法,接受-拒绝抽样法,重要性抽样法。 【参考】 蒙特卡洛采样之拒绝采样(Reject Sampling)

weixin_40680322的博客 2738

Scrum精髓-敏捷转型指南

scrum精髓,敏捷转型指南;scrum精髓,敏捷转型指南。

软件测试术语分享系列: Acceptance Testing 验收测试

这篇博文是软件测试术语分享系列的一部分,专注于验收测试。文章从基础概念、重要性,到技术和策略、工具与技术,再到最佳实践,全面解析了 验收测试 在软件开发中的应用。

公众号【伤心的辣条】资料领取~ 1565

轻松搞定Scrum

Scrum实施核心, 5分钟理解Scrum, Scrum核心流程 Scrum价值观 Scrum概述 Scrum元素,轻松搞定Scrum,Scrum实战总结,

表面声波滤波器——叉指换能器设计实战:从关键参数到结构选型

本文深入探讨了表面声波滤波器核心部件叉指换能器的实战设计流程。从目标驱动出发,详细解析了如何根据中心频率确定关键参数指宽,并权衡叉指对数对带宽和插入损耗的影响。文章进一步介绍了通过变迹加权优化频率响应,并对比了梯形结构与纵向耦合谐振滤波器等主流结构选型的适用场景与优缺点,为工程师提供从理论计算到仿真验证的完整设计指南。

weixin_29216353的博客 103

软件测试常用英语词汇表

软件测试常用英语词汇表

aoaaiww的博客 2147

PADS VX2.7学习记录06-PADS Router软件功能操作

PADS VX2.7学习记录06-PADS Router软件功能操作

qq_31444421的博客 7860

软件测试常见术语和名词解释

4. Alpha testing (A测试):是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员和测试员完成。UAT(User Acceptance Testing):终端用户集成测试,主要是要求用户参与进测试流程,并得到用户对软件的认可,鼓励用户自己进行测试设计和进行破坏性测试,充分暴露系统的设计和功能问题,显然,用户的认可和破坏性测试是难点。工作版本既可以是系统的可操作版本,也可以是展示要在最终产品中提供的部分功能的部分系统。

NHB234567的博客 1839

Python实战:用Realsense D435和睿尔曼机械臂完成手眼标定的5个关键步骤

本文详细介绍了使用Python、Realsense D435深度相机与睿尔曼机械臂进行手眼标定的完整实战流程。文章将过程拆解为环境搭建、数据采集、核心计算、结果验证和精度优化五个关键步骤,重点剖析了数据采集的黄金法则、常见错误排查以及如何将标定结果集成到视觉抓取程序中,旨在帮助开发者实现毫米级精度的视觉引导机器人系统。

weixin_29103191的博客 320

CryoEM - 使用 ChimeraX 工具 操作 冷冻电镜的 MRC 密度图(Density Map) 教程

由冷冻电镜 CryoSparc 软件所生成的 Volume,需要观察其内部结构,建议使用 ChimeraX 进行操作。

AGI 4959

验收测试

验收测试(Acceptance Test):在软件产品完成了功能测试和系统测试之后、产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。 验收测试的目的:确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。 验收测试的参与者:用户,还可能有软测工程师等。 1 、验收测试的过程和主要内容 前提: 系统或软件产品已通过了系统测试的软件系统。 ...

努力进阶的小菜鸟 3万+

液压轴位置闭环控制(比例伺服阀应用)

液压阀的基础知识请参看下面的博客文章:PLC液压控制系列之比例流量阀结构分析_RXXW_Dor的博客-优快云博客比例流量阀液压同步控制的PID闭环调节可以参看下面这篇博文三菱FX3U-PLC 前馈+PID闭环调节实现液压同步控制(比例换向阀)_RXXW_Dor的博客-优快云博客液压控制系统在工业现场应用非常广泛,这篇博文我们简单分析下液压同步控制。这套系统的液压缸为单液压缸,首先简单介绍下什么是单作用液压缸,液压系统的详细理论分析大家可以找些专业书籍学习。

RXXW_Dor的博客 2262

UAT,(user acceptance Test),用户接受度测试 标准步骤

以下是它的一些一般步骤;仅供参考一步:用户培训手册准备(就是针对要进行UAT测试的对象,及要进行培训的用户,准备一些培训资料:一般是测试对象使用/功能手册及要培训的用户的个人资料等等:就跟教师上课进行备课差不多)二步:测试脚本发放(如果你公司采用自动化测试,那么每一个功能或一个模块等都有对应的测试脚本,可以把这些测试脚本分发给特点的人员;如果采用手工测试,就要把详细描述一个功能或模块的文档分给相关

majin_com的专栏 4368

构建高效的LLM应用测试框架

《构建高效的LLM应用测试框架》 关键词:LLM,测试框架,应用测试,效率优化,测试原理 摘要:本文将深入探讨构建高效LLM应用测试框架的必要性、方法与步骤,旨在为开发者提供一套系统化、可操作的测试解决方案,从而提升LLM

AI天才研究院 1046

(汇总篇)语义SLAM相关开源方案| 全球优秀作者与实验室 | SLAM学习资料整理

SLAM 与深度学习相结合的工作当前主要体现在两个方面,一方面是将语义信息参与到建图、位姿估计等环节中,另一方面是端到端地完成 SLAM。针对建图的工作一方面是利用几何信息进行稠密重建,另一方面很多工作利用语义信息达到了很好的语义重建效果,三维重建、SFM。动态 SLAM 也是一个很值得研究的话题,这里不太好分类,很多工作用到了语义信息或者用来三维重建,收集的方案相对较少。优化可能是 SLAM 中最难的一部分了吧 +_+ ,一般都是直接用现成的因子图、图优化方案,要创新可不容易。

熊猫小妖的AI世界 7867

Acceptance testing

最近在做auto deployment。auto deployment完成后需要运行测试来保证安装完成无误,程序正常工作。 在Agile中,此时应运行acceptance testing。 这里先赞一下wikipedia,对程序开发方面的知识的解释简直是字字珠玑,对Acceptance testing中的解释也不例外: http://en.wikipedia.org/wiki/Acc

我的学习成长日记 2594

【示波器专题】示波器探头的原理深入——有源探头之差分有源探头

差分有源探头是一种特殊的有源探头,与普通单端有源探头的区别在于其前端的放大器是差分放大器。差分放大器的好处是可以直接测试高速差分信号,同时其共模抑制比高,对共模噪声的抑制能力比较好。...

一点硬件 2623

出版领域智能审校系统APP解决方案:让你的出版工作更高效,轻松应对挑战!

智能审校系统APP还具有完善的标点符号检查功能,可以自动检测出版物中的标点符号错误,如缺少逗号、句号、引号等标点符号,或使用错误的标点符号等,并给出修改建议。拔俗网络的智能审校系统APP是一款基于人工智能技术的审校工具,它可以自动检测出版物中的语法错误、拼写错误、标点符号错误等问题,并给出修改建议。通过使用这款APP,你可以大大减少人工审校的时间和成本,提高出版物的质量。拔俗网络的智能审校系统APP具有强大的语法检查功能,可以自动识别出版物中的语法错误,如主谓不一致、时态混乱、词性误用等,并给出修改建议。

weixin_50615370的博客 542

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【软件工程】航行敏捷之路:深度解析Scrum框架的精髓

Scrum框架,作为敏捷开发的先锋,鼓励团队自组织、持续交付,并通过迭代和反馈的循环不断适应变化。在Scrum的引领下,团队能够更好地应对项目挑战,提高工作效率,同时实现高度客户满意度。然而,我们也要认识到Scrum框架的适用范围和实施挑战。通过深入理解Scrum的精髓,我们有望在敏捷之路上航行得更为顺畅,为软件开发的未来赋予更多的活力和可能性。

AliceNo的博客 9025

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

什么是Scrum?Scrum的核心要点和精髓

Scrum 的定义Scrum是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程,目的是让开发人员像打橄榄球一样迅猛并充满激情,通过团队合作,提高工作效率。通过团队间的有效交互,为企业创造价值。

「 虚幻私塾」 922

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

有关 Reliability(可靠性)的一点资料

Reliability has to do with the quality of measurement. In its everyday sense, reliability is the "consistency" or "repeatability" of

jackei的测试生活 2192

Scrum精髓之咀嚼篇一:Scrum定义及流程

Scrum精髓之咀嚼篇一:Scrum定义及流程Scrum精髓之咀嚼篇一Scrum到底是个啥?为什么用ScrumScrum角色流程下期预告 Scrum精髓之咀嚼篇一 前两天刚刚完成了和几个部门大佬们的deep dive,结果负责的产品线受到了很大的关注。一方面大佬们发现了各个部门对我们产品依赖性极强,另一方面大饼画的足够好,大佬们发现了未来的发展空间。比较严重的是,我们组开发人数稀少,成了被需求侧同事炮轰的对象【手动捂脸】。作为刚入职的PM,只能停下了摸鱼的生活,被迫营业了 与此同时,我发现了几个较为严重的问

weixin_40920485的博客 2115

Unit Test、Integration Test、Regression Test 、Acceptance Test

Unit test(单元测试):针对每一个单独的代码块进行测试。当它失败的时候会告诉你你的哪块代码有问题需要去修复。 Integration test(集成测试):将多个模块结合在一起进行测试,确保多个组件可以正确交互。当它失败表示你的各个代码块间无法有效协作。 Regression test(回归测试):在整合(并且可能修复)之后,您应该再次运行单元测试。 这就是回归测试,它用来确保进一步的更...

每天进步一点点 1万+
上一篇: 圆满完成深软协与赛宝合办的安全测试技术培训!
下一篇: 数据库基准测试的目的和作用
TIB
TIB
博客等级 码龄19年 2879粉丝 957原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值