Successfully reported this slideshow.
Your SlideShare is downloading. ×

さよなら Flaky 不安定なテストの探し方

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
certificate VSP 2016
certificate VSP 2016
Loading in …3
×

Check these out next

1 of 21 Ad

さよなら Flaky 不安定なテストの探し方

Download to read offline

2021/06/26 オープンソースカンファレンス2021 Hokkaido の発表資料です。
https://event.ospn.jp/osc2021-online-do/session/335828

2021/06/26 オープンソースカンファレンス2021 Hokkaido の発表資料です。
https://event.ospn.jp/osc2021-online-do/session/335828

Advertisement
Advertisement

More Related Content

Similar to さよなら Flaky 不安定なテストの探し方 (20)

More from Ryo Mitoma (11)

Advertisement

Recently uploaded (20)

さよなら Flaky 不安定なテストの探し方

  1. 1. さよなら Flaky 不安定なテストの探し方 サイボウズ 三苫 亮 2021/06/26 オープンソースカンファレンス2021 Hokkaido
  2. 2. 自己紹介 • 三苫 亮(@mitomasan) • サイボウズ kintone開発 Yakumo基盤チーム • kintone.com の基盤を開発・保守しているチーム
  3. 3. 私たちのお悩みごと • サイボウズの kintone.com 基盤チームは E2Eテストを使って AWS 上に構築した基盤上で kintone の動作保証をしたかった • 幸運にも kintone にはすでに多くの E2E テストがあった • しかし新しい基盤上では多くのE2Eテストが 不安定になり基盤の不具合なのか 単にテストが不安定なのか区別できずに困っていた
  4. 4. kintone というサービス • 複数環境で動いている • それぞれの環境でミドルウェアが違う 国内データセンター cybozu.com AWS US Region kintone.com ※US向けではロゴも違う
  5. 5. kintone の構成 だいたいこんな感じになってるんだけど APサーバー 全文検索 サービス 非同期処理 サービス BLOB サービス DB 全文検索エンジン ストレージ
  6. 6. オンプレとAWSでこの辺りが違う APサーバー 全文検索 サービス 非同期処理 サービス BLOB サービス DB 全文検索エンジン ストレージ 俺以外 ぜんぶやんけ!
  7. 7. APサーバーもAWSだと Dockerコンテナとして動いてる APサーバー 全文検索 サービス 非同期処理 サービス BLOB サービス DB 全文検索エンジン ストレージ 俺もやんけ!
  8. 8. この二つは本当に同じ動作? 国内データセンター cybozu.com どうやって同じ動作であることを 保証したらいいだろう? AWS US Region kintone.com
  9. 9. 同じE2Eテストで外形的にテストします 国内データセンター cybozu.com E2Eテスト AWS US Region kintone.com
  10. 10. E2Eテスト • エンドツーエンド(End to End)テスト • 実際に動く環境を用意しユースケースの 一連のシナリオを達成できるか検証する • Webアプリケーションであれば ブラウザを自動化してテストすることが多い
  11. 11. E2Eテストの良いところ、悪いところ • 良いところ • エンドユーザーの利用と同じ方法でテストできる • 内部のコンポーネントの実装を意識せずに 外部仕様をテストできる • コンポーネント間の結合をテストできる
  12. 12. E2Eテストの良いところ、悪いところ • 悪いところ • セットアップや実行に時間がかかる • ブラウザなどを利用すると不安定になりがち(Flaky Test) 💀デバッグ体験が最悪👿
  13. 13. テストが不安定だと何がまずいか • テスト全体の信頼性が失われる • 成功するまで再実行されたり • テストの成否そのものが無視されたり • 修正しても直ったのか偶然成功したのか区別できない • 潜在的な不具合が見過ごされる • たまに失敗するテストケースは コーナーケースを踏んでいるのかもしれない
  14. 14. 不安定なテストの探し方 • 一回のテスト結果からは不安定かどうか判断できない • 複数回の結果を見て不安定かどうかを判断する • 何回テストが失敗しているか • 何回テストの成功・失敗が変化したか v1 v2 V3 v4 v5 失敗 変化 Case1 ○ ○ × × × 3/5 1/4 Case2 × ○ × ○ × 3/5 4/4
  15. 15. テストの実行履歴とか残してます? • Jenkins や CircleCI の実行履歴だと、 ビルドごとに見ないといけない • 不安定なテストを探すには • テストケースごとの成功・失敗の頻度を見る • その実行履歴ログをみて原因を確認したい 宵越しのテスト結果 は持たない主義でね
  16. 16. ReportPortal • 自動テストの結果を記録し ダッシュボードが作れる ソフトウェア • テスト実行中や完了後に テスト結果を送信 • 多数のテストフレームワークに 対応
  17. 17. 不安定なテストの分析
  18. 18. テストの実行履歴
  19. 19. 私たちのビフォー・アフター ビフォー🙅 • 経験をもとにテストが不安定かどうか判定して 再実行や修正を行っていた • 詳細なテスト結果はログから追う必要があるので 必要になるまで確認しない アフター🙆 • 不安定なテストを実績をもとに判断できるようになった • 効果の大きいテストから修正していけるようになった
  20. 20. まとめ • E2Eテストは不安定になりやすく 特定したりデバッグしにくい • テストの実行履歴で分析すると 不安定なテストを特定しやすい • ReportPortal 導入すると探しやすいよ
  21. 21. おしまい kintone.com やってやれないことはない 鋭 意 開 発 中

×