Slide 1

Slide 1 text

テストの品質モデル構築の取り組み 〜優れたテストを作るために〜 井芹 洋輝 STAR(テスト自動化研究会) 2013/11/15 ソフトウェアテストシンポジウム 2013 東海

Slide 2

Slide 2 text

自己紹介 • 井芹 洋輝 – 組み込み開発・テストのコンサル – 著作「Androidアプリテスト技法」(共著)、「始めてみよう!検証 指向TDD」(ソフトウェアテストPRESS総集編)等 – その他「ユニットテストの保守性を作りこむ」(XP祭り関西)、「テ ストを育てる。テストを支える」(Ultimate Agilist Tokyo)、「TDDの 守破離 in Live」(JaSST 12東京)等、開発✕テストの研究活動・情 報発信を行っている • STAR(テスト自動化研究会) – Software Test Automation Research Group jp – 「テスト自動化」(特に上層、システムテスト/受け入れテスト)に ついて、啓蒙や研究、教材開発等を行っている。 – 研究会は本活動の発端であり、レビューに協力頂いています

Slide 3

Slide 3 text

背景 • テストの役割は拡大し続けています – CI、DDT/KDTツール、BDDフレームワーク、仮想化、クラウ ドサービスなど、テストに関わる技術・環境の発展による テスト活用領域の拡大 – Wモデル、BDD、ATDDなど、多方面でテストを考慮・活用 する手法の普及 • 現在のテストの役割: – 開発ライフサイクル上の活動をテストが多方面にサポート – テストを資産として、プロジェクトを横断しながら継続的に 利用

Slide 4

Slide 4 text

課題 • 多方面からのテスト品質要求に応えられるテ ストの構築が必要となっています – 例)テスト駆動開発 • プログラミングのスピードを損なわない、テストの速さ・ 効率性が必要 • 作成したテストをリグレッションテストとして継続的に運 用するためのテストの保守性が必要

Slide 5

Slide 5 text

本活動の位置づけ • 多方面からのテスト品質要求に応えられる、 テストの品質の作りこみが必要です • テストの品質の作り込みには、テスト品質の 要求定義、測定、評価を行う必要があります • 本活動では、それらを実現するため、テストに ついての品質要求の抽出、仕様化、測定、評 価の観点となるテスト品質モデルを作成して います

Slide 6

Slide 6 text

用語定義 • テストシステム – テスト環境構築及びテスト実装成果物 – テスト対象を組み込んで使用する – テストスクリプト、テスト実行環境、テストデータ、 冶具ツールなどが包含される – 例) • ウェブアプリ自動テストのテストシステム – Selenium+Jenkins+svnserv+テストスクリプト+閲覧ブラウザ • 組み込み自動テストのテストシステム – 評価ボード+通信ログツール+ビルド&ロードツール+テストス クリプト+テストデータ

Slide 7

Slide 7 text

テストに関わる品質モデル 全体構成 • 品質モデルの構成 – 品質特性、代表的な観点、代表的な指標・測定方法 • 策定の方向性 – 自動テストのテストシステムを主ターゲットとした品質モデルを策定 – テストシステム全体に対する「テストシステム品質モデル」と、テスト自動 化で課題となりがちな「テスト容易性品質モデル」がメイン – ツールやテスト実装成果物(スクリプト+データ)の品質を詳細に扱える ように、テスト環境、テストデータ、テスト設計についても、個別に詳細な 品質モデルの定義を検討している 品質モデル 内容 テストシステム品質モデル テストシステムの品質モデル メインとなる品質モデル。 テスト設計品質モデル テストシステムに属するテスト設計の品質モデル テスト環境品質モデル テストシステムに属するテスト環境の品質モデル テストデータ品質モデル テストシステムに属するテストデータの品質モデル テスト容易性品質モデル テストシステムに関連するテスト対象の品質モデル

Slide 8

Slide 8 text

品質モデルの位置づけ テスト対象-テストシステム テスト 環境 テスト対象 ソフトウェア テスト非対象 ソフトウェア テスト対象システム テスト非対 象システム テスト 一時利用者 その他間接 利用者 人間-テスト対象-テストシステム テストシステム 対象モデル テストシステム 品質モデル テスト設計 品質モデル テスト環境 品質モデル テストデータ 品質モデル テスト容易性品 質モデル 品質モデル

Slide 9

Slide 9 text

品質モデルによるテスト品質要求の 抽出、仕様化、測定、評価 テスト要求分析 テスト分析 テスト設計 テスト実装・ 環境構築 テスト実施 テストに関わる 品質モデル 要求抽出・分析のための分析モデルの提供 テスト分析の観点の提供 テスト品質についての検証と妥当 性確認の基準や観点をを提供 分析モデル 検証・妥当性 確認のための 属性・基準 テスト対象へ の要求観点 テストプロセス 開発プロセスへ

Slide 10

Slide 10 text

品質モデルの詳細 • 今回ご紹介する品質モデル – テストシステムの品質特性

Slide 11

Slide 11 text

テストシステムの品質特性(主特性) 品質特性の対象 主特性 概要 テスト設計 ●テスト領域の特性 テスト設計の網羅性やピンポイント性 ●テストの合目的性 テスト設計がテスト目的をどの程度達成し得るものか の度合 テスト環境 ●テスト環境の機能適合性 テスト環境が有するテスト実行機能の適合性 テストシステム ●テスト実施の性能効率性 資源の量や性能についての特性 ●テストの互換性 他のテストシステムの構成要素との共存や交換のや りやすさ ●テストの使用性 テストシステムの使い勝手や学びやすさ ●テストの信頼性 テストシステムの安定性や障害に対する許容性 ●テストのセキュリティ テスト活動の真正性や責任の追跡可能性。またテスト システムがテスト対象のセキュリティにどの程度影響 をあたえるかの度合い ●テストの保守性 テストの保守や再利用のやりやすさ ●テストの移植性 テストシステムの構成要素の移植のしやすさ

Slide 12

Slide 12 text

主特性 副特性 詳細特性の例 測定方針・指標の例 ●テスト領域の特性 ・テスト設計の網羅性 テスト設計のインプットに対する網羅性 ・仕様網羅性 テストベース仕様に対する網羅性 ・リスク網羅性 リスクやリスクコントロール手段に対する網羅性 ・構造網羅性 コードやグラフ等の構造に対する網羅性 ・各種カバレッジ ・テスト対象観点に対する網羅率 ・テスト設計のピンポイント性 テスト目的を必要最小限のテスト領域で達成 しているかの度合 ・テスト設計の重複の少なさ 網羅すべき実行領域をどの程度重複なく網羅できて いるかの度合 ・工数当たりの各種カバレッジ ●テストの合目的性 ・保証容易性 保証基準の達成がどの程度容易かの度合 Ex)リリース可能な品質を保証しやすいか? ― ・保証基準チェックリストの達成 度 ・欠陥検出の容易性 欠陥検出をどの程度支援するかの度合 ― ・テストケースメソッド当たりのテ ストアサーション数 ・指標獲得容易性 取得を目的とする指標を、どの程度容易に取 得できるかの度合 ― ― ・テスト設計の標準適合性 外部の標準や基準に対するテスト設計の適 合度 ・カバレッジ計測容易性 カバレッジ計測をどこまでできるか? ・監査チェックリストの合格率 ●テスト環境の機能 適合性 ・テスト環境の正確性 テストやテスト実行に必要な機能をどの程度 正確に実行できるかの度合 ・テスト実施正確性 テスト実施をどの程度正確に実行できるかの度合 ― ・テスト環境の完全性 実施できるテストや機能が、要求や目的をど の程度包含しているかの度合 ・テスト実施完全性 実施できるテストがテスト設計をどの程度包含してい るかの度合 ― ・テスト環境の適切性 定められたテスト関連機能のタスクを遂行で きるかの度合 ― ― テストシステムの品質特性(詳細)

Slide 13

Slide 13 text

主特性 副特性 詳細特性の例 測定方針・指標の例 ●テスト実施の性能 効率性 ・テスト実施タイミング制約性 テストをどの程度望ましいタイミングで実施 できるかの度合 ex)夜に実施しやすい、やりたいと思ったら 即実施できる、といった制約の度合 ・テスト実施開始タイミング制約性 テストをどの程度望ましいタイミングで開始でき るかの度合 ― ・テスト実施の時間効率性 テストをどれぐらい短時間で実施できるか の度合 ― ・テスト実行時間 ・テスト実施の資源効率性 テスト実施のリソースをどの程度効率化出 来るかの度合 ・実施人員効率性 どの程度の人数でテストできるかの度合 ・環境資源効率性 どの程度の制約の少ないテスト環境でテストでき るかの度合 ex)高価な環境を使わなくてすむか ― ・テスト対象制約性 テスト対象にどの程度の完成度やカスタマ イズを求めるかの度合 ex)本番環境でないとテストが出来ない、 モックを組み込まないとテストが出来ない、 といった制約の度合 ・テストダブル制約性 テストを実施するために、テスト対象をどの程度 テストダブルに置換しなければならないかの度 合 ― ・後戻り防止性 テストの後戻りの規模・頻度をどの程度軽 減するかの度合 ex)サニティテストによる後戻り防止性の向 上 ― ・欠陥検出率 ・バグの解析容易性 テストでバグを見つけた場合、それの特定 がどの程度容易か ― ― ・テスト自動化容易性 テスト実行の自動化をどの程度まで適用す るか ・テスト実施自動化容易性 テスト実行の自動化をどの程度まで適用できる か ・テスト構築自動化容易性 テスト分析・設計・実装の自動化をどの程度まで 適用出来るか ― テストシステムの品質特性(詳細)

Slide 14

Slide 14 text

主特性 副特性 詳細特性の例 測定方針・指標の例 ●テストの互換性 ・共存性 テストが、他のテストや環境に影響を受けたり、影 響を与えたりする程度の度合 ・プロジェクトをまたがった資源共有のやりやすさ ― ・相互運用性 他のテストシステムの構成要素との相互運用がど の程度できるかの度合 ― ― ●テストの使用性 ・適切度認識性 テストエンジニアがテストやテスト結果を適切である と認識しやすいかどうかの度合 ― ― ・不具合認識性 テストが検出するバグをバグであると認識しやすい かの度合 ― ― ・習得性 テストシステムの使用に必要なスキルを用意に習 得できるかの度合 ― ・テストに対するユーザビリ ティテスト結果 ・運用操作性 テスト実施の運用や制御がどの程度容易かの度合 ― ― ・テスト実施エラー防止性 テストシステム使用のミスをどの程度防止できるか の度合 ― ― ・アクセシビリティ テストシステム利用者を対象としたアクセシビリティ ― ・アクセシビリティチェックリス トの達成度 テストシステムの品質特性(詳細)

Slide 15

Slide 15 text

主特性 副特性 詳細特性の例 測定方針・指標の例 ●テストの信頼性 ・成熟性 テストシステムが通常運用下でどの程度安定してテ スト目的を達成できるかの度合 ― テスト稼動時のMTTF ・障害許容性 テストシステムの運用において、どの程度までテスト の障害を許容できるかの度合 ― ― ・回復性 障害やエラーから希望する状態にどの程度復帰さ せやすいかの度合 ― テスト稼働時のMTTR ・テスト実行単位の独立性 テストシステムの実行単位の構成要素間でどの程 度の副作用や依存関係があるかの度合 ex)Test Suite間での副作用の度合い ― ― ・テスト実施再現性 テスト実施の再現しやすさの度合 ― ― ●テストのセキュリ ティ ・テスト対象機密保持性 対象のセキュリティをどの程度保持できるかの度合 ex)テスト用の機能でバックドアを作ってしまうリスク の度合 ― テスト機能を有効化したソフトウェアに対す るセキュリティ解析結果 ・否認防止性 テスト結果が不正に否認できないかどうかの度合 ― ― ・責任追跡性 テストの責務達成について、どの程度追跡・確認で きるようになっているかの度合 ― ― ・テスト真正性 テストが正しいものであると判断できるかどうかの度 合 ― ・CSV適合度 ・テスト結果真正性 テスト結果が正しいものであると判断できるかどうか の度合 ― ・CSV適合度 テストシステムの品質特性(詳細)

Slide 16

Slide 16 text

主特性 副特性 詳細特性の例 測定方針・指標の例 ●テストの保守性 ・テスト設計要素の独立性 テスト設計の構成要素が独立しており、テスト設計変更の 影響がどの程度限定されているかの度合 ― ― ・テストモジュール凝集性 テスト設計の構成要素は、有意なテストケースやテスト設計 観点の集まりとなっているかの度合 ― ・テストコードの各種静的解 析結果 ・アクティビティの自己完結性 セットアップ、実行、結果検証、後始末までテスト実施のアク ティビティがどの程度まとまっているかの度合 ― ― ・再利用性 テストの再利用しやすさの度合 ― ― ・解析性 テストの理解や問題特定がどの程度用以下の度合 ・テスト設計とのトレーサビリティの見や すさ ・テストコードの各種静的解 析結果 ・修正性 テストの修正をどの程度少ないコストで実施容易かについ ての度合 ・テストコードの複雑度 ・テストコードの各種静的解 析結果 ・試験性 テストの検証や妥当性確認の容易性 ― ・テストコードの各種静的解 析結果 ●テストの移植性 ・適応性 ツールや環境にどの程度順応できるかの度合 ― ― ・設置性 テスト環境をどの程度設置しやすいかの度合 ― ― ・置換性 他のテストとの置換えはどの程度容易かの度合 ― ― テストシステムの品質特性(詳細)

Slide 17

Slide 17 text

活用例

Slide 18

Slide 18 text

テスト品質の観点抽出 テスト実施の性能 効率性 テスト実施タイミン グ制約性 夜間実施可能か 並列実施可能か テスト実施の時間 効率性 CIテストの時間効 率性 ゲートチェックイン 時テストの所要時 間 フルテストの所要 時間 テスト実施の資源 効率性 CIサーバスペック テスト対象制約性 テストダブル必要 性 ロギング機能必 要性 開発支援CIサーバテスト 分析観点 品質モデルを観点に要求分析観点を具体化 品質特性

Slide 19

Slide 19 text

テスト要求の抽出 テスト要求の全体構成 を整理・俯瞰する ステークホルダ✕テスト品質観点によるステークホルダ分析マトリクス 抽出した ステーク ホルダ テスト品質の観点 計画や制約、 要求獲得結果 実施テスト 一覧 テスト品質の観点 ●REQ-CM-1 テスト実施時間は 1min以下であること ●REQ-CM-3 Jenkinsトリガでビルド・ 実行を完全自動化す ること テスト品質観点ごとに要求を抽出・整理する 実施テスト✕テスト品質観点によるテスト要求分析マトリクス

Slide 20

Slide 20 text

テスト品質の指標と基準の設定 主特性 副特性 詳細特性の例 測定方針・指標の例 ●テスト領域 の特性 ・テスト設計の網羅性 テスト設計のインプットに対す る網羅性 ・仕様網羅性 テストベース仕様に対する網羅性 ・リスク網羅性 リスクやリスクコントロール手段に 対する網羅性 ・構造網羅性 コードやグラフ等の構造に対する 網羅性 ・各種カバレッジ ・テスト対象観点に対する 網羅率 ・テスト設計のピンポイント性 テスト目的を必要最小限のテ スト領域で網羅しているかの 度合 ― ・工数当たりの各種カバ レッジ ・テスト設計の重複の少なさ 網羅すべき実行領域をどの 程度重複なく網羅できている かの度合 ― ・テスト対象観点に対する 重複率 品質モデル テスト対象コードの MC/DC Nスイッチカバレッジ 社内標準観点の網羅 率 品質モデルを参考に、テスト要求の達成を確 認するための指標と基準を設定