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
E2Eテストのflakyと向き合う / stac2020
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ぱいん
December 05, 2020
Technology
6.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
E2Eテストのflakyと向き合う / stac2020
ぱいん
December 05, 2020
More Decks by ぱいん
See All by ぱいん
それでも私が品質保証プロセスを作り続ける理由 #テストラジオ / Why I still continue to create QA process
pineapplecandy
0
470
テストについて相談を受けたときに いつもしていること (公開用) #テストラジオ
pineapplecandy
0
860
カジュアル面談って、もっとカジュアルに していいの / informal session #jasstnano
pineapplecandy
0
380
アジャイルQA2年生が、過去の自分に伝えたいこと #テストラジオ
pineapplecandy
0
310
PO,SMに送るテスト自動化の8原則に5箇条を添えて / scrumniigata2023
pineapplecandy
2
2.2k
システムテスト自動化スクリプトのレビュー観点を挙げてみたの
pineapplecandy
0
630
しくじり先生ーアジャイルテスト自動化立ち上げ迷走記 #D3QA / Failure teaches success in automated testing development
pineapplecandy
1
3.5k
これからシステムテスト自動化を始める組織のための勉強会(公開用)
pineapplecandy
2
3.3k
#WACATE 2019夏_夜の分科会_情報交換会_公開用
pineapplecandy
0
1.4k
Other Decks in Technology
See All in Technology
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
720
Pavlokで始める電撃駆動開発
sgrsn
0
170
[MIRU26] Open-Vocabulary Intention-Guided Object Detection in Diverse Scenes
keio_smilab
PRO
0
140
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
260
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
200
ブラウザ研修 2026
recruitengineers
PRO
3
500
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
120
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
190
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
150
制約理論(ToC)入門 2026版
recruitengineers
PRO
4
710
AIがコードを書く時代、人間は何を保証するのか———馬場さんと考える、開発者に求められる新しい責任と価値 - TECH PLAY
netmarkjp
0
1.3k
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
420
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
270
AI: The stuff that nobody shows you
jnunemaker
PRO
9
870
Optimizing for Happiness
mojombo
378
71k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Amusing Abliteration
ianozsvald
1
240
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
190
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
290
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Transcript
E2Eテストの flakyと向き合う ぱいん @pineapplecandy 2020/12/5 ソフトウェアテスト自動化カンファレンス @オンライン
本発表のゴール 1. flakyとそのメカニズムを理解する 2. flakyを疑似体験する 3. flakyに立ち向かう勇気 • 想定参加者 •
テスト自動化を始めたところ • テストの実行結果の不安定性を解決できていない • 自動テストの課題を見つめ直したい ソフトウェアテスト自動化カンファレンス2020 2
本日の発表のスコープ ソフトウェアテスト自動化カンファレンス2020 3 [4]
自己紹介 • ぱいん • テストアーキテクト@テストベンダー • 今は組込系のテスト自動化テックリード • Web系5年, 組込み系3年くらい
• 一児のパパ New! • 社外活動など • JaSST Review実行委員、JaSST Online実行委員、 SeleniumConf Tokyo Organizer • ソフトウェアテスト系の勉強会に参加したり、 企画したり、発表したり • 趣味 • Twitter • カラオケ 4
テスト自動化におけるflakyとは • 同じコードで成功と失敗の両方が観測できるテスト [1] • JaSST ’18 Tokyoの基調講演 “Advances in
Continuous Integration Testing @Google”以来よく使われる言葉に • 「不安定なテスト」ではなく「不安定なテスト結果」 [2] • テストコードだけが悪いのではない • 考えられる外部要因の例 • サーバ遅延(サーバ、バッチ処理、DBアクセス) • ネットワーク遅延 • システムへの負荷(同時アクセス、割込処理) ソフトウェアテスト自動化カンファレンス2020 5
なぜ自動テストは失敗するのか? 1. テスト対象が期待動作、 期待値と外れている 2. テストコードが誤っている ソフトウェアテスト自動化カンファレンス2020 6 合計金額 ¥3,000
テストコードの期待値: ¥5,000 合計金額 ¥5,000 テストケース: 合計金額が¥5,000と表示されること テストコードの期待値: ¥3,000
なぜ自動テストは失敗するのか? 1. テスト対象が期待動作、 期待値と外れている 2. テストコードが誤っている 3. テストケースに書いていない ことが起きる ソフトウェアテスト自動化カンファレンス2020
7 合計金額 ¥3,000 テストコードの期待値: ¥5,000 合計金額 ¥5,000 テストケース: 合計金額が¥5,000と表示されること テストコードの期待値: ¥3,000 合計金額 ¥5,000 テストケース: 合計金額が¥5,000と表示されること テストコードの期待値: ¥5,000 「表示される」ってすぐに?
Flakyを経験したことありますか? ソフトウェアテスト自動化カンファレンス2020 8 疑似体験してみよう
事例紹介 • Flakyにまつわる事例を紹介します • いつ、何が問題だったか考えてみてください • 正解はありません • [登場人物] •
ぱいん:テスト自動化チームのリーダー(5年目, 27才) • すいか:新卒のテスト自動化エンジニア(2年目, 24才) • [状況] • とある宿泊予約のWebシステムのE2Eテスト自動化 • 毎日デプロイされてくるステージング環境に流す • 実装できたテストから、順次実行 • Failしたら、終了処理でスクリーンショットが取られる ※リアルに限りなく近いフィクションです。 ソフトウェアテスト自動化カンファレンス2020 9
事例 (1/4) ソフトウェアテスト自動化カンファレンス2020 10 • ある日 • 「検索結果画面で合計金額を確認する テストがFailしたんですけど」 •
「エラーのスクショ残ってると思うから見てみて」 • 「見たんですけど、ちゃんと検索結果は表示されていて…」 • 「ん?どういうことだろう?そのテストだけもう一回流してみて くれます?」 • (15分後) • 「Passしました!なんだったんでしょうね…」 • 「通ったしOK, OK, 新しいテストの実装すすめちゃって!」 [3]
事例 (2/4) • 翌日 • 「検索結果画面で合計金額を確認するテストが • Failしたんですけど」 • 「またかー。エラーのスクショ残ってると思うから見てみて」
• 「見たんですけど、ちゃんと検索結果は表示されていて…」 • 「ん?どういうことだろう?そのテストだけもう一回流してみてくれま す?」 • (15分後) • 「Passしました!なんだったんでしょうね…」 • 「Passしたなら、よかったよかった!」 ソフトウェアテスト自動化カンファレンス2020 11
事例 (3/4) • 1週間後 • 「検索結果画面で合計金額を確認するテストが、 先週と同じところでFailしたんですけど。 これ、3度目ですよ」 • 「スクリーンショットみてみた?」
• 「Loadingのぐるぐるが表示された状態でした」 • 「なるほどね、じゃあmax waitを10秒伸ばしちゃえ」 • 「了解です!」 ソフトウェアテスト自動化カンファレンス2020 12
事例 (4/4) • 2週間後 • 「検索結果画面で合計金額を確認するテストが、 先週と同じところでFailしたんですけど」 • 「えー、まじかー。原因見てみて」 •
「4回目なんでもうそろそろ辛いです。サーバのログとかも見てみたん ですけど、どうやら検索結果が表示されるのが先週より10秒以上 遅くなったみたいです」 • 「先週waitを10秒伸ばしたところだよね。どうなってるんだ。開発チーム に問い合わせしてみよう」 ソフトウェアテスト自動化カンファレンス2020 13
いかがでしたか? ソフトウェアテスト自動化カンファレンス2020 14
状況の整理 • 事象 • 検索結果画面で合計金額を確認するテストがFailした • Fail時のスクリーンショットを見る限りは、最初は表示されていた • 対処 •
ある日:実行し直す (コード修正なし) • 翌日:実行し直す (コード修正なし) • 1週間後:max waitを10s伸ばす • 2週間後:開発チームに問い合わせる ソフトウェアテスト自動化カンファレンス2020 15
神様視点での考察 1. 原因調査したことで、仕様確認が行えた 2. もっと早く確認できていれば、対処が早かったの では 1. 3回再実行を行った 2. Max
waitを10s伸ばした ソフトウェアテスト自動化カンファレンス2020 16
Flakyの難しいところ、落とし穴 • 難しいところ 1. テストケースに明示的に書かれていないことに対して、 追い求めるべきなのか 2. 許容して良い範囲がどこまでか判断しづらい 3. 他の作業がある中で、調査時間を十分に割けるのか
• 落とし穴 1. Failすることに慣れてしまう 2. PassさせてOKにしたことにしたい誘惑 3. Flakyの調査で時間を無駄にしている ソフトウェアテスト自動化カンファレンス2020 17
取り組んでいる工夫 • Flakyが発生したときのルールを決める • 例) 別のビルドで2回Flakyが発生したら、開発チームに確認する • 怪しいところに時間計測ロジックを埋め込んでみる • timeライブラリ
@python • 実行記録を調査結果付きで残す • 本体ビルドver, 日付, テストケース, 実行結果 • Flakyの原因、タグ(フィルタ用) ソフトウェアテスト自動化カンファレンス2020 18
Flakyを事前に防ぐ取り組み (中級者以上向け) • 時間がかかる処理はTATの仕様を確認し、実装する️ ⌚ • アプリ連携 • DB処理 •
バッチ処理 • DL処理 • 開発のチケットを把握しておく️ ⌚ ⌚ • 影響しそうな変更を知ることができる • テストアーキテクチャを見直す️️️ ⌚ ⌚ ⌚ • APIテストやパフォーマンステストで検知できていたほうが良い • E2Eレベルでパフォーマンス観点は無視してよいとみなせるのであれば、 FailならRetryさせてFlakyを防ぐという戦略もOK ソフトウェアテスト自動化カンファレンス2020 19
推しの本紹介 [2] • 筆者が全員に読んで欲しい章 • 1章: テストのピラミッド • 8章: ピラミッドを登る
• 8.6 不安定なテストの扱い方 1. テストを書き直す 2. テストをピラミッドの下の層へ移動させる 3. 価値のないテストとみなし、 テストを止める 20 ソフトウェアテスト自動化カンファレンス2020
まとめ 1. Flakyに手を打たず放置すると、時間の浪費とエンジニアのモチ ベーションも下がってしまう事がわかった 2. Flakyになる原因を検知しやすくするために、できそうな工夫を紹 介 3. 最初からFlakyを減らすための取り組みを紹介 ソフトウェアテスト自動化カンファレンス2020
21
宣伝 • テスト自動化お悩み相談やってます • Discordなり、 Twitter DMでお気軽にどうぞ ソフトウェアテスト自動化カンファレンス2020 22
おまけ • あなたの自動テストは信頼できますか? • 開発の進捗状況を把握したり、システムを発展 させたり、早期に欠陥を捕捉したりするため に、プログラマー、顧客、テスターたちが書い た自動テストを信頼している ソフトウェアテスト自動化カンファレンス2020 23
参考文献 ソフトウェアテスト自動化カンファレンス2020 24 No. Slide # ページ名 URL 1 5
Advances in Continuous Integration Testing @Google (PDF, JaSST ‘18 Tokyo) http://jasst.jp/symposium/jasst18tokyo/pdf/A1.pd f 2 5 初めての自動テスト ―Webシステムのための自動テ スト基礎 (Jonathan Rasmusson 著、玉川 紘子 訳) https://www.oreilly.co.jp/books/9784873118161/ 3 10-13 テスト自動化学習サイト HOTEL PLANISPHERE https://hotel.testplanisphere.dev/ja/ 4 4 テスト自動化研究会ー本会につ いて https://sites.google.com/site/testautomationresea rch/about