情報処理技術者試験ナビ

当サイトは準備中です。

プロジェクトマネージャ H29春 午後Ⅰ 問3

問題

単体テストの見直し及び成果物の品質向上に関する次の記述を読んで,設問1〜4に答えよ。

 卸売業D社は,仕入れ,在庫,販売及び請求の管理業務に使用する基幹系システムを10年前に自社の情報システム部で開発し,その後は半年サイクルで,継続的に情報システム部で改修を行っている。今回の改修内容は,機能Fの管理項目の追加,機能Gのユーザビリテイ向上に係るインタフェース仕様の改訂,及び機能Hの帳票様式の変更である。長期にわたり本システムを担当している情報システム部のE課長が,今回の改修案件もプロジェクトマネージャ(PM)に任命された。E課長は機陸ごとにチームを割り当ててプロジェクトを進めることにした。
 本システムは,長年の改修を経て,プログラム及びデータ構造が複雑になってきており,設計・製造の難易度が高まっている。また,改修においては過去に作成したモジュールを活用することが多いので,テストによってバグが摘出された際には,他のモジュールにも類似バグが内在しているかどうかを調査する必要があることも多い。さらに,タイミング誤りなどのバグが摘出された場合にはプログラムが異常終了してしまい,後続のテストが実行できない場合もある。そこで,スケジュールにはリスクに応じた余裕日数を含め,必要な期間を確保している。

〔設計方法〕
 D社はウオータフオールモデルの開発方式を基本としている。
 外部設計工程では,担当者が既存の外部設計書を改訂したり,外部設計書を新たに作成したりする。チームリーダが外部設計書をレビューした後,チーム横断的に調整した機能間のインタフエース仕様などを含め,外部設計書の最終確認をPMが行う。その後,利用部門から外部設計書の承認を受ける。外部設計工程の各作業を行う際には,長年の改修実績や経験から,内部仕様に係る内容や内部設計時の考慮事項に関するコメントが出ることがある。その場合,それぞれのタイミングの議事録にこれらのコメントを記録した上で,外部設計書の承認時に内部設計工程への申し送り事項一覧として整理している。
 内部設計工程では,担当者がまず影響調査を行う。その際,外部設計書の改訂箇所及び新規作成箇所を参照し,過去の類似改修案件での知見も生かして,外部設計書と内部設計書の対応関係を確認した上で,既存の内部設計書の改訂箇所及び新規作成箇所を特定する。次に,内部設計工程への申し送り事項一覧を参照しつつ,内部仕様を検討して,既存の内部設計書を改訂したり,内部設計書を新たに作成したりする。改訂又は新たに作成した内部設計書については,チームリーダが改訂内容及び新規作成内容をレビューし,PMが最終確認を行う。

〔製造及びテスト方式〕
 D社では,単体テスト,結合テスト,総合テストに対して,それぞれテスト計画とテストケースを作成し,テストを行う。単体テスト計画と単体テストケースは,製造時にプログラム仕様を作成したタイミングで,プログラム仕様に基づき作成する。結合テスト計画は,内部設計工程で作成し,結合テストケースは,単体テスト完了後に,内部設計書に基づき作成する。
 各テストでは作成した全てのテストケースを実施してバグを摘出し,バグ内容の確認・修正を行い,さらに類似バグの調査・修正を行った上で,バグが摘出されたテストケースの再実施を通じてバグが修正されたことを確認する。この過程において,テストの効率を高めるために,○ある種のバグが摘出された場合は,テストケースの実施を一時的に中断し,バグ内容の確認・修正などを行うことにしている。
 なお,バグの内容及び修正方法によっては,バグが摘出されなかったテストケースを再実施したり,場合によってはテストケースを追加したりすることもある。また,製造時やバグへの対応時に,設計内容の誤りが発見される場合も少なくないので,その場合は構成管理プロセスに従って迅速に内部設計書や外部設計書を修正することを 徹底させている。

〔今回の改修案件における単体テストの実施方針〕
 D社では,最近の改修案件において,単体テストで摘出されるべきバグが結合テストで摘出される,D社内でバグの見逃しと呼ぶ現象が増えてきていた。E課長は,バグの見逃しの増加を問題と捉えて,単体テストのやり方を見直すことにした。
 これまでの単体テストケースの多くは,プログラムの内部構造に基づきテストケースを作成する口テストを採用していた。その上で,利用者の視点でプログラムの外部から見た入出力に基づきテストケースを作成する口テストも採用していた。また,改修箇所が他の箇所に影響していないかどうかを確認するためのテストケースも作成してきた。
 E課長は,今回の改修案件では,改修箇所の他の箇所への影響確認を行うテストを充実させる必要があると考えて,テストケースを追加作成することにした。また,今回の単体テストの見直しの成果を評価するために,結合テスト完了後にある分析を行うことにした。

 

〔単体テストの実施〕
 E課長はこのようにテストケースを追加作成した単体テストを実施し,テスト実施状況を機能単位で管理した。
 テスト実施期間は,テストの効率と,過去の同レベルの難易度・規模の改修案件のバグ密度の実績に基づき,ある条件を考慮してバグ密度の管理目標を設定し,そこから実働16日間とした。初めの12日間で,ある種のバグは摘出後すぐに修正しながら,作成した全てのテストケースを実施し,残りの4日間で残り全てのバグの修正類似バグの調査・修正,及び再テストを実施するスケジュールであつた。初めの12日間のバグ修正件数の管理目標は70〜90件であり,結合テスト開始に対する余裕日数は3日間あった。
 テスト開始後12日間経過した時点で,作成した全てのテストケースが実施された。その時点での機能Fの単体テストの品質状況は表1に示すとおりであった。

f:id:honmurapeo:20170422220831p:plain

 E課長は,初めの12日間はスケジュールどおりに実施できたが,表1の結果から,今後遅延リスクが顕在化して,機能Fの単体テストがスケジュールどおりには完了しない可能性が高いと考えた。一方,機能G,機能Hの単体テストはスケジュールどおりに完了する見込みであった。
 そこで,機能Fで発生しているバグの内容を確認したところ,バグを作り込んだ原因が明確であり,局所的であると判断できることから,品質状況には問題がなかったので,遅延リスクについて詳細に分析した。その結果,摘出されたバグの修正は平易であるので個々の修正工数は大きくないが,再テストに要する工数が大きいので,テストの効率を考えると,実施に6日間掛かる見込みであることが分かった。
 これらから,E課長は遅延リスク対応策として,機能Fの単体テスト期間を2日間延長することにした。

〔成果物の品質向上〕
 その後,単体テストは見直した計画どおりに完了した。E課長は今後の改修案件において成果物の品質向上に向けた対処をするために,外部設計工程から単体テストまでの作業及び成果物について詳細に分析を行ったところ,次に示す結果が明らかになった。
 分析結果1:内部設計工程において,既存の内部設計書の改訂箇所及び新規作成箇所の特定に漏れが発生していた。
 分析結果2:内部設計工程において,外部設計工程で出た内部仕様に係る内容や内部設計時の考慮事項に関するコメントは適切に取り込まれていた。
 分析結果3:改訂及び新たに作成した外部設計書,内部設計書について,記載のり,定義内容の誤り,相互の不整合は少なかった。
 分析結果4:処理の論理的誤り,データ定義の誤り,インタフェース仕様の実装誤りなどの製造不良は少なかった。
 これらの分析結果から,E課長は,今後の改修案件の内部設計工程において追加のレビューを行い,成果物の品質向上を図ることにした。

 

IPA公開情報

出題趣旨

 (公表前)

採点講評

 (公表前)