テスト作業も、画面キャプチャによるエビデンス取得も自動化してくれて、Jenkinsとの連動も可能。Web、デスクトップ、モバイルに対応するテスト自動化ツール[PR]

2019年3月25日

ソフトウェアのテストは、アプリケーションの開発時や受け入れ時などさまざまな場面で必要とされています。最近ではWindowsやiOSなどのOSやGoogle ChromeなどのWebブラウザが以前よりも頻繁にアップデートを行うようになったことで、アップデート時における既存アプリケーションの動作確認のためのテストもニーズが高まっているようです。

こうした増えてきたソフトウェアテストの実行に欠かせないのが、自動化ツールです。

テスト自動化ツールで実現したいこととは?

一般にソフトウェアテストの自動化ツールは、ユーザーのマウスやキーボード操作を記録し、再現したり、あるいはテストスクリプトに沿って人間のような操作を自動的に実行してくれるというものです。

しかしテストの現場で自動化ツールに求められるものはそれ以外にも多くあります。例えば、1つのツールでWebアプリケーションだけでなくWindowsのデスクトップアプリケーションにも対応することが望ましいですし、iOSやAndroidのモバイルアプリケーションにも対応していれば、1つの自動化ツールですべてのテストを済ませることができます。

そしてテスト作業で手間がかかるのが、エビデンス(証拠)としてのスクリーンショットの作成でしょう。

顧客からの依頼でテストを行った場合の作業の証拠として、あるいは動作確認のためのテストで問題がなかった証拠として、テストケースごとにスクリーンショットをひとつひとつ保存することが求められることがあります。

これを手作業で人間が行うのは時間がかかって非効率なだけでなく、ミスが入り込む余地も大いにあります。

そこで、スクリーンショットの保存まで含めて、これらの作業のほとんどすべてを自動化してくれるテストツールがあります。「TestComplete」です。

fig1

プログラミングレスで自動テストを作成可能

TestCompleteは、ユーザーが行った操作を自動的にGUIベースのテストシナリオとして保存できるため、プログラミングレスで自動テストを作成可能。条件分岐といった処理もGUIを用いて設定可能です。

しかも生成されたGUIベースのテストシナリオはJavaScriptやPython、VBScriptなど5種類のスクリプティング言語のいずれかで出力できます。出力されたスクリプトをプログラマが編集し、さらに詳細なテストを実行させたり、処理を加えたりすることができます。もちろん最初からスクリプトを記述することも可能。

fig2

マウスなどによる操作の記録は単に座標が記録されているのではなく、どのボタンを押したのか、どのフィールドを選択したのかをオブジェクトレベルで認識し、記録されます。

そのためアプリケーションの変更によってボタンの位置やフィールドの順番が変わっても、ちゃんと目的のボタンを押したりフィールドを選択できるようになっており、テストシナリオをいちいち変更することなく、テストの実行が可能です。

似たようなコントロールが並んでオブジェクトの判別が難しいケースでは、マニュアルで識別条件を追加して正確にオブジェクトを認識できるようにすることもできます。

fig3

さらにExcelやデータベースをデータソースとして、さまざまな値を使ってテストを実行することも可能です。例えば郵便番号や都道府県を入力するフィールドで入力パターンごとにチェックすることや、商品の個数を入力するフィールドでの数値チェックなど、1つのテストシナリオのなかで値を変えてループさせつつ複数のテストパターンを実行可能です。

fig4

しかもWebアプリケーションについては、1つのテストシナリオを複数のブラウザで実行可能なため、ブラウザごとにいちいちテストシナリオを作る必要がなく、効率の良いテスト実行が可能です。

画像の比較などでエラー判定が可能

TestCompleteはテストシナリオの実行においてエラーの判定方法を複数備えています。オブジェクトのプロパティにどのような値が設定されたかをチェックするだけでなく、最初の記録時とテスト時の画面を比較して判定することも可能です。

画像の差異を比較する場合、カーソルの点滅のタイミングや画面レイアウトの調整などエラーではない要因で画面に差異が生じることもあるため、例えば20ピクセル以内の違いであればエラーと判定しない、といった条件も設定できます。

さらにテストシナリオで条件文を追加するなどで、エラー判定のロジックを柔軟かつ詳細に記述可能です。

fig5

自動テストの結果はログとして記録され、エラーの詳細やスクリーンショットも保存されます。下図の右下の赤い模様が付いた画面は、記録時とテスト時の画面の差分を示したものです。どこに差異が生じたかが一目で分かります。

fig9

もちろん、あとからログを見るだけでなく、エラーの判定が生じた時点で自動的にテストを止めることもできます。

またテスト結果だけでなく、テスト実行中のCPUやメモリなどの使用率などもログに記録できます。

fig6

テストの分散実行やJenkinsとの連係でより大規模かつ高度な使い方も可能

テストが大規模化してくると実行時間も気になってきます。

TestCompleteは分散テストに対応しており、複数のマシンを使って分散実行が可能です。マスターマシンで分散テストの同期やログを管理し、大規模なテストでも効率よく実行できます。

また、いわゆるDevOpsや継続的インテグレーションなど、開発プロセスを自動化するなかでTestCompleteを利用できるように、JenkinsやBanbooといった自動化プラットフォームからTestCompleteを実行させることもプラグインによって可能になっています。

こうするとJenkinsからテストのタスクの実行指令が出て、TestCompleteがテストを実行し、その結果をJenkinsで受け取る、といったことが可能です。

fig8Jenkinsから実行されたTestCompleteのログをJenkins上で参照しているところ

このようにTestCompleteはテスト作業の面倒な手間を解決するための自動化を、アプリケーションの操作を記録して再現するところから簡単にスタートできます。

そのうえで、テストスシナリオを編集することでさらに複雑なテストケースを用いた自動化へ進み、便利になって規模が増えてきたら分散テストの実行やJenkinsのようなツールとの連携によってさらに専門的な使い方を可能にする、総合的で完成度の高いテスト自動化ツールといえるでしょう。

TestComplete - GUI のテスト自動化ツールでソフトウェアのテスト工数の削減、品質を向上

(本記事はエクセルソフト提供のタイアップ記事です)

あわせて読みたい

ソフトウェアテスト・品質 プログラミング言語 Jenkins PR




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本