ODF 條款對測試追蹤
本文件說明 OdfKit 如何驗證輸出與輸入符合 ODF 1.0~1.4,以及哪些事情不宣稱。 它不是合規認證,OdfKit 也不宣稱完整合規。
方法
依 OASIS OIC 互通性白皮書 的建議,組合多種互補的自動化檢查,而不是為每個句子維護人工裁決帳本:
- 官方 RELAX NG schema 驗證:XML 有效性是必要但不充分的條件。
- 獨立驗證器差異測試:由官方 schema 合成最小有效文件,Jing 為獨立判定者, OdfKit 驗證器在 Strict 與 Extended 設定下都必須與它一致。
- schema 之外的規則:ODF 1.2 以後只出現在規範文字中的約束(例如
xml:id唯一、config:name前綴、動畫識別碼),以具名規則(ODF3xxx)實作,並各有正反向回歸測試。 - 原子功能與往返測試:每個功能以最小文件讀寫、再載入並比對。
- 互通語料:
tests/fixtures/corpus與 LibreOffice/OPF 驗證器的互通工作流程。
追蹤範圍
追蹤單位是已出版的編號條款(約 12,256 條),不再拆成逐句義務。 條款清單與缺口統計見 合規矩陣。
測試位置
| 內容 | 位置 |
|---|---|
| 屬性定義差異測試(8,358 案例) | OdfKit.Tests/OdfAttributeDefinitionConformanceTests.cs、OdfKit.Tests/TestData/OdfAttributeCases.jsonl.gz |
| 元素定義差異測試(12,139 案例) | OdfKit.Tests/OdfElementDefinitionConformanceTests.cs、OdfKit.Tests/TestData/OdfElementCases.jsonl.gz |
| 夾具重新驗證 | eng/Test-OdfAttributeFixture.py、eng/Test-OdfElementFixture.py |
| 語料驗證 | eng/Test-OdfCorpus.ps1、tests/fixtures/corpus/manifest.json |
| 合規矩陣契約 | eng/Test-OdfConformanceMatrix.ps1 |
不宣稱的事
- 不宣稱完整合規,也不是 OASIS 或其他機構的認證。
- 差異測試證明 OdfKit 驗證器與 Jing 對合成案例判定一致,不證明所有真實文件都能正確處理。
- 規範文字中無法自動測試的要求,保留為缺口,不算成已通過。
歷史
先前曾維護逐句語意分類與實作裁決的雜湊帳本(約 5,862 個義務群組)。因維護成本
遠高於它帶來的驗證價值,且沒有外部標準依據,已於後續提交移除。最後完整版本位於
提交 3add086f,需要時可由 git 歷史還原。逐句義務清單與分類(約 123,633 個候選句、
逾 100 MB 的 CSV)也已一併移除,因為沒有任何工具或測試使用它們。其中發現的缺陷修正與測試均已保留。