COLUMN
コラム
Column 20

テスト自動化の課題

テストを自動化するにあたり、よく耳にする言葉の一つに、「メンテナンスコストが高い」というものがあります。
この課題を解決できないため、コストが見合わずにテスト自動化を諦めたという事例は数多くあるのではないでしょうか。最近では、自動化ツールにAIが組込まれ、メンテナンスまで自動で行ってくれるものも増えてきています。
以降では、テスト自動化の課題と今後について触れていきたいと思います。

1. 自動化を検討している企業が増えている

ソフトウェア開発にスピード感を求められる昨今、アジャイル開発を採用するプロジェクトが増えていることもあり、品質基準を満たすためのテスト工程に工数がかかってしまい、リリース遅延等のボトルネックになっています。

アジャイル開発では、短いスプリントで機能追加を行っていくため、既存機能部分のリグレッションテストが増大し続けてしまい、本来品質を担保したい追加機能のテストが疎かになってしまうことや、全てのリグレッションテストを行わずにリリースしてしまう等、計画通りの品質基準が満たせず、対応に苦慮しているというプロジェクトをよく目にします。

中には、テスト期間を短縮するために、システムテストと受入テストを同時に実施してしまう等、本来積み上げで担保していくはずの工程を無視した計画を立て、受入テストで大量のバグが検出され、結果修正が間に合わないという本末転倒なやり方を採用してしまうプロジェクトもありました。

総じてこういったプロジェクトは炎上案件と化し、開発者、テストエンジニアだけでなく、ステークホルダー全体に過度な負担を強いてしまう不幸な状況を作り上げています。

こうした背景もあり、「アジャイル開発におけるリグレッションテストは、自動化しないとだめだよね」という意識が広まっているのではと推察します。
実際に当社へご相談いただく内容も、自動化しないと優先して進めたいタスクに手が回らない、テストの工数が膨らんでしまうのを何とかしたいといったものが多く、大量のテストを全て手動で実施していくことが現実的ではなくなっているという事実を物語っているのではないでしょうか。

2. テスト自動化の課題

では実際に自動化を検討しようとした場合、陥りがちな事例から導入に失敗してしまう要因を見ていきたいと思います。

①まずツール選定という手段から検討を進めてしまう

とりあえずテスト工数を減らしたいということを目的と捉え、その根本にある品質担保の部分を蔑ろにしてしまう悪い例です。
テスト対象にマッチするテスト自動化ツールはどんなものがあるか、確かにこの調査は必要ですが、最初に検討することではないです。
少なくとも、どういった計画で進めるか、プランを詳細化して目的に合った選定基準を設けたうえでツールを調査しなくては、使ってみてからあれができない、これができないといった残念な結果となってしまうかもしれません。
何を自動化すれば目的が達成できるのか、メンテナンスや、教育、運用方法、初期導入コスト等、あらゆる要素に対する戦略を以って推進することが肝要です。

②現状のテストチームにそのままツールを渡してしまう

テストの事はテストチームに任せるという発想は誤りではありませんが、自動テストと手動テストでは、要求されるスキルも違うため、普段手動テストだけをしているチームにツールだけ渡しても、その恩恵を実感する前に使われなくなってしまうことが多いです。
そもそもリソースが圧迫されているチームに新たなタスクを渡すということになり、テストチームが前向きにツールを使ってくれることは稀でしょう。
テスト自動化を進めたいのであれば、知見のある専任者を立てて、自動化の推進に専念してもらう方が現実的です。

③手動のテストケースをそのまま自動化しようとする

テストを自動化して手動テストを減らそうとするあまり、本来自動化に向かないテストやデータ駆動にした方が効率の良いテストもそのままツールに取り込み、後のメンテナンスコストが増大するというリスクを生んでしまいます。
計画時点でスコープを明確にし、場合によってはテストケースを自動化向けに修正した方が良い場合もあり、以降でどういったメンテナンスが発生しうるのかも事前に洗い出しておくべきでしょう。
上記の様な事例以外にも、テスト自動化の失敗に繋がる要因は様々あるかと思いますが、その大半は、導入までの検討や計画が不十分なことが原因であり、想定外のコストや工数も考慮できれば、失敗という結果になる可能性も低くなるのではと考えます。

3. まとめ

目的や戦略をしっかり持っていたとしても、自動化ツール自体には、まだ課題が残ります。
近年ではAIにより、自動化ツールの持つ様々な課題を解決していく方向に進んでいます。
冒頭でも触れましたが、対象ソフトウェアの改修を自動で検知し、スクリプトまで自動修正してくれるという、メンテナンスコストの大幅削減が期待できる機能を有した自動化ツールも多数存在しています。
実際のところは、AIの精度が100%ではないため、自動で修正されたスクリプトの内容を人の目で確認し、場合によっては手動で修正する必要がありますが、全てのスクリプトの確認と修正を人の手で実施することを考えれば、十分な工数削減効果が見込める画期的な機能と言えるでしょう。

他にもUI自体をシンプルにし、利用者の習得までの工数を下げたり、全てをGUIで設定できたりと、ローコード・ノーコードと呼ばれる、自動化ツール導入の壁となっていた開発言語さえも不要になってきています。
さらに言えば、一昔前の自動化ツールは、億単位の費用がかかる高価なイメージでしたが、近年ではライセンス費用も安価になってきており、クラウド上でも利用可能となってきたため、導入のハードルはかなり下がってきています。

既に便利ですぐにでも利用をお勧めしたい自動化ツールですが、今後更に課題を解決する工夫が盛り込まれていき、手動テストの領域が今後縮小していくことが期待されています。また、導入したプロジェクトがテスト自動化の恩恵を存分に受けることで、テストエンジニア、開発者、ユーザー、関係者各位が幸福になれることを切に願っています。

関連資料・関連リンク

ページトップへ戻る