6.1.0 テストツールの種類
6.1.1 ツールによるテスト支援
6.1.2 テストツールの分類
商業的な提供形態での分類
パッケージやライセンスを販売しているもの
無料配布の製品
オープンソース
単一の目的のみか、テストプロジェクトを包括するか
ツールの選択が、生産性や安全性に大きな意味を持つ
プローブ効果
同じような目的のツールでも、ツールの特性の影響でテスト結果となる数値に違いが出ることがある
実行方式の違い、判定タイミングなどの計測の仕様の違い
6.1.3 テストマネジメントの支援用ツール
テストマネジメントツール
テストプロジェクトのマネージャーやリーダーを支援する
テスト要件の管理、テスト実績、欠陥の管理
テスト要件とテストケースのトレーサビリティを確保する
作成したテストケースがテスト要件を満たしているかがわかる
実績を管理することでプロジェクトのリスクを把握することができる
例はTestLink ( https://ja.wikipedia.org/wiki/TestLink )
要件マネジメントツール
プロジェクトの要件管理
要件の作成・変更、関連する別要件やテストのトレーサビリティを確保する
作成や承認など担当者によるワークフローを提供する
例はこちらもTestLink
インシデント管理ツール(欠陥追跡ツール)
インシデントの統合的な管理
概要、発生日、アプリのバージョン、環境情報(サーバー、OS)、ユーザへのインパクト
回収状況、その後の検証状況もトラッキング
BTSがこれに当たる
オープンソースだとMantis, Bugzillaなど
構成管理ツール
テストウェアも体系的な状態で分類し、バージョン管理することが求められる
テストケースやテストデータ
コンポーネントテストのテストコードも対象
まぁ……GitHubだよね。
テキストにはCVSとかSubversionとか書いてあったけど。
6.1.4 静的テスト支援ツール
レビューツール
レビュー実施のログ
開催状況、種類、参加者、指摘、コメント、レビュー対象などを記録
プロジェクト内に共有する
オープンソースだとReviewBoardなど
RedmineやTracでもそのような使い方ができる
とはいえ今はGitHub?
静的解析ツール
プログラム中の問題をツールで検出する
規約違反、使わないインスタンス、到達不可能なコードなど
FindBugsやCheckStyleが代表
モデリングツール
クラス図書いたり
書くことで不整合がないかをチェックできる
6.1.5 テスト仕様の支援ツール
テスト設計ツール
テスト設計の生産性向上
組み合わせを作るとか
PictMasterなどが代表
テストデータ準備ツール
データベースやファイルからテストデータを作成する
セキュリティ的に使えない情報をマスキングしてくれるとか
6.1.6 テスト実行と結果記録の支援ツール
テスト実行ツール
テスト実行を自動、または半自動で行う
必要なスクリプトを自動生成することもできる……
私はこれをアテにできないと思っています
メンテナンスコストはかかります
Seleniumが代表
テストハーネス、ユニットテストフレームワークツール
ドライバやスタブを含むテスト環境の一種
ドライバ=呼び出し元がいない場合、必要なパラメータを与えて呼び出しをするもの
スタブ=呼び出し先がいない場合、必要な戻り値を返してくれるもの
近年にはIDEに組み込まれている例もある
xUnitが代表
テスト比較ツール
テスト期待値と値、ファイル、データベースなどとの比較、検証を行う
多くの場合、ユニットテストフレームワークに内包されている
テストオラクルをテスト比較ツールとして使うこともある
カバレッジ計測ツール
ソースコードのカバレッジを計測する
セキュリティツール
ソフトウェアのセキュリティを評価する
脆弱性に焦点を当てて検証を行う目的
ファイヤーウォールソフトなど
セキュリティの健全性を保持する目的
Webアプリケーションのみが内部のファイルにアクセスできるように設定するなど
6.1.7 性能・モニタリング支援ツール
動的解析ツール
ソースコード実行中に発生する欠陥を摘出する
メモリの割り当てや解放に関する問題
マルチスレッドの並列処理に起因する問題
AndroidだとLeaksとか?
性能テストツール・ロードテストツール・ストレステストツール
それぞれが同じテストを目的として使用できる
性能テストツールに実装したテスト内容を変更して、ロードテスト・ストレステストができる
アプリケーションの処理能力の計測が目的の一つ
継続して動作できているかの確認もこれらで実施できる
JMeterが代表
モニタリングツール
補助的なツールです
動作中のアプリをモニタリングしながら同時にシステムリソースをモニタリング
外部のライブラリや過去のコンポーネントを使うため、静的解析ができない場合に有効
高負荷な処理がないか、メモリリークがないか
性能テスト・ロードテスト・ストレステストツールに内包される
6.1.8 特定のテストに対する支援ツール
データ品質評価
データの変換や移行が正しく行われているかを検証する
データウェアハウスなどが使用するデータの検証をする
ユーザビリティテストのツール
マウス操作、キーボード操作をトラッキング
使用しやすいUIが提供できているか分析する