はじめに:ソフトウェア開発における品質の重要性
皆さんは、スマートフォンアプリが突然クラッシュしたり、Webサイトが途中で表示されなくなったりした経験はありますか?
このような事象はソフトウェアの不具合に含まれます。このようなソフトウェアの不具合は、開発段階での十分な「Verification(検証)」がされていないことが原因の一つです。
ソフトウェア開発において、「Verification(検証)」は、開発されたソフトウェアが設計どおりに正しく機能しているかを確認するための観点やプロセスのことで、言わばソフトウェアの品質を守るための「盾」のようなイメージです。
この記事では、「Verification(検証)」の基礎知識やその重要性、プロセス、具体的な実践方法などを網羅的に、IT初心者にもわかりやすく解説していきます。
Verificationとは?
まず、「Verification」という言葉自体に馴染みのない方も多いかもしれません。「Verification(ベリフィケーション)」は、日本語で「検証」と訳されます。ソフトウェア開発においては、設計書に記載された内容と、実際に開発されたソフトウェアが一致しているかを確認することを指します。
例えば、自動車の設計図と実際に製造された自動車が一致しているかを確認するようなもので、設計図通りに部品が組み付けられ、エンジンが正常に稼働しているかなどを細かくチェックするといったイメージです。
VerificationとValidationの違い
ここで、同じく品質確保の一環として行われる「Validation(妥当性確認)」についても触れておきます。
「Verification」と「Validation」は似たような意味に思えますが、実は異なる目的を持っていますので、順にみていきましょう。
Verification: ソフトウェアが設計通りにできているかを確認する=「正しいものを作ったか」という検証の観点
Validation: 作られたソフトウェアが、ユーザーのニーズに合っているかを確認する=「作ったものが正しいか」という妥当性を確認する観点
例えば、料理で例えると、「Verification」は「レシピ通りに料理が作られているか」を確認すること、「Validation」は「作った料理が美味しく、お客様に喜んでもらえるかものかどうか」を確認するということになります。
まとめますと、「Verification」はソフトウェアの構造などの(内部的な)チェックのことで、ソフトウェアが設計の要件を満たしているかどうかに焦点を当てています。一方、「Validation」はソフトウェアの振る舞いなどの(外部的な)チェックであり、ソフトウェアが最終的にユーザーにとって価値あるものかどうかを評価します。
なぜVerificationが重要なのか?
では、なぜ「Verification」がソフトウェア開発においてこれほど重要なのでしょうか?
その理由は、「Verification」が品質を確保し、リスクを低減するための主な手段になるからです。重要な理由を以下に記します。
不具合の早期発見と修正
ソフトウェア開発プロジェクトでは、仕様通りに機能しないソフトウェアをリリースしてしまうと、後々多大なコストが発生します。
特に、運用フェーズに入った後に不具合(市場不具合)が見つかった場合、その修正には多大な時間と費用がかかってしまうことが少なくありません。
「Verification」を適切に実施することで、ソフトウェア開発の初期段階で不具合を発見し、早期に修正することが可能になります。
品質の向上
「Verification」は、ソフトウェアの品質を一貫して高めるための手段でもあります。
ソフトウェアの各開発フェーズでの「Verification(検証)」を通じて、仕様通りにソフトウェア開発が進んでいることを確認することで、最終的な製品またはサービスの品質が向上します。
コンプライアンスと規制の遵守
特に医療、金融、自動車、航空宇宙などの厳しい規制が求められる業界では、「Verification」が法令や規制の遵守を確認する役割も果たします。
これらの業界では、ソフトウェアが法律や業界標準に適合していることを証明するために、詳細な「Verification」プロセスが必須となります。
Verificationのプロセスとは?
ここからは、「Verification」の具体的なプロセスについて詳しく見ていきましょう。
「Verification」は単なるテスト(またはレビュー)を指すのではなく、計画的かつ組織的に実施される一連の活動を指します。
以下に、テストの典型的なVerificationプロセスの流れを記載しますので、順にみていきましょう。
1. 要件の確認とテスト計画の作成
Verificationプロセスは、まずソフトウェアの要件を明確に理解・把握することから始まります。これは、テスト計画を作成するための基礎となります。要件が把握できていればいるほどテストケースを適切に設計することでき、効果的なVerificationが可能となります。
次に、テスト計画を策定します。テスト計画では、どの機能をどのようにテストするか、どのテスト手法を用いるか、テストのスケジュールやリソースはどのように確保するかなどを詳細に決めていきます。テスト計画は、Verificationプロセスの全体を示す重要なドキュメントという位置づけになります。
2. テストケースの作成
テスト計画が決まれば、次にテスト設計を行い、具体的なテストケースに落とし込んでいきます。テストケースとは、特定の機能やシナリオをテストするための詳細な手順書のことで、例えばログイン機能のテストケースには、「ユーザーがログインフォームに正しいユーザー名とパスワードを入力した場合、正常にログインできるか」を確認するテストケースと、「誤ったユーザー名やパスワードが入力された場合、エラーメッセージが正しく表示されるか」を確認するテストケースを作成するというふうになります。
また、各テストケースには、入力データ・期待される結果・実行手順なども記載していきます。
3. テストの実行
テストケース作成が終わったら、実際のソフトウェアを使ってテストを実行していきます。
このステップでは、作成したテストケースの手順に従ってソフトウェアを操作し、本当に仕様や設計通りに動作するかを確認します。各テストケースの結果は記録し、期待通りの結果が得られない場合は、不具合があることを示すエビデンスとして不具合管理表に記載し不具合管理もテストと並行して行います。
4. 不具合の修正と再テスト
テストで検出した不具合は、もちろん修正する必要があります。
開発チームは不具合の原因を特定し修正を行います。そして修正が完了したら再度テストを実行して、不具合が解決されたことを確認します。
再テストのコツは、修正により他の部分に悪影響を与えていないかを確認することで、不具合の修正確認のみならず、他の機能が引き続き正常に動作していることを確認することも非常に重要です。このテストを漏れなく実施することにより、ソフトウェア全体の品質が保たれます。
5. Verificationの完了と結果の報告
再テストを含んだ全てのテストが終了し、不具合が解決したことを確認できれば、テストのVerificationプロセスは完了となります。最後にテスト結果をまとめたレポートを作成し、プロジェクト関係者に報告しますが、このレポートには、実施されたテストの概要、テスト結果、検出した不具合とその修正内容、再テストの結果などが含まれています。
なお、Verificationプロセスを通じて得られたデータは、プロジェクト全体の品質を評価するための重要な資料となります。また、これらのデータは今後のプロジェクトでも活用できるため、しっかりと保管しておくことをおすすめします。
Verificationの具体的な例
ここまで、「Verification」の基本概念やプロセスについて解説してきました。
この章では「Verification」の具体例として、Webアプリケーションのログイン機能を例に、「Verification」がどのように実施されるのかを確認していきます。
いま開発中のWebアプリケーションには、ユーザーがログインするためのフォームがあり、正しいユーザー名とパスワードを入力すると、ユーザー専用のダッシュボードにアクセスできるようになっています。
このような仕様の場合、Verificationプロセスでは、このログイン機能が正しく動作しているかを確認するために、以下のようなテストケースを作成していきます。
No. | テストケース |
1 | ユーザー名とパスワードが正しい場合、ユーザーは正常にログインできる。 |
2 | ユーザー名が正しいが、パスワードが間違っている場合、エラーメッセージが表示される。 |
3 | ユーザー名が間違っていて、パスワードが正しい場合、エラーメッセージが表示される。 |
4 | ユーザー名とパスワードの両方が間違っている場合、エラーメッセージが表示される。 |
そして、これらのテストケースに沿って実際にWebアプリケーションを操作し、期待される結果が得られるかを確認していきます。
例えば、「テストケースNo.1」に対して、正しいユーザー名とパスワードを入力してもログインできなかった場合、それはソフトウェアの不具合として不具合管理表に記載し、会議体等で関係者に報告をあげます。
Verificationを効果的に行うためのコツやポイント
最後に、Verificationを効果的に行うためのポイントとなるところを2点ご紹介します。
1.「早期に」、そして「頻繁に」Verificationを行う
「Verification」はソフトウェア開発の初期段階から実施し、かつ頻繁に行うことが重要です。このことにより、不具合を早期に発見して修正することができ、プロジェクト後半になってからの大規模な修正の回避につながります。
2. 明確な要件を定義する
効果的な「Verification」を行うためには、最初に明確な要件を定義することが重要です。要件が不明確なままだと適切なテストケースを作成することができないため、「Verification」が曖昧になり品質が低下する要因となり得ます。
おまけ
最後のさいごに、「Verification」は国際的にはどのように定義されているかを記録しておきます。
馴染みのない表現が多くわかりにくいかもしれませんが、ニュアンスだけ押さえておけばOKです。
規格 | 定義 |
IEEE 1012:2012 | 各開発工程の成果物が前工程で意図した要求事項あるいは条件を満たしているかどうかを決定するプロセス |
ISO 9000:2015 | 客観的証拠を提示することによって、規定要求事項が満たされていることを確認すること |
バリー・ボーム博士の説明 | 正しく成果物を作成しているか? |
引用・参考元
https://standards.ieee.org/ieee/1012/4021/
IEEE 1012:2012に関する説明(英語)
https://www.ipa.go.jp/archive/publish/qv6pgp00000011f7-att/000064877.pdf
ISO 9000:2015(JIS Q 9000:2015)に関する独立行政法人情報処理推進機構(IPA)発行資料
https://www.computer.org/profiles/barry-boehm
バリー・ボーム博士に関する記事(英語)
まとめ
「Verification」は、ソフトウェアの品質を確保するために重要かつ不可欠な観点でありプロセスです。
そのため、「Verification」を適切に行うことで不具合を早期に発見し、高品質なソフトウェアを提供することが可能となります。
この記事では、「Verification」の基本的な概念から具体的な手順、そして効果的な実施方法までを解説してきましたが、「Verification」への理解は深まりましたか?関心は高まりましたか?
この記事内容を参考にして、あなたのソフトウェア開発にも「Verification」を取り入れて、より高品質なソフトウェアを開発する手助けとなればとても幸いです。
【さらに詳しく知りたい方へ】
「Verification」は「Validation」と併せて「V&V」として覚えておくと、ソフトウェア開発の全てのフェーズで活用することができるようになります。
現在、「Validation(妥当性確認)」に関する記事制作を進めております。
その「Validation(妥当性確認)」に関する記事も併せてご購読いただけると、ソフトウェア品質に対する理解度がより一層深まると思いますので、どうぞご期待ください。
なお、ブログの最新リリース情報につきましては、当社メルマガでご確認いただけますので、本記事が気に入った方はぜひ、この機会にメルマガ登録もお願いします。
最新IT情報やお役立ち情報をコンサルタントが配信中!
QualityCubeでは、最上流の企画/要求定義工程から下流のテスト工程まで、プロダクト分析とプロセス分析による現状分析や品質コンサルティング、更にはDXコンサルティングも行っております。
開発製品やサービスの品質向上や品質改善、その他DXに関することでご課題やご検討中のことがございましたら、ぜひお気軽にご相談ください。