テスト自動化が「当たり前」にならないのはなぜか
テスト自動化は新しいテーマではありません。テスト自動化フレームワークは、世の中にたくさん登場していますし、世界を見渡せば、30年以上前からソフトウェアテストツールを販売する企業もあります。
しかし、テスト自動化が「当たり前」になっているかといえば、そうでもない気がしています。
実際にテスト自動化に関わる友人や、自動化ツールを販売する方から聞いた情報をもとに、その要因を推測すると、いくつか課題が見えてきました。
自動化スキルの問題
海外のイベントに参加したときに、「Automator」という言葉を何度も聞きました。テスト自動化を専門とするエンジニアの総称のようです。QAエンジニアからのキャリアアップとしてAutomatorは注目されているようでした。
筆者は、国内で次世代品質組織の立ち上げに取り組んだ経験がありますが、たくさんの人材データベースをのぞいてみても、テスト自動化の経験や知見があるエンジニアは少数です。採用をかけてもなかなか見つからず、育成するにも時間がかかるので、組織の立ち上げには本当に苦労しました。
開発手法の問題
テストを実施する側から見ると、後半のテストフェーズにまとめてテストするのは効率的です。しかし、この方法だと、成果物を最後の最後のフェーズでチェックするので、問題や課題の発見を軸として考えれば非効率だと言えます。
さらに、リリースが1回こっきりのプロジェクトだと、リリース後、運用フェーズに入るため、テストを自動化するメリットがあまりありません。自動テストは繰り返し実行することで効果を発揮します。一方で、繰り返さないのであれば、マンパワーを生かして一気にマニュアルでテストするほうが効率がよいとも言えます。
自動化の難易度
筆者はAIを活用したノーコード・ローコードによるテスト自動化サービスmabl(メイブル)の仕事もしているのですが、mablは海外のツールですので、海外の導入事例を調べたことがありました。そのときにわかったのは、海外ではテスト自動化が「当たり前」になってきており、大企業であっても、たくさんの自動テストを運用しているようでした。
よって、彼らはさらなるコスト削減や運用改善のために、自分たちの自動テストをmablのようなサービスにマイグレーションして成果をあげようとしています。自動化にかかるコストの半減も夢ではないからです。
しかし、日本国内を見ると、多くの企業にはたくさんのマニュアルテストがあり、自動化する場合は、マニュアルテストから自動テストを作成しなければなりません。ただでさえ難しいテスト自動化の難易度が、さらに数段階上がってしまうため、失敗する現場もたくさんあるように思います。
コスト削減 VS スピードへの投資
海外の企業は、テスト自動化を「スピードへの投資」と捉えています。テスト自動化は彼らにとってスピードのための必要経費なのです。しかし国内では「自動化」という言葉がそう連想させるのか「コスト削減」を意識しがちです。
将来はAIの力でさまざまなものが自動化されるかもしれませんが、現状を見るとその道のりはまだ遠く感じます。ノーコード・ローコードであっても、「テストを作成し運用する」のには変わりがないため、安易にコスト削減できるとは限りません。
テスト自動化のコスト分解
コストの話が出たところで、誰もが気になるテスト自動化のコストにも触れておきましょう。コストにもいろいろあるので、もう少し分解が必要です。
- 環境構築コスト: テスト自動化をはじめるときに必要なイニシャルコスト
- 自動テスト作成コスト: いきなり全部を自動化するのは難しいため、まずは全体の10%などの目標を立てて継続的に実装するのがおすすめです。
- 自動テスト環境メンテナンスコスト:ブラウザアップデート、ライブラリ更新、機能追加などの運用コスト
- 自動テストのメンテナンスコスト: 日々リリースされていく機能に自動テストが追随するための運用コスト
mablのようなSaaS型サービスの場合、イニシャルコストはほぼかかりません。よって、いくつかの設定を行うだけですぐにテスト自動化に取り組めるのが特徴です。
自動テスト作成コストは、ノーコード・ローコード型のサービスが登場したため格段に下がってきていると言えます。もちろんテストコードをプログラミングするほうがはやい場合もあるかもしれませんが、シナリオ形式の自動テストは、人間の単純な操作を繰り返し実装する作業です。単純で繰り返す仕事なら、機械に任せてしまうのも手です。
メンテナンスコストは、見落としがちなコストです。新機能のたびにテスト追加が必要でしょうし、環境のアップデートも継続して必要です。サービスやシステムの変化に合わせて自動テストのメンテナンスも必要です。初期段階ではテストを安定実行するためのコストも考慮しておく必要があります。
大きくサービスを利用するか自前で実装するかと判断が分かれますが、mablの導入事例を見ていると、うまくサービスを活用されているお客さまのケースだと
- イニシャルコストは40%削減
- メンテナンスコストは75%削減
という数値が出てきています。テストコードを事前に実装するのと比べて、イテレーションやスプリント型の開発であれば、期間ごとにリグレッションテストを数回実行するだけで元が取れる試算もあるようです。
注意したいのは、コストはゼロにならないという点です。うまくやれば、ある程度まで下げられますが、継続的にテストを作り、メンテナンスしていくため、コストはゼロになりません。
まとめ
本記事では、テスト自動化が求められる時代背景や、アジャイルテスティング、自動化の課題について解説しました。
開発するシステムやサービスによって開発手法は変わってきますが、徐々にメインストリームになりつつあるアジャイル開発において、アジャイルテスティングは避けては通れないテーマです。
次回は、この時代背景を踏まえた「テスト自動化戦略」を探っていきます。テスト自動化を成功させるための計画を立て、優先順位を決め、具体的なアクションを考えていきましょう。