この記事は、ソフトウェアテストの小ネタ 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は 10241024 = 1048576 Byte
1GiBは 102410241024 = 1073741824 Byte
1TiBは 1024102410241024 = 109521666048 Byte
です.
今回作りたいファイルサイズの5MiBは,
5MiBは 102410245 = 5242880 Byte になります.
5MiB+1iBは,102410245+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 あたりのパッケージマネージャを使ってインストールしてください.