CCSDS_study project
This commit is contained in:
107
test/netzob_test_folder_analysis.md
Normal file
107
test/netzob_test_folder_analysis.md
Normal file
@@ -0,0 +1,107 @@
|
||||
以下是 `/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)的测试最为严格,使用官方标准向量逐条验证。
|
||||
Reference in New Issue
Block a user