IT業界には「Excelスクショ」なる言葉がある。情報システムのGUIテストにおいて、顧客からテスト実施の証拠となる「エビデンス」の提出を求められる。これに応えるため、テスト実施時にスクリーンショットを取得して、画像をExcelシートに貼り付けていく。これがExcelスクショだ。IT現場で問題視されがちな非効率な作業の代名詞だが、ここ1~2年で改善の兆しが見えてきた。
エンジニアリング手法やツールの進化によって、テスト作業は以前よりも効率化できる余地がある。しかし、Excelスクショがはびこる現場では、なかなか効率化ができない。単純作業の要素が強いため、テスト実施者のモチベーションも下がる。
単純で工夫のいらないテストエビデンスの作成方法であるため、少なからぬ現場がExcelスクショを脱せられていない。Webアプリケーションを例にすると、次のような作業となる。
まず、テスト用のPCでWebブラウザーとExcelを起動しておく。続いて、Webブラウザーを開いてテストケースで指定された業務上の操作を実施する。ボタンを押したりといった操作をしたら、プリントスクリーンボタンを押す。その後、Excelに切り替えて、スクリーンショットを貼り付ける。こうした、Webブラウザーでの操作、スクリーンショットの取得、Excelへの貼り付けといった作業をテスト中に繰り返す。
Excelスクショが“地獄”と化すのが、レガシーマイグレーションのプロジェクトだ。「現行踏襲」という要件を満たしているか確かめるため、現行システムと新システムで同じ業務の流れの打鍵テストを実行して、両者に違いがないことを見る。つまり、一つの業務の流れに対してExcelスクショの作業を2回実施する。さらに新旧システムでテスト結果の画像を比較しなければならない。
NTTコムウェアでテストを担当する瀬賀 剛氏(北海道支店 試験品質管理部 担当課長)は「多い場合は何千枚もの画像を取得する。テストは不毛な作業の繰り返しといった感が強くなり、現場には疲弊感が漂った」と話す。
テストのエビデンスはユーザー企業に納品するテスト工程の成果物だ。作らないというわけにはいかない。
SIベンダーに向いたテスト自動化が見えてきた
こうしたExcelスクショ問題にも終わりが見えてきた。NTTコムウェアの瀬賀氏の現場はその一例だ。「テストの自動化」と「手動テストの効率化」を実施して、テスト作業の効率化を進めている。
自動化では、画面テスト自動化ツールと画像比較ツールを使う。画面テスト自動化ツールは、テスト用のスクリプトに沿って画面上の打鍵を自動的に実行する。実行時にスクリーンショットも自動で取得する。画像比較ツールは2枚の画像を比較して、差分を強調表示する。
瀬賀氏は画面テスト自動化ツールにはオープンソースの「Selenium」、画像比較はオープンソースの「ImageMagick」を利用する。これらのツールをラッピングしたUIを内製し、ツールの実行、レポートの出力を簡単に利用できるようにしている。
スクリーンショットは現行システムの画像、新システムの画像、比較結果の画像を自動的にExcelに貼り付ける。「自動テストで取得したスクリーンショットはそのままエビデンスになるし、新旧の違いを強調表示するので目視でのチェックが簡単になる」(瀬賀氏)。
脱Excelスクショで何が変わったのか。瀬賀氏は「テストチームの雰囲気が明るくなり、モチベーションも大きく向上した」と話す。それまでテスト実施自体は単純作業で、「1日何件のチェックをできた」「何件の問題を指摘できた」といった数字にしかモチベーションを持てなかった。これに加えて、「スクリプトをチューニングしてさらにテストを効率化した」というモチベーションを持って働けるようになった。
テストの品質も向上した。「現行システムに対する操作と、新システムに対する操作が同一という信頼性が高い。さらに画像比較ツールを利用するので、目視での見逃しが起こりづらくなった」(瀬賀氏)。
こうしたテスト手順に変わったのは「ここ1~2年」(瀬賀氏)と最近のことだ。「テスト自動化ツールには5年くらい前に手を付けていた」(瀬賀氏)にも関わらず、なぜ定着まで時間が掛かったのか。これは一品モノの開発を手掛けるという、SIベンダーの事業特性による。
パッケージソフトやWebサービスの業界は早くから画面テスト自動化ツールを利用していた。同じプロダクト/サービスを保守するため、拡張開発のたびに同じテストを実行する。そのため、テスト用のスクリプトは何度も使い回せる。一方、SI業界が手掛けるのはそうしたシステムばかりではない。「テスト用スクリプトを作成したが、作成に掛けた手間の元を取れなかったことが少なからずある」(瀬賀氏)。
そうした経験を通じて、SI業界でのテスト自動化の適応領域が見えてきた。一つは前述したレガシーマイグレーション。もう一つはシステムの維持管理作業だ。システムの維持管理も担当する場合は、セキュリティパッチの適用後のテストなどで開発段階で作成したテスト用スクリプトを使い回せる。