次々と生み出される新たな技術や機能、さらに激しいコスト変動や価格競争などにより、製品の開発期間は年々シビアになる一方です。工程が遅れると評価期間を圧縮するほかなく、結果として品質に妥協が生じ、製品トラブルから信頼性を低下させてしまった企業をしばしば目にします。
求められる品質を確保するためには評価項目の“抜け”や“漏れ”の防止が欠かせませんが、単純にテスターを増員するだけでは人件費や個人の能力差による品質のばらつきが発生し、問題を解決することはできません。本稿では、第三者検証専門会社である株式会社ヴェス(以下、ヴェス)のノウハウから、要件漏れを防止し、限られた開発期間で製品品質を向上させる方法を紹介します。
ユーザが求める品質向上を実現するためには、実装すべき機能や満たすべき性能などを明確化し、要件を上流工程から下流工程へと“抜け”や“漏れ”なく伝えていく必要があります。
しかし、シビアな開発環境から仕様を作りこむ余裕がなく、製品要求が「あいまい」なまま開発が進む事例も多いようです。その結果、仕様とテストの整合が取れず、製品が当初の要求を満たさないまま市場に出ることも。また、仕様を無視した設計が行われるためテストケースが追い付かない、仕様が明確でないためにバグと仕様の判別ができずテストに時間がかかるなど、開発効率全体の悪化を招くことにもつながります。
さらに、テストを最後までやり遂げることができず、軽い不具合の修正や理想動作の要望などが開発期間に間に合わずに、次期モデルに繰越してしまうケースもあります。
加えて、多くの企業では仕様を一番理解しているという理由から、開発者自身がテスト設計し、品質を管理しています。しかしそれでは“ユーザ視点”がゆるく、例外処理動作(非機能動作や開発者が考慮していない想定外の操作や環境)に弱いという欠点があります。また、設計時間・実行時間も十分に確保できない状況に陥ります。
さらに、開発者視点のテストは、バグの発見や修正など「機能テスト」が中心になりがちで、使い勝手や拡張性などの「非機能テスト」は疎かになりがちです。ところが、この「非機能テスト」をしっかり抑えていないために、不具合やユーザからのクレームが生じているケースが少なくないのです。しかし、「非機能要件」は、ユーザから明確な要求があるわけではなく、明確化するのが非常に難しいのが現状です。
こうしたさまざまな要因によって不具合の複雑化が進み、負のスパイラルに陥っている開発現場は少なくありません。いずれにしろ、仕様書もない、行き当たりばったりの開発工程のままでは、いくら検証のリソースを増やしても、問題の解決にはいたりません。近年、開発形態にかかわらず、ソフトウェア制御の多機能化や複雑化による機器動作への対応が急務となっており、高効率な開発環境の構築が求められています。
まずは、仕様書の精度を上げ、開発~検証までの流れを確立することが重要です。そのうえで、開発中の製品が要求通りの品質を確保できているかどうかを確認し、仕様や要件定義の“抜け”や“漏れ”を防止するために、テスト設計のもととなる「テスト要求仕様書」を完成させる必要があります。これにより品質評価を根本から改善することが可能です。
次頁では、この「テスト要求仕様書」作成のポイントを解説します。
※テスト要求仕様書:製品の要求を一覧化し、要求の出所(Input)を明確化。さらに要件・仕様・テスト項目(Output)を明確化し、機能・非機能を整理した仕様書のこと。
前頁で述べた負のスパイラルを断ち切るためには、まず上流工程(仕様策定)にテストエンジニアを投入し、第三者視点でテスト設計を行えるようにし、そのうえで「テスト要求仕様書」を完成させる必要があります。これにより、仕様の課題を早期に明確化し、次工程への不具合混入を防止することが可能となります。
「テスト要求仕様書」作成のためのポイントは以下の通りです。
仕様を明確化するためには、製品に何が求められているのかを知ることが重要です。そのためには、製品に関するあらゆるドキュメントから“製品要求”を抽出し、一覧化することが有効です。対象となるドキュメントは以下のようなものが考えられます。
・製品仕様書
・機能ごとのソフトウェア仕様書
・過去モデルのテスト仕様書や不具合情報
・パンフレット、Webサイトなどの一般公開情報
こうして集めた要求から仕様化する部分を決め、その出所(Input)を明確化し、テスト項目(Output)と紐付けていきます。
「非機能要件」は、製品の使いやすさや性能、信頼性、拡張性、運用性、セキュリティ等にかわる重要な項目です。前段で集めたドキュメントを精査し、機能要件と「非機能要件」を整理していきます。次項ではこの「非機能要件」を抽出するポイントを解説します。
「非機能要件」は以下の“3つの観点”から行うことで、効率よく抽出することができます。
過去モデルの「テスト仕様書」や「検証業務報告書」、「不具合情報」から抽出します。
“ユーザ/検証視点”から確認・網羅し、抽出。開発者自身がテスト設計している場合、もっとも漏れやすい部分ですが、製品の使用感や見た目、操作性などの要求を可能な限り収集し、“ユーザから見た機能”を割り出していきます。
このように「テスト要求仕様書」を完成させることにより、製品企画〜開発設計〜品質保証までの各工程における品質評価の整合性とトレーサビリティをとることが可能になります。仕様漏れが起きても原因や場所の究明がしやすくなり、要件定義漏れ(仕様、テスト、実装の漏れ)が起こりにくくなると期待できます。
また、開発者が活用することで不具合発生の予防につながり、検証者が活用すれば不具合流出の歯止めとなります。さらに、テストにかかる時間を大きく削減し、開発工程における手戻りを最小限に抑えられることで、開発・評価に必要な工数を十分に確保できるようになります。
開発環境が厳しさを増す中で製品品質の安定と向上を図るためには、評価プロセスの見直しが不可欠だとヴェスは考えます。