テストの質を上げよう

現場は知っているテスト不足

システム開発においてサービスイン後にトラブルを抱えるプロジェクトは未だ少なくない。そこには様々な原因があると思うが、今回はテストについて考えてみたい。

無論、トラブルの発端すべてがテストと言うつもりは無いが、実際の現場で開発エンジニアに話を聞くと「このバグの量はマズイ」、「テストが不足している」という本音は簡単に拾うことができる。ただ、闇雲にテストの数を増やせば解決する訳でも無い事は皆様ご承知の通りで、“テストの質”に着目して考えてみることにする。

プロジェクトの半分はテスト

ところで、システム開発プロジェクトにおけるテスト工数の割合はどの程度なのか。IPAの情報によると、基本設計~総合テストまでの総工数の中でテスト工数は50%前後にのぼる。言い換えれば、(人工の)コスト、時間、リソースの半分はテストに注ぎ込まれている事になるし、プロジェクト成否の半分はテストの出来次第とも言えるのではないだろうか。

テストの質とは?

では、テストの質とは何であろうか?プロジェクトにおけるテストフェーズは様々あるが、大きく計画と実行に分け、質の重要要素を考えてみたい。

①テスト計画

テスト実施前のあらゆる計画であるが、質の面で特に重要となるのがテストアーキテクチャ、およびテストシナリオ/ケースである。
テストアーキテクチャは各テストフェーズ間の関係をプロジェクト全体として網羅性と整合性を確保する枠組みであり、テストシナリオ/ケースはそれを具現化したものであると言える。

テストアーキテクチャ
多くのプロジェクトがウォーターフォールモデルでの開発プロセスであるため、標準的にはドイツ生まれのV字モデルを採用している。また、テスト技法には大きくホワイトボックスとブラックボックスがあるが、詳細には制御パス/データフローパス/リソースパスのテストや、同値・境界値/トランザクションフロー/直交配列のテストなどが存在する。
テストシナリオ/ケース
具体的にどの様なテストを実施するのか記述したもの。テストフェーズ前半の単体テスト、結合テストでは上記テストアーキテクチャで決めた技法に基づくシステム色が強いものだが、後半の総合テスト、受入・運用テストは業務面も考慮したものになる。

②テスト実施

計画に基づきテストを実施する中では、確実な実行と適切な障害対応が求められる。テスト結果分析と回帰テストは特に重要。

テスト実行
テストの実施、エビデンス取得、結果確認であるが、担当者によるバラつきを無くす事が必要である。
テスト結果分析
特にテスト結果がNGであるものに対する分析。分析結果から弱点や類推される障害を炙り出せるかがポイント。
回帰テスト
障害箇所の修正に対し、システム的な繋がりがある範囲考慮したテスト。影響範囲を漏れなく抽出できるかがポイント。

多くの現場で取組むべきはテスト計画の質向上

プロジェクトマネジメントの分野では、計画8割、実行2割という言葉を良く耳にする。テストもそれに違わず、テスト計画の出来がテストの正否を左右する。にも関わらす、多くのトラブルプロジェクトを見てみると、テスト計画の甘さが目立つ。因果応報、当然の結果とも言える。
では、具体的にどの様に対応していけば良いのか、3つの提案をしたい。

提案1.調達時の要求事項に盛り込み評価
システム開発プロジェクトの調達時のRFPにテスト計画の要求を盛り込み評価することで、SIerのレベルを前もって見極める。
ただ、数多くのSIerの提案書を見てきた経験から言うと、テストに関し「ツールで自動化」、「品質管理」などの言葉は躍るが十分な提案をしてくる事は稀である。その様な場合、プロジェクト全体のテスト工数や、それに対するより具体的な内容を追加質問するのも手であろう。
提案2.テスト要求分析フェーズを組み込む
システムの特性は様々あるため、システム設計と同時にテスト要求分析
フェーズを設け、テストアーキテクチャの設計を適切に行う。
これは上記提案1の内容に盛り込んでも良い。
提案3.業務面でのテストシナリオ作成を勘に頼らない
多くの場合、発注側での作成となる業務テストシナリオは、ユーザの思いつく限りのものに頼り、結果的にシナリオやケースが漏れている事が多々ある。業務フローやビジネスルールをベースに網羅性を持って作成を行う。
余談ではあるが、変化していく業務フロー、ビジネスルールを正確に管理する事は中々の困難である。テストのためだけに導入というのはナンセンスであるが、BPMS/BRMSでの業務フロー、ビジネスルールの管理というのもキーワードとして挙げておきたい。

最後に

テスト分野においては自動化/ツール、第三者テストなどのキーワードも存在する。ただし、その多くはテスト計画そのものを作ってくれるわけではない。プロジェクトの半分はテストであるという事を忘れず、成功のためにしっかりとしたテスト計画を立てて頂きたい。