单元测试与验收测试

2024-02-21

你支持其中之一吗?或两者?

我的理解是单元测试:

  • 从开发人员的角度验证系统
  • 帮助开发者实践TDD
  • 保持代码模块化
  • 协助检测低粒度的错误

验收测试:

  • 从业务和 QC/QA 角度验证系统
  • 往往是高级别的,因为它们通常是由不熟悉代码内部工作原理的人编写的

我感觉两者都有必要。然而,为了最大限度地减少冗余工作,尝试将单元测试纳入验收测试是一个好主意吗?换句话说,让后者调用前者。朝相反的方向前进还有意义吗?

您对单元测试与验收测试的总体看法是什么,以及如何管理它们之间的关系?


验收和集成测试会告诉您代码是否有效且完整;单元测试会告诉你哪里失败了。

如果您在验收和集成测试方面做得很好,并且它们通过了,那么您的代码正在实现它应该实现的所有功能,并且它正在工作。很高兴知道这一点(也很高兴知道事实并非如此)。但如果它不起作用,验收测试不会让你深入了解哪里出了问题;由于它测试了许多功能单元,因此它可以是失败的鸟瞰图。这就是单元测试的亮点。好的单元测试可以准确地告诉您出了什么问题,以及代码的哪一部分。与验收测试相比,了解您是否编写了足够的单元测试更难,但是当您的验收测试失败而没有相应的失败单元测试时 - 是时候编写该单元测试了。

这都是从测试角度来看的。当然,TDD 不是(ATDD 也不是)测试。在推动设计方面,验收测试为您提供了一个广泛的路线图(“这就是您想去的地方”),而单元测试则将您带到下一个十字路口(“左转”)。它们在这方面都很有价值,而且它们的价值又是相辅相成的。

不要混淆它们;不要让他们混血。特别是单元测试不应该依赖于其他任何东西,并且通过使验收测试依赖于它们来限制单元测试将是错误的。当然他们可以共享一些框架代码,但是他们应该是独立的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单元测试与验收测试 的相关文章

  • Python 单元测试 Google Bigquery

    我在对以下代码块进行单元测试时遇到问题 from google cloud import bigquery from google oauth2 import service account def run query query gcp
  • 单元测试中的多个断言[重复]

    这个问题在这里已经有答案了 我刚刚读完 Roy Osherove 的 单元测试的艺术 我正在努力遵循他在书中提出的最佳实践 最佳实践之一是不要在测试方法中使用多个断言 这条规则的原因对我来说相当清楚 但它让我想知道 如果我有这样的方法 pu
  • 使用 Python 2.7 中的修饰方法调用进行模拟

    这段代码 import mock from functools import wraps def dec f wraps f def f 2 args kwargs pass return f 2 class Example object
  • Android:如何测试自定义视图?

    Android 中有多种单元测试方法 测试我编写的自定义视图的最佳方法是什么 我目前正在将其作为仪器测试用例活动的一部分进行测试 但我宁愿只测试孤立的视图 对于缺乏以视图为中心的测试用例实现的一个简单解决方案是在包含视图的测试项目中创建一个
  • grailsGrails 单元测试中的应用程序访问

    我正在尝试为使用 grailsApplication config 进行一些设置的服务编写单元测试 看来在我的单元测试中 服务实例无法访问其设置的配置文件 空指针 而当我运行 run app 时它可以访问该设置 我如何配置服务以在单元测试中
  • 无法测试通过 NSubstitute 接收的 ILogger

    我有一个 Net Core 3 应用程序 并尝试在我的方法中测试对 ILogger 的调用 public class MyClass private readonly ILogger
  • Python 模拟中的模拟属性?

    我使用起来相当困难mock在Python中 def method under test r requests post http localhost post print r ok prints
  • QUnit 不会运行测试

    我刚刚开始使用 QUnit 并遇到问题 我目前正在使用 TypeScript 它是一个 JavaScript 编译器 我在与我的主要课程结构平行的课程中进行测试 在每个类中 我都有一个名为 runTests 的函数 为了执行这些测试 我循环
  • Nunit 测试给出结果 OneTimeSetUp: 未找到合适的构造函数

    我有一个问题 NUnit 告诉我 没有找到合适的构造函数 这是什么原因造成的 我还收到另一条消息 异常没有堆栈跟踪 这两条消息只是一遍又一遍地重复 这是我的代码 TestFixture public class SecurityServic
  • 单例可以促进遗留代码库中的单元测试。好主意好不好?

    各位 我有一个庞大的遗留 Net 代码库 并且我正在尝试向团队引入单元测试 他们是好人 但这对他们来说是全新的 老实说 这对我来说也是相当新的 问题之一是代码库大量使用 System IO 中的静态类 有大量的内部静态类库 并且类不会写入接
  • 如何为 Rust 测试中的所有测试函数创建一个具有作用域/生命周期的变量?

    我有一个在深入测试细节之前初始化变量的测试 我想使用相同的变量进行第二次测试 而不是重复初始化代码 test fn test one let root Path new data the rest of the test test fn t
  • 如何知道您的单元测试装置是否“尺寸合适”?

    您如何知道 测试夹具 的尺寸是否合适 我所说的 测试夹具 是指一个包含大量测试的类 我在测试装置中一直注意到的一件事是它们变得有点冗长 鉴于它们也可能不够详细 您如何了解单元测试的大小是否合适 我的假设是 至少在 Web 开发的背景下 您应
  • 使用原始类型模拟案例类

    考虑以下类型结构 trait HasId T def id T case class Entity id Long extends HasId Long 比方说 我们想在一些测试中模拟实体类 val entityMock mock Enti
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • 包含routeChangeSuccess的AngularJS测试控制器

    我正在尝试创建单元测试来测试导航列表控制器 但在创建测试时遇到问题 这是控制器的代码 navListModule controller NavListCtrl scope NavList function scope NavList sco
  • TDD iOS 教程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您好 我正在寻找非常好的 iOS TDD 教程 请您帮助我 什么是最好的 iOS TDD 书籍 博客
  • 使用 Retrofit2 和 Mockito 或 Robolectric 进行 Android 单元测试

    我可以测试 Retrofit2beta4 的真实响应吗 我需要 Mockito 或 Robolectic 吗 我的项目中没有活动 它将是一个库 我需要测试服务器是否正确响应 现在我有这样的代码并卡住了 Mock ApiManager api
  • 使用 typescript、karma 和 jasmine 进行 RxJS Observable.timer 单元测试

    大家好 我对 Angular2 Karma 和 Jasmine 还比较陌生 目前我正在使用 Angular 2 RC4 Jasmine 2 4 x 我有一个 Angular 2 服务 它定期调用 http 服务 如下所示 getDataFr
  • Protractor e2e 测试表头和 , 标签

    我正在使用下表 我想测试每个标签 th td 标签 该标签中的文本以及该文本的计数 HTML 片段 table class table table striped tbody tr th b a Patient Id a b th th b
  • 从文件夹中删除文件的单元测试方法

    我们有一个方法 它将文件夹名称和天数作为参数 public void Delete string folder int days var files Directory GetFiles folder foreach var file in

随机推荐

  • 导入环境变量反应前端

    我已经使用引导了一个应用程序create react app 我有一个令牌 但不想推送到 GitHub 我已经跑了yarn add dontenv然后尝试将环境变量导入到我的App js file 我的代码看起来像这样 env TOKEN
  • 使用 C# .NET 驱动程序 2.0 投影 mongodb 子文档

    我有以下结构 public class Category BsonElement name public string CategoryName get set BsonDateTimeOptions BsonElement dateCre
  • 如何监听子窗口关闭?

    我正在以这种方式打开 Facebook 共享的子窗口 window open sharingUrl toolbar 0 status 0 width 626 height 436 当用户单击共享或关闭时 窗口会自动关闭 有没有办法为这些事件
  • 如何刷新“RandomAccessFile”(java)?

    我在java中使用RandomAccessFile file new RandomAccessFile filename rw file writeBytes 如何确保这些数据刷新到操作系统 没有 file flush 方法 请注意 我实际
  • 调整大小时出现黑色边框

    我开始了我的WPF学习之旅 经过几天的编码 我发现每当我调整任何 WPF 表单的大小时 调整大小时底部和右侧都会出现黑色边框 就像一个伪影 就好像屏幕太慢一样 在使用 winform 时我从未注意到这一点 就像这样 这是一个已知问题吗 有什
  • VSCode的默认设置文件的位置在哪里?

    在 Windows 计算机上 VS Code 用户设置文件位于 AppData Code User settings json 当我们从上述位置打开用户设置文件或转到左侧窗格中时 包含默认设置的文件的位置是什么 文件 gt 首选项 gt 设
  • Scada-Lts - “未指定数据源”错误

    我尝试使用 jdk 1 7 在 Tomcat 7 上运行 Scada Lts 但出现以下错误 SEVERE Exception sending context initialized event to listener instance o
  • 如何使用 Process.Start("outlook.exe") 运行 Outlook 并重新获得控制权

    我的 C 程序需要启动 Office Outlook 并获取当前的 正在运行的 Outlook 应用程序 为了做到这一点 我实现了以下简单的程序 所以如果你愿意 你可以简单地测试它 using Outlook Microsoft Offic
  • .NET 的状态机框架

    我工作中的系统基本上是一个消息驱动的状态机 它接收各种类型的消息 根据消息查找某些上下文 状态 然后根据消息和当前状态决定要做什么 通常结果是一条消息被发送到系统之外 有没有好的开源框架可以在 NET 中实现状态机 我研究了最新版本的 Wi
  • Oracle sql MERGE INTO 带有单个 where 子句

    我有以下 SQL 代码 这是我到目前为止所得到的 MERGE INTO SCHEMA1 TABLE 1 table1 USING SELECT DISTINCT table2 column1 view1 column2 FROM SCHEM
  • 如何在 PHP 中使用 RegexIterator

    我还没有找到如何使用 php RegexIterator 递归遍历目录的好例子 最终结果是我想指定一个目录并查找其中具有某些给定扩展名的所有文件 例如只说 html php 扩展 此外 我想过滤掉 Trash 0 Trash 500 等类型
  • 可以禁用@media查询或强制解决吗?原因:允许 iPhone 查看桌面网站吗?

    我通过 media 查询对我的网站进行了大幅修改 以在手机上显示得非常精简 但是 我的用户要求提供该网站的桌面版本 可通过链接获取 更进一步 桌面站点本身也会根据分辨率被 media 查询修改 我正在考虑选择一种 桌面 分辨率 例如 144
  • 未选取环回 4 测试配置

    我跟着Loopback4 数据源 https loopback io doc en lb4 DataSources html文档并放置样本 数据源 json and 样本 测试 数据源 json文件下src 数据源 每当我跑步时npm ru
  • Java CGI 与 Servlet [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Tweepy 错误代码 400

    我正在尝试下载一些推文用于研究目的 直到几天前 代码都运行得很好 错误信息 gt Traceback most recent call last gt gt File
  • 编译时如何使用通配符包含 JAR 文件?

    我在 java 文件 MyRtmpClient java 中有以下内容 import org apache mina common ByteBuffer and ByteBuffer位于 JAR 文件内 当然具有正确的目录结构 该 jar
  • JQuery Ajax post 参数有时不会在 IE 上发送

    我遇到的问题是 当我使用 jquery ajax post 时 频率非常低 当我将呼叫从 post 类型切换为 get 类型时 问题就消失了 有没有其他人在 IE 上见过这种奇怪的行为 谢谢 我已经在各种 ajax 调用中看到过这种情况 但
  • 使用 Azure Function 删除 CosmosDB 条目

    我一直在寻找一种技术 通过浏览器内的代码编辑器 使用 Azure Functions 删除 Cosmos 数据库中的项目 我不想在 VS 上使用本地开发的代码有多种原因 我正在使用的代码可用here https pastebin com X
  • 向 ASP.NET Web API 控制器添加显式操作路由

    我有一个 ASP NET Web API 项目ApiController提供了一个User端点具有以下操作 GET api User POST api User DELETE api user 我想提供以下端点 GET api user m
  • 单元测试与验收测试

    你支持其中之一吗 或两者 我的理解是单元测试 从开发人员的角度验证系统 帮助开发者实践TDD 保持代码模块化 协助检测低粒度的错误 验收测试 从业务和 QC QA 角度验证系统 往往是高级别的 因为它们通常是由不熟悉代码内部工作原理的人编写