テスト作業も、画面キャプチャによるエビデンス取得も自動化してくれて、Jenkinsとの連動も可能。Web、デスクトップ、モバイルに対応するテスト自動化ツール[PR]
ソフトウェアのテストは、アプリケーションの開発時や受け入れ時などさまざまな場面で必要とされています。最近ではWindowsやiOSなどのOSやGoogle ChromeなどのWebブラウザが以前よりも頻繁にアップデートを行うようになったことで、アップデート時における既存アプリケーションの動作確認のためのテストもニーズが高まっているようです。
こうした増えてきたソフトウェアテストの実行に欠かせないのが、自動化ツールです。
テスト自動化ツールで実現したいこととは?
一般にソフトウェアテストの自動化ツールは、ユーザーのマウスやキーボード操作を記録し、再現したり、あるいはテストスクリプトに沿って人間のような操作を自動的に実行してくれるというものです。
しかしテストの現場で自動化ツールに求められるものはそれ以外にも多くあります。例えば、1つのツールでWebアプリケーションだけでなくWindowsのデスクトップアプリケーションにも対応することが望ましいですし、iOSやAndroidのモバイルアプリケーションにも対応していれば、1つの自動化ツールですべてのテストを済ませることができます。
そしてテスト作業で手間がかかるのが、エビデンス(証拠)としてのスクリーンショットの作成でしょう。
顧客からの依頼でテストを行った場合の作業の証拠として、あるいは動作確認のためのテストで問題がなかった証拠として、テストケースごとにスクリーンショットをひとつひとつ保存することが求められることがあります。
これを手作業で人間が行うのは時間がかかって非効率なだけでなく、ミスが入り込む余地も大いにあります。
そこで、スクリーンショットの保存まで含めて、これらの作業のほとんどすべてを自動化してくれるテストツールがあります。「TestComplete」です。
プログラミングレスで自動テストを作成可能
TestCompleteは、ユーザーが行った操作を自動的にGUIベースのテストシナリオとして保存できるため、プログラミングレスで自動テストを作成可能。条件分岐といった処理もGUIを用いて設定可能です。
しかも生成されたGUIベースのテストシナリオはJavaScriptやPython、VBScriptなど5種類のスクリプティング言語のいずれかで出力できます。出力されたスクリプトをプログラマが編集し、さらに詳細なテストを実行させたり、処理を加えたりすることができます。もちろん最初からスクリプトを記述することも可能。
マウスなどによる操作の記録は単に座標が記録されているのではなく、どのボタンを押したのか、どのフィールドを選択したのかをオブジェクトレベルで認識し、記録されます。
そのためアプリケーションの変更によってボタンの位置やフィールドの順番が変わっても、ちゃんと目的のボタンを押したりフィールドを選択できるようになっており、テストシナリオをいちいち変更することなく、テストの実行が可能です。
似たようなコントロールが並んでオブジェクトの判別が難しいケースでは、マニュアルで識別条件を追加して正確にオブジェクトを認識できるようにすることもできます。
さらにExcelやデータベースをデータソースとして、さまざまな値を使ってテストを実行することも可能です。例えば郵便番号や都道府県を入力するフィールドで入力パターンごとにチェックすることや、商品の個数を入力するフィールドでの数値チェックなど、1つのテストシナリオのなかで値を変えてループさせつつ複数のテストパターンを実行可能です。
しかもWebアプリケーションについては、1つのテストシナリオを複数のブラウザで実行可能なため、ブラウザごとにいちいちテストシナリオを作る必要がなく、効率の良いテスト実行が可能です。
画像の比較などでエラー判定が可能
TestCompleteはテストシナリオの実行においてエラーの判定方法を複数備えています。オブジェクトのプロパティにどのような値が設定されたかをチェックするだけでなく、最初の記録時とテスト時の画面を比較して判定することも可能です。
画像の差異を比較する場合、カーソルの点滅のタイミングや画面レイアウトの調整などエラーではない要因で画面に差異が生じることもあるため、例えば20ピクセル以内の違いであればエラーと判定しない、といった条件も設定できます。
さらにテストシナリオで条件文を追加するなどで、エラー判定のロジックを柔軟かつ詳細に記述可能です。
自動テストの結果はログとして記録され、エラーの詳細やスクリーンショットも保存されます。下図の右下の赤い模様が付いた画面は、記録時とテスト時の画面の差分を示したものです。どこに差異が生じたかが一目で分かります。
もちろん、あとからログを見るだけでなく、エラーの判定が生じた時点で自動的にテストを止めることもできます。
またテスト結果だけでなく、テスト実行中のCPUやメモリなどの使用率などもログに記録できます。
テストの分散実行やJenkinsとの連係でより大規模かつ高度な使い方も可能
テストが大規模化してくると実行時間も気になってきます。
TestCompleteは分散テストに対応しており、複数のマシンを使って分散実行が可能です。マスターマシンで分散テストの同期やログを管理し、大規模なテストでも効率よく実行できます。
また、いわゆるDevOpsや継続的インテグレーションなど、開発プロセスを自動化するなかでTestCompleteを利用できるように、JenkinsやBanbooといった自動化プラットフォームからTestCompleteを実行させることもプラグインによって可能になっています。
こうするとJenkinsからテストのタスクの実行指令が出て、TestCompleteがテストを実行し、その結果をJenkinsで受け取る、といったことが可能です。
このようにTestCompleteはテスト作業の面倒な手間を解決するための自動化を、アプリケーションの操作を記録して再現するところから簡単にスタートできます。
そのうえで、テストスシナリオを編集することでさらに複雑なテストケースを用いた自動化へ進み、便利になって規模が増えてきたら分散テストの実行やJenkinsのようなツールとの連携によってさらに専門的な使い方を可能にする、総合的で完成度の高いテスト自動化ツールといえるでしょう。
≫TestComplete - GUI のテスト自動化ツールでソフトウェアのテスト工数の削減、品質を向上
(本記事はエクセルソフト提供のタイアップ記事です)
あわせて読みたい
WebAssemblyに正式対応した「LLVM 8.0」がリリース
≪前の記事
Java 7、Java 8、Java 11、Java 12の新元号対応アップデートが4月16日に登場予定。オラクルが発表