Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AAA2015 関西風と欧米風 2つのTest Automation Patterns

1,467 views

Published on

AsianAA2015での紹介内容です。

Published in: Technology
  • Be the first to comment

AAA2015 関西風と欧米風 2つのTest Automation Patterns

  1. 1. 12015/06/27 AAA 2つのTest Automation Patterns みずのり(水野のりゆき) @WARAI(関西SWテスト勉強会) 2015/6/27 AAA 2つのTAP 関西風と 欧米風 2つの Test Automation Patterns
  2. 2. 22015/06/27 AAA 2つのTest Automation Patterns テスト自動化パターンの紹介 先ほど紹介された謎の内容は現「.reviewrc」が構築した 「テスト自動化パターン」からの抜粋となります。※共に2013春辺りから構築? ここで、世の中にある2つのテスト自動化パターンを紹介しておきます。 関西風 欧米風 http://testautomationpatterns.wikispaces.com/ http://kencolle.github.io/AutomationPatternLanguage/index.html
  3. 3. 32015/06/27 AAA 2つのTest Automation Patterns テスト自動化パターン(関西)の紹介 (関西風)テスト自動化パターンですが、 以下のようにgithubで公開されております。 http://kencolle.github.io/AutomationPatternLanguage/index.html
  4. 4. 42015/06/27 AAA 2つのTest Automation Patterns テスト自動化パターン(関西)の紹介 「名前と(1行程度の)簡単な説明で共通理解が出来る」用語(言語) としてまとめていることが特徴っぽい。 自動化の開始、構築中、定着の段階で発生する状況を判断できます。 自動化 開始 自動化 構築中 自動化 定着 or 終焉
  5. 5. 52015/06/27 AAA 2つのTest Automation Patterns テスト自動化パターン(関西)の紹介 先ほどのパターンは、以下のように表現されております。 使い方は…先ほどのストーリー参考。 パターン名 文脈(Context) 問題 解決 3分 クッキング 自動化は組織に初めての経験 で、知見が蓄積されていない。 自動化ツールのハードルが高く、 導入方法が分からない。 事前に自分の環境で、ある程度の構築 をして、紹介すると同時に一気に運用ま でもっていく。 建増し 旅館 テスト自動化が職場に導入さ れ、少しずつ適用範囲が増え ていっている。 自動化システムが、場当たり的 な改修によりメンテナンス性が 損なわれていってしまう。 テスト自動化が複雑なシステムであるこ とを理解し、実装を進める前に全体像を 描くことを習慣づける。 験担ぎ テスト自動化環境が構築され 一度は効果が出たが、現在は 効果のある運用がされていな い。 明らかなエラーが検出されたと き以外は結果を誰も確認せず、 形骸化・陳腐化している。 エラーが出ていることが、現場でもみ消 せないようにする。 改善コストがあわないなら、そんな自動 化やめちまえ。 アンチ 自動化 「自動化は面倒臭い」という誤 解が根付く。 [験担ぎ]のテストが増加し、自 動テストから便益を享受できて いない 自動化に対する不信感。手動テ ストへの回帰を望む人が多く なっている。 自動化への誤解を一つ一つといていこう。 自分たちなりの活用方法をアピールしよ う。 動きの怪しい自動化システムに意味は 無い、別ツールも試そう。
  6. 6. 62015/06/27 AAA 2つのTest Automation Patterns テスト自動化パターン(関西)の紹介 なんかダメパターン(アンチパターン)紹介ばかりでしたので、 このようなパターンも存在しますので、紹介しておきます。 パターン名 文脈(Context) 問題 解決 全体像を 描く 3分クッキングにより、自動化 の導入は進み始めているが、 まだまだ初期段階である。 自動化をまず導入しては見たも のの、このまま全体に適用する のは難しいように思える。 システムの全体像を描き、その中に自動 テストをどうすれば効果的に適用できる かを考える。効果的ならば設計にも手を 入れることを考える。 ピンを 生やす テスト自動化をしようと思って いるが、テスト対象となるソフト ウェアがテスト不可能な状況。 テスト対象のソフトウェアの構造 的に一連のテストをまとめてし か出来ない。 組込みボードでデバッグピンを出すよう に、テスト可能なインタフェースが出来る ようにピンを生やす。 テスト 仕分け シナリオベースの自動化テスト で、何をテストしたいのかわか らないテストコードに埋め尽くさ れており、価値低下。 目的不明なテストをパスするこ とが足かせになり、プロダクト コードのメンテナンスが困難に なっている。 テストの意図を調べ、確認できなかった テストコードを捨てる。 重要なシナリオを 抽出して、その価値を検証するテスト ケースを自動化する。 自動家を 作る 超人的な自動化構築者により 開発環境に自動化が現場に展 開されている。 超人的構築者がいなくなること で、運用が継続できなくなり、次 第に廃れて[験担ぎ]に繋がって しまう。 次世代の自動家を育て、運用を継続す るだけでなく、さらなる価値を生み出し改 善が出来るようにする。
  7. 7. 72015/06/27 AAA 2つのTest Automation Patterns TAP(欧米)の紹介 本日紹介もあった「ギア本」の原著作者でもあるDorothy Graham氏、 Seretta Gamba氏らが作成した(欧米風)テスト自動化パターン http://testautomationpatterns.wikispaces.com/ 日本語訳してみました。 http://blog.amateur-factory.jp/?eid=1444184
  8. 8. 82015/06/27 AAA 2つのTest Automation Patterns TAP(欧米)の紹介:全体像 大きく、「Issues」と「Patterns」に分けております。 Issuesは“よくある問題点”、Patternsは“解決策”としてまとめられています。 「Process」、「Management」、「Design」、「Execution」で分類。 10個の領域に分かれております。カッコの数字はパターンの数。 Process Management Design Execution Issues Patterns (12) (21) (14) (18) (18) (29) (7) (14) Failure Patterns(4) General Issues (7) ※例:NO PREVIOUS TEST AUTOMATION(テスト自動化やったことないねん)
  9. 9. 92015/06/27 AAA 2つのTest Automation Patterns パターン抜粋(Issues/Failure Patterns編) パターン名 概要 HIGH ROI EXPECTATIONS 行き過ぎたROIの期待 マネージメントとして最大のROIをテスト自動化に求めるが、 十分な投資の準備を行っていない。 NON-TECHNICAL-TESTERS 技術力のあるテスターが不在 ツールに熟練していないことが原因で、 自動化されたテスト ケースを作成することが出来ない。 KNOW-HOW LEAKAGE 失われしノウハウ テスト自動化のノウハウ(スクリプト作成やツールの使い方)が 既に組織から失われている HARD-TO-AUTOMATE テスト自動化が困難 神ExcelなどSUTがテスト自動化をほとんどサポートしていない、 もしくは全く自動化出来ない。 LONG SET-UP セットアップ時間長ぇ テストケース実行のための初期条件のセットアップの 手順が複雑で、時間が長くかかる。 ‘MANUAL’AUTOMATION マニュアルな自動化 テスト自動化の実行に多数のマニュアルな操作が必要な様子。 GOING FOR THE NUMBERS もっと多くのテスト自動化だ! (数に走る) テスト自動化チームがテストを実施する目的を考えずに、 出来る限り多くのテストケース数を自動化しようとしてしまう。
  10. 10. 102015/06/27 AAA 2つのTest Automation Patterns パターン抜粋(Patterns編) パターン名 概要 AUTOMATE WHAT'S NEEDED 必要なものを自動化せよ 開発者もしくはテストエンジニアが必要としているモノを自動化 しましょう。たとえそれがテストでは無いものだとしても! GOOD DEVELOPMENT PROCESS 良い開発のプロセスを採用せよ テストコードの作成にはプロダクトコード作成同様に、 良い開発プロセスを活用しましょう。 AUTOMATION ROLES 「自動化」という役割 テスト自動化チームは多数の異なるスキルと他とは異なる役割 を必要とします。※なので、個別に役割を作ろう!という意味かと SELL THE BENEFITS 利益を売りこむ意識を マネージメント向けの情報として、 テスト自動化実施で獲得が予想される利益や、 獲得済の利益情報を提供しましょう。 TEST AUTOMATION OWNER テスト自動化のオーナー テスト自動化に尽力するオーナー(役割)を任命しよう。 ※プロダクトオーナー相当と思われます。 KEYWORD-DRIVEN TESTING キーワード駆動テスト テストのふるまいを示すキーワードによってテストが駆動される。 これらのキーワードには入力データと期待結果が含まれている。 VISUALIZE EXECUTION 実行状況を見える化せよ テストを実行している際には、どのテストが現在実行しているか 分かるようにしましょう。 PRIORITISE TESTS テストの優先順位設定 簡単に実行すべきテストを選択できるようにするため、 それぞれのテストに優先順位を割り当てましょう。
  11. 11. 112015/06/27 AAA 2つのTest Automation Patterns TAPの紹介(使い方の一例) 最初に状況をGeneral IssuesやDiagnostic(診断)で明確にして、 関連する詳細なIssuesを確認して、Patternsを適用する流れ。 まあ、Dorothyさんらはコンサルの道具として使おうとしてるようです^^ General Issues Diagnostic Issue Issue Issue Issue Pattern Pattern Pattern Pattern 診断 特定 対策
  12. 12. 122015/06/27 AAA 2つのTest Automation Patterns 以下、Test Automation Patterns抜粋 ALLの項目を見たい場合はこちら http://blog.amateur-factory.jp/?eid=1444184
  13. 13. 132015/06/27 AAA 2つのTest Automation Patterns 参考:General Issues パターン名 概要 EXPECTATIONS NOT MET 期待と違う! テスト自動化がマネージャやテスト担当者、 開発者の期待と違う 結果となっている。 NO PREVIOUS TEST AUTOMATION テスト自動化やったことないねん 今まで自動化の環境が無い状況下で、テスト自動化を始めたば かりである。 NO DIRECTION どっちに行くねん! テスト自動化に特定のゴールや戦略を持たずにつまずいてしまう。 MISSING RESOURCES リソースの欠落 テストの自動化が、自動化担当者、テスト担当者、 ルールやハー ドウェアの不足によって妨げられてしまう。 MISSING KNOWLEDGE 知識の欠落 自動化担当者やテスト担当者がどのように良い自動化を行うか、 ツールを活用するかを知らない。 また、SUT※1 についての限られた 知見しかない場合や、 新し いメンバーで生産的な状態に達するために時間がかかる状況。 MISSING SUPPORT サポートの欠落 テスト自動化において、マネージャやテスト担当者、 開発者のサ ポートがされない。 UNSATISFACTORY QUALITY OF TEST AUTOMATION 不満足なテスト自動化の品質 テスト自動化が一部動作しているが、問題が多発して逆に苦しい 状況に陥ってしまう。
  14. 14. 142015/06/27 AAA 2つのTest Automation Patterns 参考:Process Issues(抜粋) パターン名 概要 AUTOMATION DECAY 自動化の腐敗 テスト自動化が現在もしくはしばらくの間保守され ておらず、 次第に腐敗して使われなくなる様子。 BUGGY SCRIPTS バグだらけの スクリプト 自動化のスクリプトが十分にテストされていないために問題が多数発 生する。 LATE TEST CASE DESIGN テスト設計が遅い 自動化のテストケースがSUTが実装された後で書かれてしまう。 ※テストケースを作ることで、早い段階で不具合が発見できる効果を 生かしていない、という意味に取ることも出来ます。 NON-TECHNICAL- TESTERS 技術力のあるテスターが不在 ツールに熟練していないことが原因で、 自動化されたテストケースを 作成することが出来ない。 RANDOM AUTOMATION (考えない)ランダムな自動化 何を自動化するか?がアドホックに決められている状態。 STALLED AUTOMATION 自動化の失速 自動化が試されるが、決して地上を離れることが無い(上手く定着し て効果が出ない)。
  15. 15. 152015/06/27 AAA 2つのTest Automation Patterns 参考:Management Issues(抜粋) パターン名 概要 HIGH ROI EXPECTATIONS 行き過ぎた ROIの期待 マネージメントとして最大のROIをテスト自動化に求めるが、 十分な投資の準備を行っていない。 ADEQUATE SUPPORT 不十分なサポート テスト自動化チームがマネージャ層、テスト設計者、 他のスペシャリストから適切な支援を受けていない。 INADEQUATE TEAM 不十分なチーム ・自動テストチーム自体が無い、もしくはゼロから作られている ・自動化を実施している人が必要な役割を与えられていない ・テスト自動化チームの一部もしくは全メンバーが テスト自動化を行う行為に向いていない KNOW-HOW LEAKAGE 失われしノウハウ テスト自動化のノウハウ(スクリプト作成やツールの使い方)が 既に組織から失われている SUT REMAKE プロダクトの作り直し SUTに大量の変更が行われる。もしくはゼロからソースが 書き直される。 UNREALISTIC EXPECTATIONS 非現実的な期待 管理層が非現実な期待をテスト自動化が出来ることに 期待してしまう。そしてその実現はできない。
  16. 16. 162015/06/27 AAA 2つのTest Automation Patterns 参考:Design Issues(抜粋) パターン名 概要 CAN'T FIND WHAT I WANT アレ、何処にあるんだっけ? スクリプト、ファイル、データセットは存在しているが、何処にあ るか思い出すことが出来ない。 HARD-TO-AUTOMATE テスト自動化が困難 SUTがテスト自動化をほとんどサポートしていない、もしくは全 く自動化出来ない。 LONG SET-UP セットアップ時間長ぇ テストケース実行のための初期条件のセットアップの手順が 複雑で、時間が長くかかる。 REPETITIOUS TESTS 反復が多くくどいテスト テストケースが同じ動作を異なるデータで繰り返す様子。 ※同値分割の同一同値内でデータをまわすなど REPETITIOUS TESTS 早すぎたんだ、 腐ってやがる… テスト自動化の開始が未熟なアプリに対してあまりに早い構 築を行ってしまう。もしくはアプリやプロダクトにノイズ的な報告 をするだけの悪い側面を示してしまう。 UNAUTOMATABLE TEST CASES 自動化出来ないテストケース 存在しているテストケースが自動化不可能。もしくは、不可能 でないにしろ困難。
  17. 17. 172015/06/27 AAA 2つのTest Automation Patterns 参考:Execution Issues(抜粋) パターン名 概要 ERRATIC TEST 不規則なテスト 自動化されたテストが成功したり失敗したりランダムに変わる。 FALSE FAIL 虚偽の失敗 テストがSUTの問題によるものでは無く、テスト自動化のテストウェ ア(ツール)もしくは環境によるものであること。 FALSE PASS 虚偽の成功 たとえ実際にはエラーを含んでいたとしてもSUTが成功と示す様子。 INEFFICIENT EXECUTION 非効率な実行 テスト自動化の実行がアドホックもしくは非常に融通が利かないも のである。結果として、テストの一部を実行できることが出来ず「全 部かゼロか」という状況となっている。 INEFFICIENT FAILURE ANALYSIS 非効率な不具合解析 不具合の解析が困難で時間がかかる様子。 ‘MANUAL’ AUTOMATION マニュアルな自動化 テスト自動化の実行に多数のマニュアルな操作が必要な様子。
  18. 18. 182015/06/27 AAA 2つのTest Automation Patterns 参考:Failure Patterns(抜粋) パターン名 概要 FRAMEWORK COMPETITION フレームワーク競争 異なるチームが異なるフレームワークを構築し、統合・連携し ようとしない。 GOING FOR THE NUMBERS もっと多くのテスト自動化だ! (数に走る) テスト自動化チームがテストの強固さを考えずに、出来る限り 多くのテストケース数を自動化しようとしてしまう。 THE NIGHT TIME FALLACY 夜間だけの設備 夜間の実行をターゲットとすることで、非効率的なテスト自動 化に繋がってしまう。 TOOL MUSHROOMING ツールの急増 内作で開発されたテストツールが、役に立つユーティリティ だったものが巨大かつ広大なテスト自動化フレームワークに 進化する様子。
  19. 19. 192015/06/27 AAA 2つのTest Automation Patterns 参考:Process Patterns(抜粋) パターン名 概要 ASK FOR HELP 助けを求めよ 何でもTry&Errorを自分でやるコトで時間を無駄にする代わりに、 周りの人に助けを求めましょう。 AUTOMATE WHAT'S NEEDED 必要なものを自動化せよ 開発者もしくはテストエンジニアが必要としているモノを自動化し ましょう。たとえそれがテストでは無いものだとしても! CHECK-TO-LEARN 学ぶためにテスト自動化 状況の確認をしよう 存在する自動化テストウェアの状況確認によって新しいメンバー の学びに繋げましょう。 GOOD DEVELOPMENT PROCESS 良い開発のプロセスを採用 せよ テストコードの作成にはプロダクトコード作成同様に、良い開発 プロセスを活用しましょう。 GOOD PROGRAMMING PRACTICES 良いプログラミングプラク ティスを採用せよ ソフトウェア開発と同様に良いプログラミングプラクティスを活用 しましょう。 TAKE SMALL STEPS 小さなステップで進めよう 価値に繋がるような小さな仕事を見つけて積み重ねましょう。
  20. 20. 202015/06/27 AAA 2つのTest Automation Patterns 参考:Management Patterns(抜粋) パターン名 概要 DEDICATED RESOURCES リソースを奉げよ テスト自動化チームをフルタイム活動可能として、ツールや機器 を必要に応じて用意出来るようにしましょう。 AUTOMATION ROLES 「自動化」という役割 テスト自動化チームは多数の異なるスキルと他とは異なる役割 を必要とします。※なので、個別に役割を作ろう!という意味。 DO A PILOT パイロットプロジェクトで調 査せよ パイロット(調査向け)プロジェクトを立ち上げ、アプリケーション に最も適したテスト自動化を探索しましょう。 PLAN SUPPORT ACTIVITIES 計画は活動をサポートせよ 計画された時間とリソースはプロジェクトのゴールでは無く、活動 をサポートするものである。 SELL THE BENEFITS 利益を売りこむ意識を マネージメント向けの情報として、テスト自動化前、もしくはテスト 自動化実施中における獲得可能もしくは獲得済利益の情報を提 供しましょう。 SET CLEAR GOALS 明確なゴールの設定 非常に早期の段階からプロジェクトの目的を定義しましょう。 TESTABLE SOFTWARE テスト可能なソフトウェア SUTにおける実装のどのような種類がテスト自動化を困難で不 可能にしているかを明らかにして、出来る限り早期から解決策を 見つけましょう。
  21. 21. 212015/06/27 AAA 2つのTest Automation Patterns 参考:Design Patterns(抜粋) パターン名 概要 AUTOMATE GOOD TESTS 良いテストを自動化せよ 良いテストのみを自動化することは、最大のROIをもたらします。 CAPTURE-REPLAY キャプチャ&リプレイ マニュアルのテストを適切なツールを用いて自動化して、テスト を再度実施するためにその手順を再生させましょう。 DATA-DRIVEN TESTING データ駆動テスト テストケースはスクリプトとして記述して、データのみ記述された 他のファイルからデータを読み込ませましょう。 DOMAIN-DRIVEN TESTING ドメイン駆動テスト テストケースを記述するテストエンジニア向けに DSL(ドメイン特化言語)を構築しましょう。 KEYWORD-DRIVEN TESTING キーワード駆動テスト テストのふるまいを示すキーワードによってテストが駆動される。 これらのキーワードには入力データと期待結果が含まれている。 MODEL-BASED TESTING モデルベーステスト SUTのモデルからテストケースを作成する。典型的には、テスト ケース自動生成ツールを用いて行う
  22. 22. 222015/06/27 AAA 2つのTest Automation Patterns 参考:Execution Patterns(抜粋) パターン名 概要 BENCHMARK TEST ベンチマークテスト 全種類のテストケースのパターン実行に向けた基準となるテスト ケースでベンチマークできるようにしましょう。 ※多くのテストはあれど、「このグループのテストはこのテスト ケースをやればまず大丈夫!」という少数のテストケースを活用 しようという意味かと FAIL GRACEFULLY 美しく失敗せよ テストの失敗時には、システム及び環境をリストアして、成功す るテストに影響を及ぼさないようにしましょう。 PARALLELIZE TESTS テストの並列化 実行時間を短縮するために、テストは並列化して実施しましょう。 PRIORITISE TESTS テストの優先順位設定 簡単に実行すべきテストを選択できるようにするため、それぞれ のテストに優先順位を割り当てましょう。 VISUALIZE EXECUTION 実行状況を見える化せよ テストを実行している際には、どのテストが現在実行しているか 分かるようにしましょう。 UNATTENDED TEST EXECUTION 介護のいらない テスト自動実行 自動テストは自動的に始まって、 付き添いの人が不要な実行体系にしましょう。

×