Slide 1

Slide 1 text

© LayerX Inc. 自動テストの成果と失敗談 JaSST’24 TOKYO Ryo Takahashi

Slide 2

Slide 2 text

目次 Agenda ● 自己紹介 ● 本日のテーマ ● 3つの課題と改善したこと ● よりよい自動テストを行うために ● まとめ

Slide 3

Slide 3 text

© LayerX Inc. 3 株式会社LayerX 経歴 -バルテス株式会社(2019/04-2021/12) -個人事業主(2022/01-2022/05) -株式会社LayerX(2022/06-) 画像を入れてね 自己紹介 髙橋 諒 (hashi)

Slide 4

Slide 4 text

4 © LayerX Inc. E2Eテスト自動化をすすめてきた課題感 本日のテーマ テストを しすぎてしまう 実行時間が かかりすぎてしまう テストが 失敗する -たくさんテストを 作りすぎてしまう -1つのテストで 複数確認をしてしまう -効率よくテストが実行 できていない - テストをメンテナンスしても また失敗してしまう(flaky)

Slide 5

Slide 5 text

テストをしすぎてしまう

Slide 6

Slide 6 text

© LayerX Inc. 6 たくさんテストを作りすぎてしまう - 自動テストが増えるとマニュアルテストが楽になる - 失敗したテストが増えると確認する数が増えてしまう - メンテナンス数も増えすべてのシナリオに目が行き届かなくなる 課題 1つのテストで複数確認をしてしまう - シナリオで”なにを”確認したいのかわからない - ほかの人がテストをみたときに確認内容がわからない - 本来確認したいところ以外でテストが失敗してしまう 課題1.テストをしすぎてしまう

Slide 7

Slide 7 text

© LayerX Inc. 7 - 目的は マニュアルテストを楽にする < クリティカルなバグを早く検知する こと - なんでも自動化せず、必要なテストはなにかを開発チームを含め自動化の方針を決める - すでにたくさんある場合は実行しないテストも含めて検討する たくさんテストを作りすぎてしまう=>自動化すべきテストを見直す 改善 1つのテストで複数確認をしてしまう=>テストを分割して確認したいことを1つにする - 1つのテストで確認したいことを1つに決める - 意図しないテストの失敗の確認を減らすことにつながる 課題1.テストをしすぎてしまう

Slide 8

Slide 8 text

実行時間がかかりすぎてしまう

Slide 9

Slide 9 text

© LayerX Inc. 9 - 実行時間がかかることですぐにバグ報告があげられない - テスト期間の中でバグ修正が後ろに寄ってしまう バグの検知が遅れる 課題 スケジュールの工面が必要 - 実行時間がかかるので翌日にテストがすべて回りきっていない - 可能な限り休日等を挟むような運用をするなど考慮する場面が発生 課題2.実行時間がかかりすぎてしまう

Slide 10

Slide 10 text

© LayerX Inc. 10 バグの検知が遅れる=>並列・直列実行の見直し 改善 - テスト実行の仕方を見直す(本当に直列実行でないと回せないテストなのか) - ほかのテストに干渉しないような方法の模索 - テストユーザーを分ける - テスト実装の方法を変更する - 例)順番の制御が効かない->ほかになんらかユニークな情報をもたせることで順番を気に しなくてよいテストにする =>16時間->約9時間までに実行時間の短縮 特にテスト実行の仕方を見直すところで時間がかかっているテストを 並列で実行できるよう変更したことが大きな短縮に繋がった 課題2.実行時間がかかりすぎてしまう

Slide 11

Slide 11 text

テストが失敗する

Slide 12

Slide 12 text

© LayerX Inc. 12 テストをメンテナンスしてもまた失敗してしまう - 本来、プロダクトの挙動は問題がないのにテストが失敗しているので確認する工数がかさむ - テストしたいところ以外で失敗しておりテストしたい箇所の確認ができない - 場当たり的なメンテナンスになりやすい 課題 課題3.テストが失敗する

Slide 13

Slide 13 text

© LayerX Inc. 13 テストをメンテナンスしてもまた失敗してしまう=>シナリオごとに経過を観察する - シナリオごとに実行結果を時系列で確認する - メンテナンスをしているにもかかわらず失敗が続いているシナリオを検知することができる - 成功率を定義することで基準より下回ったテストの実装を見直しをする =>不安定なテストが1.75%減少 改善 課題3.テストが失敗する

Slide 14

Slide 14 text

 よりよい自動テストを行うために

Slide 15

Slide 15 text

© LayerX Inc. 15 不具合を早く検知するための自動テストの拡充 - E2EテストからAPIテスト,ユニットテストで担保 - 実行時間の短縮 - UIの変化による影響を受けにくい(テストの保守性) テスト全体のデザイン - テスト自動化有無の判断 - 自動化するテストはどのレイヤーで担保すべきか - プロダクトのフェーズに合わせた自動化方針 - リリース初期のタイミングでコードを書くのか,SaaS等のサービスを使うのかなど   よりよい自動テストを行うために 引用:alisterbscott.com

Slide 16

Slide 16 text

まとめ

Slide 17

Slide 17 text

© LayerX Inc. 17 - 自動化する対象を決める - 1つのテストで確認したいことは1つに絞る - テストの実行方法を考慮する(並列実行ができないか模索する) - シナリオごとに実行結果を観察する 自動化をするために まとめ

Slide 18

Slide 18 text

© LayerX Inc. 18 - 自動化する対象を決める - 1つのテストで確認したいことは1つに絞る - テストの実行方法を考慮する(並列実行ができないか模索する) - シナリオごとに実行結果を観察する 自動化をするために まとめ とはいえ、まずは「動くテストを作る」ことが第一だと考えます。 テストが増えてきた段階で、もっとよく自動テストが運用できないかを考える際の材料になると幸いです。