手動でのテストに限界を感じ、自動化を検討されていらっしゃる方もいると思います。テストの自動化により、工数を削減できるなど、複数のメリットがあげられます。一方、全てのテストにおいて必ずしもテストの自動化が適しているとはいえません。実現するためには課題や注意点もあり、場合によっては自動化を進めるべきでないケースも存在します。この記事では、テストの自動化の概要やメリット、どんなポイントに注意して自動化をすすめるべきか解説しています。

テストの自動化とは

ソフトウェアテストやゲームテストにおいてテストの自動化とは、テスト支援ツール(テスト自動化ツール)を利用して、それまで人手で行っていたテストの各作業(テストケースの設計・テスト実行・レポート作成等)もしくはその一部を自動化することです。

なお、ウェブのUIやウェブアプリのテストを自動化する場合、ブラウザからHTMLのソースコードを確認しウェブの構成を把握できるため、第三者でも自動化しやすいという特徴があります。たいしてゲームに関しては、プログラムのソースコードが基本的に難読化され外部から確認することができないことから、第三者による自動化は簡単ではありません。

一方でウェブUI・アプリもゲームも、開発内部での自動化自体は進んでいます。

自動化する工程は?

テストのプロセスのなかでも、最もよく自動化されるのはテストケースを実際に実行する工程です。テストケースの実行には多くのテスターが必要となる上に工数も膨大であることから、自動化の恩恵を受けやすい部分と言えます。

またプログラムの一部を修正した際に、ソフトウェアに影響が出ていないか確かめる目的で実施される「リグレッションテスト」のように、同じテストを繰り返すシーンについても自動化されることが多いです。これにより、人は自動化が困難なより上流の作業(考えること)に工数を回せるようになるためです。

一方、テストケースを作成する「テスト設計」のプロセスに関しても、自動化が行われることはあります。しかしテストの目的に沿ったかたちで実行する必要があることから自動化の精度が高いとは言えず、現時点においては、このプロセスを自動化できている会社は少ないと想定されます。

代表的なテスト自動化ツール

最初に述べたように、テストの自動化においては、専用のテスト自動化ツールが使われます。

たとえばWebアプリのテストを自動化する「Selenium」は、初心者から上級者にまで利用可能なツールです。単にテストを自動化するだけでなく、テストを実行していて不具合が発生した際、その際の環境や手順を再現するキャプチャ・リプレイ機能も備えています。

またビルドとテストの自動的・継続的な実行が可能な「Jenkins」もよく使われるテスト自動化ツールです。Jenkinsはブラウザ上で手軽に操作できることから、ビルドやテストの自動化により継続的にテストを行ういわゆる「継続インテグレーション(CI)」を実施する企業に多く利用されています。

テストの自動化のメリット

テスト自動化の概要についてみてきました。それではテストを自動化することによって、どんなメリットが考えられるでしょうか。以下、主なメリットを解説します。

品質向上

テストの自動化は、複数の理由でテストの品質を向上させることができます。

たとえば人がテストを行う場合は、漏れや操作ミスなどを避けることはできません。その点、テストを自動化すれば、人為的なミスの可能性を排除することが可能です。さらに工程が複雑なテストや準備に時間がかかるテストに関しても、繰り返し行いやすくなるという点もメリットとしてあげられます。テスト自動化により工数を節約できることから、テストの範囲を広げることもできます。

コスト削減

コスト削減は、テストを自動化する上での大きなメリットと言えます。テスト品質の向上と同様に、複数の理由でコスト削減につながるのです。

まずテスト自動化によって、テスターの工数を大幅に削減できる点が挙げられます。特に繰り返し行わなくてはならないテスト、時間のかかるテストについては、テスト自動化によるコスト削減の効果も大きいでしょう。

また自動化によってテスト工程を効率化できること、バグを早期に発見し速やかに修正を進めやすくなることから、バグ修正時に発生する再作業を削減できることなども、テスト自動化がコスト削減につながる理由として挙げられます。

テストの自動化における課題や注意点

メリットの多いテスト自動化ですが課題や注意点もあり、これらを理解しておかないと大きな失敗につながる可能性もあります。ここではテスト自動化を始める前に、把握しておく必要のあるポイントをまとめて紹介します。

100%自動化するのは不可能

テストを100%自動化させたいと考える方もいますが、現実的には30%程度でも自動化できれば良い方です。テストを完全に自動化しようとするのは、現実的ではありません。

それでも無理に100%の自動化をすすめようとすれば、テストの自動化自体が目的となってしまい本末転倒です。なぜテスト自動化が必要なのか、どの程度自動化してどれくらいの工数削減を目指すのか、目的を明確にしてから取り組む必要があります。

自動化しないほうがいいケースもある

テストを行う際は様々な状況が考えられ、中には必ずしも自動化が適しているとは言えないケースもあります。

たとえば運用保守の段階では、基本的にシステムの挙動が変わらないことから、テスト自動化によるコスト削減などのメリットも大きいでしょう。反対にリリース前の検証では、システムの挙動が頻繁に変わる可能性があるため、一般的にはテストの自動化には不向きです。

自動化に利用するスクリプトは、一度作成したらそのままずっと使えるわけではありません。システム変更が行われる度に想定している通り動作するか検証し、不具合が見つかれば改修が必要となります。

そうして自動化のためのスクリプトの作成や保守には、想像するよりずっとコストがかかるものです。リリース前検証でテスト自動化を進めようとすると、スクリプトの修正に想定外のコストがかかってしまうリスクがあるわけです。費用対効果や損益分岐点を考えたときに自動化しない方がよい場面が少なくありません。

ゲームテストにおける自動化

前述したように、ブラウザからHTMLのソースコードの確認が可能なWebアプリ等と異なり、外部からソースコードが参照できないゲームはテストの自動化が簡単ではありません。また多くのテスターを動員した方がテスト会社としては利益が大きくなるため、ゲーム業界では、あえてテスト自動化による効率化を実行してこなかったという背景もあります。

そうしたなか、当社monoAI technologyではAIを活用した自動化ツールの開発を進めています。次項では、monoAI technologyで開発したAI自動化ツールの一部を紹介します。

monoAI technologyの自動化への取り組み

ここでは、monoAI technologyが開発したAI自動化ツールを紹介します。これまでmonoAI technologyのAIエンジニアチームでは様々な自動化ツールを生み出しており、それらは当社のテストサービスにおいて実戦投入され、日夜、テストサービスの品質向上に努めています。

Auto Tester

ゲームテストを自動化するためのツールです。回帰テスト・通しテスト・シナリオテスト・多端末テストに適している他、ゲーム以外のスマートフォンアプリにも活用できます。

Focus Window

確認すべき表示対象にフォーカスをあてることによって認識の誤りによるミスを防止し、テストの精度を向上させるためのツールです。

Voice Matching

再生中の音声ファイルの概要をテキストで表示することによって、意図した通りの設定になっているか視覚的に確認できるようにするツールです。

Debug SDK

SDKをUnityで開発したプロジェクトへ組むことにより、例外が発生した際のスクリーンショットや書き出し情報、テキスト情報、デバイス情報を取得するツールです。エンジニアへ不具合の詳細を報告する際に役立ちます。

Bug Reporter

テスターが不具合報告を速やかにBTS(バグ・トラッキング・システム)へ起票するのに役立つ支援ツールです。

くわしくはこちらのページをご覧ください。
https://aiqa.monoai.co.jp/service/automation/

まとめ

テストの自動化とは、専用のテスト自動化ツールを使ってテストを自動で実行することをさします。テスト自動化によって大幅に工数の削減ができる他、テストの品質を向上させることも可能です。

一方でテストは100%自動化できるわけでなく、無理して100%を目指そうとすると自動化自体が目的となってしまい本末転倒です。どの程度自動化して、どのくらいの工数を節約したいかなど、明確な目的をもって自動化をすすめる必要があります。

また自動化自体にもコストがかかるので、そのコストに見合う範囲ですすめるようにしましょう。自動化が適さないケースでは、自動化によるメリットよりコスト負担の方が大きくなってしまうこともあります。