近年、移り変わりの激しいビジネス環境に即応するため、短納期で効率化されたソフトウェア開発が求められるとともに開発手法も、これまで主流だったウォータフォール型から、仕様変更に柔軟な対応ができ、開発スピードが早いアジャイル型の開発が取り入れられるようになりました。そして、このような開発事情において、テストの自動化が求められるようになりました。本記事では、なぜ自動化が求められるのか、またその自動化を成功させるためのテストツールについて紹介します。
自動化が必要な理由
開発スピードが早いアジャイル型のプロジェクトでは、新しいサービスを短い期間でリリースし続け、その上で品質確保を維持する必要があります。
アジャイル型の開発プロジェクトにおけるUI(E2E)テストも、ウォータフォール型の開発と同じように、ユーザー視点でシステムが問題なく動くか検証する必要があるため、抜けや漏れの無いようにテストする必要があります。しかしながら、すべてのテストを手動で実施すると膨大な時間がかかります。
すべてのテストを手動でおこなうことは難しいかもしれませんが、次のようなテストは、UI操作を自動化することにより、限られた時間で効率的にテストをおこなうことが可能となります。また、手動テストによって発生する入力ミスや確認漏れなどを防ぐことができ、品質確保を維持することもできます。
- 機械的な判断が可能なテスト
操作の期待値がはっきりしているテスト
例:画面に表示されている合計金額が正しいことを確認する - 入力のバリエーションが複数存在し、同じ操作を繰り返すテスト
単純な作業の繰り返し、かつ複数の入力データを必要とするテスト
例:追加したテキストボックスに対し、最大値/最小値/英数/全角/半角等入力チェックを行う - 特定の操作を繰り返すテスト
手動では難しい量の繰り返し操作を実施するテスト
例:不定期に発生する不具合を再現するため、100回連続で申請を行う - シナリオが一本道で、シンプルな操作を行うテスト
ログイン~申請ページ~入力~完了などの一連の操作の流れのテスト
例:リグレッションテストとして、リリース前に新バージョンで一連の申請操作を行い、現バージョンやパッケージ本体からのデグレがないことを確認する
自動化を成功させるためのテストツール
UIテストの自動化をはじめるうえで、テストツールの導入は必須となります。テスト自動化は、手動で行っていたテストをツールがおこなうことで可能とするため、テストツールを使用せずに自動化を実現することは難しいと言えます。そのため自動化におけるテストツールの価値は非常に高いものとなり、どのテストツールを選択するかで、自動化の成功・失敗に大きく影響します。
近年、テスト自動化のニーズが広がるにつれて、有償・無償ツールともに充実しており、一昔前までは、無償ツールといえば Selenium 一択だったのが、最近では Cypress、Puppeteer、TestCafeなどさまざまなツールが存在します。そのため、コスト面から「無償のテストツールでも良いのではないか?」といった考えもでてきますが、無償ツールは、以下の点から有償ツールに比べて導入のハードルが高くなることで逆にコストも高くなることから、特にはじめてテスト自動化をおこなう場合はツールは慎重に選ぶ必要があります。
- 学習コスト/サポート
無償ツールのため、サポート体制が弱く、ツール学習コストが高くなる場合があります。また、問題が発生した場合は、海外サイトの参照が必要となる場合もあり、リーディングやライティングのスキルが必要となる場合があります。 - プログラミングスキル
テストフレームワークとして提供されているものなどは、テストスクリプトをプログラミングする必要があり、テスターにプログラミングスキルが求められることで属人化しやすくなります。また、アプリケーションの操作からテストスクリプトを自動生成してくれるツールであっても、有償ツールほど機能が充実していないため、そのままではテストスクリプトを使用できず、ソースコードのカスタマイズが必要になる場合もあります。 - テスト環境のセットアップ
テストツールを動作するために必要なライブラリや、プラグインなどのインストールなどが必要となる場合があり、ツールによっては、ネットワークなどのさまざまな知識を必要とする場合があります。
有償ツールでは、プログラミングができない人でも簡単にテスト自動化ができる「ノーコード」や「AI」などをうたったツールが主流となってきています。無償ツールと比べ、サポート体制が整っており、テストスクリプトもノーコードで作成できるため、プログラミングスキルを必要とせず属人化しにくくなります。また、テスト環境のセットアップもインストーラを起動するだけで自動で実施してくれるため、ツールをインストール後、すぐに利用することができます。
まとめ
無償ツールはツール自体の経費は掛かりませんが、有償ツールにくらべ、学習コストや機能拡張、テストスクリプトの作成の工数が大きいため、人的コストが高くなります。開発メンバー内にテスト自動化のスペシャリストがいるのであれば話は変わりますが、そのような環境や体制が整っていない場合には、ツールでカバーできることはツールに任せ、人にしかできない作業に注力すべきです。
Ranorexは、デスクトップアプリ、Webアプリ、モバイルアプリに対応したUIテスト自動化ツールです。多くのサードパーティー製コントロールなど、さまざまなテクノロジーをサポートしており、いつも通りの画面操作をするだけで操作をキャプチャし、テストシナリオを自動生成するため、プログラミングをおこなわずにテストを作成できます。GUI上での操作となるため、メンテナンスもおこないやすく、直感的に操作できる特徴を持っています。また、無償ハンズオンなどのサポート体制も充実しており、ツール導入がしやすい環境を提供しています。