ソフトウェア開発における標準化
システムやソフトウェアを開発するプロジェクトでは、作業の手順や成果物を定義するのが一般的です。すべての開発担当者の作業を標準化することで、作業効率や作業品質の向上、コミュニケーションロスの低減などを実現できます。これによって、プロセス品質が向上し、さらには開発するプロダクトの品質も向上することにつながります。
しかし、1つのプロジェクトの中で閉じた標準化(プロジェクト標準)では、ある作業担当者が別のプロジェクトに移ると、移った先では違うプロジェクト標準があるため、開発手順をまた一から確認し直さなければいけません。場合によっては、使う用語やその意味すら違うこともあります。また、あるまとまった組織の中で標準化(組織標準)を行っている場合でも、複数の組織が関わって開発を行う際には、組織間で異なる開発手順を合わせるのに余計な労力を費やすことになります。
ソフトウェアテストの国際規格
このような問題を解消するために存在するのが国際規格です。そこで今回は、ソフトウェアテストの国際規格について紹介します。ソフトウェアテストの標準・規格類としては、米国電気電子学会(IEEE)が策定したIEEE 829が長らく使われてきました。この規格にはテストで作成するドキュメント類が定義されていましたが、業界標準という位置づけのため強制力はなく、一部のプロジェクトや組織で参考にされているだけでした。
そこで、ソフトウェアテストに関する国際規格の策定委員会が2007年頃に組織され、検討を重ねた結果、先ごろ国際標準化機構(ISO)および国際電気標準会議(IEC)の国際規格が正式公開されました。
新たに作られた国際規格はISO/IEC/IEEE 29119:2013 Software and systems engineering -Software testing-という規格番号および名称で、現在(2014年1月時点)、以下の3つのパートが公開されています参考1。
- Part1: Concepts and definitions(概念および定義)
ソフトウェアテストに関する用語の定義、およびテストの目的やそれを達成するために必要な考え方を示しています参考2。
- Part2: Test processes(テストプロセス)
テストプロセスモデルを「組織的テストプロセス」「テスト管理プロセス」「動的テストプロセス」の3階層で定義し、それぞれのテストプロセスのさらに詳細なプロセスや、プロセス間の関連を示しています参考3。
- Part3: Test documentation(テストドキュメント)
テストで作成するドキュメントの種類やその関連を示しています。いくつかのドキュメントについてはサンプルも示しています参考4。
これらに続いて、Part4としてテスト技法、Part5としてキーワード駆動テストに関する規格が現在検討されています。
ここでは、Part2 テストプロセスの中の動的テストプロセスの一部をご紹介しましょう。動的テストプロセスはさらに、「テスト設計・実装」や「テスト実行」などの4つのプロセスに細分化されます。例えばそのうちのテスト実行プロセスは、テスト手順の実行、テスト結果の比較、テスト実行の記録という作業(アクティビティ)に分けられ、その実施順序や入出力成果物が定義されています。また、実際の規格ではこれらの手順や成果物を分かりやすく図示しています。
テストの実行は、単にテスト対象を動かして結果を確認するだけと捉えられがちですが、作業者まかせにするのではなく、このように順序立てて行うことで確実なテストを実施できることを規格で定義しているのです。
ただし、このような規格はそのまま使うのではなく、開発の特性(開発規模、新規開発か派生開発か、ウォーターフォールかアジャイルか、使用するツールなど)やプロジェクトの特性(開発期間、コスト、開発体制など)にあわせてカスタマイズ(一般的にはテーラリングと呼びます)して使うことが必要になります。
また、ソフトウェア開発全体の国際規格としては、ISO/IEC 12207:2008 Systems and software engineering -Software life cycle processes-がありますので、テストを含めた開発プロセス全体の標準化を考える際にはこちらを参照するとよいでしょう参考5。
国際規格に基づいて開発プロセスを標準化することは、オフショア開発など海外の会社と協業する際に大きな効果をもたらします。NTTデータの開発標準TERASOLUNA参考6はISO/IEC 12207をテーラリングしたものですが、テストプロセスに関してもISO/IEC/IEEE 29119に準拠させ、グローバル展開する開発に対応していきたいと考えています。
参考文献
- 参考1ET2013 IPAセミナー「高信頼な組込みソフトウェアのためのテスト事例と最新動向」(PDF:41ページ, 2,053KB)(外部リンク)
日本電気通信システム株式会社 羽田 裕
- 参考2ISO/IEC/IEEE 29119-1:2013 Software and systems engineering - Software testing - Part 1: Concepts and definitions(外部リンク)
- 注規格策定の主要関係者による紹介ページです
- 参考3ISO/IEC/IEEE 29119-2:2013 Software and systems engineering - Software testing - Part 2: Test processes(外部リンク)
- 注規格策定の主要関係者による紹介ページです
- 参考4ISO/IEC/IEEE 29119-3:2013 Software and systems engineering - Software testing - Part 3: Test documentation(外部リンク)
- 注規格策定の主要関係者による紹介ページです
- 参考5共通フレーム2013~経営者、業務部門とともに取組む「使える」システムの実現~(外部リンク)
独立行政法人 情報処理推進機構 技術本部、ソフトウェア・エンジニアリング・センター 編
- 参考6TERASOLUNA(外部リンク)