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
84
テストでデータの確認を自動化した話
Cypressでデータの確認を自動化した際の資料です。
Yurika Shiba
March 09, 2023
Tweet
Share
More Decks by Yurika Shiba
See All by Yurika Shiba
生成AIを活用したSNS運用アシスタント
sbinusan
0
580
Other Decks in Technology
See All in Technology
ドメインと向き合う - 旅行予約編
hidenorigoto
4
500
Strong Skipping Mode によってrecompositionはどう変わったのか
mikanichinose
0
110
ITエンジニアとして知っておいてほしい、電子メールという大きな穴
logica0419
1
270
【shownet.conf_】3Dアプローチで守るセキュリティ
shownet
PRO
0
250
【shownet.conf_】革新と伝統を融合したファシリティ
shownet
PRO
0
220
Sansanにおける全社横断データ分析基盤の挑戦と未来 / Challenges and Future of Cross-Organizational Data Analytics Platform at Sansan
sansan_randd
2
300
10Xでのデータ基盤の変遷とこれから: データマネジメントのリアル 〜BtoB企業3社の歩みとこれから〜
10xinc
6
1.2k
リスクから学ぶKubernetesコンテナセキュリティ/k8s-risk-and-security
mochizuki875
1
250
【shownet.conf_】クロージングセッション
shownet
PRO
0
200
Vista FinderMx
jtes
0
160
All your memory are belong to… whom?
ennael
PRO
0
400
RemixでVersion skewに立ち向かう
chimame
1
720
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
The Brand Is Dead. Long Live the Brand.
mthomps
53
38k
WebSockets: Embracing the real-time Web
robhawkes
59
7.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
80
5.2k
In The Pink: A Labor of Love
frogandcode
139
22k
GraphQLとの向き合い方2022年版
quramy
43
13k
Become a Pro
speakerdeck
PRO
23
4.9k
[RailsConf 2023] Rails as a piece of cake
palkan
49
4.7k
Infographics Made Easy
chrislema
239
18k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
We Have a Design System, Now What?
morganepeng
48
7.1k
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レッスンずつページにアクセスしなくても良くなった - 前よりもデータ更新を行いやすくなった - データについては担保できている状態になった - 不備が見つかった際もテストのみで詳細に追うことができる
テスト最高! やったぜ