Robert C. Martin 对验收测试的解释

Robert C. Martin 对验收测试的解释

作 为验证工具来说,单元测试是必要的,但是不够充分。单元测试用来验证系统的小的组成单元应该按照所期望的方式工作,但是它们没有验证系统作为一个整体时工 作的正确性。单元测试是用来验证系统中个别机制的白盒测试(white-box tests)。验收测试是用来验证系统满足客户需求的黑盒测试(black-box tests)。

 

 

验收测试由不了解系统内部机制的人编写。客户可以直接或者和一些技术人员(可能是QA人员)一起来编写验收测试。验收测试是程序,因此是可以运行的。然而,通常使用专为应用程序的客户创建的脚本语言来编写验收测试。

 

 

验收测试是关于一项特性(feature)的最终的文档。一旦客户编写完成了验证一项特性的验收测试,程序员就可以阅读那些验收测试来真正地理解这项特性。所以,正如单元测试作为可编译、运行的有关系统内部结构的文档那样,验收测试是有关系统特性的可编译、执行的文档。

 

 

此 外,首先编写验收测试的行为对于系统的构架方面具有深远的影响。为了使系统具有可测试性,就必须要在很高的系统构架层面对系统进行解耦合。例如,为了使验 收测试无需通过用户界面(UI)就能够获得对于业务规则的访问,就必须要以满足这个目的的方式来解除用户界面和业务规则之间的耦合。

 

 

在 项目迭代的初期,会受到用手工的方式进行验收测试的诱惑。但是,这样做使得在迭代的初期就丧失了由自动化验收测试的需要带来的对系统进行解耦合的促进力, 所以是不明智的。当在最早开始迭代时,如果非常清楚地知道必须要自动化验收测试,就会做出非常不同的系统构架方面的权衡。并且,正如单元测试可以促使你在 小的方面做出优良的设计决策一样,验收测试可以促使你在大的方面做出优良的系统构架决策。

 

 

创建一个验收测试框架(framework)看起来是件困难的任务。然而,如果仅仅创建框架中对单个迭代包含的特性进行验收测试所需要的那部分,就会发现并不困难。你还会发现所花费的努力是值得的。

 

摘自:Robert C. Martin《敏捷软件开发:原则、模式与实践》

 

 

 

YOLOv8作物病害检测实战源码 这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。 立即下载

相关推荐

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.csdn.net/mtl1994

测试开发行话你懂吗?丨附注释

赠送Python Web开发从入门到精通书籍活动正在进行中Python开发从入门到精通书籍免费送Unit testing(单元测试)指一段代码的基本测试,其实际大小是未定的,通常是一...

359

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?.docx

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?

TDD的三条军规(Robert C. Martin大叔总结的)

Robert C. Martin大叔总结的TDD的三条军规,简直太到位了: 1.除非这能让失败的单元测试通过,否则不允许去编写任何的产品代码。 2.只允许编写刚好能够导致失败的单元测试。 (编译失败也属于一种失败) 3.只允许编写刚好能够导致一个失败的单元测试通过的产品代码。 对于任何功能,一定要从编写它的单元测试开始;但是到了原则2,你就不能再为那个单元测试写更多内容。只要...

温柔一刀 706

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

史上最全的app相关的面试题【多测师】

app测试常问的问题一)web端测试和app测试的区别?答:可以从app测试场景来介绍两者的区别web端主要是在浏览器上面进行测试app端主要是在不同的手机上面进行测试然后web端测试谷歌、火狐、IE等浏览器的兼容性app端测试iOS和Android端的兼容性二)app测试主要测试场景有哪些?1. 安装卸载测试(这里包含覆盖安装,卸载安装,增量升级,因为很多bug就出现在覆盖安装上面)2...

多测师_王sir的博客 2343

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

用户界面测试系列之一

GUI测试是测试驱动开发的经典难题之一。很多团队在他们项目中的很多部分都采用过TDD,但却因为某种原因而无法在GUI模块中充分进行。在这一系列的撰文中我要告诉你GUI测试其实是个可解决的问题。这些年来,TDD社区已经积累了一些工具、框架、类库或是其他的技术。这些技术让你能够完整的测试GUI代码就像测试其他模块一样。Ruby on Rails在Web开发世界里,没有任何社区能够像Ruby

Robert C. Martin博客中文版 1万+

高校技术转移办公室人员如何系统化管理科技成果信息?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何构建标准化、模块化的智能服务工具?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

程序员应该如何写优雅代码,整洁代码,迭代优化 任重道远

如何让自己的代码更加优雅,如何让自己的代码越来越健壮,如何让自己跳出天天都在处理bug的怪圈。如何让自己过了2个月后看自己编辑的代码依然轻轻松松就知道它是干嘛的。 一个开发了50年的老程序员Bob大叔告诉你就得这么干。 内容整理自Robert C. Martin的《代码整洁之道》 第一章 整洁代码 1,整洁代码力求集中,每个函数、每个类和每个模块都全神贯注于一件事。 2,整洁代码简...

hepei120的专栏 2864

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

如何编写干净代码?

罗伯特·C·马丁的经验教训 图片由rawpixel 目录: 清洁法规 书的概述—罗伯特·C·马丁(鲍勃叔叔) 什么是清洁代码? 在软件中编写有意义名称的提示。 使功能易于阅读和理解的规则。 注释代码,您应该对错误代码进行注释还是将其重写? 单元测试 ,测试驱动开发( TDD )的好处 总览 “高级程序员将系统视为要讲的故事,而不是要编写的程序。” — Bob叔叔。 干净的代...

编程故事的地方 293

告别手动解析!用这个Qt库轻松处理Cat 21/62等18种Asterix航空数据

本文介绍了基于Qt框架的高效Asterix报文解析库,帮助开发者轻松处理Cat 21/62等18种航空数据。该库通过协议抽象化、多维度API设计和跨平台支持,解决了手动解析的复杂性和易错问题,显著提升开发效率和系统可靠性。

weixin_42529366的博客 207

保姆级教程:用vxe-grid给管理后台加个「智能筛选」功能(支持模糊搜索/多选/范围查询)

本文提供了一份详细的Vxe-Grid智能筛选功能实现教程。通过自定义筛选器渲染,文章逐步指导开发者为后台管理系统添加支持模糊搜索、多选下拉和数值范围查询的智能筛选功能,并分享了性能优化与移动端适配等实战经验。

weixin_29021291的博客 536

AI时代,为什么软件工程基础反而更重要?

软件工程是一套完整的工程体系,涵盖需求分解、架构设计、编码规范、质量保障与协作流程。在AI辅助编程快速普及的今天,许多人误以为代码生成变得简单,工程基础就不再重要。然而,AI不过是高效率的代码生成器,它不关心可维护性、可扩展性与可测试性,反而让测试驱动开发(TDD)、代码审查、架构设计这些基本功的价值进一步放大。从单元测试到持续集成,从设计模式到代码整洁度,软件工程基础决定了团队能否驾驭AI带来的高速产出,避免质量债的积累。无论是个人开发者还是正在推广AI工具的团队,掌握这些基础能力,才能让AI真正成为提效

weixin_30615767的博客 423

vivado 工程修改芯片型号

vivado工程芯片与实际板子不匹配时,需要修改工程的芯片型号,并对原工程的ip进行同步更新,之后生成新的bit文件,烧录到板子中

k7126685的博客 1万+

程序员的职业素养(世界级软件开发大师Robert C. Martin谈职业素养)

《程序员的职业素养(世界级软件开发大师Robert C. Martin谈职业素养)》基本信息原书名:The Clean Coder:A Code of Conduct for Professional Programmers作者...

csdn1232的博客 382

S7-200SMART系列全套接线说明

SMART200接线方法,输入,输出,模拟量,面板,扩展糟等,并且详细说明接线原理。

文都龙哥 1万+

YOLOV8多模态(可见光+红外光目标检测任务,基于Ultralytics官方代码实现)

torch 2.3.1 torchvision 0.18.1 Python 3.8.19 tensorrt 8.5.3.1DroneVehicle数据集下载地址DroneVehicle 数据集由无人机采集的 56,878 张图像组成,其中一半是 RGB 图像,其余是红外图像。我们为这 5 个类别制作了丰富的注释,其中包含定向边界框。其中,汽车在 RGB 图像中有 389,779 个注释,在

Mjy的博客 7585

读《代码整洁之道》作者Bob大叔,Robert C Martin

什么是优雅的代码? 我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。 代码的破窗理论。窗户破损了的建筑让人觉得似乎无人照管。于是别人也再不关心。他们放任窗户继续破损。最终自己也参加破坏活动,在外墙上涂鸦,任垃圾堆积。一扇破

睡猫的博客 1341

AI技术在电商中的实际应用

人工智能、电商、推荐系统、个性化、机器学习、深度学习 1. 背景介绍 电子商务行业近年来发展迅速,用户数量不断增长,商品种类日益丰富。然而,随着市场竞争的加剧,电商平台面临着如何提升用户体验、提高转化率、挖掘潜在商机等一系列挑战。人工智能(AI)技术作为一种新兴技术,凭借其强大的数

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1740
上一篇: 落地敏捷典型问题:Sprint中的外包
下一篇: 落地敏捷典型问题:新产品开发的两大教训
Andy_AgileDo
博客等级 码龄17年 69粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值