Web向けテスト自動化サービス「Testim.io」を試してみた

mablのつづきで別の競合サービス「Testim.io」を試してみました。比べてみると操作性や思想がだいぶ違います。

Testim.io

こちらもキャプチャーリプレイ型Webアプリ専用テストサービスですが、mablとは違ってレコーダーが表示されず、画面をぽちぽちすると勝手にテストができちゃいます。ひとつひとつのステップが上記のように画面キャプチャ付きで並ぶので mabl より見やすいですね。

ただ、SeleniumIDE型のレコーダー感覚で使ってみると、Testimの操作性に慣れるのに時間がかかりました。慣れてくるとレコーダーを意識せず使えるようになります。

気になる機能は以下のように、いろんなアクションをステップとして差し込めます。

似たような処理をまとめる場合は、「Add new group」からグループを作成します。このあたりはどのサービスもビジュアルプログラミングを意識しているようなので、分岐や繰り返しなど基本動作までそろっています。

Cookie設定やAPI呼び出しも可能。

Validationもそろってます。

APIのバリデーションもできるので、APIテストとしても使えそう。

Waitは「要素が見えるまで」「見えなくなるまで」のようにかゆいところに手が届きます。

面白いのは、保存されるたびに変更履歴をつけられる点です。右上に「Fork」みたいなボタンもあるので、ケースをGitのようにバージョン管理できるようです。

またTestimのデモページには以下のようなシナリオがスニペットとして並んでいます。これはすばらしい。たくさんあるのでざっくり翻訳。

  • 1 – Testim Demo(デモ): Example of click, scroll, drag, typing actions
  • 2 – Reusable groups(グループを使った再利用): Example of creating “Login” group to reuse. Reuseable groups makes test authoring and maintenance quicker and easier
  • 3- Validation Types(バリデーションの種類): validate static text, validate text with parameter, validate text with regex, element not visibe, element is visible
  • 4 – Conditions & Group Parameters(条件分岐やパラメタ): Run “login” group when text “login” is visibile and skip when user is already logged in
  • 5 – Data Driven Testing(テストデータを使ったデータドリブンテスト): Example of using “test data ” to set text & text validation
  • API – Script to Testim
  • API steps: API Action + API Validations
  • Cookies: Example of using custom JS step to remove cookies mid-test
  • Cookies (HTTP ONLY): Example of passing http only cookies in test data. **Do not run in incognito
  • Create custom actions with html and JS parameters(カスタムアクションの作り方): Validate button color with custom JS action
  • Custom Action Date+7: Creates a date parameter that returns today + 7 days. Format MM/dd/yyyy
  • Custom condition: How to use a custom condition ? In this test we added Test Data and are running the login group according to one of passed parameters.
  • Download CSV(CSVダウンロード): Download two CSV files and compare their content
  • Download CSV + Validations: Validate the name and number of rows of the downloaded CSV
  • Download JSON: Confirm JSON file download with “wait for download” rule
  • Download PDF: Confirm PDF file download with “wait for download” rule
  • Download ZIP: Confirm ZIP file download with “wait for download” rule
  • Exports parameters: Step 3 custom action -exporting credentials parameters to Global and Test scopes
  • Extract dynamically created data: Extract text from one element (step 3) and re-use it later in your test with parameters (step 6)
  • For Each Loop(ForEachもある): Execute the same set of actions\validations on multiple similar elements or multiple rows in a table
  • For Each Loop with Condition
  • For Loops: Repeat steps X times using iterator rules
  • For Loops with random value: Repeat steps X times using iterator rules and random values. Use case : create 10 contacts with 10 different random names with one group!
  • Group Context: How to use “Groups” over and over again for different elements
  • JS Refresh Page: Using Custom JS action to reload page
  • Open In New Tab: How to set up a step to open in a new tab
  • Testing multiple tabs scenario: Testing a scenario where multiple tabs are open
  • US51-T1-Login
  • Use a parameter in RegExp: Learn how to use add a parameter to a RegExp
  • User random data as parameters in test data: Create random parameters: random number and text & random number
  • Using random value generator as parameters in random step: Using “Generate random value” feature to generate random names, password, and emails
  • Validate File Size: Use the HTTP request “head” method to see the size instead of downloading the file
  • Validate email(Emailのバリデーションは作成中) – under construction
  • Validating links
  • While Loops: Calculator example : run a group of steps to add +1 as long as the value is smaller than 4
  • Work In Progres(乞うご期待): Create random parameters: random number and text & random number

サービスを比べるとかなり使い勝手が違いますが、基本機能はどこも実装されているようです。

TestimもMablと同じく、テスト実行結果を機械学習・AIで学習しながら、Flakyなテストを防ごうとしてくれるるので(トライアルではためせず)、あとはご自身のサービスの特性や欲しい機能にマッチしたものを選ぶと良さそうです。

あえてTestimの良さを語るなら、作成したテストをローカルのブラウザでも実行できるところ。MablだとMabl上で実行させるしかなく(たぶん)、毎回テスト結果をじっと待つ時間が長く感じます。

一方、Testimはローカルでさくさく動かせるので、WebDriverを書きながらちょっとずつテスト実行して試せる感じに近く、テスト実装時のトライアンドエラー時間がかなり短くなります。

mablもローカル実行全然できましたね。CLIでサクサク動きます(2021/01/21追記)。

実行時間もMablより早い気がします。同じ処理をMablと比べると、Mablで3〜5分なのがTestimで30秒。並列実行や環境の違いかもしれませんが、えっらい違うなー。

こちらもあんまりかわらなくなってきた気がします。

また、「ユーザーログからテストコードを自動生成する機能をリリース予定」とのことなので、単なるキャプチャリプレイを超えるサービスに成長するかもしれません。今後に期待です。