ローコードテスト自動化サービス mabl でローコードツール Node-RED の API で作った API のテストをしてみるメモです。
この記事は mabl Advent Calendar 2022 の 19 日目の記事です。
やってみること
ローコードテスト自動化サービス mabl でローコードツール Node-RED で、Node-RED でいくつかの HTTP レスポンスで、わたしがやりがちな設定ミスや実装ミスをあえて再現して、mabl 側でどう動くかやってみます。
目で見て実装がしやすく保守がしやすい特性のローコード同士で、良い感じになるかなというのを試してみたかったんです。
まず、アカウント登録
無料トライアルを始めるボタンからアカウント登録をはじめます。
めちゃくちゃ余談ですが、申し込み時に gmail 使おうとしたら、仕事のメール使ってね Please って言われたのが、かわいかったです。ちゃんと、仕事のメールにしました。
確認メールが来たので、アカウントの確認ボタンをクリックして、パスワード設定してアカウント作成完了。
日本語の UI もあってめっちゃありがたいです。
デスクトップアプリのインストール
おススメされているのでインストールします。
Windows の場合、mabl-バージョン-setup.exe がダウンロードできるのでインストール。
起動!
アカウントの ID とパスワード入れてログインしました。
Node-RED 側の API はこんな感じ
Node-RED のフローです。
- /mabl/503
- 意識的に 503 エラーを返すフロー
- レスポンスでステータスコード 503 の返答
- /mabl/post
- 本来、POST リクエストで返答するもの
- 今回はブラウザアクセスで GET リクエストでエラーが来るかどうか見る
- /mabl/nores
- Node-RED で自分がやりがちな http response ノードをつけ忘れて返答がなくタイムアウトになるケース
- /mabl/ok
- 通常のシンプルなレスポンス
というのを作ってテストしてみます。
mabl でテストを組んでクラウド実行
mabl のデスクトップアプリケーションで作業します。
最初のテストを開始するので、開始するボタンをクリック。
Choose an app で Node-RED の URL を指定します。
このように mabl により追加した 2 行以外はこのように設定しました。さきほどの API を一つずつアクセスするテストです。
Visit URL とある各設定はこのような感じ。app.url で、先ほど指定した Choose an app での Node-RED の URL が入っているので、いちいち入れなくて楽でした。
ということで、手元の実行でなくクラウドでの実行で試してみました。ローカルでやってしまうと、なにかど自動実行中作業できないので、クラウド実行だと他の作業ができてありがたかったです。
ということで、テストが成功しました!
テスト結果を見てみる
ということで、テスト結果をクリックして見てみます。
/mabl/503 では意図通り 503 エラーを検出できてました。
/mabl/post では、GET リクエストでアクセスしたので当然存在しないので 404 エラー。
/mabl/nores は、レスポンスが返ってこないので、ちゃんと 30 秒でタイムアウトが発生したことがログに残っています。
ということで、いろいろなレスポンスを試してみました。
背景として、このようにローコード Node-RED でカジュアルに API をサクサク作れるんですが、ちょっとしたノードの設定ミスで、見た目のデータの流れは合っているように見えても、今回のように POST リクエストで作ったものに意図と違って GET リクエストしてハマったり、レスポンスを司るノードを入れ忘れたり、改修時に削除してしまったりして、タイムアウトという不穏なエラーを発生させてしまうことがあります。
もし、そういうときに mabl のようなツールでテストを回せていたらすぐ検出できそうです。
実際、わたしもローカル実行なヘッドレス Chrome を Node.js で動かしてテスト自動的にやることはあるものの、あれ、コードで書いちゃうので 3 か月後見ても全然思い出せないときあるんですよね。コードだけでは。ですから、mabl のようにビジュアルで見えてローコードで設定できるのは良いと思いました。ローコードならではの保守のしやすさはポイント高いです。
クラウド実行についてはとても体験が良かったです。このようなクラウド実行の仕組み。これを私の自前実装でまじめにやると、ヘッドレスブラウザ入りのコンテナなり用意して、そこにテスト用の Puppeteer 的なコードを入れて、どこかでサーバレス的に実行するわけですが、手軽にやりたいはずのテストに、すごく準備に手間がかかる印象なので、これがポチポチとビジュアルでできるのはすごく新鮮で楽しかったです。
ほかにも E2E テストもできますし、アクセシビリティのテストも行けそうなので、実案件でちゃんとそういったテストが必要なときに、検討してみるのも楽しそうだなと思いました!