属人化による「テスト自動化」の落とし穴とは
テストの専門会社として、下流工程を中心に結合テスト以降のアウトソーシングテストを年間2,600件以上こなすバルテス。同社による「テスト自動化の経験」に関する調査によると、「現在実施している」が42%、「現在実施していない」が19%、「自動化したことはない」は39%という結果が得られている。なんとテスト自動化の経験者のうち、約3分の1はやめてしまっているのだ。
その理由としては、「自動化担当者がやめたため、誰もメンテナンスできない」「ツールの更新が面倒で使わなくなった」「テストスクリプトの更新が仕様と合っているか不安」「結局は手でやった方が早い」といった悩みが挙げられる。
さらに、テスト自動化に関する課題を聞いてみると、「知識・スキル不足」41%、「工数などのリリース不足」31%、「コストがかかりすぎる」27%と、99%が自動化に何らかの課題を抱えているのだ。
では、これらの課題をどう対策したらいいのか。セッション前半は、バルテスのテストアライアンス事業を取りまとめる石原氏から、テスト自動化に関する現状の課題とその解決策について解説が行われた。石原氏はソフトウェア品質やテストに関するセミナーや書籍も執筆・監修しているソフトウェアテストのスペシャリストでもある。
まず、現在のテスト自動化とは「テスト実行」を自動化することを指す。これまで人間が手動で行っていたUIテストを自動化することによって、作業時間の短縮や工数削減、見落としなどの人為的事故の防止などが期待できる。
手動化テストの場合、テスト対象システムの分析やどんなテストをするかを整理して、テスト設計し、それをもとに実装していく。テストを実行した結果、NGであればレポートを作成し、修正を行うといった流れが一般的だ。
それに対してテスト自動化では、自動化環境を構築し、テストスクリプトを作成したら、テスト実装の部分をツールが実施してくれる。
だがメリットだけではない。冒頭紹介したように、テスト自動化経験者の約3分の1は挫折し、99%が何らかの困難を抱える落とし穴もあるのだ。
「とりあえず」「なんとなく」自動化してみようというのが一番トラブルを招くもと。ツールの進歩によって導入が容易になった反面、メンテナンスに手間がかかるといったデメリットもある。導入コストが回収できないまま、ツールが使われなくなってしまうことも少なくはないと石原氏は説明する。
「損益分岐点で見ると、イニシャルコストを回収するためには、テスト自動化ツールを繰り返し使うこと。つまり、使い続けることでROI(費用体効果)は向上します」(石原氏)
このテスト自動化を阻むポイントをまとめると、「属人化」という課題に集約される。自動化技術の属人化でいえば、プログラム技術、自動化ツールの習熟、環境構築・メンテナンスなど。テストの属人化では、テストケースとスクリプトの二重管理やメンテナンスだ。
属人化が引き起こしたテスト自動化の失敗例も紹介された。以下の4事例である。
事例1:使われなくなったテスト自動化
開発エンジニアがかけもちして対応していたが、「多忙でメンテナンスができない」「手動テストが増え、コストも増加してしまう」など、十分なリソースが確保できずに「メンテナンス負債」が溜まっていくパターンである。
事例2:違う言語で作り替えになったテスト自動化
自動化テストを作っていたエンジニアが、自動化技術を引き継がずに退職してしまうケース。例えば、Javaエンジニアがつくった自動化テストをRubyエンジニアが新規に作り直す場合、一度リセットするため、倍のコストがかかってしまう。
事例3:自然言語をスクリプト言語で書き換えになったテスト自動化
テストケースを日本語で書いたがために、自動化ツールを走らすスクリプト言語でも書かなくてはならず、二度手間になってしまうパターンもある。仕様変更やメンテナンスのたびに両方の更新作業をすることになり、テストケースとテストスクリプトが一致しなかったり、テスト漏れといったトラブルも起こったりする。
事例4:テスト自動化を難航させるテストケース
最後は属人化の最たる事例だ。テストケースの前提条件をざっくり書いているために、テストデータの誤りや期待結果の確認もれなど、自動化実装が終わらないケースである。
どの事例にも共通しているのは、「費用対効果が悪いこと」だと石原氏は強調する。では、属人化を解消し、黒字化させるにはどうしたらいいのか。後半のセッションは江添氏にバトンタッチし、前半で石原氏が挙げた失敗例に対して、どうすれば解決することができるのか、現場の実例に即して、その対策のポイントについて語られた。