見出し画像

テスト自動化ツールを比較してみた話


株式会社カンリー、エンジニア部の加藤です。
私はCanlyホームページチームに所属しており、その中でQA(品質管理)を主に担当しています。
私の所属する開発チームでは、アジャイル開発の手法の一つであるスクラムでの開発を実施しており、HP来訪者の実店舗への来訪導線を最適化するHPが簡単に作成できる『 Canlyホームページ 』を開発・運用しています。 

Canlyホームページの地図検索画面

弊社では、現在自動テストツール「MagicPod」を導入してQAを行っています。
本記事では弊社がMagicPodの導入に至った背景、また何故数あるテスト自動化ツールからMagicPodを選定したのかなどについて紹介させていただきます。
テスト自動化ツールの導入を迷っている方、会社様などの参考になれば幸いです。



テスト自動化を行った背景

死活監視(サイトがアクセスできる状態であるかの検知)やその他システムによる不具合を迅速に検知するため、定期的に自動実行されるE2Eテストを実装することとなったことがテスト自動化の始まりでした。

というわけで私たちQAチームが自動テストの実装を担当することとなり、既に社内のサーバー監視、ログ監視ツールとして導入されていた「Datadog」を使って実装を行っていきました。

Datadog自体はSaaS形式のモニタリングサービスとして、主にサーバー監視などに使われているツールです。
機能の一つとして自動ブラウザテストがあり、開発者の作業環境の自動テストは私が担当する前から既に作成されていました。開発環境のシステムがダウンした際に自動で各画面の動作テストが走り、検知するようなイメージです。

Datadogで自動化をしてみてわかったこと

Datadogは画面上で検証対象のサイトを開き操作をしていくだけで自動でテストケースが作成される、コーディングを必要としないツールです。
コーディング経験がほとんど無い私でも(お恥ずかしい限りです)テスト自動化が行え、誰でもすぐに扱えそうな印象を受けました。
しかしいざテスト作成を始めてみると、あくまでDatadogのメインのサービスはモニタリングということもあり機能面などで使いにくさを感じる場面が多く、慣れるまではなかなか苦労しました。

結局Datadogで作成できたテストケースはごく単純なもので”指定した画面が403などのエラーにならないこと”や”遷移ボタンを押下した際に正常に指定した画面に遷移できること”などの正常動作系の確認に留まりました。
Canlyホームページの本番サイトを対象とし、不具合をすぐに察知できるように毎日1時間おきにテスト実行を行うように設定して運用開始しました。
テストケース作成中はDatadogに対して使いにくいと感じる面は多かったですが、運用してみるとSlack通知連携でメンション先まで指定できたり、テスト実行頻度も容易に確認・変更が行え実行過去ログも残してくれたりと、あまりストレスを感じることなく運用することができました。


実際に使ってみてわかったメリット・デメリットを挙げてみます。

メリット

  • コーディング未経験者でもある程度のテストケースが構築できる

  • レコーディング機能によって直感的な操作が可能
    └レコーディング機能を使うと、画面上で行ったページ操作やアサーションが自動でテストケースに記録される

  • Slack通知連携が可能で、メンション先も指定できる

デメリット

  • 国内にDatadogでE2Eテストを実施している企業が少なく、自動テストに関するナレッジがあまり出回っていない
    └テスト設計で詰まった際に参照できる記事がほとんどないため、社内でナレッジを積極的に蓄積させる必要がある

  • ノーコードだと”指定した画面が表示されるか””画面内の指定した値(電話番号など)が表示されるか”などのような単純なテストしか構築できない
    └開発経験が乏しいメンバーとの相性が悪い

  • テスト対象のUIが変更された場合にテストケースを手動で修正する必要があり、メンテナンスが必要

  • 日本語に対応していない
    UIがとっつきにくく、キャッチアップコストが増加

  • 料金形態がテスト実行1回あたりの従量課金制で、短い間隔で繰り返し行うテストに向いていない
    短いスパンで何度もテストを走らせたいという今回の目的と相反する料金形態で、実行すればするほどコストがかさんでいってしまう

特にデメリットとして挙げた下2点が大きく、社内にテスト自動化のノウハウがあまり蓄積していなかったこともあり運用コストが想定以上に増加してしまいました。
また、この時期にQA社員が増員したこともあり、属人化を防ぎ誰でもQA全体で自動化を推進していくためにも、キャッチアップコストの大きいDatadog運用を取りやめて他のツールを選定することにしました。

MagicPodとAutify

新しいツール選定の際は以下を重要視しました。

  • 実装、メンテナンスに開発知識が不要なこと(=誰でも使える、属人化しない)

  • 初期キャッチアップコストが低いこと

  • 実装後のメンテナンスコストが低いこと

  • テックブログなどで情報交換が盛んなこと

いろいろと探してみた結果「MagicPod」「Autify」の2ツールに候補を絞りました。
どちらも国内での知名度が高く紹介記事などのナレッジが充実しており、また弊社と同フェーズのスタートアップ企業がこの2ツールを多く導入していることなども理由としてありました。

どちらも無料トライアルがあったため、実際に使ってみながら選定を行うことができました。
トライアル中のサポート対応も手厚く、導入ハードルが低そうな印象でした。

使用感、料金体系を踏まえた上で両者を比較してみると以下のようになりました。

MagicPod

メリット

  • テスト実行回数に制限が無い

  • 条件分岐などノーコードで複雑なテストが行える

  • サポートに質問がしやすい

  • 公式Slackでユーザーの情報交換が活発に行われている

  • テストケースの自動修復機能によりメンテナンスが容易

デメリット

  • テスト作成時に画面ごとに要素特定が必要となり、Autifyと比較して作成に時間がかかる

  • キャッチアップコストが少し高い
    └画面によってAIが要素を正しく特定できない場合に手動でXPathを指定する必要がある、など


Autify

メリット

  • レコーディング機能によってページ操作やアサーションが自動でテストケースに記録されるため誰でもすぐにテストを作成できる

  • 最大10並列でテストを実行できる

  • テストケースの自動修復機能によりメンテナンスが容易

デメリット

  • テスト実行回数に上限があり、上限(400回)以降は従量課金制

  • ノーコードではMagicPodほどの複雑なテストは行えない


最終的にMagicPodを導入することとなりましたが、導入を決めた一番の理由はテスト実行回数でした。Autifyは実行回数の制限があり、Datadogと同様に何度も繰り返し実行を行うテストと相性があまり良くありませんでした。

キャッチアップコストや実装のハードルの低さでは操作のレコーディング機能を持つAutifyに軍配が上がります。MagicPodは操作にある程度の慣れが必要でレコーディング機能もありませんが、細かいテストパターンも直感的に指定することができ様々なケースに対応可能です。
また、Slack上でMagicPod社のサポートにすぐに質問ができ、他のユーザーと情報交換が行える点もメリットとして大きいと感じました。

MagicPodを導入してみて

やはりテスト実行が無制限であることはコスト面でのメリットが非常に大きいです。Autifyと比較するとMagicPodはテストケースを自由に作れるようになるまでに時間は少しかかるものの、弊社と同じように同じテストを日に何度も走らせたい場合には非常におすすめです。
テストケースのメンテナンスも容易で、コーディングスキルも必要としませんので経験が浅いエンジニアの方や、普段コーディングから離れているPMの方などにも扱えることも大きなメリットかと思います。
特に、普段フロント側の検証を行っていてコーディングにあまり触れていないQAエンジニアの方に非常におすすめです。

MagicPodを使用した実際の具体的なテストフローについては、同じチームの影山が紹介記事を投稿しております。よろしければそちらもご参照ください。


さいごに

株式会社カンリーでは一緒に働く仲間を募集しています!
カンリーのバリューに共感できる方、ちょっと話を聞いてみたいという方、ぜひご応募ください!

この記事が気に入ったらサポートをしてみませんか?