テスト自動化シナリオのバージョン管理

Ranorexには、バージョン管理ツール(Git/Subversion/TFVC)との連携機能が備えられています。この機能を活用することで、単にテスト資産のバージョン管理ができるというだけではなく、継続的なUIテスト自動化を進めていく上でのメリットがあります。

そこで今回の記事では、Ranorexをバージョン管理ツールと連携させるメリットと、運用する際の注意点、Subversionを例にした具体的な運用イメージについてご紹介したいと思います。

前提:Ranorexのテスト資産の構成

Ranorex Studioで作成したテストは、テスト新規作成時の設定画面で指定した場所に保存されます。初期設定は、C:\Users\<ユーザー名>\Documents\Ranorex\RanorexStudio Projects のフォルダが指定されています。

テスト資産(Ranorexプロジェクト)は以下のように、Microsoft Visual Studio 2008/2010 プロジェクトをベースとしたファイル形式で構成されています。


バージョン管理ツールを使用する場合も、一般的なVisual Studioによる開発で使用するケースと同じく、これらのプロジェクト一式をバージョン管理リポジトリに追加し、変更が発生したファイルに対して都度コミットをしていくようなイメージとなります。

Ranorexをバージョン管理ツールと連携させるメリット

テスト資産の管理が楽になる

これは、アプリケーション開発におけるコードやドキュメントの管理の際のメリットと同じですが、ファイルで管理していると最新版がどれかわからなくなったり、前回どこを変えたかがわからず前のバージョンに戻せないといった事象が発生しやすいです。バージョン管理ツールを使うことで、これらを解決できます。

複数人での開発に適している

これも一般的なバージョン管理ツールを使うメリットとして挙げられるものですが、複数人で開発する場合に、各自のローカルにファイルをダウンロードできるため、同時並行で開発をおこなえます。同一ファイルに対する変更が競合(コンフリクト)した場合でも、バージョン管理ツールで解決できます。

CIツールと連携した際、コミットなどの操作をテストの自動実行のトリガーとして利用できる

Ranorex + バージョン管理ツール + CIツール(Jenkinsなど) を連携することで、Ranorexのファイルがコミットされたタイミングで、Ranorexのテスト資産を実行するといった使い方ができます。Ranorex + CIツールだけの連携の場合は、Ranorexのシナリオに修正が入った場合は手動でファイルの差し替えが必要になりますが、バージョン管理ツールを加えることで、自動で変更を反映して実行する処理を組むこともできるようになります。

運用時の注意点

開発でGitやSubversionなどのツールを使い慣れている方に、特にご注意いただきたい点として、競合(コンフリクト)発生時の対応方法が挙げられます。

通常のソースコードによる開発であれば、コンフリクトは自身が編集したファイルに発生するものですが、Ranorexは主にGUI設定によってシナリオの編集をおこなうことから、ユーザーが直接触っていないファイルにも変更が入る場合があります。例えば、レコーディングでアクションを追加した際には、以下の複数のファイルが裏で変更されています。

  • レコーディングモジュール(*.rxrec)
  • レコーディングモジュールの自動生成ファイル(*.cs)
  • リポジトリ(*.rxrep)

したがって通常のコードによるアプリ開発よりも競合の発生率が高く、マージ作業の難易度も高いといえます。また完全に自動生成のファイル(<レコーディングモジュール名>.cs 等)については、ユーザーによる直接編集が反映されない場合や、ファイル破損を引き起こす可能性があるため、コードベースでのマージが推奨されておりません。

これらの理由から、特に複数人で開発をする際はできるだけ競合そのものが発生しづらい運用とすることを推奨しております。

運用例として、プロジェクトを担当者ごとに分け、基本的に担当者は自分のプロジェクト内のものを編集するようにすることで、レコーディングモジュールやリポジトリ、.csprojといったファイルに競合が発生しづらくなります。

以下の例では、担当者A・B・Cでプロジェクトを分け、各自で作成したレコーディングモジュールを使って担当者Aのテストスイートを構成しています。

テストスイートをはじめとした一部のxml形式のファイルについては、内蔵される Ranorex Magic Mergerというツールを使って、競合の解決をおこなうことができますので、上記の形で複数の担当者が同じテストスイートを同時に編集しても問題ありません。

Subversion 連携

ここではSubversionを例に、連携の手順をご説明します。Gitを使った連携についてはこちらの記事をご覧ください。

・Subversion と Ranorex の連携手順

ユーザーガイドに記載の手順にて、Ranorex Studio上からソリューションをSubversionのリポジトリに追加したり、逆にリポジトリからソリューションをチェックアウトすることができます。TortoiseSVNの機能を使って、エクスプローラー上からリポジトリ追加/チェックアウトをおこなうことも可能です。

・管理対象外とすべきファイル

Subversion連携の場合、追加したソリューション配下のファイルはすべてリポジトリに追加されます。以下のファイルは、テスト実行に影響がなく、かつコンフリクトが発生しやすいファイルのため、管理対象外にすることをおすすめいたします。

  • *.rximg
  • レポートファイルのショートカット
  • Debug/Releaseフォルダー配下のファイル
  • Reportsフォルダー配下のファイル

各ファイルについて詳しくは、こちらのページの「管理対象外のデータファイル」をご参照ください。

・Ranorex Magic Merger

以下のファイルで競合が発生した場合、Ranorexで提供されているマージツールを使用して競合を解決することができます。

  • Ranorex テスト スイート ファイル(.rxtst)
  • Ranorex リポジトリ ファイル (.rxrep)
  • プロジェクト ファイル(.csproj または、.vbproj)

【設定】
エクスプローラーでファイルを右クリック – [TortoiseSVN] – [設定]を開き、[外部プログラム] – [マージツール] – [高度な設定] から、上記3種類のファイルタイプ(.rxtst/.rxrep/.csprojまたは.vbproj)を追加します。コマンドとして以下を指定します。

C:\Program Files (x86)\Ranorex\Studio\Bin\Ranorex.MagicMerger.exe -base:%base -mine:%mine -theirs:%theirs -output:%merged

【使い方】

競合が発生しているファイルを右クリック – [競合の解決]をクリックすると、Ranorex Magic Mergerが起動します。競合の修正が完了したら、対象のファイルを右クリック – [競合を解決済みとしてマークする]をクリックすると、コミット・更新が可能となります。

まとめ

今回は、Ranorexとバージョン管理ツールの連携について説明してきました。基本的な操作についてはアプリケーション開発などの現場と同じような使い方ができますので、使い慣れているツールでぜひお試しください。