テスト自動化パターン言語って面白い。笑える。でも役立つ
著者:ふじさわゆうき
更新日:2015/12/17
先日、システムテスト自動化カンファレンス 2015に行ってきました。
その話の中で、「テスト自動化パターン言語」が紹介されていたので調べてみました。
テスト自動化パターン言語とは
- .reviewrc(コミュニティ)により提唱されている自動化のパターン
- 開発だとアンチパターンが有名だが、それのテスト自動化におけるパターンだと思うのが一番わかり易い。例えば、開発のアンチパターンは以下、2冊がおススメ
テスト自動化パターン言語の定義は次の通り
テスト自動化において、みんなが共通してハマることが結構ある(良いものも、悪いものも)。それらの共通点を分類してパターン言語としてまとめたものがテスト自動化パターン言語である。
パターン言語の狙いとしては、暗黙化されている失敗体験や成功の要因をわかりやすい形で共有することで「体系化された知見が少なく伝達が難しい」「上手くやれる人が少なく活動が手探り」という課題を解決することを目指している
https://www.juse.jp/sqip/symposium/timetable/files/happyou_A3-4.pdf#page=15
を自分なりに要約してみました
参考になるパターンをいくつか紹介
以下、テスト自動化パターン言語プロジェクトのページがあるのでそこから、自分のお気に入りのパターンを紹介します
Introduction | テスト自動化パターン言語プロジェクト
自動化ハイ
自動化ハイは、自分のチームのあるあるです。私のいるテスト自動化チームは開発者のみで構成されており、みんなテストを勉強したことがないメンバーです。全体の設計をしないままに自動化をどんどん推し進めた結果、重複テストが沢山あることに気付きはじめるなどして、現在、困っています
自動化ハイ
■文脈
3分クッキングなどにより、自動化の導入には成功している。いよいよこれからが、自動化を全体に進めていく時である。
■問題
試験的に導入した自動化の面白さに取り憑かれ、全体の設計をしないままに自動化をどんどん推し進めようとしている。その結果、似たようなシステムが乱立し、以後の管理が困難な状態([建て増し旅館])になりかけている。
■フォース
特に現場手動で自動化を行っている場合、どんどん実装を行い自動化を進めて行きたくなってしまう。
プログラマの性として、一度うまく行き始めると、その勢いのままコードを書き進めてしまうことは大いに有り得る。
解決一度冷静になり、[全体像を描く]ようにしよう。我々の目的はテスト作業の省力化・効率化であり、自動テストの実装はその手段にすぎない。どのようなテストが本当に必要なのか、メンテナンス性も含めて全体最適されているのか、現在の自動化システムで今後の拡張に耐えうるのか、冷静に判断をしよう。
■結果
自動化の全体像を描き、今後の拡張やメンテナンス性を考慮した自動化システムを構築することができるようになる。
験担ぎ
験担ぎも、自分のチームのあるあるです。テストが失敗したからそのバグをチケット起票したのに放置されてテストが失敗し続けるなどが起こっています。自動テストで見つけるバグが、誰が直すのか取り決めが曖昧なまま進めている、テスト設計が良くないなど、「自動化ハイ」の副作用なんです(泣)。私のマネジメントが悪いので反省です。
験担ぎ
■文脈
テスト自動化環境が構築されて、少なくとも一度は効果が出た状況である。継続的にテスト自動化でのテスト実施が行われている状態ではあるが、効果がある活用と運用がされていない。「このエラーは出ても問題は無い」という意思決定で運用が行われている。
■問題
テスト自動化実施が定められているので自動化環境を動かす活動は行われている。テスト実施はされているが、明らかなエラーが検出されたとき以外は結果を誰も確認しない。 結果として、テスト資産が形骸化・陳腐化している。
■フォース
仕様変更などでテスト資産を変化に対して追従させる必要があるが、自動化環境はなぜか無視される。(担当者が異動になった場合などに発生することが多い:たこつぼ化)
■解決
最新のSUTと自動化環境の差を分析して、テスト資産を追従させる。
エラーが出ていることが、現場でもみ消せないようにプロセスを整備する。
エラーが出ない環境を作り、そのためのチームの規律を構築する。
自動化環境の保守を行う担当者{自動化奉行}を決める。
改善コストがあわないなら、そんな自動化やめちまえ。■結果
SUTに適した自動化環境が整備され、変化に追従されている。 変化に追従した環境により、テスト自動化の効果が得られる状態になっている。 意味のないテスト自動化環境が無くなっている。
感想
テスト自動化パターン言語って面白い。笑える。でも役立つなぁーってのが素直な感想です。
暗黙知をアンチパターンという形式知にして、これから自動化を進める人が、先人と同じ失敗を繰り返さないように共有する活動ってとっても素晴らしいなと感じています。これらをまとめている森田誠さん、前川ヒロシさん、水野のりゆきさん、.reviewrcの皆様に本当に感謝です。これからも、テスト自動化パターン言語の拡充に期待しています