Testing Files Generator
繁體中文

產生大小精確的真實測試檔案

PDF、PNG、DOCX、ZIP,共 26 種格式,每一種都是能在對應軟體中開啟的真實檔案,大小恰好等於你的要求。每次執行還會寫下你的應用程式應該如何處理每個檔案。命令列加桌面視窗,免費開源,完全在你的電腦上執行。

免費開源,GPL-3.0。無需註冊。Windows 與 macOS 的下載檔已簽署,啟動時不會出現警告。

Testing Files Generator 的桌面視窗,已準備好寫出一批測試檔案
桌面視窗,已準備好寫出一批檔案。命令列背後執行的是同一個引擎。

問題所在

做一個測試檔案很容易,做出對的一千個才是麻煩所在

你在測試接收使用者檔案的軟體。遲早你會需要:

這正是它要取代的。它為 QA 工程師、測試自動化,以及程式碼背後有上傳表單、匯入程式、剖析器或儲存配額的所有人而做。

它的與眾不同之處

其他產生器止步於位元組。這個工具回答你的測試真正要問的問題

一個滿是檔案的資料夾仍然要你自己判斷每個檔案應該證明什麼。這裡每次執行都會在檔案旁寫出一個 manifest.json,它是所產生內容的簡單清單,並為每一項給出宣告的預期。

假設你的上傳端點允許 1 MB。請求恰好位於這條線上的三個檔案:

tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
檔案位元組你的系統應該原因
1mb_under_1b.pdf1048575接受在限制之內
1mb_at_limit.pdf1048576接受限制本身是允許的
1mb_over_1b.pdf1048577拒絕size_limit

三個檔案,三種不同的答案,以機器可讀的形式給出。你的測試讀取清單,而不是由你手寫斷言:

import json, os

directory = "edges"
manifest = json.load(open(os.path.join(directory, "manifest.json")))

for entry in manifest["files"]:
    response = upload(os.path.join(directory, entry["path"]))
    outcome = entry["expected"]["outcome"]
    if outcome == "accept":
        assert response.ok, entry["path"]
    elif outcome == "reject":
        assert not response.ok, entry["path"]

當答案取決於你自己的政策時,清單會如實說明

它記錄的是 unspecified,而不是憑空捏造預期。會猜測的產生器會製造誤報,而總是誤報的測試套件最終會被關掉。

預設集

選好問題,拿到整組檔案

預設集是圍繞一個測試問題設計的測試檔案組,你不必自己琢磨哪些檔案能證明什麼。每個預設集都有一個頁面,說明它通常能發現什麼、組合裡有什麼,以及它接受的每項設定。

全部預設集,以及它們與配方的關係

快速開始

三個指令,看它如何運作

  1. 產生一個檔案

    一個 PNG,恰好兩 MB:

    tfg generate --format png --size 2mb --out ./fixtures
  2. 產生大量檔案

    一萬個記錄檔,每個介於 1 到 8 KB 之間,大小由種子抽取,因此明天會得到同樣的檔案組。給每次執行一個獨立的目錄,清單是一次執行所寫內容的唯一記錄,所以工具拒絕在其上再寫第二份:

    tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./logs
  3. 先檢查,再刪除

    verify 告訴你沒有任何變動。cleanup 只刪除寫出的內容,不動其他任何東西:

    tfg verify ./logs/manifest.json
    tfg cleanup ./logs/manifest.json --yes

大小以 1024 進位計算,與你的檔案管理員一致,所以 2mb 代表 2097152 位元組。直接寫位元組數也可以。文件涵蓋配方、清單與結束碼。

你將得到什麼

為無人看管的測試套件而生

下載

選擇適合你系統的版本

解壓縮後執行即可。tfg 是命令列,tfg-gui 是桌面視窗。沒有安裝程式,也無需向你的電腦新增任何東西。

系統 命令列 桌面視窗
Windows amd64, arm64 amd64
Linux amd64, arm64 amd64
macOS arm64 arm64

哪些已簽署,哪些沒有

Windows 與 macOS 的下載檔已簽署,因此啟動時不會出現未知開發者的警告。Linux 的沒有簽署,因為桌面 Linux 沒有可用的對應簽署機制。每個壓縮檔都列在發布頁面的 verify-SHA256SUMS.txt 中,你可以據此核對所下載的內容。

免費開源,GPL-3.0。無需註冊。Windows 與 macOS 的下載檔已簽署,啟動時不會出現警告。