近年のWindowsアプリケーションは多機能かつ複雑になっています。その状況下でもソフトウェア開発においては高い品質と同時に開発サイクルの短縮やコスト削減が求められます。リグレッションテストを効率的に行うことで人的リソースを有効活用し、高品質のソフトウェアをリリースするためにはテストの自動化の導入が重要になってきています。
この記事ではWindowsの機能を用いてTestArchitectを活用したWindowsアプリケーションの自動化、CI/CDツールとの連携、Windowsの機能を活用したテスト自動化の特徴とその効果的な活用方法を解説します。
▼関連記事
Windowsアプリケーションの自動化
Windows上で動作するアプリケーションのテストを自動化します。テストスクリプトやツールを利用してアプリケーションの機能のテストを検証することで手動のテストに比べて効率的にテストを実施し、デグレの検出を行うことが可能です。
TestArchitectでは他の自動化ツールと比べても豊富な標準関数があるため、テキストボックスの読み込み/書き込みやボタンの押下、ラベルの情報読み込みだけでなく、アプリ内の表やツリーパネルのパスの読み込みなど多様な操作を自動化できることが特徴です。
またTestArchitectではレコーディング機能を使うことでスクリプト作成を容易にします。レコーディング機能とは操作した手順を記録しスクリプト化する機能です。ただスクリプトを作成するだけではなく、画面のテキストボックスやラベル、ボタンなどスクリプト作成に使用するオブジェクトのインタフェース登録も同時に自動で行うことが可能になるため、非常に簡単かつ効率よくスクリプト作成を行うことができます。
TestArchitectとCI/CDツールとの連携
TestArchitectはJenkinsなどのCI/CDツールとの連携ができます。CI/CDパイプラインにTestArchitectで作成した自動テストを組み込むことで開発の速度と品質が大幅に向上します。実行結果はSlackで通知することも可能です。
CI(継続的インテグレーション)とCD(継続的デリバリー/継続的デプロイメント)はソフトウェア開発のプロセスを効率化し、品質を向上させるための重要な手法です。
CI/CDを組み込むことの利点は以下です。
- ビルドの検証:各コード変更がビルドされテストすることでビルドの一貫性と品質が保つことができる
- 機能テスト:新しい機能や変更が意図通りに動作することを確認できる
- 回帰テスト:既存の機能が壊れていないことを確認できる
- パフォーマンステスト:アプリケーションのパフォーマンスが望ましいレベルにあることを確認できる
自動化範囲の広いTestArchitectで作成したスクリプトをCI/CDに組み込むことでより効率的なソフトウェア開発が可能になります。
Windowsの機能を利用した自動化
TestArchitectではWindowsコマンドを行う関数も搭載されています。Windowsコマンドで取得した情報を変数に格納してTestArchitectの標準関数と連携させて1つのスクリプトで多様な処理を自動化することも可能になります。またマウス操作やキーボード操作も行うことができるため、人が操作するレベルに近い操作を自動化することが可能です。
PCのメモリ情報を取得するコマンドの実行例
Windowsの機能を活用することでアプリケーションだけでなくOSレベルの機能や設定を含めたシステム全体のテストを行うことが可能になります。
データ駆動型の自動化
データ駆動型の自動化(Data-Driven Testing、DDT)とは、スクリプトを複数のデータセットで繰り返し実行する手法です。これにより同じテストケースを異なる入力値で何度も実行し、異なるデータセットを効率的にテストすることができます。TestArchitectでは予め作成しておいたExcelファイルやCSVファイルを読み込むほか、TestArchitect内に登録しておいたデータを使用したデータ駆動型の自動化が可能です。
データ駆動型のテストでは準備されたデータを1行読み込み、スクリプト内のそれぞれの変数に格納して処理を行います。処理が終われば次の行のデータを読み取りし同じように処理を行います。それを格納されたデータ行を全てで行います。このように1つのスクリプトで複数のデータパターンのテストを実行することが可能です。
データ駆動型の自動化を行う利点は以下です。
- 再利用性の向上:同じテストスクリプトを多くの異なるデータセットで実行できるため、スクリプトの再利用性が高まります。
- メンテナンスの効率化:データの変更をする際に、スクリプトを変更する必要がなくデータセットの変更を行うことができるため、メンテナンス性が非常に高いのが特徴です。
- 大量データの実行:人間では難しい大量データのテストもTestArchitectでは自動で行うことが可能です。数千、数万という人間では到底やりきれない膨大な数のデータ数でも自動で処理を行うことができるため人的リソースの効率化が可能になります。
以上により、データ駆動型の自動化は入力パラメータの組合せが多岐にわたる場合や、同じ機能を異なるデータでテストする場合に非常に有効なテスト手法です。
TestArchitectを使ったリモート実行/並列実行など多様な実行方法
TestArchitectの特徴として、実行するPCをリモートで実行することや並列実行を行うことが可能です。TestArchitectの機能を活用しリモートホストやホストに接続されたデバイスでテストを起動できます。この機能を利用することで、次のような利点があります。
- 複数のプラットフォームおよびハードウェア構成で、同じ、または異なるデータセットを使用して、テストを並行して実行が可能。
- 2台以上のマシン間の通信を伴うアプリケーションのテストが可能。
- 同じ共有リソースにアクセスするアプリケーションを含む同時実行テストが可能。
同期を必要とするシナリオの例として、マシン A がメッセージを送信し、マシン B がそれを受信してチェックするテストを設定すると仮定します。このシナリオでは、マシン A と B の実行を同期して、A がメッセージを送信した後にのみ B がメッセージをチェックする必要があります。
TestArchitectは単純な実行だけでなくPCのリモート実行や複数PCの列実行が可能になり活用の幅が広がります。
まとめ
TestArchitectはWindowアプリケーションの自動化はもちろん、WindowsコマンドなどWindowsの機能を活用したテストの自動化に対応できることが特徴です。その他、データ駆動型の自動化で大量パターンの確認など人間による手動のテストで実現が困難なテストの実現や、リモート実行/並列実行やCI/CDへの取り込みなど活用する範囲が広いのが特徴です。
ソフトウェア開発者やテストエンジニアは、今後これまで以上に複雑かつ多様なシステムに対応した開発プロセス/テストプロセスの検討を続けていく必要があります。また、同時に開発サイクルの短縮やコスト削減への対策も行わなければなりません。TestArchitectを活用することは、これらの課題に対する1つの課題解決につながると考えています。
今回紹介したTestArchitectの導入により、これまでの手動で行っているテストに比べ、多様で正確かつ効率的なテストが実施でき、活用次第で飛躍的にテストが変わることは間違いありません。