🔗 特性:源代码测试
- 目标:为 Squid 提供一个全面的白盒代码测试环境
- 状态:已完成
- 版本: 3.1
- 开发者:AmosJeffries, AlexRousskov, FrancescoChemolli, 所有人
🔗 详细信息
Squid-3 的开发者已经决定,Squid-3 的代码库现在可以处理比临时 CPP 单元测试和开发者自我测试更好的测试方法。
此测试涉及代码库和当前开发者实践的多项更改。
🔗 自动化代码测试
- CPP 单元测试。(已通过 cppunit 工具临时提供,将添加更多)
- valgrind 内存管理测试。(已集成使用,但尚未被所有开发者定期使用。这可能会包含在补丁指南中。)
- 其他测试可能仍会选择使用。
| 阶段 | 状态 | 操作 |
|---|---|---|
| 1 | 完成 | 3.0+ 发布版的自动化构建测试 |
| 2 | 完成 | 3.1+ 代码的自动化依赖项测试 |
| 3 | 完成 | 3.0+ 每日自动化测试 |
| 4 | 完成 | 多操作系统上的测试调度,请参阅 BuildFarm |
| 5 | 完成 | 自动化缺陷跟踪,请参阅 CoverityTesting |
:inormation_source: 此系统实施的所有阶段都可能涉及持续改进。此处的状态仅仅表明阶段操作已实施并开始使用。
🔗 参与测试
请参阅 BuildFarm 了解所需内容以及如何志愿贡献机器作为测试从属。
🔗 需要志愿者执行的任务
- 定位并列出所有尚未进行单元测试的类
- 定位并标记所有尚未进行单元测试的类方法
- 为上述内容添加单元测试
🔗 组件测试控制
我们现在有一套测试套件脚本,可以快速轻松地对 Squid 中的任何组件进行编译测试。这由源代码中的一组文件 test-suite/buildtests/layer-N-*.opts 控制。
它们为测试机制提供了一个简单的 OPTS 环境变量,其中包含构建其测试运行期间的 ./configure 开关列表。
它们被分成一组层,在测试过程中按顺序运行。每层提供不同级别的组件功能,并单独运行。层根据组件独立性构建。可以一次运行多个不相交的组件。但是相交的组件必须测试其所有排列组合。另外还有两个特殊情况层 00 和 01,分别用于默认和最小构建。
| 层 | 文件 | 扫描 | 内容 |
|---|---|---|---|
| 00 | layer-00-default.opts | 2 | 这不提供新选项。保留 ./configure 的默认设置。 |
| 01 | layer-01-minimal.opts | 1 | 这定义了禁用组件所需的所有选项。向下至 squid 运行所需的最低限度。 |
| 02 | layer-02-maximus.opts | 1 | 定义所有可能启用为 ON 的选项。 |
| 03 | layer-03-fail-*.opts | 失败测试。预期会失败的单个选项或组合。 | |
| 04 | layer-04-maybe-*.opts | 失败测试。可能失败也可能成功的单个选项或组合。例如 eCAP 有/无已安装的库 | |
| 05 | layer-05-nodeps-*.opts | 2 | 测试插件-播放组件,当所有插件都缺失时。 |
| 06+ | 未确定 | 这提供了所有可能启用且不依赖于 squid 中其他组件的组件。例如 ident |
还通过 os-X.opts 控制文件为平台特定构建提供了测试支持。这些文件在非本地操作系统上可能无法正确构建,因此完全是可选的,并且不保证具有权威性。希望计划中的多系统测试可以使用这些由软件包维护者提供的文件来减少跨平台问题。
🔗 需要志愿者执行的任务
- 检查所有组件的独立性。这可以通过代码中的 #if USE_X 宏轻松识别。但这可能需要一些时间。
- 需要将层 03 和 04 失败的处理程序添加到主脚本中
- 需要创建层 03 和 04 的 case .opts
🔗 架构重新对齐
将代码模块化为方便的功能单元是 3.x 版本的所有内容。
代码正在重新组织为功能单元,并作为内部库模块构建,以匹配已完成的代码级清理。
这建立在依赖树自动化的基础上,以确保功能单元是独立的。
🔗 补丁指南
- 一套关于未来所有 Squid 代码修改的指南。待定
🔗 其他测试
Squid 运行时行为的测试仍需完善。已建议选择一些黑盒测试工具,并且正在组装一些机制。这项工作将在稍后的一个独立特性页面中介绍。
类别:功能
导航:站点搜索,站点页面,类别,🔼 向上