エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

mablでassertエラーでもテストを続けて欲しい。そう、最後まで。

【QAチームブログリレー3日目】 おはようございます。エンジニアリンググループ QA チームの津向です。

前回も健康診断で目標達成できず、生活に気を使うようになりました。 最近はノンフライヤーでオートミールクッキーを焼いていましたが、美味しくないので試行錯誤を重ねたところ、小麦粉とバター、オーブンで普通のクッキーを焼くに至りました。 やはり油、油は美味しい。

誕生日に食べたお肉。美味しい。

mablでassertエラーでもテストを続けて欲しい

話は変わってエムスリーではmablの自動テストに力を入れています。

自動テストを作成・実施していると、assertエラーになってもテストを続けて欲しいという状況がよく発生すると思います。

例:

  • ヘッダー表示確認を行うので、エラーが出ても全サービスで確認実施したい

  • 作成中なのでエラーでも最後まで動きが見たい

など

そんな時にはassertの項目にある「失敗時も続行し、警告を表示する」または「テスト終了時に失敗する」にチェックを入れておくと、エラーでもテストを続行します。

「テスト終了時に失敗する」の実行結果

「テスト終了時に失敗する」は失敗扱いになるためクラウド実行結果一覧でも失敗と分かります。 ただし、Plan実行で失敗になった場合は次Stageのテストが開始されないため注意が必要です。

ローカル実行やmabl.cliの場合でも同様に最終結果で失敗として表示されます。

「失敗時も続行し、警告を表示する」の実行結果

「失敗時も続行し、警告を表示する」はテスト終了後、クラウド実行で結果を確認しても成功として表示されます。 Plan実行で警告が出た場合でも次Stageのテストは開始されます。 中身を見ると警告付き合格と表示されますが、毎回中身を見るのは結構大変です。

ローカル実行やmabl.cliの場合でも同様にPassedとして表示されます。 失敗箇所にWARNが表示されますが長いテストやPlan単位で実行しているとログが膨大になり、毎回探すのは結構大変です。

「失敗時も続行し、警告を表示する」「テスト終了時に失敗する」共に便利ですが、使い所を分けないとクラウド実行回数増加や見落としに繋がるので要注意です。

mabl.cliのログを見やすくしたい

「失敗時も続行し、警告を表示する」は失敗にならず完了できるため便利ですが、確認が手間です。 というわけで最低限のログでWARNがあったら抜き出すようにします。 mabl.cliからテスト実行するとWindows、macともに実行結果をファイルに書き出すことができるので利用します。

mac

mabl tests run --id XXXXXXXXXXXXXXXX > "test_log" & tail -f "test_log" | grep --line-buffered -e "Test Failed" -e "ERROR" -e "WARN" -e "Running test" -e "Test Passed" -e "Total time" -e "Test count:" -e "Passed:" -e "Skipped:" -e "Failed:"

Windows

mabl tests run --id XXXXXXXXXXXXXXXX > "test_log" | powershell -Command "Get-Content -Encoding UTF8 -Path 'test_log' -Tail 10 -Wait | Select-String 'Test Failed|ERROR|WARN|Running test|Test Passed|Total time|Test count:|Passed:|Skipped:|Failed'"

上記はidを指定していますが、planやlabelも指定できます。 シェルやバッチファイルにし、ログファイル名も実行日時を自動で入れると証跡として利用できるので便利です。

実行すると下記のように開始するテスト名、WARN、成否などシンプルな出力になります。

これでログが大量でも埋もれずに出力されるため、確認しやすくなります。

We're hiring!

エムスリーでは品質技術に興味のある方、mablに限らず自動テストに興味のある方、不思議と不具合をピンポイントで引いてしまう方、など様々なQAエンジニアを募集しています。

jobs.m3.com