
第25回 ソフトウェア試験の国際標準規格ISO/IEC/IEEE 29119 vol.2 ~ソフトウェア試験の概念~
通常の規格というのは、「かくあるべきだ」という適合性の要求項目がありますが、 ISO/EC/IEEE 29119-1ではソフトウェア試験の概念について記述され、 適合性については29119-2~5(試験プロセス、試験文書、試験技術、キーワード駆動テスト)で定義されています。
ソフトウェア試験とは?
ソフトウェア試験は「完全なソフトウェアを作り出すことは不可能である」という前提のもとに考えなければなりません。100%は無理でも利用者に届ける前に出来るだけの試験を行うことが必要です。人間が作成したソフトウェアには必ず不具合が存在しています。それによって利用者に与える不利益を出来るだけ軽減するのが試験の目的です。やろうと思えば永遠に試験は繰り返されます。しかしそれは経済的に考えても現実的ではありません。ポイントとしてはソフトウェアの重要機能を洗い出し、その機能については徹底的に試験を行うことです。それでは徹底的とはどこまでやればよいのか?正しい試験とはどのようなものでどのような手法なのかを具体的に解説しているのがこの規格です。
試験は動的試験と静的試験に大別されます。動的試験は実際のプログラムを実行して仕様通りの動きをするかを確認するテストです。静的試験は仕様書のレビューが正しく行われているとか、仕様書の整合性はとれているか、設計書には顧客の要求が網羅できているか等々の確認を行います。ソフトウェア試験は静的試験と動的試験を組み合わせて行うことが望ましと定義されています。プログラムを実行して不具合が無いことを確認するだけでは試験とは言えません。
ソフトウェア試験の目的
試験の目的については次のように定義しています。
- 試験対象項目の品質に関する確認(品質特性をどのように定め重要項目を設定したか)
- 試験対象項目がどの程度試験されたか、残存リスクはどれくらいかの情報提供
- リリース前の不具合の発見と今後発生するリスクの発見
具体的にはこの29119シリーズの前にコラムで説明した、JISX25010(システム及びソフトウェア品質モデル)で定義されている品質特性に従って、動的試験を実行し測定し評価することです。合わせて開発プロセスの段階でできるだけ多くの不具合を発見するために、試験文書のレビュー(静的試験)をしっかり行うことです。
試験の留意点としては以下の記述があります。
- 試験はプロセス確認である。
プロセスは、入力したものが例えば画面表示・帳票等の出力に変換します。相互に関係があり相互に影響を及ぼすことから整合性確認が重要です(そのための具体策は以後のコラムで解説します)。 - 組織的試験プロセスが必要である。
品質向上を目指すには組織全体としてプロジェクトを考える必要がある。試験方針、試験戦略を設定し維持する事が重要です。 - 試験は計画され、監視され、管理された方が良い。
- 試験は開発全体のライフサイクルで考えることが重要である。
- 静的試験ではプログラム実行なしのコード解析ツールや文書トレーサビリティツール等の使用を含んでも良い。
- 動的試験は試験対象項目の実行だけでなく実行準備から追跡活動までを含んで考える。
- 検証は、客観的な証拠の提供による、規定された要求事項が、所与の作業成果物で満たされていることの確認である。
- 妥当性確認は、作業成果物が、利用者の特定作業のために、利用者によって使用できることを明示する。結果が妥当であると根拠をもって明示すること。
- 試験は動的であれ静的であれ、容易に不具合は発見できないと予期して、複数の品質特性による確認を行った方が良い。
繰り返しになりますが、システムやソフトウェアの複雑化、膨張により、完璧な試験を行うことは不可能です。試験目的を設定し最大限に満たすことを目指すことが重要です。また、リスクに対する管理や工数も計画に含めることが大切です。
何話まで続くかわかりませんが、このコラムへのお付き合いいただけますと幸いです。