特定のファイルサイズのテストデータの作り方


この記事は、ソフトウェアテストの小ネタ Advent Calendar 2018 の5日目の記事です。
ソフトウェアテストの小ネタ Advent Calendar 2018
https://qiita.com/advent-calendar/2018/software-testing-koneta

特定のファイルサイズのデータを作りたい

こんな時ありますよね.

例えば,ファイルのアップロードの機能を持つソフトウェアがあるとします.5MiBがファイルサイズの境界値です.
そんなとき,5MiBのファイルと5MiB+1iBのファイルを作りアップロードしてテストしたくなります.
この境界値を狙ったファイルサイズのファイルを作る方法について説明します.

ファイルサイズの計算の仕方

まず,ファイルサイズの計算の仕方についてですね.

バイトの計算をしないといけません.

1KiB(KByte)は 1024 Byte
1MiBは 1024*1024 = 1048576 Byte
1GiBは 1024*1024*1024 = 1073741824 Byte
1TiBは 1024*1024*1024*1024 = 109521666048 Byte
です.

今回作りたいファイルサイズの5MiBは,
5MiBは 1024*1024*5 = 5242880 Byte になります.
5MiB+1iBは,1024*1024*5+1 = 5242881 Byteになります.

いちいち考えるの面倒

毎回これ考えるの面倒ですね.計算するの面倒くさいですし.

バイトの計算とファイル作成どちらもコマンドでやりましょう.

Widnowsでは,fsuitlコマンドというものがあります.
また,WindowsのPowerShellでは,計算結果を保存できます.
これを利用します.

計算結果の保存

例えば,PowerShellでは,以下のように計算結果を保存できます.
まず1MBのファイルサイズを計算します.

> $1MB = 1024*1024

次に5MBのファイルサイズを計算します.

> $5MB = $1MB*5

※まあ次のように,いきなりやってもいいんですが

> $5MB = 1024*1024*5

次に,5MB+1Bのファイルサイズを計算します.

> $5MB1 = $5MB+1

※ $5MB+1Bという名前はつけられないため,$5MB1にしています.

ファイルの作成

ファイルを作ります.
fsuitlコマンドを利用します.

> fsutil file createnew dummyfile_5MB.txt $5MB
> fsutil file createnew dummyfile_5MB+1B.txt $5MB1

これでファイルが作成されました.

ファイルサイズは,dirコマンド で確認できます.

注意

一つ注意があります.
このファイルで作ったファイルは,ファイルのデータが単調なので,めちゃくちゃ圧縮できます.
zipファイルにした場合など,かなり小さくなります.

ファイルアップロード時に
ファイルを圧縮してしまうような作りに,ソフトウェアがなっていた場合,注意してください.

MacなどLinuxでbashが動く場合

> mkfile $((1024 * 1024 * 5)) dummyfile_5MB.txt
> mkfile $((1024 * 1024 * 5 + 1)) dummyfile_5MB+1B.txt

5MBはこれでもいけます.

> mkfile 5m dummyfile_5MB.txt

こっちのほうが簡単???
mkfileが見つからないというエラーメッセージが出てきたら,apt,yum,brew あたりのパッケージマネージャを使ってインストールしてください.