Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
テストでデータの確認を自動化した話
Search
Yurika Shiba
March 09, 2023
Technology
0
87
テストでデータの確認を自動化した話
Cypressでデータの確認を自動化した際の資料です。
Yurika Shiba
March 09, 2023
Tweet
Share
More Decks by Yurika Shiba
See All by Yurika Shiba
生成AIを活用したSNS運用アシスタント
sbinusan
0
690
Other Decks in Technology
See All in Technology
re:Invent Recap (January 2025)
scalefactory
0
340
ChatGPTを使ったブログ執筆と校正の実践テクニック/登壇資料(井田 献一朗)
hacobu
1
160
パブリッククラウドのプロダクトマネジメントとアーキテクト
tagomoris
4
770
レイクハウスとはなんだったのか?
akuwano
15
2k
Oracle Cloud Infrastructure:2025年1月度サービス・アップデート
oracle4engineer
PRO
0
220
AIエージェントについてまとめてみた
pharma_x_tech
13
8.7k
20250129 Findy_テスト高活用化
dshirae
0
230
DevSecOps入門:Security Development Lifecycleによる開発プロセスのセキュリティ強化
yuriemori
0
240
[2024年10月版] Notebook 2.0のご紹介 / Notebook2.0
databricksjapan
0
1.6k
データ基盤の成長を加速させる:アイスタイルにおける挑戦と教訓
tsuda7
0
110
HCP TerraformとAzure:イオンスマートテクノロジーのインフラ革新 / HCP Terraform and Azure AEON Smart Technology's Infrastructure Innovation
aeonpeople
3
990
顧客の声を集めて活かすリクルートPdMのVoC活用事例を徹底解剖!〜プロデザ!〜
recruitengineers
PRO
0
200
Featured
See All Featured
Making Projects Easy
brettharned
116
6k
Music & Morning Musume
bryan
46
6.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
20
2.4k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Navigating Team Friction
lara
183
15k
Done Done
chrislema
182
16k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
990
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
A Modern Web Designer's Workflow
chriscoyier
693
190k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
520
Transcript
テストでデータ の確認を自動化 した話 志葉 友梨香
きっかけ 2022年に行ったQUREO英語化
全てのページ、レッスンを英語化
全てを手動で確認... 他にもメニューやエディタ、各種ポップアップなど...
チャレンジコースも絶賛英語化中 チャレンジコースは主にアルバイトさんに翻訳チェックを依頼しています。 キャラクター名は間違っていない? コースタイトルはおかしくない? 自然なセリフになっている?
英語版データの運用方法 翻訳されたデータはスプレッドシート上で管理 ↓ アルバイトさんが直接編集 ↓ そのまま開発環境に反映
英語版データの運用方法 翻訳されたデータはスプレッドシート上で管理 ↓ アルバイトさんが直接編集 ↓ そのまま開発環境に反映 ↓ もう一度手動でチェック...?(全161レッスンある)
手動チェックはあまりにも大変 例えばデータに不備があるとペー ジが真っ白に。 どのデータがおかしいのか? 日本語版は問題ないのか?
この確認をもう少し楽にできないか?
テストを導入しよう!
フロントエンドのテスト 静的テスト 単体テスト 結合テスト E2Eテスト
フロントエンドのテスト 静的テスト 単体テスト 結合テスト E2Eテスト←今回導入したのはこれ
E2Eテストとは E2E (エンドツーエンド) テストは、アプリケーションが期待どおりに動作し、ユーザーのタ スクやプロセスの種類を問わずデータフローが適切に機能することを確認する手法で す。 具体的には、エンドユーザーの観点に立って現実世界で想定されるシナリオをシ ミュレートします。 (https://circleci.com/ja/blog/what-is-end-to-end-testing から引用)
つまり... ブラウザなどの環境で、実際のAPI、データを使い、ユーザーがサービスを利用するのと 同じようにサービス全体をテストします。
E2Eテストを導入するメリット ユーザーが使うのと同じようにシステム全体をテスト ↓ レッスン画面をテストすることでデータと動作チェックを行える ↓ さらにスクリーンショットを活用することで文法チェックも可能になる わざわざ1レッスンずつアクセスしなくてもよくなるはず
Cypressを導入 - 高速な実行速度 - 簡単なセットアップ - ユーザビリティの高さ - ブラウザ操作のシミュレーション -
豊富な機能 - ドキュメントの充実
いざ導入 導入はとても簡単 npm install cypress --save-dev 実行 npx cypress open
テストを書いてみる
テストを追加していく レッスン画面の操作のテストを追加します 1. レッスンページへアクセス → データに不備があればこの時点で失敗する 2. レッスンを進める → 操作できなければ失敗する
3. 正解画面のエディタをスクショする → 実際にアクセスしなくてもブロック内の英文をチェックできる
ここで問題が... キュレオはレッスンごとに不定期に説明スライドなどの要素があり、cypressではそのよ うな操作に対応するのが難しい ↓ 対応する方法もあるがサービスの性質上コストが高いと判断 想定していた「レッスン画面の操作のテスト」ができないことに...
データのチェックのみを行うことに
テストできるデータを選別 下記3点のテストを行うことにしました。 - viewinfo - アルゴのセリフ - 設計図の選択肢
viewinfoのテスト viewinfoとは左のような画面を 構成するjson形式のデータ。 レッスンごとに「project_id」が 割り振られ管理されている。 テスト内容 - 空でないこと - JSON形式であること
アルゴのセリフのテスト レッスン中に登場するアルゴの セリフ。 テスト内容 - マルチバイト文字が含まれてい ないこと
設計図の選択肢
設計図の選択肢 プルダウン部分。 テスト内容 - 選択肢が1つも しくは3つであ ること
実際のコードの紹介と テストの実行をしてみます
データの不備に気付けるようになった!
確認と修正が簡単になった! - 1レッスンずつページにアクセスしなくても良くなった - 前よりもデータ更新を行いやすくなった - データについては担保できている状態になった - 不備が見つかった際もテストのみで詳細に追うことができる
テスト最高! やったぜ