流儀1 後工程のテストを単体テストに取り込む [単体テスト]
「開発環境で見つかった欠陥の修正に必要な工数を1とすると、検証環境だと10、本番環境では100になる。短納期に対応するには、遅い段階で見つかる不具合を減らすのが重要だ」。日本CAの渡辺 隆氏(DevOps&アプリケーション・デリバリ ディレクタ)は指摘する。
先進的な現場では、機能テスト、システムテストの一部を切り出して、単体テストフェーズで実施している(図3)。早期に不具合を検出するのが狙い。後工程のテストを早い段階で実施することを「シフトレフト」と呼ぶ。左から右に流れるテストで、右にあるテストを左に移動させるイメージだ。
「シフトレフトは特に米国でトレンドになっていて、新しいテストツールの普及も進んでいる」(渡辺氏)。その代表がスタブ作成支援ツールである。
スタブは外部からの呼び出しに対して、結果を返すモジュールだ。内部に実際のロジックは持たない。未完成のモジュールや接続できないシステムの代わりに使って、できる範囲の機能テスト、システムテストを実行する。従来はプログラミングしてスタブを作成する必要があり、手間が掛かる上に後回しにされがちだった。
スタブ作成支援ツールはスタブの作成を自動化する。未完成のモジュールについては、APIの定義を記述したファイルを読み込ませることで自動生成できる。既に存在するシステムについては、通信された電文のキャプチャーから自動生成する。早期にスタブを用意して、重要な機能、性能のボトルネックなど欠陥があると大きな手戻りになりそうな箇所をテストする。
本分野で日本CAは「CA Service Virtualization」、日本ヒューレット・パッカードは「HP Service Virtualization」、日本IBMは「IBM Rational Test Virtualization Server」、米Parasoftは「Virtualize」(写真1)と主要ベンダーがスタブ作成支援ツールをそろえる。