##1. はじめに
Lチカで始めるテスト自動化の続編です。
テストスクリプトを書いていて次のようなことが気になりました。
- 粒度が細かくてアセンブラを書いているような気がしてくる
- テストを改修するたびに "アセンブラ" を書き直すのはコーディングレベルのミスを起こしそう
テストスクリプトのサンプル
# relay ON
send,n
sleep,1
send,v
rcvd
eval_int_gt,1600
eval_int_lt,2000
そこで下記2点を目標にテストスクリプトの保守性向上を図ります。
- テストケースのレベルでテストスクリプトをレビュー、チェックできるようにする
- (単機能の)テストスクリプトを再利用しやすくする
具体的には共有スクリプトの考え方を参考にします。
- 個々の機能ごとにスクリプトを切り出してパーツ化する
- テストの内容に合わせて個別のスクリプトを連結する "スクリプトジェネレータ" を作る
##2. テストスクリプトのパーツ化
全部入りのテストスクリプトを個々の機能ごとに分割します1。それぞれのスクリプトファイルはscript-partsフォルダへ配置します。
setup.csv
# setup
# wait for if restart Arduino Uno
sleep,2
#
# Open UART
open_uart,COM3
#
# model and version check
send,i
rcvd
eval_str_eq,Arduino Test Bench Ver.100
#
# relay assigned Pin number check
send,p
rcvd
eval_int_eq,12
operation_relay_on.csv
#
# relay ON
send,n
sleep,1
operation_relay_off.csv
#
# relay OFF
send,f
sleep,1
eval_int_gt1600-lt2000.csv
#
# eval_int_gt1600-lt2000
send,v
rcvd
eval_int_gt,1600
eval_int_lt,2000
eval_int_lt0200.csv
#
# eval_int_lt0200
send,v
rcvd
eval_int_lt,200
##3. スクリプトジェネレータ
個別のテストスクリプトをテストの内容に合わせてバッチファイルで連結します。
script-generator.bat
REM script generator for LED Light Test Bench
set script_parts_dir=script-parts
set script_file_name=script.csv
REM テストベンチのセットアップ
copy /b %script_parts_dir%\setup.csv %script_file_name%
REM リレーをONし、LEDの電圧が1600mVより大きく2000mVより小さいこと
copy /b %script_file_name% + %script_parts_dir%\operation_relay_on.csv
copy /b %script_file_name% + %script_parts_dir%\eval_int_gt1600-lt2000.csv
REM リレーをOFFし、LEDの電圧が200mVより小さいこと
copy /b %script_file_name% + %script_parts_dir%\operation_relay_off.csv
copy /b %script_file_name% + %script_parts_dir%\eval_int_lt0200.csv
##4. 保守性向上の例
例として「テスト対象機器に電源を投入しただけではLEDが点灯していないこと」のテストを追加します。
9行目、10行目にeval_init_lt0200.csvを再利用してテストを追加できました。
script-generator_v2.bat
REM script generator for LED Light Test Bench
set script_parts_dir=script-parts
set script_file_name=script.csv
REM テストベンチのセットアップ
copy /b %script_parts_dir%\setup.csv %script_file_name%
REM LEDが点灯していないこと(LEDの電圧が200mVより小さいこと)
copy /b %script_file_name% + %script_parts_dir%\eval_int_lt0200.csv
REM リレーをONし、LEDの電圧が1600mVより大きく2000mVより小さいこと
copy /b %script_file_name% + %script_parts_dir%\operation_relay_on.csv
copy /b %script_file_name% + %script_parts_dir%\eval_int_gt1600-lt2000.csv
REM リレーをOFFし、LEDの電圧が200mVより小さいこと
copy /b %script_file_name% + %script_parts_dir%\operation_relay_off.csv
copy /b %script_file_name% + %script_parts_dir%\eval_int_lt0200.csv
##5. おわりに
生のテストスクリプトを読み書きするのと比べて、スクリプトジェネレータ(バッチファイル)はスクリプトの再利用やテストケースの粒度での改修、チェックがしやすくなりました。
-
連結したときに読みやすいよう適宜コメントを追加します。 ↩