时间单元测试的想法和技巧?

2023-11-26

有人做过时间单元测试吗?

我什至不确定这样的术语是否已被创造,但重点是测试操作是否在时间限制内执行。我有一些算法,我想测试它们的执行时间是否按预期增加,我想类似的测试可以用于 IO,以及什么不是,有点像 test_timeout 之类的。

然而,由于硬件会影响执行速度,因此它看起来并不微不足道。所以我想知道是否有人以前尝试过这种事情,是否可以分享他们的经验。

Thanks

Edit:尝试编制一份在这种情况下需要注意的事项清单


只是我的经验中的一些注释...我们关心许多组件的性能,并且有一个非常类似单元测试的框架来练习和计时它们(事后看来,我们应该只使用CppUnit or boost::test就像我们对单元测试所做的那样)。我们将这些称为“组件基准测试”而不是单元测试。

  • 我们没有指定时间上限,然后通过/失败......我们只是记录时间(这部分与客户不愿意实际给出硬性能要求有关,尽管性能是他们非常关心的事情!) 。 (我们过去曾尝试过通过/失败,但体验很差,尤其是在开发人员机器上......由于电子邮件到达或某些内容在后台建立索引而导致太多误报)
  • 致力于优化的开发人员只需致力于缩短相关的基准测试时间,而无需构建整个系统(与单元测试非常相似,让您专注于代码库的一小部分)。
  • 大多数基准测试都会测试某些事物的多次迭代。资源的延迟创建可能意味着组件的首次使用可能需要相当多的与其相关的“设置时间”。我们注销“第一次”、“平均后续”和“平均所有”次数。确保您了解它们之间任何显着差异的原因。在某些情况下,我们会根据具体情况明确对设置时间进行基准测试。
  • 应该是显而易见的,但是:只需为您真正关心的代码计时,而不是测试环境设置时间!
  • 对于基准测试,您最终会比在单元测试中测试更多的“真实”案例,因此测试设置和测试运行时往往是一个lot longer.
  • 我们有一台自动测试机器每晚运行所有基准测试并发布所有结果的日志。理论上,我们可以绘制图表或标记低于目标性能的组件。实际上,我们还没有时间进行类似的设置。
  • 您确实希望这样的自动测试机器完全摆脱其他职责(例如,如果它也是您的 SVN 服务器,则有人进行大量检查将使您看起来像是出现了巨大的性能回归)。
  • 考虑除时间之外您可能想要进行基准测试的其他标量,并计划从一开始就支持它们。例如“达到的压缩比”、“天网AI IQ”……
  • 不要让人们对低于最低规格的硬件进行基准数据分析。我见过浪费时间的设计决策,因为在某人的垃圾笔记本上运行基准测试,而在目标平台(高端服务器)上运行会表明完全不同的东西!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间单元测试的想法和技巧? 的相关文章

随机推荐

  • 通用 querydsl orderBy 具有左连接的动态路径生成

    我在使用 JPA 与 Querydsl 和 Hibernate 进行数据存储管理时遇到了问题 样例模型如下 Entity public class User ManyToOne JoinColumn name CATEGORY ID pri
  • IE https CORS XHR 请求失败,并显示 Script7002:XMLHttpRequest:网络错误 0x2eff

    在所有其他非 IE 浏览器中 以下代码片段效果很好 在两个不同的 IE11 浏览器 在不同的操作系统版本
  • 使用 BeautifulSoup CSS 选择器获取文本

    HTML 示例 h2 ABC span class numbers 123 span span class lower abc span h2 我可以通过以下方式获取数字 soup select name gt span numbers 0
  • 同一类型的多个对象集

    我尝试在 EF5 RC 中创建与此类似的数据上下文 class WordContext DbContext public DbSet
  • Javascript 类型数组和字节顺序

    我正在使用 WebGL 渲染二进制编码的网格文件 二进制文件以大端格式写入 我可以通过在十六进制编辑器中打开文件或使用 fiddler 查看网络流量来验证这一点 当我尝试使用 Float32Array 或 Int32Array 读取二进制响
  • NSNotificationCenter 选择器未被调用

    在我的 iPad 应用程序中 我在一堂课中注册了一条通知 NSNotificationCenter nc NSNotificationCenter defaultCenter nc addObserver self selector sel
  • 如何更改Android顶部工具栏菜单项图标大小

    如何更改 Android 工具栏中菜单项的大小 目前菜单的尺寸非常小 我想增加尺寸 如果有人知道请帮助我找到解决方案 应用程序栏 xml
  • 验证访问令牌 - Asp.Net 身份

    我正在使用 ASP Net Identity 来实现外部登录 用户使用 Google 登录后 我获得了 google 的外部访问令牌 然后我进行第二次 api 调用获取LocalAccessToken 它将外部访问令牌换成新的本地访问令牌
  • Android 如何获取两个时区之间的时差?

    我需要获取不同时区的两个日期之间的时差 目前我正在这样做 Calendar c1 Calendar getInstance TimeZone getTimeZone EDT Calendar c2 Calendar getInstance
  • 适用于 Windows 和 Linux 的 Go 中的命名管道

    我是 Go 新手 我想在 Go 中创建命名管道实现 它可以在 Windows 和 Linux 上运行 我设法让代码在 Ubuntu 上运行 但是这个代码在 Windows 上不起作用 Go 中是否没有任何抽象允许您在两种环境中使用命名管道
  • 如何使用 React Native 强制用户更新应用程序

    我已经在应用程序和 Play 商店中更新了我的应用程序 并且我想强制我的应用程序用户在应用程序商店和 Play 商店中更新应用程序的新版本 您可以使用此库检查应用程序的 App Store Play Store 版本反应本机应用商店版本检查
  • JSON对象到文档

    您好 我是 mongodb 新手 我想将 JSONObject 转换为文档 然后将其存储到 mongodb 这是我编码的内容 我得到了一个 json 格式的服务 api CloseableHttpResponse response http
  • 禁用来自NotificationChannel的声音

    今天我开始瞄准 API 26 这迫使我使用通知通道 我的问题是 现在每个新通知 包括更新 都会播放烦人的声音 如何禁用此声音 我尝试用自定义 mp3 声音替换此声音 然后将其传递为静音的 mp3 但这被忽略 我只是添加一个优先级非常低的通知
  • 如何在加载实际内容之前加载小占位符图像

    我有一个关于图像加载样式的问题 如图所示http www e flux com 该网站首先 随机 加载特定图案的图像 然后再继续显示实际图像 我的猜测是 这是在加载整个网站之前就拥有视觉上令人愉悦的内容 我查看了源代码 发现它有一类 laz
  • 如何从 xml 文件中删除 BOM 字符 [重复]

    这个问题在这里已经有答案了 我正在使用 xsl 来控制 xml 文件的输出 但正在添加 BOM 字符 vim file xml set nobomb wq
  • Java 日历的设置值没有给出预期的日期时间

    我有一个小时 分钟 日期和毫秒时间戳 并且正在尝试创建一个表示时间的 Date 对象 时间戳以东部夏令时间提供 在剖析这个问题时 我创建了一些简单的测试代码来查看发生了什么 并观察到以下情况 Date today new Date int
  • 如何将 QMetaMethod 与 QObject::connect 一起使用

    我有两个 QObject 子类实例和一个对象中信号的两个 QMetaMethod 实例以及另一个对象中插槽的两个实例 我想将这个信号和插槽相互连接 我查看了 qobject h 文件 发现 SIGNAL 和 SLOT 宏只是在方法签名的开头
  • 如何在 slick + postgresql 上进行分页选择

    在使用 slick 3 的 postgresql 数据库中 分页的最佳方式是什么 获取所有行并使用 scala 进行分页 似乎效率不高 带限制和偏移量的静态查询 还有其他办法吗 您可以使用take and drop上的方法TableQuer
  • 如何向连续几天的“连续”行中添加运行计数

    谢谢Mike添加创建 插入语句的建议 create table test pid integer not null date date not null primary key pid date insert into test value
  • 时间单元测试的想法和技巧?

    有人做过时间单元测试吗 我什至不确定这样的术语是否已被创造 但重点是测试操作是否在时间限制内执行 我有一些算法 我想测试它们的执行时间是否按预期增加 我想类似的测试可以用于 IO 以及什么不是 有点像 test timeout 之类的 然而