asken テックブログ

askenエンジニアが日々どんなことに取り組み、どんな「学び」を得ているか、よもやま話も織り交ぜつつ綴っていきます。 皆さまにも一緒に学びを楽しんでいただけたら幸いです! <br> 食事管理アプリ『あすけん』 について <br> https://www.asken.jp/ <br>

あすけんiOSでの品質保証の取り組み

はじめに

こんにちは。モバイルのテックリードの大澤です。普段はあすけんのAndroid/iOSアプリを開発しています。

昨年から取り組んできた品質改善のテスト戦略でやってきたことを共有したいと思います。

Mobile勉強会 ウォンテッドリー × チームラボ × Sansan #19で登壇した内容の補足となりますので

なぜ、あすけんiOSでテスト戦略を導入したのか?でテスト戦略の導入の内容は話ので割愛します。

取り組みと成果

E2Eテストの自動化

Before

  • リリース前の手動テストをエンジニアメンバーで実施していた
  • テスト実行に多くの工数がかかっていた
  • 人的ミスによるテスト漏れのリスクがあった

After

  • MagicPodを活用してテストを自動化
    • ユーザーが必ず通過する入会フローから退会までを自動的にテスト可能にした
  • スケジュールビルドで1日1回自動実行されるようになった

  • リリース前に問題を早期発見できるようになった
  • 手動でのテスト工数を大幅に削減

Visual Regression Testing(VRT)

Before

  • UIの変更による意図しない見た目の崩れを手動で確認していた
  • 細かな変化を見逃すリスクがあった

After

  • 画面のスナップショットを撮り、前後比較する自動テストを導入
  • Developブランチマージ時に自動実行
    • Unit Testにスナップショットを撮るケースを追加
    • reg-cli を使って差分を自動検知
  • 入会フローで試験的に導入し、効果を確認
  • 今後、適用範囲を広げていく予定

AIの活用

Before

  • 不具合調査に多くの時間を費やしていた
  • コードレビューはすべて人間が行い、定型的なチェックにも時間がかかっていた

After

  • 不具合調査の効率化
    • カスタマーレビューやお問い合わせ内容からAIが問題を推測
    • AIと協働することで調査時間を削減
      • 通常30分から1時間のところ、協働することで5分から10分で終わった事例もありました
  • AIによるコードレビュー
    • DevinRooCodeを活用しています
    • コーディングルールなどガイドラインを元に指示を出して、レビューをしてもらっています
    • ユニットテストの書き方や範囲の妥当性をAIがチェック

  • AIと人間の役割分担が明確になり、それぞれが得意な領域に集中できるようになった
    • 定型的な部分はAIが見て、ロジックや仕様確認は人間が行う

課題

MagicPodの安定性問題

  • 課題: UI変更や動的な画面でのテスト失敗がよく発生しました
  • 解決策: よく失敗する画面ではUIにaccessibilityIdentifier付与することで安定させることができました

VRTの範囲拡大

  • 課題: 導入したばかりなのでカバー範囲が狭く、VRTを実装する想定で画面を設計していないのでリファクタリングが必要になります

AIとの協働

  • 課題: どこまでAIレビューで問題ないか、人間がどの範囲に責任を持つかは模索中で検討事項です

今後の展開

  • モバイルとして品質保証をさらに強化していき、エンジニアにしかできないことに集中できる環境を目指します

askenでは新しい仲間を募集しています!

www.asken.inc