システム開発に占めるテスト工数の割合は大きい。特に稼働中のシステムに対して機能の追加や変更をする「エンハンス開発」では、古い機能が積み重なり、テスト対象が雪だるま式に大きくなる。開発工数の半分近くがテストに費やされているという現場も珍しくない。テスト工数が足を引っ張ってスピーディーな機能追加ができなくなると、システムの競争力を落としてしまう恐れもある。今こそソフトウエアテストの無駄取りで効率化しよう。
ソフトウエアテストの効率化手法のうち、テスト自動化は特に理想通りに進まないケースが多い。一般的な手法を採用すると、運用を継続できない事態になるケースがあるからだ。リクルートジョブズの黒田 樹 商品本部プロダクト開発室ITマネジメント部エンジニアリングループグループマネジャーはこの課題に直面。確認内容を割り切ったテスト自動化の方法を採用して、運用できなくなるリスクを減らしつつ着実に自動化できるようにした。
黒田グループマネジャーが担当するのは、アルバイト情報サイトの「タウンワーク」。一般消費者向けWebサイトなので、競合サイトよりも少しでも魅力的にするため頻繁に画面構成に変更が加わる。「Seleniumなどの画面の表示結果で成否を確認する一般的なGUIテスト自動化ツールとの相性が悪い。古くからあるシステムなので、テスト自動化を意識した作りになっていない。画面が変わるたびに、テストスクリプトを変更しなければならない」(黒田グループマネジャー)。
テストスクリプトの変更工数はテスト自動化が抱える最大の課題だ。テストスクリプトは一度作って終わりではない。システムの変更に応じてメンテナンスし続ける必要がある。工数が大きすぎてテストスクリプトのメンテナンスが追いつかなくなると、せっかくのテスト自動化が無意味になってしまう。
こうした事情があり、画面の操作に基づくテスト自動化は断念した。その代わり、確認事項を割り切ったテスト自動化を導入した。開発中の新システムと現行システムで、社名、勤務地、時給などの重要なテキスト情報が同一になっているかどうかの確認に特化した仕組みだ。2017年4月~2018年3月期の改善活動のテーマとして整備した。
テスト自動化の構築を担当した同社商品本部プロダクト開発室ITマネジメント部エンジニアリングループの森廣隆行氏は「レイアウトなどUIの確認をテスト自動化の対象からあえて外した。UIは手作業によるテストで確認すればいいと割り切った」と話す。また、テストの成否判断も単純化した。新システムと現行システムのテキスト情報が一致しているか否かで判断する。自動テストで確認する内容を限定的にして、テストスクリプトをメンテナンスする手間を減らした。