菜单

测试

相关源文件

本页面记录了dive项目使用的测试基础设施和方法。它涵盖了如何运行测试、可用的测试类型以及代码库提供的测试工具。有关构建应用程序的信息,请参阅 构建系统

测试基础设施概述

Dive采用多层测试方法,以确保其各个组件的可靠性。测试基础设施围绕Go的标准测试包构建,并增加了用于测试Docker镜像分析的辅助函数。

来源: Makefile43-44 dive/image/docker/testing.go12-34

测试类型和组织

单元测试

dive中的单元测试遵循Go的标准测试约定,测试文件与它们测试的代码一起存放,并使用 _test.go 后缀。这些测试侧重于隔离验证单个组件的行为。

集成测试

集成测试验证系统不同组件之间的交互。在dive中,这些测试通常涉及分析实际的Docker镜像,以确保分析过程能够端到端地正确工作。

分析测试

分析测试是一种特殊的集成测试,侧重于验证镜像分析功能。这些测试加载Docker镜像存档,并检查分析结果是否与指标的预期值相匹配,例如

  • 镜像大小
  • 效率得分
  • 浪费的字节
  • 用户大小的字节
  • 浪费的百分比

来源: dive/image/docker/image_archive_analysis_test.go7-43 dive/image/docker/testing.go23-34

测试工具

Dive提供了辅助函数来简化测试,特别是针对Docker镜像分析。

TestLoadArchive

此实用函数用于从tar文件中加载Docker镜像存档以进行测试。

来源: dive/image/docker/testing.go12-21

TestAnalysisFromArchive

此实用函数简化了为测试分析Docker镜像存档的过程。

来源: dive/image/docker/testing.go23-34

运行测试

本地测试

要本地运行测试,您可以使用任务运行器或直接使用go test命令。

CI 测试

该项目包含特定于CI的测试,包括针对Windows环境的测试。

Windows CI测试专门针对测试Docker镜像以CI模式运行应用程序。

dive.exe --source docker-archive .data/test-docker-image.tar --ci --ci-config .data/.dive-ci

来源: Makefile43-44

测试数据管理

测试数据,包括Docker镜像存档,存储在 .data 目录下。主要使用的测试镜像文件是 .data/test-docker-image.tar

测试数据文件目的用途
.data/test-docker-image.tar用于测试的Docker镜像存档镜像分析测试,CI测试
.data/.dive-ci用于测试的CI配置CI测试

来源: dive/image/docker/image_archive_analysis_test.go17 Makefile44

为dive编写测试

在为dive编写测试时,特别是对于与Docker镜像交互的组件, TestLoadArchiveTestAnalysisFromArchive 辅助函数可以简化此过程。

测试镜像分析

要测试镜像分析,请使用与现有分析测试类似的模式。

  1. 为效率、大小和浪费的字节等指标定义预期值。
  2. 使用 TestAnalysisFromArchive 来分析测试镜像。
  3. 将实际结果与预期值进行比较。

来源: dive/image/docker/image_archive_analysis_test.go7-43

调试测试

当测试失败时,标准的Go测试输出会提供关于失败原因的信息。对于镜像分析测试,需要检查的关键指标包括:

  • SizeBytes
  • UserSizeByes
  • WastedBytes
  • WastedUserPercent
  • 效率

这些值的差异可能表明分析代码存在问题或测试数据发生变化。

来源: dive/image/docker/image_archive_analysis_test.go23-41