4.7 KiB
以下是 /home/zjz/CCSDS_study/netzob-030/test 目录的详细分析:
目录结构
test/
├── README_TEST.rst
├── resources/
│ ├── files/ # 原始消息文件(dat/txt)
│ ├── pcaps/ # PCAP抓包文件
│ └── test_netzob/ # 各模块专用测试向量
│ ├── test_Checksums/ # CRC测试向量
│ ├── test_Hashes/ # NIST CAVS哈希测试向量
│ └── test_Hmacs/ # NIST HMAC测试向量
└── src/
├── common/ # 测试基础设施
└── test_netzob/ # 所有测试模块
测试入口与基础设施
suite_global.py — 全局入口,当前只激活了 suite_DocTests,其余套件被注释掉。
NetzobTestCase.py — 所有测试的基类,继承 unittest.TestCase。
xmlrunner.py — JUnit 兼容的 XML 报告输出器,用于 CI 集成。
核心测试套件
1. suite_DocTests(唯一激活的套件)
从 50+ 个源码模块的 docstring 中提取 doctest,覆盖:
| 模块类别 | 代表模块 |
|---|---|
| 类型系统 | String, Integer, BitArray, Raw, IPv4, Timestamp |
| 词汇表/格式 | Symbol, Field, Protocol, Alt, Agg, Repeat |
| 字段切分 | FieldSplitStatic, FieldSplitAligned, FieldSplitDelimiter |
| 聚类推断 | ClusterByKeyField, ClusterByAlignment, ClusterBySize |
| 密码学字段 | HMAC×5, Hash×6, CRC×6 |
| 状态机 | State, Transition, Automata, AbstractionLayer |
| 模糊测试 | 13种 Mutator + 4种 Generator |
| 协议仿真 | Actor, TCPServer/Client, UDPServer/Client, SSLClient |
| 导入导出 | PCAPImporter, FileImporter |
2. test_Tutorials(教程集成测试)
| 文件 | 功能 |
|---|---|
test_ICMP.py |
构建 ICMP 报文,含 CRC16 自动计算校验和 |
test_USBMouseProtocol.py |
对 USB 鼠标数据包做 splitStatic() 字段推断 |
test_ImportPCAP.py |
从 botnet_irc_bot.pcap 导入17条消息,测试 BPF 过滤 |
test_StaticFieldSlicing.py |
不同粒度(SIZE_8/16)和合并策略的字段切分 |
test_ManualFieldStatic.py |
自动切分后手动 mergeFields() 合并字段 |
3. 密码学正确性测试(使用 NIST 标准向量)
test_Checksums.py — 6种CRC:CRC16、CRC16DNP、CRC16Kermit、CRC16SICK、CRC32、CRCCCITT
test_Hashes.py — 6种哈希:MD5、SHA1、SHA2-224/256/384/512(短消息+长消息)
test_Hmacs.py — 5种HMAC:HMAC-SHA1/224/256/384/512
验证方式:构建 Symbol([data_field, crypto_field]),specialize() 后与 NIST 预期值比对。
4. test_Common(单元测试)
| 文件 | 测试内容 |
|---|---|
test_Field.py |
Field 的7种属性(格式/字节序/符号/编码/可视化/变换函数) |
test_Encoding.py |
FormatFunction 在 HEX/STRING/DECIMAL/OCTAL/BINARY × 3种单位大小下的输出 |
test_TypeIdentifier.py |
自动识别数字/字母/Base64/十六进制字符串类型 |
test_Endianness.py |
字节序常量值验证 |
5. test_Alignment(对齐算法)
test_Needleman.py— Needleman-Wunsch 语义对齐,含回归测试(验证已知 bug 不再出现)test_UPGMA.py— UPGMA 层次聚类,验证法语问候消息能正确分组test_NeedlemanInC.py/test_UPGMAInC.py— 对应 C 语言加速版本的测试
6. 其他
test_public_api.py — 通过 AST 解析验证所有 @public_api 方法都有完整类型注解(当前宽松模式,失败只打印不报错)。
test_Export/test_ScapyExporter.py — 验证将 Symbol 导出为 Scapy 协议定义 Python 文件。
总结
测试目录以 doctest 为主要测试方式(测试即文档),辅以密码学正确性测试(NIST 标准向量)和教程式集成测试。当前只有 suite_DocTests 被激活,其余套件处于注释状态。密码学模块(Hash/HMAC/CRC)的测试最为严格,使用官方标准向量逐条验证。