正確なサイズの本物のテストファイルを生成
PDF、PNG、DOCX、ZIPなど、全26種類の形式に対応し、どれも対応するソフトウェアで開ける本物のファイルで、サイズは要求したとおりちょうどです。各実行では、アプリが各ファイルをどう扱うべきかも書き出します。コマンドラインとデスクトップウィンドウの両方に対応し、無料のオープンソースで、すべてあなたのマシン上で動きます。
無料のオープンソース、GPL-3.0。登録は不要です。WindowsとmacOS向けのダウンロードは署名済みで、警告なしで起動します。
-
26
種類の本物の形式、どれも対応するソフトウェアで開けます
-
1バイト
要求したすべてのサイズの正確さ。黙って丸められることはありません
-
0
外部への接続。アカウント、テレメトリ、更新確認はありません
課題
テストファイルを1つ作るのは簡単です。適切な1000個を作るのが面倒な部分です
あなたは、人からファイルを受け取るソフトウェアをテストしています。遅かれ早かれ、次のものが必要になります。
- アップロード制限が本物かどうかを確かめるための、ちょうど10MBのPDF
- 1つずれのバグを見つけるための、その制限の両側にある3つのファイル
- フォルダーが大きいとき夜間ジョブがどうなるかを見るための、1万個のログファイル
- 拡張子だけ合わせた空の殻ではなく、実際に200個のドキュメントが入ったZIP
- リポジトリに4GBのファイルを置かずに用意する4GBのファイル
- ノートPCとビルドサーバーで同じフィクスチャをバイト単位で
これが置き換える対象です。QAエンジニア、テスト自動化、そしてコードの先にアップロードフォーム、取り込み処理、パーサー、ストレージの割り当てがあるすべての人のために作られています。
他とどう違うか
他の生成ツールはバイトで終わります。これは、あなたのテストが本当に問うことに答えます
ファイルが入ったフォルダーだけでは、各ファイルが何を証明すべきかを自分で決めることになります。ここでは実行のたびに、ファイルの横にmanifest.jsonを書き出します。生成物の単純な一覧で、各項目に宣言された期待値が付きます。
アップロードのエンドポイントが1MBまでを許可するとします。その線上にある3つのファイルを要求します。
tfg generate --preset size-boundaries --limit 1mb --spread 1B --format pdf --out ./edges
| ファイル | バイト | システムの対応 | 理由 |
|---|---|---|---|
1mb_under_1b.pdf | 1048575 | 受け入れる | 制限の内側にあるため |
1mb_at_limit.pdf | 1048576 | 受け入れる | 制限値ちょうどは許可されるため |
1mb_over_1b.pdf | 1048577 | 拒否する | size_limit |
3つのファイル、3つの異なる答えを、機械可読な形で示します。アサーションを手書きする代わりに、テストがマニフェストを読みます。
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つのテストの疑問を軸に設計したテストファイルのセットです。どのファイルが何を証明するのかを自分で考える必要はありません。それぞれに、普通は何を見つけるか、セットの内容、受け付ける設定をまとめたページがあります。
-
形式が許す最小サイズの有効なファイルは通るでしょうか。
empty-and-minimal -
想定外のファイル名を、システムは保存し、表示し、返せるでしょうか。
filename-handling -
サイズ制限は、宣言された位置ちょうどで適用されているでしょうか。
size-boundaries -
実際のツールが出力する表を、取り込みは正しく処理できるでしょうか。
tabular-import -
読み取り側はファイルの文字コードを知っているのでしょうか。それとも推測でしょうか。
text-encoding -
アップロードフォームは、受け入れるべきものを受け入れ、それ以外を拒否できるでしょうか。
upload-validation
クイックスタート
動作を確かめる3つのコマンド
-
ファイルを1つ作る
PNGを1つ、ちょうど2メガバイトで:
tfg generate --format png --size 2mb --out ./fixtures -
たくさんのファイルを作る
1KBから8KBの間で、シードから決めたサイズのログファイルを1万個。明日も同じセットになります。実行ごとに専用のディレクトリを使ってください。マニフェストは実行が書いた内容の唯一の記録なので、ツールはその上に2つ目を書くことを拒否します。
tfg generate --format log --size-range 1kb-8kb --count 10000 --out ./logs -
検証してから削除する
verifyは何も動いていないことを伝えます。cleanupは書き込まれたものだけを正確に削除します。tfg verify ./logs/manifest.json tfg cleanup ./logs/manifest.json --yes
サイズはファイルマネージャーと同じく1024単位で数えるため、2mbは2097152バイトです。バイト数をそのまま指定することもできます。ドキュメントで、レシピ、マニフェスト、終了コードを説明しています。
得られるもの
無人で動くテストスイートのために作られています
-
正確なサイズ、1バイト単位で
10485761バイトを要求すれば、ちょうどその大きさになります。形式が到達できないサイズは理由付きのエラーになり、サイズの違うファイルが作られることはありません。
-
26種類の本物の形式
拡張子を付けただけのゼロ埋めではありません。生成したPNGは画像ビューアーで開け、DOCXはWordで開け、ZIPは展開できます。どれも出荷前に独立したリーダーで検証されます。
-
テストオラクルとしてのマニフェスト
パス、サイズ、SHA-256、形式、シード、ツールのバージョン、そしてシステムがそのファイルをどう扱うべきか。
-
再現可能
レシピとシードが同じなら、どのマシンでもバイトまで同じです。大きなバイナリのフィクスチャの代わりに、小さなYAMLレシピをコミットしてください。
-
2つのインターフェース、1つのエンジン
CI向けに作られたコマンドラインと、探索的テスト向けのデスクトップウィンドウ。どちらも一方の機能削減版ではなく、テストが機能ごとに両者を比較しています。
-
完全オフライン
アカウント、クラウド、テレメトリ、更新確認はありません。コマンドラインのバイナリには、ネットワークスタックがそもそもコンパイルされていません。
ダウンロード
お使いのOS向けのビルドを選んでください
アーカイブを展開して実行します。tfgがコマンドライン、tfg-guiがデスクトップウィンドウです。インストーラーはなく、マシンに追加するものもありません。
| OS | コマンドライン | デスクトップウィンドウ |
|---|---|---|
| Windows | amd64, arm64 |
amd64 |
| Linux | amd64, arm64 |
amd64 |
| macOS | arm64 |
arm64 |
署名済みのものと、そうでないもの
WindowsとmacOS向けのダウンロードは署名されているため、未確認の開発元という警告なしで起動します。Linux向けは、デスクトップLinuxに署名できる仕組みがないため署名されていません。すべてのアーカイブはリリースページのverify-SHA256SUMS.txtに載っているので、ダウンロードしたものを確認できます。
無料のオープンソース、GPL-3.0。登録は不要です。WindowsとmacOS向けのダウンロードは署名済みで、警告なしで起動します。