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
ぱいん
December 05, 2020
Technology
2
5.8k
E2Eテストのflakyと向き合う / stac2020
ぱいん
December 05, 2020
Tweet
Share
More Decks by ぱいん
See All by ぱいん
テストについて相談を受けたときに いつもしていること (公開用) #テストラジオ
pineapplecandy
0
81
カジュアル面談って、もっとカジュアルに していいの / informal session #jasstnano
pineapplecandy
0
230
アジャイルQA2年生が、過去の自分に伝えたいこと #テストラジオ
pineapplecandy
0
190
PO,SMに送るテスト自動化の8原則に5箇条を添えて / scrumniigata2023
pineapplecandy
2
1.7k
システムテスト自動化スクリプトのレビュー観点を挙げてみたの
pineapplecandy
0
440
しくじり先生ーアジャイルテスト自動化立ち上げ迷走記 #D3QA / Failure teaches success in automated testing development
pineapplecandy
1
3.2k
これからシステムテスト自動化を始める組織のための勉強会(公開用)
pineapplecandy
2
2.8k
#WACATE 2019夏_夜の分科会_情報交換会_公開用
pineapplecandy
0
1.3k
#オンライン飲み会 経験ベースで語るテストエンジニアのための英語術 Ver.0.190113
pineapplecandy
0
1k
Other Decks in Technology
See All in Technology
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
100
FlutterアプリにおけるSLI/SLOを用いたユーザー体験の可視化と計測基盤構築
ostk0069
0
100
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
630
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
いざ、BSC討伐の旅
nikinusu
2
780
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
110
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
120
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
180
Platform Engineering for Software Developers and Architects
syntasso
1
520
Featured
See All Featured
Building Adaptive Systems
keathley
38
2.3k
Six Lessons from altMBA
skipperchong
27
3.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Site-Speed That Sticks
csswizardry
0
28
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Rails Girls Zürich Keynote
gr2m
94
13k
How to Ace a Technical Interview
jacobian
276
23k
Visualization
eitanlees
145
15k
Scaling GitHub
holman
458
140k
RailsConf 2023
tenderlove
29
900
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