システムエンジニアやプログラマーの方であれば少なくとも一度は経験しているであろう単体テスト。多くのテストケースを捌く必要があり、時間のかかる作業です。
特に業務系システムではデータベースを利用したテストが必須となりますが、データベースのデータ操作やテスト準備に割と時間が取られてしまうものです。
今回ご紹介するのは、とても簡単ですが侮れないCOPYコマンドを利用した「ファイル結合」を行うテクニックです。
テストデータの準備
業務系のシステムテストを行う場合は、①データの削除→②テストデータの投入→③テスト実施 という流れを繰り返します。
ここで、①②の作業の効率化を考えます。
通常、データを投入するには、①SQLのDELETE文にてデータを削除して、②新規に次のテスト用のデータを登録(INSERT)もしくは更新(UPDATE)を行います。
加えて固定的な初期化作業③④が発生します。③は主にログの削除(DELETE)やステータスの更新(UPDATE)、そして④各データベースへの接続(CONNECT)と切断(DISCONNECT)作業です。
この①~④のSQLでテストの度に変更がかかるのは主に、①と②のSQLとなります。①と②のSQLはExcelのマクロや数式を利用してテストデータ投入用のクエリを作成します。作成したSQL文を下記の通り①.sqlと②.sqlに保存します。
c:\sample\testdir3>dir ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は A6D6-4E55 です c:\sample\testdir3 のディレクトリ 2013/11/23 16:15 <DIR> . 2013/11/23 16:15 <DIR> .. 2013/11/23 16:15 21 execSQL.bat 2013/11/23 16:17 294 execSQL.sql 2013/11/23 16:16 60 mergeSQL.bat 2013/11/23 16:16 50 ①.sql 2013/11/23 16:16 152 ②.sql 2013/11/23 16:16 36 ③.sql 2013/11/23 16:16 55 ④-1.sql 2013/11/23 16:16 14 ④-2.sql 8 個のファイル 682 バイト 2 個のディレクトリ 25,757,499,392 バイトの空き領域 c:\sample\testdir3>
- ④-1.sql データベース接続
- ①.sql テストデータ初期化
- ②.sql テストデータ投入
- ③.sql ステータス更新
- ④-2.sql データベース切断
次に、準備したSQL文を結合するバッチファイルを用意します。
テストデータ作成バッチ
copy /Y ④-1.sql+①.sql +②.sql+③.sql+④-2.sql execSQL.sql
connect reset; --④-1.sqlに記述 delete from testtable1; --①.sqlに記述 delete from testtable2; --①.sqlに記述 insert into testtable1 values (1,2); --②.sqlに記述 insert into testtable1 values (1,1); --②.sqlに記述 insert into testtable2 values (1,2); --②.sqlに記述 insert into testtable2 values (1,1); --②.sqlに記述 update statustable set flg ='0'; --③.sqlに記述 connect reset; --④-2.sqlに記述
上記で作成されたSQL文をバッチファイルで起動します。サンプルはDB2での例です。
テストデータ投入バッチ(execSQL.bat)
db2 -tf execSQL.sql
このようにバッチファイルを準備しておくことで再帰的なテストが実施できますので、万が一再テストとなった場合にも作業の効率化が図れます。作業時間の短縮化は、本当に侮れません。最初の準備には多少時間を取られますが、その後のリスクや再実施の時間を考えてみてください。人間の性的にも安易な方法に流れがちですので、準備に時間をかけて効率よく作業が進められる方法を身につけましょう!
コメント