テスト自動化で試行錯誤した話
こんにちは!
mikan Advent Calendar 2023の23日目を担当するchiakiです。
22日目の記事は、弊社代表髙岡さんによる教育機関向け事業「mikan for School」における技術意思決定についてのお話でした。
mikanはtoC向けのアプリだけでなく、学校・学習塾でmikanを活用して学習できるサービスも展開中です。ぜひ読んでみてください!!
さて、私は現在一児の母で絶賛子育てしながらmikanのQA業務を担当している者です。
今回の記事では、テスト自動化で試行錯誤したことについてお話ししたいと思います。
テスト自動化ツール導入の経緯
QAチームでは2022年からAutify for Mobileというツールを使い、ネイティブアプリ(iOS)のテストを自動化しています。
テスト自動化導入の背景
以前からQA業務に負担がかかっていて、テスト実施における工数削減が課題となっていました。
決まった内容のテストであればできるだけ自動化してテスト実施の負担を減らしたい、新規施策のテストや業務改善にもっと時間を割きたいという理由から、テスト自動化ツール導入を検討していた背景があります。
Autify for Mobileを選んだ理由
QAチームは非エンジニアのため、コードを書いてのテスト自動化が難しくノーコードで自動化できるツールを探していました。
AutifyとMagicPodでトライアルを試し、操作が簡単でシナリオを早く作れることなどで検討した結果、Autify for Mobileで自動化していくことに。
テスト自動化して良かったこと
テスト自動化して良かったと感じていることは以下です。
現状、自動化の恩恵を受けられているのではないかと思います。
当初の目的であったテスト実施工数削減を実現できた
テストの失敗で機能差分や不具合に気づきやすくなった
シナリオメンテナンスが思ったよりもかかっていないので運用しやすい
テスト自動化運用するまでに色々あった
現在は比較的安定してテスト自動化を運用できていますが、最初に自動化した回帰テストのシナリオ作成やテスト実行準備までは8ヶ月、現状の運用に近くなるまでにさらに2ヶ月くらいかかりました😭
テスト自動化初心者ということもありますが、途中あまりにタスクが進まず「やっぱりテスト自動化やめようか・・・」なんて話も出ていたほど。
自分たちの業務削減のために導入したのに、逆に自動化タスクに圧迫されていました。
シナリオ作成まで8ヶ月かかった理由
おそらくテスト自動化界隈ではあるあるな話だと思いますが、テスト自動化タスクに割く時間を捻出できなかったことです。
テスト自動化業務は前任の方から引き継いだもので、当時複数人でシナリオ作成の担当分けをしていましたが、テストが多ければテスト優先となり、自動化に割く時間がどんどん減っていきました。
(QA初心者、自動化も初心者だったのもあり、いろんな面で時間がかかっていた背景もあります)
そして作成や検証が毎週数本しかできないという負のスパイラルに突入😭
自動化タスクを進めたい気持ちはあるのに、なかなか時間が捻出できずツラミ状態が続きました。
時間を作るためにやったこと
色々試行錯誤してみましたが、なかなか上手くいかず最後にテスト自動化専任担当者を決めることに!
かくして私が専任担当になったわけですが、専任になってメリットが多いと感じました。
メリット
スイッチングコストがかからないため作業効率が大幅に上がった
当初シナリオを作成・検証するだけだと思っていたが、Autifyに向き合うことで新たなタスクを発掘できた
デメリット
1人でやってるので属人化しちゃう(今後改善していきたいところです)
結果
毎日粛々と自動化を進めていったところ、2ヶ月後にはある程度シナリオが完成し、実際に回帰テストのサポートとして運用していけることになりました🎉🎉
ここまで辿り着けたのは、前任の方がテスト自動化導入から計画や進め方の礎を築いてくださったこと、当時QA業務を全面的に担当してくれたQAチームのお二人や社内の方々の協力、そしてAutifyカスタマーサポートの親身な対応があったおかげだと思います。
その後運用しにくい問題が発生
ようやく回帰テストのサポートとして使い始めたものの、なんだか運用しにくいんですよね。
何が運用しにくかったたというと、期待通りでなかったという点です。
自動化した回帰テストのテスト実行が完了するまで1日近くかかる
(テスト実行にかかる時間、もっと早いと思ってた)
テスト実行中に途中で失敗するシナリオ続出
(あれ?自動化したのに手動確認数あんま変わってなくない?)
運用改善のためにやったこと
以下2つを実施したことで、運用が大幅に改善しました!
1.ステップ数削減とシナリオ統合
そもそもステップ数が多かったため、テスト実行して完了するまで1日近くかかっていました。
ステップ数を多くしてしまった原因は、手動でおこなっている回帰テストをテストシナリオで忠実に再現してしまったからです。(完璧すぎた・・)
改善のため以下のステップ削減ルールを決めて、シナリオを1つ1つ点検しました。
既存確認(アカウントログインあり)だとログインまでのステップ数が多いため、確認画面までのステップ数が少ない新規確認(アカウントログインなし)にできるものは変更する
シナリオで重複して確認している箇所はステップを削る
ステップ数が削減できたもののなかで、複数のシナリオを1つにまとめてもステップ数がそこまで膨らまない場合はシナリオを統合
2.デバッグメニューや環境変数を使って失敗を防ぐ
iOSチームに依頼してテスト実行しても失敗しにくいよう、デバッグメニューや環境変数を用意していただきました。
制限時間の無制限化
mikanの学習では制限時間がありますが、Autifyで学習画面遷移に少し時間かかると制限時間超過してしまい自動で次の問題に遷移してしまうため、必ずと言っていいほどテスト失敗となるのが悩みでありました。
解決方法として、環境変数を使って学習における制限時間を無制限化することで、学習時のテスト失敗を大幅に減少させることに成功!
新規DL後画面にデバッグメニューを設置
Autifyでは基本的に新規DL後アプリを起動した状態から開始となるので、新規DL後画面にデバッグメニューへの導線を設置。
事前にどんなステータスでどんな状態で(ABテスト等のtreatment、Controlの選択も可能)テストするか選択できるようにしました。
新規DL画面でオンボーディングスキップボタンを追加
先ほども説明しましたが基本的に新規DL後の状態から開始となるので「同意してはじめる」ボタンを押してしまうとオンボーディングに突入してしまい、テストしたい画面まで進むまでにステップ数が多くなってしまいます😭
それを防ぐため、オンボーディングスキップボタンを設置いただきました。
スキップボタンは2つあって、スキップ後のステータスがフリートライアル(実質Premiumステータス)と無料ステータスが選べるようになっていて、使い勝手が良すぎます!(考えたの誰ですか?)
結果
今回の課題であった運用しにくかったポイントは無事改善して、スムーズな運用が実現しました!
回帰テストのテスト実行に約1日かかっていたが、1/3削減して約8時間でテスト完了できるようになった👏
デバッグメニューを駆使して学習時のテスト失敗が大幅に減った👏
そのほか今回の改善で、シナリオ作成が以前よりも早く完成できるようになったことや新規機能が加わってもメンテナンスの負担が軽減されたことなど、他の面でも運用しやすさが格段にアップしたと思います。
さいごに
改めてテスト自動化について振り返ってみて、ここまでやり遂げられたのは周りの方々のサポートあってこそ。社内外含めて関わった方々に感謝を伝えたいです。
今後さらにテスト自動化とうまく付き合っていけるように、さらなる改善を目指していきます!
そして、品質が高いことは当たり前のこと、ユーザーさまが使いやすく・楽しく覚えられる英語アプリをお届けできるよう、これからも努力していく所存です。
さいごに、現在mikanでは一緒に英語アプリサービスを作っていく仲間を募集しています。
特にデザイナー&エンジニアを積極採用中です。
ご興味のある方はHPよりぜひご応募ください!