こんにちは。
デバイスソリューション部の鈴木です。
この記事は「NEXTSCAPE Advent Calendar 2021」の13日目です。
アプリ開発時に UI 自動テストツールである Magic Pod をご紹介します。
要約
UIテストの自動化導入の敷居を下げるツールを紹介し、UIテストの品質を高めたい人の選択肢を増やすことです。
UIテストの自動化とは
UI自動テスト、自動GUIテストなど表記ゆれがありますが、本記事では「UIテストの自動化」で統一します。UIテストの自動化の定義ですが、「人手を使わずに、UIの操作テストを実行すること」です。UIテストの自動化で得られる主なメリットです。
- 高頻度でテストを実施できるため、問題を早期発見しやすくなり、品質担保に繋げることができる
- 手作業でテストを実施しないため、テスト実施内容を保証しやすい
なぜ流行らないのか
ただ、実際は UI テストの自動化を導入しているプロジェクトはそれほど多くありません。
その主な理由をリストアップします。
1. 全体の工数削減には繋がらず、むしろ増える
テスト項目を自動的に実施してくれることから、どうしてもUIテストの自動化=プロジェクト全体の工数を削減できると想像してしまいますが、実際はその逆で、全体の工数が増えてしまいます。
2. エンジニアの工数増加につながる
上記は Android アプリの実装方法です。ある程度意味のある UI テストを実装する場合、小さなプロジェクトと同じぐらいの工数が追加されてしまいます。
ただえさえエンジニアの工数はカツカツになりがちですので、クライアント要望外の仕組みを導入するのは、どうしても優先順位が下がると思います。
また、仮にUIテストの自動化を導入した場合でも、UI の変更が入る度にテストコードを修正する必要があります。このコストをクライアントの方は「意味あるのかそれ?」と考えてしまい、導入できないかもしれません。
3. 実装、メンテナンスにノウハウが必要
Android の実装例をご覧いただくとお分かりだと思いますが、実装にはある程度ノウハウが必要になります。間違いなく、非エンジニアの方に丸投げできる作業ではありません。
エンジニアにおいても、数日で仕組みを理解して実装できるほど簡単ではないことが分かると思います。
Magic Pod について
上記の流行らない理由の内、「エンジニアの工数増加」と「実装、メンテナンスにノウハウが必要」の2つの負担を減らしてくれるのが Magic Pod です。
従来のテストツールと比較して、下記2点が大きな特徴となっています。
- キャプチャした画面から UI パーツを自動的に判別できる→エンジニアが各UIパーツに Label を定義する必要がないため、エンジニアの工数を増やすことがない
- テストコードではなく、ブロックプログラミング(学校のプログラミング授業で採用されているプログラミング手法)を利用できる→非エンジニアの方でも覚えやすい
詳細な紹介は公式サイトをご覧ください。
基本的な使い方
公式サイトの動画が非常に参考になるため、是非ご覧ください。
スマートフォンアプリ
Webアプリ
Q&A
・スワイプには対応しているの?
「対象項目が表示されるまでスワイプする」が1つの命令で実現できるため、簡単に対応できます。
・条件文は使えるの?
おおよその条件判定式はできます。現在表示している要素の値を変数に格納し、別画面でその値と比較するといった条件文も実現可能です。
・繰り返し処理はできるの?
できませんが、繰り返し処理が不要なテストケースがほとんどのため、あまり不便には感じないと思います。
・動的なリストの追加判定はどこまでできるの?
予めリストに要素追加後の画面をキャプチャし、テスト実施時の条件文にで、追加された要素が存在することを確認することで判定可能です。
・画像の差分確認はできるの?
可能です。ある画面の一部分がX.X% 差分があったらエラーとみなすといった細かい指定も可能です。
・ホームボタンなどは入力できるの?
戻るやホームなど、一般的なスマホに搭載されている機能は入力可能です。
・特殊キーは入力できるの?
できませんとの公式回答をいただきました。そのため、特殊端末のテストを一部実現できません。
まとめ
今回、初めてUIテストの自動化ツールである、Magic Pod を導入しました。
今まで導入の障壁になっていたテストコードを作成する箇所をノーコードで実装できることに技術の進歩を感じました。
サービスインしたアプリにも導入しやすいので、もし回帰テストを自動化したい場合に、Magic Pod は良い選択肢になるのではないかと思います。
今まで導入の障壁になっていたテストコードを作成する箇所をノーコードで実装できることに技術の進歩を感じました。
サービスインしたアプリにも導入しやすいので、もし回帰テストを自動化したい場合に、Magic Pod は良い選択肢になるのではないかと思います。