見出し画像

EasyReproを使ってMicrosoft Dynamics 365のE2Eテストをやってみた

はじめに

こんにちは!SHIFTでテスト自動化アーキテクトをしている木村です。
今回はMicrosoftが提供しているERP/CRMであるDynamics 365(以下D365)の自動テストをEasyReproを使ってやってみましたので、その内容について書いていきたいと思います。

EasyReproとは

Microsoftが提供している、D365のUIテストを簡単に実装するためのライブラリで、以下からダウンロードすることができます。

ブラウザの自動テストを行うSeleniumをベースしており、コードベースでテストスクリプトを実装していくことができます。対象となるD365のサービスはCE領域(Customer Engagement)のみとなっていますが、Seleniumを使ってテストスクリプトを書くよりも早く簡単に実装することができます。CE領域の中でも対応・未対応の項目があり、以下のようになっています(上記公式サイトより引用)。

CE領域の多くのコントロールに対応しており、対応していない部分についても、Seleniumで実装することで自動化することが可能となるので、自由度高く自動化のスクリプトを実装することができます。

動かしてみる

では実際に動かしてみましょう。今回の実行環境としては以下の通りです。

・OS: Windows10
・IDE: Visual Studio 2019
・ブラウザ: Chrome

まずは、公式サイトからライブラリをCloneします。UIAutomation.slnを開いて、中身をみていきましょう。

4つのプロジェクトが見えるかと思います。上の3つがライブラリ部分、一番下のSampleがサンプル実行用のプロジェクトになっています。この状態でコンパイルを実行すると、Nugetパッケージがダウンロードされ、テストが実行可能な状態になります。デフォルトでWebDriverはChromeが設定されているので、今回はChromeを使用してテストを実行したいと思います(ただし、ChromeDrvierのバージョンが古いため、Nugetにてバージョンアップが必要となります)。サンプルプロジェクトが用意されているので、それを実行するのに、Sampleのプロジェクトにあるapp.configファイルを編集します。keyとして用意されている以下の3つを設定します。

続いて、テストスクリプトを修正します。サンプルとして、アカウント作成(CreateAccount)のテストを見てみましょう。Clone直後は以下のようなスクリプトになっています。

肝となるのが、

using (var xrmBrowser = new Api.Browser(TestSettings.Options))

で定義されているxrmBrowserというAPIクラスで、これを用いてD365 CEの各コントロールへアクセスします。このテストで使用されている各メソッドについて、いくつかまとめますと、以下のようになります。

(※Grid.SwitchViewについては、D365のアップデートにより、現在は使用できません)

ここで注目していただきたいのは、

ページ移動やクリックなどを行う際の要素の指定が、XPATHなどを指定することなく、コントロールの名称だけでできる

という点です。日本語にも対応しておりますので、例えば、「売上」エリアにある、「アカウント」というサブエリアに移動したい場合は、

xrmBrowser.Navigation.OpenSubArea("売上", "アカウント");

と実装するだけでよく、わざわざブラウザを使って要素を特定して、FindElementでコントロールを取得してといった必要がありません。そのため、直感的にスクリプトを実装することができ、Seleniumで実装するよりも早く、簡単にテストスクリプトを実装することができます。また、ソースコードの可読性も高く、何をしているのかがわかりやすいメソッド名になっており、テストの内容を簡単に類推することができます。項目に入力した値を確認するテストを実施したい場合は、Microsoftのテスト機能であるAssertを用いて、以下の内容で確認することができます。

Assert.AreEqual("555-555-5555", xrmBrowser.Entity.GetValue("telephone1"));

こちらもGetValueに項目名を入力することで入力値を取得できるので便利ですね。 テストメソッドをテストしたい内容に変更したら、テスト準備完了です。テストはテストエクスプローラーから実行します。Visual Studioにて[表示]メニューから[テスト エクスプローラー]を選択して、実行したいテストを選択して実行すれば、D365のページが起動して、テストが実行されます。テストが完了すると、成功したテストについては、緑のチェックマークで表示され、失敗したテストについては、赤文字の×が表示されます。

使ってみて

CE領域に限っていうと、基本的なコントロールは対応しており、Seleniumで実装するときに行っているPageObject(開発やメンテナンスによる要素の変更を局的に抑えるため、ぺージの情報をまとめておくクラス)の開発をしなくても可読性高く、簡単なコードでテストスクリプトを実装できるのは大きなアドバンテージだと感じました。対応していない部分についても、Seleniumで実装できますので、やりたいことは十分にできるのではないかと思います。

最後に

D365のCE領域に対して、コードベースで自動化をする場合はかなり強力なツールになるのではないでしょうか。Microsoftが作成しているライブラリでもあるため、親和性も十分かと思いますが、最近は開発がなされていないようなので、そこは少し心配な部分でもあります(実際、D365 CE領域の更新速度が早くEasyReproが追随できていない部分があり、使用していたメソッドが使えなくなるといった事例もあります)。実装が簡単になるとはいえ、当然ながら、テストスクリプトを実装する工数はかかりますので、使いどころについては、各プロジェクトで最適化していただく必要はあるかなと思います。

以上です。皆様も素敵な自動化ライフを!


執筆者プロフィール:木村 直樹
製造業のSE、フリーランス、大手製造業のグループ会社をへて、2022年にSHIFTに入社。様々なソフトウェア開発を経験し、PMや案件管理者として働きながら、エンジニアとしてもまだまだ勉強中。趣味はDIYやプラモデル作成など。

お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/