技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

現新比較~無影響確認の手法~

情報処理技術者試験では出題されないのですが、IT技術者として当然知っておくべきテスト手法として「現新比較」というものがあります。
これは、システムを改修した際に思わぬ箇所に影響が出ていないことを確認する(無影響確認)ための手法であり、改修前の出力と改修後の出力を比較し、改修の影響を受けるべき箇所以外は差異がないことを確認する、というものです。
 
この手法は単体テストからリリース後の確認まで工程を問わず使用される手法です。
例えば、プログラムを製造する場面で、「販売情報管理システムの取引ファイル出力プログラムについて、ポイント払いのレコード(ポイント払いされた場合)にポイントの有効期限を更新するように改修する。それ以外の箇所は変更しない。」という改修を行った場合、単体テストでは「ポイント払いのレコードはポイントの有効期限以外は現新で差異が無いこと」「ポイント払い以外のレコードは現新で差異が無いこと」を検証するべきです。
 
直すべきところだけ直したつもりなのに、知らず知らずの内に他の箇所にも影響していたというのは意外とよくあります。
現新比較をサボると、本来見つかるはずのバグが見つからず、後でバグってめちゃくちゃ怒られます。
システム開発に慣れ始めた頃が危ないです。「この改修で他に影響するわけないだろう」と思わず、現新比較はしっかり行うようにして下さい。
(なぜここまで言うのかというと、私がまさにこのパターンで本番運用でバグを起こしてめちゃくちゃ怒られたからです。。)
 
現新比較の具体的な方法としては、以下のようなものがあります。
 
1.ファイル・テーブル・電文のレコード等、出力が文字列の場合
 ・WindowsのfcコマンドやLinuxのdiffコマンド
  完全一致する場合等、ごく簡単な場合に。
  
 ・WinMerge等の差異比較用のソフトウェア
  1レコードの内の一部が異なっている場合がある等、少し複雑な場合に。
  
 ・Excelサクラエディタ等で作成した独自ツール
  複雑なデータ加工が必要な場合に。
 
2.Windowsで生成した帳票・ハガキ等、出力がPDFファイルの場合
 ・2つのPDFファイルを開き、画面を切り替えて目視
  めちゃくちゃアナログですが、簡単な比較なら結局これが一番早いです。
 
 ・AdobeAcrobatやDiffPDF等のPDF比較用のソフトウェア
  大量のPDFファイルを機械的に比較する必要があるなら必要です。
 
3.Web画面のキャプチャ等、出力が画像の場合
 ・2つの画像を異なるファイルの同じ個所に張り付け、画面を切り替えて目視
  めちゃくちゃアナログですが、簡単な比較なら結局これが一番早いです。
  
 ・ImageMagick等の画像比較用のソフトウェア
  流行りの自動化をするなら必要です。
   参考ページ(Webページの画面キャプチャ比較 - unokun’s blog)
   http://unokun.hatenablog.jp/entry/2015/09/20/191425

 
4.メインフレームで生成した帳票やハガキ等、出力が紙媒体の場合
 ・出力された紙を重ねて透かして目視
  めちゃくちゃアナログですが、これしか手段がない気がします。
  (私が知らないだけかもしれませんが…)