テストの品質モデル構築の取り組み

21
テストの品質モデル構築の取り組み 〜優れたテストを作るために〜 井芹 洋輝 STAR(テスト自動化研究会) 2013/11/15 JaSST’13東海

description

JaSST'13 Tokai ポスターセッション

Transcript of テストの品質モデル構築の取り組み

Page 1: テストの品質モデル構築の取り組み

テストの品質モデル構築の取り組み  〜優れたテストを作るために〜

井芹 洋輝  STAR(テスト自動化研究会)  

 2013/11/15  JaSST’13東海  

Page 2: テストの品質モデル構築の取り組み

自己紹介

•  井芹 洋輝  –  組み込み開発・テストのコンサル  –  著作「Androidアプリテスト技法」(共著)、「始めてみよう!検証指向TDD」(ソフトウェアテ

ストPRESS総集編)等。開発×テストの検討や情報発信を行っている

•  STAR(テスト自動化研究会)  –  So:ware  Test  AutomaAon  Research  Group  jp  –  「テスト自動化」(特に上層、システムテスト/受け入れテスト)について、啓蒙や研究、教

材開発等を行っている  –  研究会は本活動の発端であり、レビューに協力頂いています  

–  本発表ではテストの品質特性についてご意見募集中です  

Page 3: テストの品質モデル構築の取り組み

背景

•  開発ライフサイクルでのテストの役割は拡大し続けています

–  CI、DDT/KDTツール、BDDフレームワーク、自動テストのホスティングなど、テストに関わる技術・環境の発展によるテスト活用領域の拡大

– Wモデル、TDD/BDD、ATDDなど、多方面でテストを考慮・活用する手法の普及  

•  現代的なテストの役割

–  開発ライフサイクル上の活動をテストが多方面にサポートします

–  派生開発や反復開発において、テストを資産として継続的に利用していきます

Page 4: テストの品質モデル構築の取り組み

背景

•  多方面からのテスト品質要求に応えられるテストアーキテクチャの作りこみが必要となっています  – Ex)テスト駆動開発  

•  方針なく実施  →テストの保守コストが増大し、最悪テストの破棄に  →テストの信頼性が確保できず、品質保証の責務を担えず  

•  テスト品質の改善/適切なテストアーキテクチャの構築と共に実施  –  TDD+単体テスト工数の総工数を20%削減  →成果物のテストは、プロセス上のテストの責務を担うるもので、後工程のテストの負荷を軽減  

ソフトウェアシンポジウム2011「テストの視点を活用したTDDアプローチの検討と検証」

Page 5: テストの品質モデル構築の取り組み

本活動の位置づけ

•  継続的に利用でき、多方面の要求に対応するテストアーキテクチャの構築には、テストの品質の作りこみが必要です  

•  テストの品質の作り込みには、テスト品質要求の特定、測定、評価を行う必要があります  

•  本活動では、それらを実現するため、テストについての品質要求の抽出、仕様化、測定、評価の観点となるテスト品質モデルを策定しています

Page 6: テストの品質モデル構築の取り組み

用語定義

•  テストシステム  – テスト環境構築及びテスト実装成果物  – テスト対象を組み込んで使用する  – テストスクリプト、テスト実行環境、テストデータ、

冶具ツールなどが包含される  – 例)  

•  ウェブアプリ自動テストのテストシステム  –  Selenium+Jenkins+svnserv+テストスクリプト+閲覧ブラウザ  

•  組み込み自動テストのテストシステム  – 評価ボード+通信ログツール+ビルド&ロードツール+テストス

クリプト+テストデータ  

Page 7: テストの品質モデル構築の取り組み

テストに関わる品質モデル全体構成

•  品質モデルの構成  –  品質特性、代表的な観点、代表的な指標・測定方法  

•  策定の方向性  –  自動テストのテストシステム開発に適用可能な品質モデルを策定  –  テストシステム全体に対する「テストシステム品質モデル」と、テスト自動

化で課題となりがちな「テスト容易性品質モデル」がメイン  –  ツールやテスト実装成果物(スクリプト+データ)の品質を詳細に扱える

ように、テスト環境、テストデータ、テスト設計についても、個別に詳細な品質モデルの定義を検討している  

品質モデル 内容 策定状態

テストシステム品質モデル テストシステムの品質モデル  メインとなる品質モデル。  

レビュー中

テスト設計品質モデル テストシステムに属するテスト設計の品質モデル 作成中

テスト環境品質モデル テストシステムに属するテスト環境の品質モデル 作成検討中

テストデータ品質モデル テストシステムに属するテストデータの品質モデル 作成検討中

テスト容易性品質モデル テストシステムに関連するテスト対象の品質モデル 作成中

Page 8: テストの品質モデル構築の取り組み

品質モデルの位置づけ

テスト対象-­‐テストシステム

テスト環境

テスト対象  ソフトウェア

テスト非対象ソフトウェア

テスト対象システム

テスト非対象システム

テスト 一時利用者  その他間接

利用者

人間-­‐テスト対象-­‐テストシステム

テストシステム

対象モデル  

テストシステム品質モデル

テスト設計品質モデル

テスト環境品質モデル

テストデータ品質モデル

テスト容易性品質モデル

品質モデル  

Page 9: テストの品質モデル構築の取り組み

品質モデルによるテスト品質要求の抽出、仕様化、測定、評価

テスト要求分析

テスト分析

テスト設計

テスト実装・  環境構築

テスト実施

テストに関わる  品質モデル

要求抽出・分析のための分析モデルの提供  テスト分析の観点の提供

テスト品質についての検証と妥当性確認の基準や観点をを提供  

分析モデル

検証・妥当性確認のための

属性・基準  

テスト対象への要求観点  

テストプロセス 開発プロセスへ

Page 10: テストの品質モデル構築の取り組み

品質モデルの詳細

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

Page 11: テストの品質モデル構築の取り組み

テストシステムの品質特性(主特性) 品質特性の対象 主特性 概要

テスト設計 ●テスト領域の特性 テスト設計の網羅性やピンポイント性

●テストの合目的性

テスト設計がテスト目的をどの程度達成し得るものかの度合

テスト環境 ●テスト環境の機能適合性 テスト環境が有するテスト実行機能の適合性

テストシステム ●テスト実施の性能効率性 資源の量や性能についての特性

●テストの互換性 他のテストシステムの構成要素との共存や交換のやりやすさ

●テストの使用性 テストシステムの使い勝手や学びやすさ

●テストの信頼性 テストシステムの安定性や障害に対する許容性

●テストのセキュリティ テスト活動の真正性や責任の追跡可能性。またテストシステムがテスト対象のセキュリティにどの程度影響をあたえるかの度合い

●テストの保守性 テストの保守や再利用のやりやすさ

●テストの移植性 テストシステムの構成要素の移植のしやすさ

Page 12: テストの品質モデル構築の取り組み

主特性 副特性 詳細特性の例 測定方針・指標の例

●テスト領域の特性

・テスト設計の網羅性テスト設計のインプットに対する網羅性

・仕様網羅性 テストベース仕様に対する網羅性・リスク網羅性 リスクやリスクコントロール手段に対する網羅性・構造網羅性 コードやグラフ等の構造に対する網羅性

・各種カバレッジ ・テスト対象観点に対する網羅率

・テスト設計のピンポイント性テスト目的を必要最小限のテスト領域で達成しているかの度合

・テスト設計の重複の少なさ網羅すべき実行領域をどの程度重複なく網羅できているかの度合

・工数当たりの各種カバレッジ

●テストの合目的性

・保証容易性保証基準の達成がどの程度容易かの度合 Ex)リリース可能な品質を保証しやすいか?

・リスクレベルの保証容易性  リスクレベルが要求されている水準まで軽減されているのを保証しやすいか

・保証基準チェックリストの達成度

・欠陥検出の容易性欠陥検出をどの程度支援するかの度合

― ・テストケースメソッド当たりのテストアサーション数

・指標獲得容易性取得を目的とする指標を、どの程度容易に取得できるかの度合

― ―

・テスト設計の標準適合性外部の標準や基準に対するテスト設計の適合度

・カバレッジ計測容易性  カバレッジ計測をどこまでできるか?

・監査チェックリストの合格率

●テスト環境の機能適合性

・テスト環境の正確性テストやテスト実行に必要な機能をどの程度正確に実行できるかの度合

・テスト実施正確性テスト実施をどの程度正確に実行できるかの度合

・テスト環境の完全性実施できるテストや機能が、要求や目的をどの程度包含しているかの度合

・テスト実施完全性実施できるテストがテスト設計をどの程度包含しているかの度合

・テスト環境の適切性定められたテスト関連機能のタスクを遂行できるかの度合

― ―

テストシステムの品質特性(詳細)

Page 13: テストの品質モデル構築の取り組み

主特性 副特性 詳細特性の例 測定方針・指標の例

●テスト実施の性能効率性

・テスト実施タイミング制約性テストをどの程度望ましいタイミングで実施できるかの度合ex)夜に実施しやすい、やりたいと思ったら即実施できる、といった制約の度合

・テスト実施開始タイミング制約性テストをどの程度望ましいタイミングで開始できるかの度合

・テスト実施の時間効率性テストをどれぐらい短時間で実施できるかの度合

― ・テスト実行時間

・テストの資源効率性テストのリソースをどの程度効率化出来るかの度合

・実施人員効率性どの程度の人数でテストできるかの度合・環境資源効率性どの程度の制約の少ないテスト環境でテストできるかの度合

ex)高価な環境を使わなくてすむか

・テスト対象制約性テスト対象にどの程度の完成度やカスタマイズを求めるかの度合ex)本番環境でないとテストが出来ない、モックを組み込まないとテストが出来ない、といった制約の度合

・テストダブル制約性テストを実施するために、テスト対象をどの程度テストダブルに置換しなければならないかの度合

・後戻り防止性テストの後戻りの規模・頻度をどの程度軽減するかの度合ex)サニティテストによる後戻り防止性の向上

― ・欠陥検出率

・バグの解析容易性テストでバグを見つけた場合、それの特定がどの程度容易か

― ―

・テスト自動化容易性テスト実行の自動化をどの程度まで適用するか

・テスト実施自動化容易性テスト実行の自動化をどの程度まで適用できるか・テスト構築自動化容易性テスト分析・設計・実装の自動化をどの程度まで適用出来るか

テストシステムの品質特性(詳細)

Page 14: テストの品質モデル構築の取り組み

主特性 副特性 詳細特性の例 測定方針・指標の例

●テストの互換性 ・共存性テストが、他のテストや環境に影響を受けたり、影響を与えたりする程度の度合

・プロジェクトをまたがった資源共有のやりやすさ

・相互運用性他のテストシステムの構成要素との相互運用がどの程度できるかの度合

●テストの使用性 ・適切度認識性テストエンジニアがテストやテスト結果を適切であると認識しやすいかどうかの度合

― ―

・不具合認識性テストが検出するバグをバグであると認識しやすいかの度合

― ―

・習得性テストシステムの使用に必要なスキルを用意に習得できるかの度合

― ・テストに対するユーザビリティテスト結果

・運用操作性テスト実施の運用や制御がどの程度容易かの度合

― ―

・テスト実施エラー防止性テストシステム使用のミスをどの程度防止できるかの度合

― ―

・アクセシビリティテストシステム利用者を対象としたアクセシビリティ

― ・アクセシビリティチェックリストの達成度

テストシステムの品質特性(詳細)

Page 15: テストの品質モデル構築の取り組み

主特性 副特性 詳細特性の例 測定方針・指標の例

●テストの信頼性 ・成熟性テストシステムが通常運用下でどの程度安定してテスト目的を達成できるかの度合

― テスト稼動時のMTTF

・障害許容性テストシステムの運用において、どの程度までテストの障害を許容できるかの度合

― ―

・回復性障害やエラーから正常状態にどの程度復帰させやすいかの度合

― テスト稼働時のMTTR

・テスト実行単位の独立性テストシステムの実行単位の構成要素間でどの程度の副作用や依存関係があるかの度合 ex)Test Suite間での副作用の度合い

― ―

・テスト実施再現性テスト実施の再現しやすさの度合 ex)実行のたびに結果が変わらないか

― ―

●テストのセキュリティ

・テスト対象機密保持性対象のセキュリティをどの程度保持できるかの度合

ex)テスト用の機能でバックドアを作ってしまうリスクの度合

― テスト機能を有効化したソフトウェアに対するセキュリティ解析結果

・否認防止性テスト結果が不正に否認できないかどうかの度合

― ―

・責任追跡性テストの責務達成について、どの程度追跡・確認できるようになっているかの度合

― ―

・テスト真正性テストが正しいものであると判断できるかどうかの度合

― ・CSV適合度

・テスト結果真正性テスト結果が正しいものであると判断できるかどうかの度合

― ―

テストシステムの品質特性(詳細)

Page 16: テストの品質モデル構築の取り組み

主特性 副特性 詳細特性の例 測定方針・指標の例

●テストの保守性 ・テスト設計要素の独立性テスト設計の構成要素が独立しており、テスト設計変更の影響がどの程度限定されているかの度合

― ―

・テストモジュール凝集性テスト設計の構成要素は、有意なテストケースやテスト設計観点の集まりとなっているかの度合

― ・テストコードの各種静的解析結果

・アクティビティの自己完結性セットアップ、実行、結果検証、後始末までテスト実施のアクティビティがどの程度まとまっているかの度合

― ―

・再利用性テストの再利用しやすさの度合

― ―

・解析性テストの理解や問題特定がどの程度なのかの度合

・テスト設計とのトレーサビリティの見やすさ ・テストスクリプトの可読性

・テストコードの各種静的解析結果

・変更性テストの変更をどの程度少ないコストや確実さで実施できるについての度合

・テストコードの各種静的解析結果

・試験性テストの検証や妥当性確認の容易性

― ・テストコードの各種静的解析結果

●テストの移植性 ・適応性ツールや環境にどの程度順応できるかの度合

― ―

・設置性テストシステムをどの程度設置しやすいかの度合

― ―

・置換性他のテストシステムとの置換えはどの程度容易かの度合

― ―

テストシステムの品質特性(詳細)

Page 17: テストの品質モデル構築の取り組み

活用例

Page 18: テストの品質モデル構築の取り組み

テスト品質の観点抽出

テスト実施の性能効率性

テスト実施タイミング制約性

夜間実施可能か

並列実施可能か

テスト実施の時間効率性

CIテストの時間効率性

ゲートチェックイン時テストの所

要時間

フルテストの所要時間

テスト実施の資源効率性

CIサーバスペック

テスト対象制約性

テストダブル必要性

ロギング機能必要性

開発支援CIサーバテスト 分析観点

品質モデルを観点に要求分析観点を具体化

品質特性

Page 19: テストの品質モデル構築の取り組み

テスト要求の抽出

テスト要求の全体構成を整理・俯瞰する

ステークホルダ✕テスト品質観点によるステークホルダ分析マトリクス

抽出した  ステーク  ホルダ

テスト品質の観点 計画や制約、  要求獲得結果

実施テスト  一覧

テスト品質の観点 ●REQ-­‐CM-­‐1  テスト実施時間は1min以下であること  

●REQ-­‐CM-­‐3  Jenkinsトリガでビルド・実行を完全自動化す

ること

テスト品質観点ごとに要求を抽出・整理する

実施テスト✕テスト品質観点によるテスト要求分析マトリクス

Page 20: テストの品質モデル構築の取り組み

テスト品質の指標と基準の設定

主特性 副特性 詳細特性の例 測定方針・指標の例

●テスト領域の特性

・テスト設計の網羅性テスト設計のインプットに対する網羅性

・仕様網羅性 テストベース仕様に対する網羅性・リスク網羅性 リスクやリスクコントロール手段に対する網羅性・構造網羅性 コードやグラフ等の構造に対する網羅性

・各種カバレッジ ・テスト対象観点に対する網羅率

・テスト設計のピンポイント性テスト目的を必要最小限のテスト領域で網羅しているかの度合

― ・工数当たりの各種カバレッジ

・テスト設計の重複の少なさ網羅すべき実行領域をどの程度重複なく網羅できているかの度合

― ・テスト対象観点に対する重複率

品質モデル

テスト対象コードのMC/DC

Nスイッチカバレッジ

社内標準観点の網羅率

品質モデルを参考に、テスト要求の達成を確認するための指標と基準を設定

Page 21: テストの品質モデル構築の取り組み

今後の展開

•  定義した品質モデルはSTAR公式サイトで公開予定です  – hXps://sites.google.com/site/testautomaAonresearch/