テスト自動化のパターンと実践

37
テスト自動化の パターンと実践 .reviewrc(#reviewrc) 石川 達也, 三浦 一仁, 前川 博志

Upload: hiroshi-maekawa

Post on 16-Jul-2015

6.347 views

Category:

Presentations & Public Speaking


0 download

TRANSCRIPT

テスト自動化のパターンと実践

.reviewrc(#reviewrc)

石川 達也, 三浦 一仁, 前川 博志

Agenda

• テスト自動化パターンについて(前川)なぜパターン?

パターンの使い方

パターンの紹介

• パターン詳説①: 皮をむく(石川)

• パターン詳説②: 自動家をつくる(三浦)

2014/12/14 テスト自動化カンファレンス2014

テスト自動化パターンについて

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

そこでパタンランゲージですよ!!

パタンランゲージの構成要素

• コンテキスト問題の背景となっている事情

• 問題

• フォース問題を発生させる要因となる外部からの力

• 解決問題の解決策

• 結果解決策を取った後に見込まれる結果

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

上空5000メートルからの眺め

2014/12/14 テスト自動化カンファレンス2014

全体像

2014/12/14 テスト自動化カンファレンス2014

導入のパタン 初期実装のパタン普及・もしくは

終焉

パタン

アンチパタン

・・・これだけじゃわかりませんよね。

2014/12/14 テスト自動化カンファレンス2014

地上からの眺め

とあるオートメータの記録風に

三浦さん(仮名)は悩んでいた・・・

三浦さんの悩み

• よっしゃ、だいぶ自動化もすすんできたな。ええかんじやで。。。

• ん?なんや、またテスト落ちたか。えーと、、、あぁ、またボタンの位置変えよったな。

• クリック位置をちょいとずらして、よし、通った通った。

• はー、今日もいい仕事したで! って、、、

2014/12/14 テスト自動化カンファレンス2014

ワシ、こんなことしたくて自動化したんちゃうぞ!もっと落ちひんテストかきたいわ!

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

お残しはダメよ~皮もおいしく~

• 剥いた「皮」といってもそれもアプリケーションの一部。その部分のテストは計画しておく必要がある。

• おいしく皮を食べましょう。

2014/12/14 テスト自動化カンファレンス2014

がんばれ負けるな三浦さん!

• 皮を剥いたテスト書いて、アプリ側の設計にも顔を出してピンを出してもらって、剥いた皮のテスト計画もして、、、めっちゃ忙しいぞワシ今!!

• 新しいビルドサーバも欲しいな。いや、今はもうCIはサービスに回す時代か!どうせならGithub Enterpriseも・・・

• 稟議書かななー、えーっと、ROIっていうんやっけ、これ計算せんと・・・

2014/12/14 テスト自動化カンファレンス2014

…これ、ついででできる作業ちゃうって!!!!こういう職業やで!!!!!

2014/12/14 テスト自動化カンファレンス2014

自動化から自動家へ~自動家を作る~

• テスト自動化を専業とする役割を組織の中に作るパタン

• テスト・実装・予算獲得などの自動化に関するお仕事を引受け、他のエンジニアと協業する

• ゆくゆくはテスト以外も自動化していく!

2014/12/14 テスト自動化カンファレンス2014

おさらい

2014/12/14 テスト自動化カンファレンス2014

導入のパタン 初期実装のパタン普及・もしくは

終焉

パタン

アンチパタン

…というわけで

• ざっくりとした説明では分からなかった所を、専門家に詳しく解説してもらいます!

• テクいやつ(『皮を剥く』を中心に)石川さん!!

• エモいやつ(『自動化を作る』を中心に)三浦さん!!

2014/12/14 テスト自動化カンファレンス2014