テスト自動化は、ソフトウェアテストに欠かせない存在。反復作業の削減、人為的ミスの防止、バグの早期発見など、ソフトウェアの開発と改善を支えてくれます。モダンなテストサイクルを目指すDevOps QAチームが増えていますが、テスト自動化の導入には困難が伴います。今回の記事では、テスト自動化に取り組むなかで直面するハードルと、その解決方法を紹介します。

「テスト自動化で最も大変なことは、適切なツールを選ぶこと。しかし、ツールを探し、導入し、デプロイすることは避けられない道なのです。」


テスト自動化ツール導入を成功させる6つのポイント

1. 関係者全員とコミュニケーションをとり、協力し合う

テスト自動化を成功させるには、すべての関係者がいつも率直に話し合えるようにしなければなりません。良好な関係を築くポイントは、効果的にコミュニケーションを取ることです。

プロダクトマネージャーからプロジェクトマネージャー、デベロッパー、手動テスターまで、パイプラインの関係者全員とテストの目的について認識合わせをする必要があります。

当社の調査では、テスト自動化はコストが高い反面、その分、高い効果が得られることが明らかになりました。QA予算のうち、大半の企業は10%~49%をテスト自動化に充てています。また、同調査で、DevOps部門の職員が多いほど、テスト自動化に割り当てるQA予算が高い傾向があることも分かりました。このことから、テスト自動化に取り組む費用対効果について、関係者と率直かつオープンにコミュニケーションを取ることは必要不可欠であると言えます。

2. 依存を防ぐ

当社QAエンジニアの末村曰く、「自動化でかなり苦労するのは、依存を防ぐこと。」特定のテストレベル(E2Eテストなど)に頼り過ぎたり、特定の人(QAやSETなど)に属人化したりしないようにする必要があります。

E2Eテストには「時間がかかる」「外部要因によって不安定になる」などの問題がつきまといますが、QAエンジニアとしてはこのような問題を解決することが大切です。E2Eテストは、ユーザー目線でシステム全体をテストするため、最も時間がかかります。また、テスト工数がさらに延びてしまう要因は他にもあります。例えば、サードパーティ製APIを使用しているアプリケーションをテストする場合、「APIの動作が遅い、タイムアウトする」などのトラブルに遭遇すると、テストスケジュールがずるずる延びてしまいます。

テスト時間を短縮するコツは、重複を避けること。例えば、ログインが必要なアプリケーションをテストする場合、ログインモジュールが正常に動作していることを証明できれば、ログインを毎回テストする必要はありません。また、できるだけ再利用可能なテストコードを作ることで、後々のメンテナンスの負担を軽減することができます。最後に、アプリケーションのテストスイートが拡大するにつれて、長期的に使えるコードベースを確保することも非常に重要です。

3. 優秀なリソースを確保する

ほとんどの社内チームはSeleniumを使用していますが、こちらのツールを習得するにはかなりの努力が必要で、メンテナンスの課題もあります。というのも、Seleniumを使ってテストを行う場合、スクリプト作成からメンテナンスまで、あらゆる場面でコーディングの応用力が必要となるからです。

かつて、単純なキャプチャリプレイツールは、解決する問題より多くの課題を生み出してしまい、逆効果になる場合もあります。そこで、SETエンジニアが有効な解決策として注目を集めます。熟練した人材に対する需要が急速に高まる一方で、人材不足が課題になってしまいました。さらに厄介なことに、テスト自動化エンジニアは、本来の業務ではなく、非エンジニアに任せられる作業に業務時間の大半を取られてしまうという事実に直面していました。

幸い、業界は進化を遂げ、キャプチャリプレイツールが抱える問題の多くが解決されました。コーディング不要のテスト自動化ツールは数多く存在しますが、高品質のノーコードプラットフォームは、人間が見落とすような変化も、人工知能が学習し、発見してくれます。

4. テスト自動化の進め方をうまく選ぶ

オープンにコミュニケーションを取り、パイプラインにおける依存を防ぎ、リソースを確保できたら、テスト自動化の準備は完了です。では、どのようなアプローチを取れば良いのでしょうか?「何を自動化すべきか」は一概には言えません。そこで、テスト自動化の取り組み方について、アプローチをいくつか紹介したいと思います。

あるお客さまは、「スモールスタートから始める」ことでテスト自動化を成功されました。自動化する作業の量と種類を徐々に増やしていったのです。DeNA様のQAテストリードとのインタビューで、毎日手動で行っていた膨大な数のテストを自動化できたことが分かりました。Autifyを導入されてから1か月後、約10%の工数削減を達成できたそうです。他のエリアの生産性を10%向上する機会が得られたとも言えます。

テスト自動化ピラミッド。出典:Abstracta

出典:Abstracta

上記アプローチが自社に合わなければ、他にもリスクベーステストとテスト自動化ピラミッド(上図参照)という2つのアプローチがあります。

「リスクベーステスト」では、テスト要素のうち、失敗した場合に最も悪影響をもたらすものを優先的にテストします。例えば、SLA(サービス品質保証)に付随するものや金銭的リスクが高いものなどです。

「テスト自動化ピラミッド」は、UIレベルではなく、自動化されたユニットテストに焦点を当て、費用対効果の高いテスト要素を優先するアプローチです。

5. 初期コストを抑える

自動化を導入するにはコストがかかり、ハードウェアだけでなくソフトウェア料金も発生するからです。無償のオープンソースツールを使うことでライセンス料を省くこともできますが、研修やメンテナンスなど、別のコストが発生します。さらに、ソフトウェア開発にかかる隠れコストを検討しないマネージャーも多くいます。詳しくはこちらの記事をご覧ください。回帰テストや共同作業など、見落としがちなソフトウェア開発のコストについてご紹介します。

経営陣にテスト自動化ツールを提案する際は、初期費用を安く抑えられるツールを選びましょう。そのためには、コーディングのスキルがなくても使えるプラットフォームを探すのがおすすめです。これには3つの理由があります。第一に、非エンジニアにテストを任せれば、熟練した開発者のコストを大幅に削減できるからです。第二に、メンテナンスにかかる工数とコストを劇的に減らせます。第三に、高度な人工知能を生かしたツールを使えば、管理者はデータをもとに意思決定を行えるようになります。

6. 適切なツールを選ぶ

前述の通り、テスト自動化にはさまざまな困難が伴いますが、テスト自動化を成功させる最大のポイントは適切なツール選びといっても過言ではありません。

市場には、オープンソースのテスト自動化ツールや有償サービスが多数存在します。優れたツールもいくつかあります。おすすめテスト自動化ツールをこちらにまとめましたので、ぜひ参考にしてみてください。テスト自動化ツールを選ぶ際、次のようなポイントに注目しましょう。

  • コーディング不要で使用でき、なおかつ必要に応じてコーディングもできる。例えば、レコーディングした機能の拡張、データを使ったテストのスケールなどが可能であるべきです。
  • 手厚いテクニカルサポート。問い合わせがある場合、サポート資料や掲示板、動画などを探して自力で解決するより、人間のスタッフに助けてもらいたいこともあるはずです。
  • レポート機能が内蔵されている。後から追加したり、サードパーティに解決を委ねたりしているツールは理想的ではありません。
  • 人工知能でテストメンテナンスをスムーズに。工数とコストの削減につながります。

まとめ

では、テスト自動化ツール導入を成功させるポイントをおさらいしましょう。

  1. 関係者全員で率直に話し合い、効果的なコミュニケーションを取り合う。
  2. 時間短縮で依存を避け、長期的に再利用できるコードベース作成に注力する。
  3. ノーコードテスト自動化ツールを利用する。コード不要のツールの場合、導入のハードルが低くなり、非エンジニアでもテストを行えます。
  4. 自社のニーズに合うテスト自動化に取り組む。
  5. 初期コストや隠れコストに注意する。ノーコードテスト自動化ツールを選ぶことで、初期費用を大幅に削減することができます。
  6. 技術や機能面、満足度の高いサポートを提供するテスト自動化ツールを選ぶこと。

今回の記事では、テスト自動化ツール導入を成功させる6つのポイントをご紹介しました。様々なポイントに注意しなければいけないと言い、複数の企業がテスト自動化ツールを導入したことによって開発リリースサイクルを短縮し、メンテナンスコストも抑えることができたため開発工程の改善に大きいなメリットがあります。
 
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。