マニュアルテストのエビデンス取得効率化話【vol.1】
株式会社オズビジョンのユッコ (@terra_yucco) です。
今日はプライベートな用事があってあんまりしっかりした記事がかけないので、自分がマニュアルで PHP スクリプトのテストをするとき、エビデンス取得用に使っている bash スクリプトを晒してみます。
画面が無いバッチ処理のテスト実施は、このスクリプトを作って随分簡易化されました。
※画面要件には適しません。
エビデンス取得用スクリプト
要件
- そのテストがいつ行われたものか知りたい
- そのテストで実行されたコマンドが知りたい
- 事前事後で比較する必要があるものは自動的に取得しておきたい
- DB 内容
- ls 結果 など
- 引数違いのテストなどは同じスクリプトで対応したい
実コード
- DB 内容
- ls 結果 など
DB 接続先や実際の起動スクリプトはさすがに書けないのですが、こんな感じのテンプレートを用意し、テスト対象に応じて書き換えて使っています。
#!/bin/bash -u
condition="${1}"
timestamp=$( date +'%Y%m%d%H%M%S' )
base_date=$( date +'%Y-%m-%d 00:00:00' )
c_main_db="mysql --default-character-set=utf8 --verbose -h {{main_endpoint}} -u {{main_user}} -p{{main_password}} -D {{main_database}}"
c_sub_db=" mysql --default-character-set=utf8 --verbose -h {{sub_endpoint}} -u {{sub_user}} -p{{sub_password}} -D {{sub_database}}"
get_evidence() {
type="${1}"
${c_main_db} -e"
status;
set session time_zone = 'asia/tokyo'; set names 'utf8';
select now();
{{対象データを select する SQL, 条件に ${condition} や ${base_date} を使ったり}}
select now();
" > ./${timestamp}_DB_${type}_main.txt 2>&1
${c_sub_db} -e"
status;
set session time_zone = 'asia/tokyo'; set names 'utf8';
select now();
{{対象データを select する SQL, 条件に ${condition} や ${base_date} を使ったり}}
select now();
" > ./${timestamp}_DB_${type}_sub.txt 2>&1
}
get_evidence "01"
set "-x"
date
echo "file timestamp=[${timestamp}]"
/usr/bin/php {{テスト対象スクリプト}} ${condition}
echo $?
date
set "+x"
get_evidence "02"
exit 0
実行すると何ができるのか
今回は php をインストールしていない windows 上で実施したのでエラーも出ていますが、結果に示すように、タイムスタンプと事前(01)事後(02)でネーミングされたログが取得されます。
bash の内容は set "-x"
で表示させているので、呼び出したスクリプトとその戻り値も確認可能です。
なので、これにより、
- いつ実施したテストなのか: タイムスタンプ及びスクリプト実行前後の date で確認可能
- 何をテストしたのか: 実行スクリプトで確認可能
- 事前事後でどのようにデータなどが変わったのか
- 引数で渡す
${condition}
により例えばdollar
yen
euro
などのパターンをテスト可能
という要件を満たすことができます。
owner@DESKTOP-H70OCAI MINGW64 ~/Desktop/qiita
$ pwd
/c/Users/owner/Desktop/qiita
owner@DESKTOP-H70OCAI MINGW64 ~/Desktop/qiita
$ ls -l
total 4
-rwxr-xr-x 1 owner 197609 1091 5月 14 22:52 get_evidence.sh*
owner@DESKTOP-H70OCAI MINGW64 ~/Desktop/qiita
$ bash get_evidence.sh dollar
+ date
2019年 5月 14日 火曜日 22:54:33
+ echo 'file timestamp=[20190514225433]'
file timestamp=[20190514225433]
+ /usr/bin/php '{{テスト対象スクリプト}}' dollar
get_evidence.sh: line 35: /usr/bin/php: No such file or directory
+ echo 127
127
+ date
2019年 5月 14日 火曜日 22:54:34
+ set +x
owner@DESKTOP-H70OCAI MINGW64 ~/Desktop/qiita
$ ls -l
total 8
-rw-r--r-- 1 owner 197609 51 5月 14 22:54 20190514225433_DB_01_main.txt
-rw-r--r-- 1 owner 197609 51 5月 14 22:54 20190514225433_DB_01_sub.txt
-rw-r--r-- 1 owner 197609 51 5月 14 22:54 20190514225433_DB_02_main.txt
-rw-r--r-- 1 owner 197609 51 5月 14 22:54 20190514225433_DB_02_sub.txt
-rwxr-xr-x 1 owner 197609 1091 5月 14 22:52 get_evidence.sh*
owner@DESKTOP-H70OCAI MINGW64 ~/Desktop/qiita
$
普段どう使っているか
Windows 使いな私は、スクリプトの出力があるならそれを見るのと、取得したログを WinMerge で差分確認してテスト結果を確認していることが多いです。
Next Action
diff を取得するところまでスクリプトに組み込み、スクリプト全体の出力結果も別ファイルに書き出せば、それだけでエビデンス取得をほぼ自動化できそうだなあ…なんて考えていたりします。
※繰り返しますが、画面要件には適しません。
Author And Source
この問題について(マニュアルテストのエビデンス取得効率化話【vol.1】), 我々は、より多くの情報をここで見つけました https://qiita.com/terra_yucco/items/b6144bad61091283ff93著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .