テスト自動化のパターンと実践
TRANSCRIPT
Agenda
• テスト自動化パターンについて(前川)なぜパターン?
パターンの使い方
パターンの紹介
• パターン詳説①: 皮をむく(石川)
• パターン詳説②: 自動家をつくる(三浦)
2014/12/14 テスト自動化カンファレンス2014
自己紹介
• まえかわ ひろし a.k.a @Posaune #京アジャ #reviewrc
• なんにでも興味を持つ雑食系エンジニア器用貧乏っていうな
• MS MVP for Visual Studio ALM Visual Studioで作ってJenkinsでビルドするというALM
2014/12/14 テスト自動化カンファレンス2014
テスト自動化はむずかしい
• ありがちなことそもそも始めるのに勇気と力がいる
最初はテンション上がって頑張るけど、後から見直すとメンテ不能の何かができる
テンションを維持し続けるのが大変
• みんなが共通してハマる罠が結構あるイメージ
2014/12/14 テスト自動化カンファレンス2014
たのしい
つらい
よっしゃ!自動化や!
テスト書くの楽しいぃぃ!
なんかめんどくさくね?
メンテつらい…時間かかるわー
効果上げてないからやめろってさ。ほんとうちの会社クソだな
自動化してなんか嬉しい事あったっけ?
・・・というわけで
• テスト自動化に取り組んでいる人たちの経験をアクセスしやすい形で公開しよう
現状の問題がなぜ発生しているのかを理解し、それを解決しうる策を提供する
周囲に潜む関連する問題への気づきを与える
2014/12/14 テスト自動化カンファレンス2014
パタンランゲージの構成要素
• コンテキスト問題の背景となっている事情
• 問題
• フォース問題を発生させる要因となる外部からの力
• 解決問題の解決策
• 結果解決策を取った後に見込まれる結果
2014/12/14 テスト自動化カンファレンス2014
自動化パタンランゲージの一例 ~ダッシュボード~
2014/12/14 テスト自動化カンファレンス2014
• 文脈: 自動化そのものを取り入れることはできた。
• 問題:テスト結果を適切に分析し、活用することができていない。
• フォース:多くの情報を解釈するには担当者のリソースが必要。
• 解決:目的をもった結果レポートを出力するようにする。
• 結果:メトリクスを[テスト仕分け]など自動化システムの改良に活用できる。
① 自動化ユビキタス言語として
• 自動化における問題点は、言葉に表現しにくいこともある
• パタンの言葉を使って会話するとイメージがわきやすい
2014/12/14 テスト自動化カンファレンス2014
たのしい
つらい
よっしゃ!自動化や!
テスト書くの楽しいぃぃ!
なんか面倒くさくね?
メンテつらい…時間かかるわー
効果上げてないからやめろってさ。ほんとうちの会社クソだな
自動化してなんか嬉しい事あったっけ?
求む!英雄!
自動化ハイ
クラウドトーク
験担ぎ建て増し旅館
原住民蜂起
たのしい
つらい
よっしゃ!自動化や!
テスト書くの楽しいぃぃ!
なんかめんどくさくね?
メンテつらい…時間かかるわー
自動化してなんか嬉しい事あったっけ?
求む!英雄!
自動化ハイ
ダッシュボードまずは“効く”ところから
ヤブ医者とブラックジャックテスト仕分け
テストだけとかもったいない!
文明の曙
テスト自動化定着への道標に!
② 自分の経験を皆に伝えるツールとして
• 自動化パタンは経験ベースの集合 新たな経験により常に進化していくもの
• なので、あなたのPull Request 受付中!! https://github.com/KenColle/AutomationPatte
rnLanguage
CC-BY にて公開中
• ぜひ皆さんの自動化体験談をパタンにしましょう!
2014/12/14 テスト自動化カンファレンス2014
三浦さんの悩み
• よっしゃ、だいぶ自動化もすすんできたな。ええかんじやで。。。
• ん?なんや、またテスト落ちたか。えーと、、、あぁ、またボタンの位置変えよったな。
• クリック位置をちょいとずらして、よし、通った通った。
• はー、今日もいい仕事したで! って、、、
2014/12/14 テスト自動化カンファレンス2014
そことちゃうねん!~皮をむく~
• 自動化を妨げる、動作が不安定なレイヤ・変化の激しいレイヤを取り除いてテストを行うパタン
• 安定なテストを行うことができるが、皮を向くための作業が必要なことも
• 剥いた皮は捨てないように!!
2014/12/14 テスト自動化カンファレンス2014
更に悩める三浦さん
• ん?新しいテスト追加っすか?いいっすよいいっすよ!これってどうやって確認するんでっか??
• あ、、、はい、、、このクラスとこのクラスとこのクラスに反映されるはず、と。
• なんやねんめんどいなー(ボソリ)あっ、喜んでやらしてもらいます~♪
2014/12/14 テスト自動化カンファレンス2014
ハードウェアでは当たり前~ピンを生やす~
• テストに使いやすいようなアクセスポイントをアプリケーションに設けておく
• ハードウェアの世界におけるデバッグピン
• 便利だけれど、デバッグピンのテストを書かないように注意
2014/12/14 テスト自動化カンファレンス2014
ロバストなテストがかけてハッピーな三浦さん!
• よっしゃよっしゃー、UI変更なんのそのや、皮を剥きまくってバンバンテストするで!
• 楽勝楽勝~、これで品質も上がったやろ!ん?なんか部長が呼んでるぞ?もしかして、表彰か?褒章か?
• ・・・あ、ボタン押しても反応しない。あ、客先で、あ、はい。。。
2014/12/14 テスト自動化カンファレンス2014
お残しはダメよ~皮もおいしく~
• 剥いた「皮」といってもそれもアプリケーションの一部。その部分のテストは計画しておく必要がある。
• おいしく皮を食べましょう。
2014/12/14 テスト自動化カンファレンス2014
がんばれ負けるな三浦さん!
• 皮を剥いたテスト書いて、アプリ側の設計にも顔を出してピンを出してもらって、剥いた皮のテスト計画もして、、、めっちゃ忙しいぞワシ今!!
• 新しいビルドサーバも欲しいな。いや、今はもうCIはサービスに回す時代か!どうせならGithub Enterpriseも・・・
• 稟議書かななー、えーっと、ROIっていうんやっけ、これ計算せんと・・・
2014/12/14 テスト自動化カンファレンス2014
自動化から自動家へ~自動家を作る~
• テスト自動化を専業とする役割を組織の中に作るパタン
• テスト・実装・予算獲得などの自動化に関するお仕事を引受け、他のエンジニアと協業する
• ゆくゆくはテスト以外も自動化していく!
2014/12/14 テスト自動化カンファレンス2014