見出し画像

26号:早期テストで時間とコストを節約

概要

FLシラバスの「テストの7原則」の3つ目です。前回の原則2は、「全数テストは不可能」でした。原則1, 2と絶望的な話が続いたので、原則3は明るい話です。

さて、今回の原則3は、「早期テストで時間とコストを節約」ですが、若い人にとっては、当たり前になっているので、何を言っているのか、かえって分かりにくい原則かもしれません。
一言でいえば「テストの活動は、できるだけ早く開始しよう」というだけの話です。ただし、ここではテストに、静的テスト(レビューや静的解析ツールによる欠陥の検出)を含んでいる点に注意しましょう。(V字モデル、Wモデルに限定した話ではありません)


≣ シラバスの記載

『ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018.J02』の該当部分を引用します。

3.早期テストで時間とコストを節約

早い段階で欠陥を見つけるために、静的テスト活動と動的テスト活動の両方をソフトウェア開発ライフサイクルのなるべく早い時期に開始すべきである。早期テストは、シフトレフトとも呼ばれる。ソフトウェア開発ライフサイクルの早い時期にテストを行うことにより、コストを低減または削減できる。


≣ 解説(全体)

昔は、ソフトウェア工学の書籍ですら、「開発を終えた後でテストを実施する」と書いてありました。当時のテストは、ユニットテスト、統合テスト、システムテスト等々に分かれておらず、一括りの「テスト」でした。
各開発者が作るモジュールの開発がすべて終わったら、それら多数のモジュールを一斉に結合しテストするため「ビッグバンテスト」と呼ばれました。

モジュールという言葉は、ひとによって違う意味に使っている場合があります。ですから「モジュール」の意味について意識合わせをすることが大切です。
また、建築などでは基準寸法や基本単位としてモジュールという言葉が使われます。IT業界でモジュールというと「ソフトウェア部品」を意味することが多いですが、ユニットテストのユニットや、ライブラリとはどう違うのかと聞かれると、しどろもどろになる人が多いのではないでしょうか?
正式な定義がなく、雰囲気で使っている人がほとんどですが、私は以下の使い分けをしています。
 ・モジュール: 一人の開発者が受け持つソフトウェア部品
 ・ユニット: 交換可能なソフトウェア部品グループ(塊)
 ・ライブラリ: それ単体では作動できない汎用的なソフトウェア部品
社内標準などで用語の定義がされていると話が混乱しなくてよいですね。

さて、「ビッグバンテスト」では、モジュールを単独でテストするための「ドライバー」や「スタブ」の開発が要らず、すべてのモジュールを好きにテストできるというメリットがある一方で、モジュール間インタフェースエラーの発見が難しく、デバッグが面倒というデメリットがありました。
したがって「ビッグバンテスト」は、小規模開発以外ではデメリットが大きいやり方でした。

その他にも、最終工程の一発テストでは、大きな問題が見つかるとリリースまでに直す時間が取れないというリスクがあります。特に非機能要件(性能や信頼性等)はテストで見つけても「次のバージョンアップに先送り」されることになるのが常でした。


≣ 解説(詳細)

ここからは、FLシラバスの解説をもう少し分解して細かく読み解いていきたいと思います。
まずは、FLシラバスの解説を再掲します。

早い段階で欠陥を見つけるために、静的テスト活動と動的テスト活動の両方をソフトウェア開発ライフサイクルのなるべく早い時期に開始すべきである。早期テストは、シフトレフトとも呼ばれる。ソフトウェア開発ライフサイクルの早い時期にテストを行うことにより、コストを低減または削減できる

■ 静的テストと動的テストの両方をなるべく早い時期に開始すべき

前半のこちらは、「静的テスト」が入っている点に注意してください。「静的テスト」、つまり「仕様書のレビュー」や「コードを静的解析ツールに掛けて欠陥を見つけること」を早期テストで推奨しています。

この原則は、ソフトウェア開発ライフサイクルモデルにはよりません。開発の全ての成果物に対して、それができたら(場合によっては作りかけでも)テストを始めましょう。開発者本人が設計・開発時にテストのことを常に意識して開発を行うことが究極の姿かもしれません。

■ 早期テストは、シフトレフトとも呼ばれ、コストを低減または削減できる

後半のこちらは、V字やW字モデルを意識しています。キャッチイメージを再掲します。テスト設計を対応する開発プロセスが終わった直後に実施しようという図です。

FLシラバスの28ページにこんな記述があります。

V字モデルは、ウォーターフォールモデルと異なり、開発プロセス全体にテストプロセスを統合しており、早期テストの原則を実装している。また、V字モデルでは、早期テストの裏付けとして、各開発フェーズにテストレベルが対応している。テスト実行は、関連付けられているテストレベルごとに順次進めていくが、重複することもある。

V字モデルを社内標準の開発プロセスとして実践していても、開発プロセス全体を俯瞰して理解していないと正しい行動に結びつきません。


≣ まとめ

早期に品質を立ち上げることは大きなコストダウンやリリース日の前倒しにつながりますので、がんばりましょう。

この記事が気に入ったらサポートをしてみませんか?