概要

Tellusとは

Tellusは、OutSystemsでUI自動テストを実現するWebアプリケーションです。

複数ノードでの分散テストを可能とするSelenium Gridを、より使いやすくするためのラップモジュールを内包しています。

従来、テストスクリプトの作成や改修は大変手間のかかる作業でしたが、本製品では、OutSystemsのActionでスクリプトを記述することが出来るようになっており、それらが「ブラウザを開く」「入力する」「ボタンを押す」といった人が行う操作を中心に抽象化されているので、アイコンを並べるだけでテスト処理を記述出来るようになります。これにより、Actionへはパラメーターを渡すだけでテストを実行することができ、面倒なSleep処理等なども記述する必要がなくなります。

このように本製品は、簡単な教育により開発者ではないユーザーでもテストスクリプトが記述できるようになることを目指しています。

 

Action.png

 

 

スタンドアロン構成例

StandAlone.png

 

分散構成例

Distributed.png

 

 

詳細

テストスクリプトは、OutSystemsのビジュアル言語で記述

要素へ特別な属性を追加

要素を特定するセレクタをいくつか用意していますが、ターゲットアプリケーションのExtended Propertiesに特別な属性(test-id)を追加することを推奨します。

 

Actionへパラメーターを設定

HumanActionで要素を特定し、パラメーターを付与するだけで、ひとつの操作を実行することが出来ます。

UserName.png Selectors.png UserNameSelector.png  

 

PageObjects パターン

ページの特定情報とテストシナリオの分離

Tellusは、Seleniumでも推奨されるPageObjectsパターンを実現します。
Webアプリケーションのテストのための自動化フレームワークを設計する際には、ターゲットアプリケーションとその構成要素は、変更されるものだという事実を受け入れる必要があります。
よって、ターゲットアプリケーションに新たな変更が加えられた時、必要となるリファクタリングが最小となるように設計しなければなりません。
それには、ページ要素のIDやページ固有の詳細情報とテストシナリオを切り離して管理する必要があります。

 

セレクタの抽象化

ByTestId("EmployeeName")のように繰り返し利用されるセレクタは、Actionの中で変数として割り当てることで、変更があった場合に、その箇所だけ変更すればよいことになります。

 

参考)https://github.com/SeleniumHQ/selenium/wiki/PageObjects

 

PageObjects.png SelectorVariables.png

 

パラメーター化テスト

パラメーター化テストは、Out SystemsのAggregateで作成したレコードリストからFor Eachでレコードを渡すことで実現できます。また、テストデータの準備は、Aggregateならではの機能で簡単に準備することが出来ます。

ParameterizedTest.png

 

アサーション

コマンド等で取得した値をテキスト型、整数型、ブール型で比較チェックします。

Assertion.png Comands.png Operator.png

 

シリアル実行と並列実行

同一テストケース内の複数環境によるテストはシリアルに実行されます。複数のテストケースを同時に実行する場合、並列で処理されます。
テストケースにファイルダウンロード処理が含まれる場合、複数のテストケースを同時に実行することを避けてください。正しいファイルを取得できない可能性があります。

PralleleExecution.png

FAQ

Q)Tellusをクローンして1台のサーバーに複数のアプリケーションとしてインストールすることはできますか?

 A)いいえ 本製品は、ひとつのOS上にひとつまでしかインストールすることが出来ません。また、eSpace名を変更すると正しく動作しなくなります。

 

Q)ヘッドレスではなく、実際にブラウザが動作するところを確認したい。

 A)ノードサーバにスクリプトを配置し、そこでスクリプトをダブルクリックし実行する必要があります。スクリプトは、管理画面からダウンロードできます。

 

Q)Inputの入力スピードが遅いので改善したい。

 A)SetValueにあるインプットパラメータのByJSを'True'にすることで、従来のSeleniumAPIを使った入力からJavaScriptによる入力方法に切り替えることが出来るため、高速な入力が可能となります。

 

Q)分散環境を構築したい。

 A)分散環境を構築する場合には、各ノードへSelenium SeverのJarファイルの設置とスクリプトの実行が必要になります。また、スクリプトは管理画面でダウンロードすることが出来ます。この場合、ノード番号により実行環境はグループ化されるので、スタンドアロンの自ノードが0番となり、分散環境へは0番以外の適切な番号を振る必要があります。

 

Q)"System.Net.WebException: Unable to connect to the remote server"の対応方法

 A)Selenium Grid serverが起動していません。管理画面から起動するか、サーバー側の起動スクリプトを実行してください。

 

Q)内部プロキシとは、何ですか?

 A)内部プロキシは、サーバーからファイルをダウンロードする時に、OSの警告を回避するためにダウンロードデータを仲介して処理するためにあります。また、インターネットにアクセスする際に、プロキシサーバーを経由する必要がある場合のベーシック認証処理の仲介も行います。

 

Q)テスト開始登録ボタンを押してもすぐにテストが開始されません。

 A)テストアクションは、Timerの非同期機能を使って実行されます。よって、Timerサイクルの20秒間は最大遅延する可能性があります。

 

価格

Tellusは、CommunityとEnterpriseの二つのエディションが用意されています。

Tellus Community エディション

 

無償

制限事項

  • 最大実行時間は、30秒です。
  • 複数環境の連続実行ができません。
  • 複数テストケースの並列実行ができません。
  • テストケースの予約実行はできません。

 

 

Tellus Enterprise エディション

 

すべて機能を利用可

サポート、保守、アップグレード対応

 

 

Tellus Enterprise エディションのライセンスと価格

Tellus Enterprise は、制限がなくすべての機能を利用することが出来ます。この商用ライセンスは、1年間のサブスクリプションで提供され、サポート・保守・アップグレード対応が含まれます。また、Mono と Universalから選択することが出来ます。

Mono

 

1年あたり

¥500,000-

 

1ライセンスにつき、ひとつのアプリケーションをインストール可

 

 

Universal

 

1年あたり

400AO:¥680,000-

+400AO:¥400,000-

 

1ライセンスにつき、OutSystems1ライセンス内で無制限にインストール可

※OutSystems800AOの場合、年間¥1,080,000となります。