テスト自動化の
パタンランゲージ
関西検証コレクション(#検これ)
前川 博志(@Posaune)
自己紹介
•まえかわ ひろし a.k.a @Posaune
•#京アジャ
•#検これ
•なんにでも興味を持つ雑食系エンジニア
• 器用貧乏っていうな
•MS MVP for Visual Studio ALM
• Visual Studioで作ってJenkinsでビルド
するというALM
発表諸元
•テスト自動化パタンランゲージの狙い
•上空5000メートルからの眺め
•地上からの眺め
•むすび
2014/6/28 Asian Automation Aliance
テスト自動化
パタンランゲージの狙い
2014/6/28 Asian Automation Aliance
テスト自動化取組みの現状
(#検これ 調べ)
•まだまだ導入初期
•(少なくとも関西では)
•討死事例も多い気がする
•しかもなんか似たような事例多い
•結局「組織が対応できてない」みたいな
飲み会のグチみたいな話で終わりがち
2014/6/28 Asian Automation Aliance
なんだか残念な感じ
2014/6/28 Asian Automation Aliance
・・・というわけで
•テスト自動化に取り組んでいる人たちの
経験をアクセスしやすい形で公開しよう
•現状の問題がなぜ発生しているのかを
理解し、それを解決しうる策を提供する
•関連する問題を明示し、周囲に潜む問題
への気づきを与える
パターンランゲージのフォーマットがよさげ!
パタンランゲージの
構成要素
•コンテキスト
•問題の背景となっている事情
•問題
•フォース
•問題を発生させる要因となる外部からの力
•解決
•問題の解決策
•結果
•解決策を取った後に見込まれる結果
2014/6/28 Asian Automation Aliance
自動化パタンランゲージの
一例 ~ダッシュボード~
2014/6/28 Asian Automation Aliance
•文脈: [3分クッキング]により自動化
そのものを取り入れることはできた。
•問題:テスト結果を適切に分析し、
活用することができていない。
•フォース:多くの情報を解釈するには
担当者のリソースが必要。
•解決:目的をもった結果レポートを出力
するようにする。
•結果:メトリクスを[テスト仕分け]など
自動化システムの改良に活用できる。
それでは、実際にパタンラン
ゲージを見てみましょう
2014/6/28 Asian Automation Aliance
上空5000メートル
からの眺め
2014/6/28 Asian Automation Aliance
どどん!!
2014/6/28 Asian Automation Aliance
導入のパターン 初期実装のパターン
普及・もしくは
終焉
グッドパターン
アンチパターン
・・・
これだけじゃわかりませんよね。
2014/6/28 Asian Automation Aliance
地上からの眺め
とあるオートメータの記録風に
三浦さん(仮名)は
悩んでいた・・・
三浦さんの悩み
•なんでエンジニアが、こんなだれでもで
きるような作業をやらんといかんのや…
•そもそもちょっと手順が違うだけでほと
んど同じ作業の繰り返しやないか…
•こんなもん、ミスなくやれっちゅーほう
が難しいて…
•あぁ、だからダブルチェックすんのか…
あー!!
もうやってられん!!!
誰か、なんとかしてくれー!!
2014/6/28 Asian Automation Aliance
まずは問題意識から
~求む!英雄~
•自動化の必要性を、きちんと意識する、
というパターン
•これ無しに自動化するとヒドイ目に会う
可能性が高い
•すべての起点にあたるパターン
2014/6/28 Asian Automation Aliance
そんなとき、三浦さんの前に
あるものが…
•ん?なんやこれ?
“SisutemuTesutoJikkou.bat”?
ちょっと実行してみよか・・・
•うおお!なんかシステム勝手に立ち上
がっていろんな判定はじめよったぞ?
•なんかレポートも出とる!
2014/6/28 Asian Automation Aliance
こ・・・
これはお宝やないか!?
2014/6/28 Asian Automation Aliance
過去の遺産の発掘
~インディージョーンズ~
•先人が残した自動化の資産を発掘し、
うまく活用するパターン
•オーパーツと化しているので、扱いに注
意しないと・・・
2014/6/28 Asian Automation Aliance
そしてお宝を発見した
三浦さんは・・・
•うおー、これも、これも、つかえるや
ないか!!
•自分でも、なんとか追加していけそうや
ぞ、例えばここをこう変えれば、別のも
テストできそうや!
•よし、このバッチをコピペして、テスト
を大量生産や~!!
2014/6/28 Asian Automation Aliance
うおー!!
テンション上がってきたで~!!
2014/6/28 Asian Automation Aliance
そろそろやばいぞ
~自動化ハイ~
•自動化することそのものが目的になり、
突っ走ってしまっているパターン
•ここから建て増し旅館を建築する例が
多い
2014/6/28 Asian Automation Aliance
さて、時は少し流れ…
•よっしゃ、かなりのテストを自動化
できてきたで~…
•「三浦さん、このテストとあのテスト、
また落ちてるんですけど」
•あぁ、それはそういうもんなんや、タイ
ミングで時々動かへんねん、ほっとき
•「は~い(もうこのテストはまじめに結
果みなくてよさそうだな・・・)」
2014/6/28 Asian Automation Aliance
「ま、最後にちょろっと
念為でテスト通せばいいか…」
2014/6/28 Asian Automation Aliance
もはやテストじゃない
~験担ぎ~
•自動テストがただの儀式になって
しまっているアンチパターン。例えば…
•複雑すぎてFragileなテストなので時々失敗し
てしまう
•自動テストのメンテナンスが職人作業になり落
ちても誰も触れない
もう少し時は流れ・・・
•「おい、三浦君、最近しょうもない不具合
が多いよ?どうなってるの?」
•え?あれ?そのテストはちゃんと自動で…
•「いやあのテストはほとんど走らせてませ
んよ、最後に一度通せばOKかなって」
•えええ!?あかんやん!そんなん!
•「だってうまくいくかどうかわからんテス
トとかやってられませんよ」
2014/6/28 Asian Automation Aliance
『やっぱ、人間の手と目で
確認しないとダメだね 』
2014/6/28 Asian Automation Aliance
自動化の終焉
~原住民蜂起~
•自動化による効果を感じてもらえず、
取り組みにいったんピリオドが打たれる
アンチパターン
•さようなら・・・みうらさん・・・
2014/6/28 Asian Automation Aliance
失意の三浦さん・・・
•なんでや、なんで元通りになってしまっ
たんや・・・
•思えば、テンション上がって勝手に突っ
走ったのはまずかったんやな。。。
•もっと、システム全体を見て、効果的な
自動化をするべきやった。。。
•次こそは、次こそは・・・
2014/6/28 Asian Automation Aliance
2014/6/28 Asian Automation Aliance
2014/6/28 Asian Automation Aliance
失敗を糧にすべし
~強くてニューゲーム~
•自動化失敗の原因を冷静に分析し、
次の取り組みに活かすパターン
•次は本物の「英雄」になれるかも!?
生まれ変わった
三浦さんは…
•よっしゃ、ガンガン自動化したるで~…
いや、あかんあかん!
•実装を進める前に、まずシステム全体を
見とかんとな!
•その上で、どこが「自動化が効く」とこ
ろなのか判断しよ!
2014/6/28 Asian Automation Aliance
全体像を描く
& まずは“効く“ところから
2014/6/28 Asian Automation Aliance
•自動化ハイをぐっとこらえ・・・
生まれ変わった
三浦さんは・・・
•テストがちょっと不安定になってきとる
な…
•うお!?このコードはあかんやろ、修正
しとかなあかんな・・・
•あと、要らんテストも多いな。これも
仕分けしとかな。
2014/6/28 Asian Automation Aliance
ヤブ医者とブラックジャック
& テスト仕分け
•アンチパターンへのカウンターを打ち…
2014/6/28 Asian Automation Aliance
生まれ変わった
三浦さんは・・・
•人がやるテスト、大分減ってきたな。。。
•んじゃあテスターさんにはもっと探索的な
テストをやってもらお!
•うお!思ってもみなかった不具合でたで!
さすがプロやな~
•テストは大分自動化したで。もうどんなテ
ストでも5分ででける!
•…けど、結局環境構築大変やんな・・・
•これも自動化せなな!ん?Chefってのがあ
るんか?
2014/6/28 Asian Automation Aliance
もっと、人間らしく
& テストだけとか勿体無い
2014/6/28 Asian Automation Aliance
•「文明の曙」へ向けて、三浦さんの
自動化の旅は続く・・・
むすび
2014/6/28 Asian Automation Aliance
自動化パタンランゲージ
•自動化だけなら長い歴史がある
•失敗をもとに良いソリューションができてき
ている
•ソフトの自動化ははじまったばかり
•三浦さん(仮名)のように、一度討死す
るのもいいかもしれないけれど・・・
•パターンをベースに良いソリューション
をショートカットできるのでは!
2014/6/28 Asian Automation Aliance
パタン言語は
Githubにて公開中!!
•https://github.com/KenColle/Automa
tionPatternLanguage
•Issue / Pull Request 大歓迎!
•ぜひ皆さんの自働化体験談をパターンに
しましょう!
文明の曙を目指して、
Enjoy Automation !!
2014/6/28 Asian Automation Aliance
未
完
自
動
化
坂
を
よ
…
自動化パタンランゲージ

自動化パタンランゲージ