2 テスト技法:基礎

この資料はテスト技法セミナーのスライドに関する補助資料です.目次は右側に表示されます.

概要

  • 知識と実践のギャップ
  • 実務としてのテスト文化
  • 課題と対策

2.1 知識としてのテスト技法

公式の定義としては,

  1. 国際規格 ISO/IEC/IEEE 29119 シリーズ
  2. ISTQB / JSTQB翻訳版

教科書的な図書

  • Myers「The Art of Software Testing」: テスト技法の古典、三角形判定問題で有名
  • Beizer「Software Testing Techniques」: テスト技法の体系化
  • Pressman「Software Engineering」: 標準的教科書、テストプロセスを詳述
  • Sommerville「Software Engineering」: 包括的教科書、テストとデバッグを含む

ISO/IEC/IEEE 29119 ソフトウェアテスト規格シリーズ概要

ISO/IEC/IEEE 29119 はソフトウェアテストに関する国際的な共通フレームワークを提供する規格群であり,テスト活動を体系的に整理し統一的な基盤を示すことを目的としている.従来は IEEE 829 や ISTQB ガイドラインなどが並行して利用されていたが,29119 シリーズはそれらを包括する形で用語,プロセス,文書化,技法,自動化といった領域を体系化している.以下では5つの主要パートについて概要を示す.

29119-1:用語と定義(Concepts & Definitions)

29119-1 はソフトウェアテストに関する共通用語を定義し,プロジェクト間での認識ズレを防ぐための基盤を提供する.例えば「テスト条件」「テストケース」「テストスイート」など,組織によって曖昧になりがちな用語を標準化し,統一的な理解を形成する. さらに,テストプロセス構造,リスクとテストの関係,テストレベルやテストタイプといった後続規格の前提となる主要概念を体系的に整理している.

29119-2:テストプロセス(Test Processes)

29119-2 はシリーズの核であり,標準的なソフトウェアテストプロセスモデルを定義する.プロセスは以下の3階層で構成される.

  • 組織テストプロセス:組織全体のテスト方針,標準,メトリクス整備,プロセス改善を扱う.
  • プロジェクトテストプロセス:プロジェクトに応じたテスト戦略やテスト計画を作成し,テスト活動を管理する.
  • 動的テストプロセス:テスト条件の抽出,テストケース設計,実行,評価といった具体的なテスト実施プロセスを定義する.

ウォーターフォールとアジャイルの双方を想定しており,リスクベースドテストとも整合する柔軟な構造になっている.

29119-3:テスト文書化(Test Documentation)

29119-3 は IEEE 829 の後継的役割を持ち,テスト文書の種類とテンプレートを標準化する. 対象となる文書には,テスト計画,テスト設計仕様書,テストケース仕様書,不具合報告書,テスト完了報告などが含まれる.

主な文書カテゴリは以下の通り.

  • テスト管理文書:テスト計画,テストサマリー,テスト完了報告など.
  • テスト設計文書:テスト戦略,テスト設計仕様書.
  • テスト実行文書:テストケース仕様書,テスト手順書.
  • テスト評価文書:不具合報告,評価レポート.

アジャイルにおける省文書文化にも配慮し,必要な文書のみ選択して使えるよう柔軟な構造を採用している.

29119-4:テスト技法(Test Techniques)

29119-4 はテスト設計技法を体系的に分類し,適用手順と入力・出力の形式を標準化している.分類としてはブラックボックス技法,ホワイトボックス技法,経験ベース技法などが含まれる.

主な技法例は以下の通り.

  • 同値分割法
  • 境界値分析
  • デシジョンテーブル
  • 状態遷移テスト
  • ペアワイズ法
  • 条件網羅,分岐網羅,MC/DC
  • エラー推測法

これにより,組織内での技法の選定根拠や適用の一貫性を高めることができる.

29119-5:キーワード駆動テスト(Keyword-Driven Testing)

29119-5 は自動テストで広く用いられるキーワード駆動テストを国際標準として定義する.キーワードを抽象化した操作単位として定義し,テストケースをキーワードとデータの組み合わせで構築するアプローチを体系化している.

主な内容は以下の通り.

  • キーワード定義方法と構造化
  • キーワードとテストデータの分離
  • キーワードライブラリの管理方法
  • 自動テストスクリプトとの連携モデル

GUI や Web の自動テストでも広く活用可能な標準化された枠組みを提供する.

まとめ

ISO/IEC/IEEE 29119 シリーズは,

  • 用語標準化
  • テストプロセスの体系化
  • 文書テンプレートの統一
  • テスト技法の整理
  • 自動テスト手法の標準化

ISTQB(International Software Testing Qualifications Board)概要

ISTQB(International Software Testing Qualifications Board) は,ソフトウェアテストの知識体系(Body of Knowledge:BOK)と資格制度を国際標準として提供する非営利組織であり,テスト技術者の能力を体系的に認定する仕組みを世界規模で展開している.2002 年に設立され,現在では 130 以上の国・地域のボードが加盟し,世界中で広く利用されている.ISTQB の役割は大きく分けて「テスト知識体系の定義」「資格認定制度の維持」「国際的な共通教育指針の提供」の3つである.

ISTQB の組織構造

ISTQB は国際組織として中央に Global Board を持ち,各国には National Board(例:JSTQB、日本ソフトウェアテスト資格認定委員会)が設置されている.Global Board はシラバス標準化,試験方針策定,認定制度管理を行い,National Board はローカル言語の試験提供や教育機関の認定を担当する.これにより国際整合性と地域適応性の両立を図っている.

認定資格の体系構造

ISTQB 資格は大きく Foundation Level, Advanced Level, Expert Level の三階層に分かれている.各レベルは役割や経験に応じた学習範囲と到達目標を持ち,ステップアップしながらテストスキルを体系的に習得できる構造になっている.

Foundation Level(基礎レベル)

主にテスト初学者や初級エンジニア向けの資格であり,テストの概念,ライフサイクル,静的テスト,テスト技法,テスト管理などの基本知識を扱う.特にブラックボックス/ホワイトボックス技法,レビュー手法など,基礎となる内容が幅広く含まれる.

さらに Specialist と呼ばれる派生資格があり,アジャイルテスト,テスト自動化,モデルベースドテスト,AIテストなど特定領域に特化した知識を認定する.

Advanced Level(応用レベル)

中級から上級のテスト専門家向けで,テストマネージャ,テストアナリスト,テクニカルテストアナリストの3つの役割を中心に構成される. 主な内容は以下の通り.

  • Test Manager:テスト計画,リスク管理,品質管理,チームマネジメント,テストプロセス改善.
  • Test Analyst:ブラックボックス技法の応用,仕様分析,要求ベーステスト,リスク評価.
  • Technical Test Analyst:ホワイトボックス技法,非機能テスト,静的解析,自動テスト設計など技術的領域.

より実践的かつ役割ベースの知識体系が定義されている.

Expert Level(専門家レベル)

テスト分野の高度専門家を対象とし,プロセス改善,テストマネジメント,テスト自動化戦略など,組織レベルでのテスト活動を主導できる能力を対象とする.Expert Level は深い専門性と実務経験を前提とした内容であり,資格認定には詳細な実務レポートや面接なども含まれる.

ISTQB シラバスの役割

ISTQB が提供する「シラバス(Syllabus)」は,資格の出題範囲であると同時に,国際的なソフトウェアテスト知識体系として機能する.シラバスは,

  • 学習目的(LO:Learning Objectives)
  • 理解レベル(K レベル)
  • 分野ごとの知識の詳細説明
  • 推奨される用語集(Glossary) などを含む構造で定義されている.

シラバスは定期的に改訂され,最新の技術動向やテストアプローチ(アジャイル,DevOps,AI,モデルベース等)が順次取り込まれる.教育・試験・研修の共通基盤として世界的に参照されている点が特徴である.

用語集(Glossary)の提供

ISTQB はテスト関連用語を統一するための公式グロッサリーを公開しており,シラバスや試験で使用されるすべての用語の標準定義を提供する.この用語集は技術者の共通理解を支え,教育・研修資料でも広く使われている.

まとめ

ISTQB は,ソフトウェアテストに関する国際的な資格認定制度と知識体系を提供する枠組みであり,

  • テスト技術者の能力可視化
  • 共通教育カリキュラムの整備
  • 用語の統一
  • テスト実務の成熟度向上 を実現する国際的基準として広く活用されている.教育・研修,キャリアパス形成,組織の品質向上など,多様な場面で利用される実践的な枠組みである.

2.2 実践としてのテスト文化

近年,アジャイル開発など,従来の規範に縛られた重たいテストから,軽量で実効性のある開発文化が躍進している. オープンサイエンスやオープンソースの世界では,ソフトウェアテストは「透明性」と「共同開発」を前提に進化している.テスト成果物はリポジトリで公開され,CI/CD によって自動化され,コミュニティ全体が品質保証に参加する形態が主流である.特に GitHub や GitLab では,プルリクエスト時にユニットテスト,静的解析,カバレッジ測定が自動実行され,失敗するとマージできない仕組みが一般的になっている.また,オープンサイエンス領域では研究コードの再現性確保が重視され,テストとデータ,実験手順を含む「再現可能パイプライン」が共有される.Jupyter,Docker,ワークフローエンジン(Snakemake,Nextflow など)と組み合わせて再現性テストが自動実行される点が特徴である.さらに,ユーザーコミュニティによるバグ報告や回帰テストの寄与が大きく,テストの社会的分散が進んでいる.このように,オープンソース側のテストは自動化,透明性,コミュニティ協調を核としたエコシステムとして機能している.

GAI/LLMの進化はオープンサイエンスの流れであり,今後も新技術はオープン側で生じ,レガシー側の規格や資格制度は衰退傾向にある.

規格・資格制度とオープン系ソフトウェアテストの違い

国際規格や資格制度と,オープンサイエンスやオープンソースのテスト文化は,目的やプロセス,文書化の考え方において大きく異なる特徴を持つ.以下では学術研究,産業界の知見,コミュニティの議論を基に,両者の違いを整理する.

学術研究での比較視点

ソフトウェア工学分野では,コミュニティ駆動のテストと標準ベースのテストを比較する研究がある.OSS プロジェクトでは,自動テスト率,CI 運用,軽量なテスト設計慣習が中心となる一方,規格ではプロセスの再現性や文書の一貫性が重視される.こうした研究は Empirical Software Engineering や ACM, IEEE の会議で多く発表されている.

産業界やコミュニティの解説

GitHub, Red Hat, ThoughtWorks などの技術ブログでは,オープンソース的テスト文化として,CI/CD を核にした自動化,軽量ドキュメント,テストコードや PR を一次成果物とする点が解説されている.一方,一部の OSS コミュニティは,重厚なプロセス標準が現代のアジャイルやオープンな開発スタイルと整合しないという批判を公開している.

国際会議での議論

ICSE, FSE, Agile Conference などでは,オープンソース品質保証,共同テスト,軽量テストプロセスなどが継続的に議題となり,オープン系と規格系の文化差が議論されている.

比較表

項目 規格・資格制度 オープン系テスト
目的 再現可能性と一貫性の確保 透明性と共同開発の促進
文書 標準テンプレートを使用 最小限の文書で,テストコードや PR が主成果物
プロセス 定義済みプロセスに従う 実践駆動で,CI/CD が中心
コミュニティ 組織内部や資格所有者 世界中の開発者が直接参加
情報源 ISO/IEC/IEEE, ISTQB GitHub, OSS 実例,研究論文

このように,規格や資格制度は組織的品質保証や再現性に重きを置くのに対し,オープン系は透明性,自動化,共同作業に重点を置く文化として発展している.

2.3 Jupyter Lab の紹介

Jupyter Lab は, データ分析や機械学習, 数値計算, ソフトウェア開発など幅広い領域で利用される, 近代的で柔軟な Web ベースの開発環境です. ブラウザのみで動作するため, 利用者はローカル環境に依存せず, サーバ側で計算を実行できます. この特徴により, 大規模データの処理や GPU を活用した機械学習モデルの学習などを, クライアント PC の性能に左右されずに実行できます.

Jupyter Lab の中心的な機能は「ノートブック」と呼ばれるドキュメント形式で, コードと実行結果, 図表, テキスト説明を一つの画面に統合できます. Python をはじめ, R や Julia など複数の言語に対応しており, 実験の記録や可視化を効率よく行えるため, 研究者やデータサイエンティストに広く利用されています. また, Markdown セルを利用することで, 解説資料や実験ノート, 学習教材といった文章をコードと並べて整理できる点も大きな利点です.

ユーザーインターフェースはタブ型のワークスペースを採用しており, ノートブック, ターミナル, ファイルブラウザ, テキストエディタなど複数のパネルを自由に配置して作業できます. 拡張機能を追加することで, Git 操作や変数ビューア, 可視化ツールなどを簡単に統合でき, 作業効率を大幅に向上させることができます.

教育や研修の場でも, Jupyter Lab は非常に有用です. コードの実行結果をその場で確認しながら学習できるため, プログラミング入門やデータ分析演習に適しています. また, Jupyter Hub と連携させることで, 多人数に同一環境をブラウザ越しに提供でき, 受講者の環境構築の負担を取り除けます. このように, Jupyter Lab は研究開発と教育の双方で強力なツールとして利用されており, 研修向けプラットフォームとして非常に優れています.