tabok skill category2解説
TRANSCRIPT
+
テスト自動化・ TABOK 研究会 Skill Category 2 : Test Automation Types and Interfaces
担当者:朱峰錦司 (@kjstylepp)
2+Skill Category 2 導入
テスト自動化には多様な分野・種類が存在 異なる種類同士の違いを理解することで得られる
メリット 知識・技術の体系化できる 組織間のコミュニケーションが円滑になる 新技術の成熟が促進される
12/05/13テスト自動化・ TABOK 研究会
3+目次
2.1 Test Automation Types 2.1.1 Unit Test Automation 2.1.2 Integration Test Automation 2.1.3 Functional System Test Automation 2.1.4 Performance Test Automation
2.2 Application Interfaces
12/05/13テスト自動化・ TABOK 研究会
+
2.1Test Automation Types
12/05/13テスト自動化・ TABOK 研究会
5+2.1 概要
テスト自動化は一般的に以下の 4 種類に分類できる1. ユニットテスト自動化2. 統合テスト自動化3. 機能システムテスト自動化4. パフォーマンステスト自動化
12/05/13テスト自動化・ TABOK 研究会
ユニットテス
ト
統合テスト
機能システムテスト
パフォーマンステスト
V 字モデルの右側のイメージ
非機能要件代表※ 他は自動化の必要なし or 困難
ホワイトボックステスト扱い
は一般的か?
6+2.1.1 Unit Test Automation(1)
ユニットテスト テスト可能な最小単位の振る舞いをテスト
テスト時はドライバ/スタブを利用 コード変更時の問題(≒デグレ)早期発見に有効
ビルド時に自動実行されると効力が最大化
手動+目視確認でも実施可能だが、コードが複雑になるにつれて厳しくなる カバレッジの確保が大変 実施が退屈
12/05/13テスト自動化・ TABOK 研究会
定義は人によってまちまち
ユニットテスト自動化
7+2.1.1 Unit Test Automation(2)
ユニットテスト自動化 テストコードはたいていプロダクトコードと同じ
言語で実現( ex. Java -> JUnit )
プロダクトコードより前、または同時に書くのが理想 構成管理もプロダクトコードと同等に実施 プロダクトコード開発者がテストコードも書くの
が一般的 方法論によっては、テスト専門家がシナリオを作成を支
援 テストハーネス等を用いて、複数のユニットテス
トをまとめて定期的に実行可能
12/05/13テスト自動化・ TABOK 研究会
テスト実装・実施環境などを含んだフレームワーク※ 詳細は ISTQB を参照のこと
8+2.1.2 Integration Test Automation統合テスト
ユニットを統合して振る舞いをテスト
統合テスト自動化 自動化のアプローチはユニットテストと一緒 2 つの統合していく順序の方針
1. トップダウン 呼び出し階層が上位のユニットから順に統合 ドライバが減るがスタブが増える
2. ボトムアップ統合 呼び出し階層が下位のユニットから順に統合 スタブが減るがドライバが増える
12/05/13テスト自動化・ TABOK 研究会
どっちがいいかはCase by Case?
9+2.1.3 Functional System Test Automation機能システムテスト
機能テスト、かつ、システムテスト 完全に統合されたアプリケーションに対し、ブラック
ボックスアプローチで振る舞いをテスト 本書では簡単のため「 functional test 」と表記
たいていテスト自動化の対象はこの工程
機能システムテスト自動化 GUI アプリケーションに対する回帰テストを対象
にすることが多い
12/05/13テスト自動化・ TABOK 研究会
10+2.1.4 Performance Test Automation(1)パフォーマンステスト
レスポンスタイムのボトルネックを特定/スループットを測定
システム機能テストが完了した段階で実施するのが理想
手動での実施は困難 多数のユーザによる同時利用などの場合、人手不足とな
る 正確な測定が難しい
12/05/13テスト自動化・ TABOK 研究会
理想すぎやしないか?
パフォーマンステスト自動化
11+2.1.4 Performance Test Automation(2)パフォーマンステスト自動化
仮想ユーザによる同時多数接続、データ量とパフォーマンスの相関算出などを実施
ボトルネック発見時はレイヤーを切り分けて詳細に原因究明 レイヤーごとに有識者を確保する必要あり
12/05/13テスト自動化・ TABOK 研究会
レイヤー 原因の例
プレゼンテーション層
効率の悪いアルゴリズム
DB 層 効率の悪いクエリ
OS 層 リソース不足
ネットワーク層 狭い帯域
12+2.1.4 Performance Test Automation(3)パフォーマンステストと似たテスト
ロードテスト 基本的にはパフォーマンステストと一緒 上限に向けて徐々にデータ量を増やしていくのが特徴
ストレステスト 上限を超えて、実際にアプリケーションが正常に動作し
なくなるまで実施するのが特徴
12/05/13テスト自動化・ TABOK 研究会
パフォーマンステストの定義が明確でないため、差異がよくわかっていません…
+
2.2Application Interfaces
12/05/13テスト自動化・ TABOK 研究会
14+2.2 概要
テスト自動化に適したアプリケーションインタフェースは以下の 4 つである1. CLI2. API3. GUI4. Webサービス・インタフェース
12/05/13テスト自動化・ TABOK 研究会
ユーザの操作の再現という点で一番相性がよい
テスト実装がしやすい
※@snsk さんのブログでの説明のニュアンスはちょっと違うかも?※ 「 CUI 」は和製英語なので英語圏で使うとかっこわるいかも?
15+2.2 各インタフェースについて (1)
Command Line Interface コマンドを効率よくやり取りするテキストベースのメ
カニズム たいていのスクリプト言語はコマンドラインインタプ
リタを実現可能なため、これを用いてテスト自動化を実現可能
Application Programming Interface プログラム呼び出し等で利用可能なアプリケーション再利用メカニズム
たいていのスクリプト言語は外部プログラム呼び出しが可能なため、これを用いてテスト自動化を実現可能
12/05/13テスト自動化・ TABOK 研究会
なぜスクリプト言語限定?
16+2.2 各インタフェースについて (2)
Graphical User Interface アイコンなどの操作によりアプリケーションを利用可能と
するメカニズム UI の変更時、内部構造の変更時に比べて自動テスト資産の
保守性の維持が困難 しかし、直感的な自動化のため需要は多く、たいていの取
り組みは GUI アプリケーションが対象
Web Service Interface ネットワークごしに利用可能なアプリケーション再利用メ
カニズム メッセージベースのオープンなプロトコルによる利用を想
定してるため、これを再現することでテスト自動化を実現可能
12/05/13テスト自動化・ TABOK 研究会
+ご清聴ありがとうございました