0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

try mabl UI test automation

Posted at

Outline

最近、ローコードでUIテスト自動化を実現するツールとして挙げられる、mabl。
実際使ってみて、ほかのツールとの良しあしを検証してみた。

Test Envrionment Setting

Test環境はproxyで接続する環境を前提とする。
そして、その環境へは社内インフラからのみアクセスできる。

この前提では、localで実行する場合、 Proxy settingすることで、Test環境に接続することができる。
しかし、Mablクラウド上でのテスト実行はできない。
image.png

また、複雑なproxy設定を制御する、PACが使えない。

Timeout

Web 遷移時、loadingは自動的に待つようになっている。
ページが読み切らないで次の処理をしてしまうと、テスト結果が不安定になるため有効な機能である。

image.png
image.png

ただし、全てのassertion が30 secになっている。変更が不可能である。
また、page loadingの場合、30 sec timeoutした場合、WARN扱いで、次のステップに進んでしまう。

Ranorexでは

  • 必要に応じてpage loadingの必要性を設定可能
  • assertionのtimeを個別に設定可能
  • page loadingがtimeoutした場合、fail扱い可能

複雑なxpath指定

競馬は、毎日開催競馬場、レース数が異なる。
そのため、下記のような開催一覧では、表示される競馬場の有無、そして順番が異なる。
今回、テスト用に”姫路”が毎日12Rまで開催されるようにテストデータが作成されている前提とする。

このなかで、毎日テストで”姫路11R”の投票ボタンがクリックされるようにしたい。

image.png

姫路のcellをまず取得し、その行(親path)を経由して、11Rの値を取得する。

image.png

なお、Ranorexの場合、以下のようにしてxpathを指定することで特定できる。

image.png

RanorexとMablでxpathのお作法が異なるので、苦戦した。
RanorexのSPYのように、objectのxpathを調べる機能があると助かる。

要素を変数で指定(データ駆動)

競馬の単勝・投票のテストを考える。
選ぶ1着の馬は1~16とある。テストとして、指定した番号の馬番を選べるようにしたい。

1.あらかじめxpathを取得
mablのレコーディングのとき、任意の番号をクリックして、該当のxpathを取得する。(ほかに、chromeのdeveloper toolで調べる等もある)
image.png

2.変数定義
クリックする馬番の値の変数を作成する。
今回、arrival1 ( default = 3 ) を作成する
image.png

3.step追加で要素検索
image.png

Ranorexに比べると、変数化したボタンを作成、STEPに入れるのに少し手間がかかる気がする

Repositories

ボタン、フォームなど、テストにおいてクリック等するオブジェクトをRepositoiesと定義する。(Ranorex)

テスト作成後、シナリオをreviewするとき、MablではどのRepositoiesが使われているのかが確認できない。
下記の通り、”セット”のボタンを押すSTEPだが、どのボタンなのかがわからない。

image.png

尚、Ranorexの場合、各STEPで関連するrepositoriesがvisualでわかる。
image.png

Stepの共通化(Flow)と一部Flowのデータ駆動

ログインや、投票のstepを共通化モジュール(Flow)する。
それにより、Flowを再利用して効率化できる。

Flowに関するhelp

共通化したFlowとデータ駆動をもちいて、いかのシナリオを実現する。

1.login
2.単勝で1着馬を選ぶ (for loop : 1,2,4,8,16 を選ぶ)
3.投票確認→完了

image.png

mablは以下のようになった。
image.png

まず、データ駆動なしの単純に1つの単勝購入のstepを作成する。(Flowにする)
次に、2番目のFlowを任意の数字を指定してデータ駆動で動くように修正する。
このとき、JavaScript スニペットを使う。

まず、データ駆動させるための関数を作成する

return_arrival_array : データ駆動の配列(1着馬の馬番を指定する)を返す関数
ここで、2番目のFlowで指定する、1着馬の馬番を格納する

image.png

return_array_length : 引数の配列の要素数を返す関数
データ駆動の配列を引数とわたし、データ駆動のループ数を返却する

image.png

この関数を用いて、2番目のFlowをループ処理にする。
そのループ数に、上記関数を指定する。

image.png

参考

click_targe_arrival : 引数に、データ駆動の配列と、要素番号を指定する。その要素番号にあたる値の馬をクリックする関数
xpathに、変数部分にデータ駆動で指定した馬番のボタンを指定する。
そして、そのxpathをclickする関数である。

なお、現在のループ数を表す変数は、{{@run.loop_index}} である。

image.png

作成後、実行して対象の馬番号のボタンがクリックされていることを確認する。
image.png

データ駆動で任意の値をループさせるのには結構ハードルが高い。
なお、Ranorexはcsv等で定義して、その変数をmappingさせるだけで実現可能だ。

image.png

reporting

image.png

  • test stepの実行結果詳細 (成功可否、実行時間、 screenshot) が確認可能
  • 各stepのDOM, HAR fileを確認可能
  • 実行結果の動画でのエビデンス機能がない(Ranorexはsupportしている)

fee

固定費 + クラウドテスト環境の実行数 x α

である。
たぶん、ローカルで実行する分には固定費だけですむと思われる。
クラウドテストの実行数に比例して値段が決まる。

Another no support / difficulty

現時点 ( 2024/1 ) 自分が所望しているが、サポートされていない、もしくは実現が厳しい機能は以下の通り

  • Mobile Native APPのsupport
    今年2024年にサポートすると告知はされている。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?