敏捷测试指引(3)- 用面向技术的例子支援程序员

敏捷总结-下 合同灵活性:必须适应范围变更,通常采用工料合同或动态范围协议协作模式:建立买方-卖方风险共担机制,通过补充协议处理敏捷部分变更价值交付:聚焦用户故事级交付而非整体项目预算,允许按价值达成情况提前终止团队稳定性:保持固定团队规模以确保迭代节奏,按人力投入而非交付范围结算。 阅读详情

敏捷测试指引(3)- 用面向技术的例子支援程序员

陈能技
2007-9-24

原文:Agile Testing Directions – Technology-Facing Programmer Support(Brian Marick)

为了帮助讨论和理解,我把“敏捷项目中的测试”这一主题分解成4个区分的主题。今天,我讲一下我们怎样使用面向技术的例子来帮助和支援程序开发。

这里适用的一个是测试驱动开发,在Kent Beck的书中,David Astel最近的书,Phlip,J.B.Rainsberger接下来的书中都讨论了这种开发方式。我认为测试驱动开发(我现在会叫它例子驱动开发,example-driven development)是可靠的。它不是主流的开发方式,但是看起来要成为主流了。套用Geoffrey Moore的话,我认为它正在跨越鸿沟的路途中。

也可以这样说,例子驱动开发已经从Thomas Kuhn所说的“革命性的科学”发展到“正规科学”。在正规科学中,人们扩展了特定方法的适用范围。因此我们现在很多人在GUI应用EDD(sic),设法让它与遗留代码(legacy code)一起工作,讨论mock objects的好的使用方法,讨论处理私有方法的技术,等等。但是这些都不是重大的发展。

我希望不久的将来会看到更多同时拥有测试和编程的技巧的人被吸引到敏捷项目中来。这些人既不会成为像纯测试人员那样的好测试员,也不会成为像纯编程人员那样好的编程人员。但是那还是不错的,如果你跟我一样相信敏捷项目应该重视通才多于重视专才的话。

我不是这样的混合人物。我没有与纯编程人员一起做很多的结对编程。但是我注意到,在维持编程的进度和目标的希望与确保很多好的测试的主意被考虑到的希望之间存在着紧张的关系。我发现我自己在进入程序员模式和退出并考虑全局的之间振荡。从经验看来,我们需要更好的思路来管理这个过程,以及关于什么类型的“测试思考”在编码过程中是合适的。

也可能有一些测试员在敏捷项目中不担当程序员的工作。不过,他们中的一些人还是跟程序员结对讨论单元测试(关于程序员如何检查代码)。程序员学习如何避免哪些类型的bug,测试员学习他们正在测试的是什么。不知何故,加拿大的卡尔加里成为了这些活动的温床,我指望Jonathan Kohl,Janet Gregory和其他人告诉我怎样才能做好。

我需要强调这些都是关于人的。传统上,测试员与编程人员会有很紧密(或者很广阔)的关系。对于矩阵的支援程序员这部分,我相信传统的关系是不合适的。

我使用术语“checked examples(检查例子)”作为支援程序员的测试。我们可以把这个概念一分为二。一部分作为指引下一步编码的决定。另外一部分是自动化的例子,作为“改变探测器”(change detectors),看刚才的修改是否是你期待的。

通常的习惯是,改变探测器仅仅是保留的代码的保护性例子。(你让你的单元测试套件作为救助,一个对应一个地,在编码的同时测试。)那不是逻辑上的要求。我喜欢先建立一些关于什么时候做其他事情的知识。

例如,考虑这样的维护场景:你首先开发了一些代码例子。一个月后,别人加了一个新的例子并改变了代码以便匹配。很多之前为那部分代码开发的例子都成了“bad examples”坏例子了。(测试失败,但是因为他们现在是错误的,不是因为代码错误。)修正那些例子以便他们一致。我的意思是在下表的左边的事件序列本来是期望与右边的测试一样的。(先看左边栏,然后看右边。)

Example foo written Example bar written
Code written to match foo Code written to match bar
Example bar written (foo invalidated) Example better-foo written (bar is still a good example)
Code changed to match bar - oops, now foo doesn't check outCode changed to match better-foo (and bar continues to check out)
Update foo to be better-foo  

 
最近坏掉的例子被重写以便匹配一个理想的开发顺序,在这个过程中不需要重写任何例子。但是为什么?在上表的左列,新的例子foo没有用于驱动开发,只是作为检查。对于驱动开发来说是最佳的可能对于检查来说不是最佳的。

假设软件系统开发切面层(shearing layers),切面层的接口通常是不会改变很大的。为了可维护性,在修改时移植坏掉的例子到界切面层是有意义的。取代一个例子对应一个类的一个方法的做法,我们现在使用一个例子对应整个子系统。那可能会很糟糕 - 想想调试 – 但是它减少了维护的负担,甚至能提供关于子系统的行为的完整文档的好处。

我希望人们分清楚两个角色 – 指引不远的将来和重新检查过去 – 会发现有建设性的知识。例如,什么时候编写面向技术的“改变探测器”(而这些与指引编程没有任何关系)可能会有用?

我在上面说的测试驱动开发是“期中一个适合”今天的主题的东西。那么其他适合的是什么?我不知道。EDD是否是最合适的?(是否最近可能发生革命性的改变?)我也不知道 – 我要依赖那些善于打破旧习的人来帮我找出来。对此我将非常感兴趣。
 

数据分析项目:电商用户行为分析系统 本报告基于某电商平台用户行为数据(采样10%),通过清洗、探索性分析及多维度建模,旨在挖掘用户行为特征、商品销售规律及用户价值分层,为运营策略优化提供数据支持。原始数据字段:用户ID、商品ID、类目ID、行为类型、时间戳。长尾商品(购买量低)可考虑捆绑销售或限时折扣,提升动销率。长尾商品(购买量低)可考虑捆绑销售或限时折扣,提升动销率。,少数高活跃用户贡献大部分行为,多数用户行为次数较少。 阅读详情

相关推荐

【多模态大模型】GLIP:零样本目标检测新范式与视觉语言理解

本文深入解析了多模态大模型GLIP在零样本目标检测和视觉语言理解领域的创新应用。GLIP通过统一目标检测与自然语言理解任务,实现了零样本学习能力,能够精准定位复杂文本描述对应的图像区域。文章详细介绍了GLIP的核心技术、数据策略及实战表现,并对比了与其他多模态模型的差异,为AI视觉理解提供了新范式。

weixin_29186249的博客 263

敏捷测试指引(4)- 用面向业务的例子支援项目组

敏捷测试指引(4)- 用面向业务的例子支援项目组 陈能技2007-9-24 原文:Agile Testing Directions – Technology-Facing Programmer Support(Brian Marick) 为了帮助讨论和理解,我把“敏捷项目中的测试”这一主题分解成4个区分的主题。今天,我讲一下我们怎样使用面向业务的例子来帮助和支援整个项目

软件质量优化 3238

卡诺图化简法

目录 1.学前需要了解知识点 2.卡诺图(karnaugh map) 3.逻辑函数的卡诺图化简法 4.总结 1.学前需要了解知识点 最小项的定义 最小项的表示方法 最小项的相邻性 最小项的定义:一个函数的某个乘积项包含了函数的全部变量,其中每个变量都以原变量或反变量的形式出现,且仅出现一次,则这个乘积项称为该函数的一个标准积项,通常称为最小项。 最小项的表示方法:通常用来表...

hahasusu的专栏 17万+

敏捷测试指引(2) - 测试与例子

敏捷测试指引(2) - 测试与例子陈能技2007-9-24原文:Agile Testing Directions – Tests and Examples (Brian Marick)It all depends on what you mean by home.[...]Home is the place where, when you have to go there,T

软件质量优化 3932

Cadence Allegro 17.2 PCB设计避坑指南:从焊盘制作到封装绘制的完整流程

本文详细解析了Cadence Allegro 17.2在PCB设计中的关键操作技巧,从焊盘制作到封装绘制的完整流程。通过0402电阻和2.54mm排针的实例,揭示新手常见错误及解决方案,包括焊盘参数设置、层类型区分和坐标输入规范,帮助工程师避免设计返工和生产事故。

weixin_28683391的博客 408

csp-j/s

CSP-J/S 是中国计算机学会(CCF)主办的 ‌‌(Certified Software Professional Junior/Senior),是信息学奥赛(NOI)体系的入门级选拔考试,也是国内最具权威性的青少年编程能力认证之一。

gxyxxrYYDS的博客 2028

你确定懂什么是敏捷测试?

转自 https://www.jianshu.com/p/532d8cdd9059?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 早在2009年,Lisa Crispin和Janet Gergory就写了一本书《Agile Testing: A p...

小冯先生的博客 1万+

值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏)

这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。

yue_yun_的博客 9391

敏捷测试指引(1)-简介

敏捷测试指引(1)-简介陈能技2007-9-24原文:Agile Testing Directions – Introduction (Brian Marick)在XP Agile Universe上,两个人-或许更多-告诉我说,我在敏捷测试的发展方面贡献不够。我在过去5年里花了太多的时间说我不知道敏捷测试会怎样,没有足够的指示和指导。“但是让我们看看,也许我们可以找到。”他们可能是对

软件质量优化 5133

Verilog 并行 FIR 滤波器设计

FIR(Finite Impulse Response)滤波器是一种有限长单位冲激响应滤波器,又称为非递归型滤波器。FIR 滤波器具有严格的线性相频特性,同时其单位响应是有限长的,因而是稳定的系统,在数字通信、图像处理等领域都有着广泛的应用。

m0_61687959的博客 1604

芯片低功耗设计实战:CPF与UPF流程选择指南(附工具对比)

本文深入探讨了芯片低功耗设计实战中CPF与UPF流程的选择策略。文章从两者本质差异与演进脉络出发,结合Cadence与Synopsys工具链的深度支持实况,为工程师提供了基于项目场景的决策框架。重点分析了在混合工具链环境下如何实施流程与验证,并强调了利用Spyglass等工具确保功耗意图无损传递的关键技巧,旨在帮助团队做出明智的流程抉择,提升设计效率与可靠性。

weixin_29197051的博客 405

敏捷测试

敏捷测试 测试左移与右移 测试的左移与右移,也可以称之为测试的提前和延后,尽可能让测试贯穿整个流程。 测试的左移,在项目立项之时,测试就参与进来,与开发、产品等进行交流 测试的右移,产品上线之后,和运维联系,参与数据监控,在生产环境下,也可以做一些测试,但是需要与产品做到测试隔离。 测试的右移,目的是为了保证质量合格的底线(质量下限),提升质量和通过率(质量上限)。 ...

沉觞的博客 1175

Python使用netmiko配置华为交换机

1.netmiko就是专门为网络设备做的模块,非常强大。1.更适合网络设备的自动化运维模块。2、批量配置变更、备份。1.安装netmiko。2. 创建SSH连接。一、netmiko介绍。

博然的宝藏库 2795

敏捷测试的角色

注:摘自《软件测试技术大全》2.2在敏捷项目中,测试人员的角色可以进一步地细分,如图2.5所示。图2.5  敏捷测试角色的细分在这个矩阵中,可分成4个角色:q     面向业务的批判产品角色。q     面向技术的批判产品角色。q     面向业务的支持编码角色。q     面向

软件质量优化 2686

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

究竟什么是敏捷测试

时至今日,还讨论这样一个老话题,是否感觉老调重弹?因为两年前(2010年底)时任谷歌中国测试经理的段念先生就写了一篇文章《什么是敏捷软件测试》(刊登在InfoQ网站上[1]), 就已经谈到这个话题,“敏捷软件测试更多的是一种理念,而非过程”。在2011年,我自己也写了一篇文章《敏捷测试的思考和新发展》,刊登在《程序员》杂志上,谈到“在BDD、ATDD和TDD最根本的、共同的思想基础上,构成一个全新

软件工程专栏 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

究竟什么是敏捷软件测试?

时至今日,还讨论这样一个老话题,是否感觉老调重弹?因为两年前(2010年底)时任谷歌中国测试经理的段念先生就写了一篇文章《什么是敏捷软件测试》(刊登在InfoQ网站上[1]), 就已经谈到这个话题,“敏捷软件测试更多的是一种理念,而非过程”。在2011年,我自己也写了一篇文章《敏捷测试的思考和新发展》,刊登在《程序员》杂志上,谈到“在BDD、ATDD和TDD最根本的、共同的思想基础上,构成一个

梅森上校的博客 业精于勤荒于嬉,形成于思毁于随。 1297

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

什么是敏捷软件测试

转自:http://www.infoq.com/cn/articles/agile-test 时至今日,还讨论这样一个老话题,是否感觉老调重弹?因为两年前(2010年底)时任谷歌中国测试经理的段念先生就写了一篇文章《什么是敏捷软件测试》(刊登在InfoQ网站上[1]), 就已经谈到这个话题,“敏捷软件测试更多的是一种理念,而非过程”。在2011年,我自己也写了一篇文章《敏捷测试的思考和新

明确目标,明白做事,努力就有机会。 707
上一篇: 敏捷测试指引(2) - 测试与例子
下一篇: 我们为什么要写测试用例?
TIB
TIB
博客等级 码龄19年 2879粉丝 957原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值