テスト自動化知識体系 「 TABOK 」のご紹介   Company LOGO ソフトウェアプロジェクトにおけるツールの活用を考える会 松木 晋祐
松木 晋祐  @snsk しんす ( く  ||  け ) さん とよく呼ばれてます 所属しているコミュニティ 株式会社 ACCESS NPO 法人 ASTER JaSST 東京実行委員会 /ASTER ToolWG/ 智美塾 Android テスト部 ソフトウェアプロジェクトにおけるツールの活用を考える会 アジャイルプロセス協議会 ( テスト、レビュー WG) 思いつきでノージャンルの勉強会主催 Android 開発入門 /Selenium 入門 /Web 技術概論講座 等 何の人? ひたすらウェブブラウザやってた関係でずっとウェブ でも基盤技術 (HTML,CSS,JS/DOM,HTTP,SSL 等 ) しか知らない 「派遣テスター」から「本部 QMS 開発主管」までひと通りやって、 いま何故か PM 職 自動化 LOVE !ツール NEED YOU ! モノ作るのも、壊すのも好き 自己紹介 Chapter 0
今日おはなしすること Chapter.1 「 TABOK 」とは何か? Chapter.2   テスト自動化  12 のスキルカテゴリ紹介 自動化リーダー向け  1 ~ 7 自動化技術者向け  8 ~ 12 Chapter.3   まとめ・明日から使える「 TABOK 」 Chapter 0
とそのまえに Chapter 0 実演
TABOK とは何か? 米国 ATI( Automated Testing Institute ) 策定の 「自動テストに関する知識体系 (BOK) 」 BOK? 関連する職能団体によって定義される専門領域を構成する概念、用語、および活動などの完全セットを表す用語 SWEBOK, PMBOK, SQuBOK, REBOK, BABOK 等が有名 Chapter 1
12 のスキルカテゴリ TABOK はイントロダクション、プロセススキル ( スキルカテゴリ ),Appendix の 3 部から構成されており、本編は 12 にも及ぶスキルカテゴリの定義になります 1 〜 7 は自動化リーダー向け 8 〜 12 は自動化技術者向け ただし、リーダーが計画を立てる際にその見積もりの多くを技術者に依存する形になるため、自動化技術者も 1 〜 7 に目を通しておいたほうがよい、とされています これよりこの 12 のスキルカテゴリの概要と特徴的な部分を簡単にご紹介していきます Chapter 2
    Skill Category 1: Automation‘s Role in the STLC    ソフトウェアライフサイクルにおける自動化の役割 テストの自動化を成功させるためにはまず、 テストの自動化とは何なのか? テストライフサイクル全体のどこに位置するのか ? を理解する必要があります ソフトウェアテストとの違い テストツールの導入と統合 自動化の利点と誤解 自動化の ROI( 投資利益率 ) Chapter 2
        Skill Category 2: Test Automation Types and Interfaces        テスト自動化の種類とインターフェース テスト自動化の種類 機能 ( 回帰 ) テスト ユニットテスト インテグレーションテスト パフォーマンステスト テスト自動化のインターフェース コマンドライン アプリケーション・プログラミング・インターフェース (API) グラフィカル・ユーザー・インターフェース (GUI) Chapter 2
Skill Category 3: Automation Tools テスト自動化ツール テスト自動化の専門家はテストライフサイクルのあらゆる側面をサポートするツールへの洞察を提供する必要があります これは各テストライフサイクルにおいてどんなツールが相応しいのかを理解するだけでなく、異なる種類のツールを適正に評価できなければならないことを意味します 構成管理ツール ビジネス / システム要件モデリングツール 要件管理ツール ユニットテストツール テスト管理ツール 欠陥管理ツール 静的コードカバレッジ解析ツール 機能テスト自動化ツール パフォーマンステストツール Chapter 2
        Skill Category 4: Test Automation Frameworks        テスト自動化フレームワーク 自動化の範囲 ロールと責任 Team Lead Test Engineer Lead Automation Architect Cross Coverage Coordinator Automation Engineer (Automator) ※ ひとりのエンジニアが複数のロールを兼任することがたびたびあります テスト自動化の 3 世代 Chapter 2
Skill Category 5: Automation Framework Design テスト自動化フレームワークの設計 このスキルカテゴリでは、テスト自動化フレームワークをデザインするための汎用的なプロセスを、低レベルレイヤでの有用性を確保しながら定義しています フレームワークの種類の選択 フレームワークのコンポーネントの特定 フレームワークのディレクトリ構造の特定 実装基準の策定 自動テストの実装 Chapter 2
Skill Category 6: Automated Test Script Concepts   自動化スクリプトのコンセプト 対象とするテストの選択 自動テストの設計と開発 自動テストの実行と分析、レポート テスト実行に利用できるマシンの数 エラーハンドリング テスト結果のレポートと分析の方法 Chapter 2
Skill Category 7: Quality Attribute Optimization 品質特性の最適化 このカテゴリでは自動化されたテストスイートのさまざまな品質特性の識別とその適応方法を定義します Maintainability Portability Flexibility Robustness Scalability Reliability Usability Performance Chapter 2 一般的な品質特性が並んでいるように見えますが、一部、ロバストネス ( 外乱に対する抵抗性 ) やフレキシビリティ、スケーラビリティなど、自動テストならではの特性も含まれているようです
Skill Category 8: Programming Concepts ( スクリプト ) プログラミングのコンセプト ツールとそのスクリプト言語、ツリー構造、基本的なプログラミングの概念は、テストがカバーできるシステムや柔軟性に大きな影響を及ぼします。変数、制御構文  (if..then..else, for..next, etc) 及びモジューラビリティはこのカテゴリで議論されます コンパイル言語かスクリプト言語か カスタム機能開発へのアプローチ Chapter 2
Skill Category 9: Automation Objects 自動化オブジェクト アプリケーションオブジェクトの認識 オブジェクトマップ オブジェクトモデル 動的なオブジェクトの振る舞い ※ ここでいう動的なオブジェクトとは、恐らく可変長のリストコ ポーネントや動的に生成されるボタンなどの UI オブジェクトを指 すものと思われます Chapter 2 自動テストのエンジニアが直面する最大の課題のひとつに動的なオブジェクトの振る舞いがあります。目視であれば、アプリケーションに若干の変更があった場合も容易に調整することもできますし、多くのプロパティの変更を無視することができます。しかし、コンピュータにこの調整は容易ではないため、どんな調整が必要になるかは、予め自動テストのプログラミング時に予測されていなければなりません
Skill Category 10: Debugging Techniques デバッグのテクニック エラーの種類 構文エラー ランタイムエラー 論理エラー アプリケーションエラー デバッグのテクニック エラーの識別 エラーの再現 エラーのローカライズ エラーの修正 Chapter 2
Skill Category 11: Error Handling エラーハンドリング エラー処理はテスト自動化スクリプトの中でもさまざまな方法で実装されていますが、そのほとんどは次の 3 つのカテゴリに収めることができます。 ステップの実装 コンポーネントの実装 実行実装 エラーハンドリングの実装 潜在的なエラーの診断 エラー補足メカニズムの定義 エラーログデータの生成 エラーハンドルルーチンの生成 Chapter 2
Skill Category 12: Automated Test Reporting 自動テストレポート テストレポートとその分析は非常に反復的なプロセスであり、多くの時間を必要とします。このカテゴリではどのように効果的にこれらのレポートを生成するかにフォーカスします。 自動テストフレームワークによって生成されるレポートの種類は以下のとおりです。 ハイレベル ( スイート / テスト ) レポート ローレベル ( 検証ポイント ) レポート Chapter 2
まとめ・明日から使える「 TABOK 」  まず「 TABOK 」というその存在自体 テストの自動化を“片手間”の仕事にしない 紹介されている ROI の算出を駆使して経営にアピールできるレベルの、「貢献するロール」であることを示しましょう 自動テストの開発は製品開発に比べて遥かに高い保守性と変更性を要求されるため、そのノウハウは極めて高い価値として、逆に製品開発に FB できるはず 自社にはそういうロールがない?逆にチャンス! 全てのロールを経験できるチャンスです。根付いて細分化される前にジェネラリストになってしまいましょう Chapter 3
ご清聴ありがとうございました Chapter Final ソフトウェアプロジェクトにおけるツールの活用を考える会 では、 その活動の一部として TABOK とテストの自動化を研究していきます 興味をお持ちの方がおられましたら是非お声かけください

自動テスト知識体系TABOKのご紹介

  • 1.
    テスト自動化知識体系 「 TABOK」のご紹介 Company LOGO ソフトウェアプロジェクトにおけるツールの活用を考える会 松木 晋祐
  • 2.
    松木 晋祐 @snsk しんす ( く || け ) さん とよく呼ばれてます 所属しているコミュニティ 株式会社 ACCESS NPO 法人 ASTER JaSST 東京実行委員会 /ASTER ToolWG/ 智美塾 Android テスト部 ソフトウェアプロジェクトにおけるツールの活用を考える会 アジャイルプロセス協議会 ( テスト、レビュー WG) 思いつきでノージャンルの勉強会主催 Android 開発入門 /Selenium 入門 /Web 技術概論講座 等 何の人? ひたすらウェブブラウザやってた関係でずっとウェブ でも基盤技術 (HTML,CSS,JS/DOM,HTTP,SSL 等 ) しか知らない 「派遣テスター」から「本部 QMS 開発主管」までひと通りやって、 いま何故か PM 職 自動化 LOVE !ツール NEED YOU ! モノ作るのも、壊すのも好き 自己紹介 Chapter 0
  • 3.
    今日おはなしすること Chapter.1 「TABOK 」とは何か? Chapter.2 テスト自動化 12 のスキルカテゴリ紹介 自動化リーダー向け 1 ~ 7 自動化技術者向け 8 ~ 12 Chapter.3 まとめ・明日から使える「 TABOK 」 Chapter 0
  • 4.
  • 5.
    TABOK とは何か? 米国ATI( Automated Testing Institute ) 策定の 「自動テストに関する知識体系 (BOK) 」 BOK? 関連する職能団体によって定義される専門領域を構成する概念、用語、および活動などの完全セットを表す用語 SWEBOK, PMBOK, SQuBOK, REBOK, BABOK 等が有名 Chapter 1
  • 6.
    12 のスキルカテゴリ TABOKはイントロダクション、プロセススキル ( スキルカテゴリ ),Appendix の 3 部から構成されており、本編は 12 にも及ぶスキルカテゴリの定義になります 1 〜 7 は自動化リーダー向け 8 〜 12 は自動化技術者向け ただし、リーダーが計画を立てる際にその見積もりの多くを技術者に依存する形になるため、自動化技術者も 1 〜 7 に目を通しておいたほうがよい、とされています これよりこの 12 のスキルカテゴリの概要と特徴的な部分を簡単にご紹介していきます Chapter 2
  • 7.
        Skill Category1: Automation‘s Role in the STLC    ソフトウェアライフサイクルにおける自動化の役割 テストの自動化を成功させるためにはまず、 テストの自動化とは何なのか? テストライフサイクル全体のどこに位置するのか ? を理解する必要があります ソフトウェアテストとの違い テストツールの導入と統合 自動化の利点と誤解 自動化の ROI( 投資利益率 ) Chapter 2
  • 8.
            Skill Category2: Test Automation Types and Interfaces        テスト自動化の種類とインターフェース テスト自動化の種類 機能 ( 回帰 ) テスト ユニットテスト インテグレーションテスト パフォーマンステスト テスト自動化のインターフェース コマンドライン アプリケーション・プログラミング・インターフェース (API) グラフィカル・ユーザー・インターフェース (GUI) Chapter 2
  • 9.
    Skill Category 3:Automation Tools テスト自動化ツール テスト自動化の専門家はテストライフサイクルのあらゆる側面をサポートするツールへの洞察を提供する必要があります これは各テストライフサイクルにおいてどんなツールが相応しいのかを理解するだけでなく、異なる種類のツールを適正に評価できなければならないことを意味します 構成管理ツール ビジネス / システム要件モデリングツール 要件管理ツール ユニットテストツール テスト管理ツール 欠陥管理ツール 静的コードカバレッジ解析ツール 機能テスト自動化ツール パフォーマンステストツール Chapter 2
  • 10.
            Skill Category4: Test Automation Frameworks        テスト自動化フレームワーク 自動化の範囲 ロールと責任 Team Lead Test Engineer Lead Automation Architect Cross Coverage Coordinator Automation Engineer (Automator) ※ ひとりのエンジニアが複数のロールを兼任することがたびたびあります テスト自動化の 3 世代 Chapter 2
  • 11.
    Skill Category 5:Automation Framework Design テスト自動化フレームワークの設計 このスキルカテゴリでは、テスト自動化フレームワークをデザインするための汎用的なプロセスを、低レベルレイヤでの有用性を確保しながら定義しています フレームワークの種類の選択 フレームワークのコンポーネントの特定 フレームワークのディレクトリ構造の特定 実装基準の策定 自動テストの実装 Chapter 2
  • 12.
    Skill Category 6:Automated Test Script Concepts 自動化スクリプトのコンセプト 対象とするテストの選択 自動テストの設計と開発 自動テストの実行と分析、レポート テスト実行に利用できるマシンの数 エラーハンドリング テスト結果のレポートと分析の方法 Chapter 2
  • 13.
    Skill Category 7:Quality Attribute Optimization 品質特性の最適化 このカテゴリでは自動化されたテストスイートのさまざまな品質特性の識別とその適応方法を定義します Maintainability Portability Flexibility Robustness Scalability Reliability Usability Performance Chapter 2 一般的な品質特性が並んでいるように見えますが、一部、ロバストネス ( 外乱に対する抵抗性 ) やフレキシビリティ、スケーラビリティなど、自動テストならではの特性も含まれているようです
  • 14.
    Skill Category 8:Programming Concepts ( スクリプト ) プログラミングのコンセプト ツールとそのスクリプト言語、ツリー構造、基本的なプログラミングの概念は、テストがカバーできるシステムや柔軟性に大きな影響を及ぼします。変数、制御構文 (if..then..else, for..next, etc) 及びモジューラビリティはこのカテゴリで議論されます コンパイル言語かスクリプト言語か カスタム機能開発へのアプローチ Chapter 2
  • 15.
    Skill Category 9:Automation Objects 自動化オブジェクト アプリケーションオブジェクトの認識 オブジェクトマップ オブジェクトモデル 動的なオブジェクトの振る舞い ※ ここでいう動的なオブジェクトとは、恐らく可変長のリストコ ポーネントや動的に生成されるボタンなどの UI オブジェクトを指 すものと思われます Chapter 2 自動テストのエンジニアが直面する最大の課題のひとつに動的なオブジェクトの振る舞いがあります。目視であれば、アプリケーションに若干の変更があった場合も容易に調整することもできますし、多くのプロパティの変更を無視することができます。しかし、コンピュータにこの調整は容易ではないため、どんな調整が必要になるかは、予め自動テストのプログラミング時に予測されていなければなりません
  • 16.
    Skill Category 10:Debugging Techniques デバッグのテクニック エラーの種類 構文エラー ランタイムエラー 論理エラー アプリケーションエラー デバッグのテクニック エラーの識別 エラーの再現 エラーのローカライズ エラーの修正 Chapter 2
  • 17.
    Skill Category 11:Error Handling エラーハンドリング エラー処理はテスト自動化スクリプトの中でもさまざまな方法で実装されていますが、そのほとんどは次の 3 つのカテゴリに収めることができます。 ステップの実装 コンポーネントの実装 実行実装 エラーハンドリングの実装 潜在的なエラーの診断 エラー補足メカニズムの定義 エラーログデータの生成 エラーハンドルルーチンの生成 Chapter 2
  • 18.
    Skill Category 12:Automated Test Reporting 自動テストレポート テストレポートとその分析は非常に反復的なプロセスであり、多くの時間を必要とします。このカテゴリではどのように効果的にこれらのレポートを生成するかにフォーカスします。 自動テストフレームワークによって生成されるレポートの種類は以下のとおりです。 ハイレベル ( スイート / テスト ) レポート ローレベル ( 検証ポイント ) レポート Chapter 2
  • 19.
    まとめ・明日から使える「 TABOK 」 まず「 TABOK 」というその存在自体 テストの自動化を“片手間”の仕事にしない 紹介されている ROI の算出を駆使して経営にアピールできるレベルの、「貢献するロール」であることを示しましょう 自動テストの開発は製品開発に比べて遥かに高い保守性と変更性を要求されるため、そのノウハウは極めて高い価値として、逆に製品開発に FB できるはず 自社にはそういうロールがない?逆にチャンス! 全てのロールを経験できるチャンスです。根付いて細分化される前にジェネラリストになってしまいましょう Chapter 3
  • 20.
    ご清聴ありがとうございました Chapter Finalソフトウェアプロジェクトにおけるツールの活用を考える会 では、 その活動の一部として TABOK とテストの自動化を研究していきます 興味をお持ちの方がおられましたら是非お声かけください