本页面记录了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镜像分析。
此实用函数用于从tar文件中加载Docker镜像存档以进行测试。
来源: dive/image/docker/testing.go12-21
此实用函数简化了为测试分析Docker镜像存档的过程。
来源: dive/image/docker/testing.go23-34
要本地运行测试,您可以使用任务运行器或直接使用go test命令。
该项目包含特定于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编写测试时,特别是对于与Docker镜像交互的组件, TestLoadArchive 和 TestAnalysisFromArchive 辅助函数可以简化此过程。
要测试镜像分析,请使用与现有分析测试类似的模式。
TestAnalysisFromArchive 来分析测试镜像。来源: dive/image/docker/image_archive_analysis_test.go7-43
当测试失败时,标准的Go测试输出会提供关于失败原因的信息。对于镜像分析测试,需要检查的关键指标包括:
SizeBytesUserSizeByesWastedBytesWastedUserPercent效率这些值的差异可能表明分析代码存在问题或测试数据发生变化。