Slide 1

Slide 1 text

Launchableで始める テスト実行効率化 2022/03/15 Launchable Inc. shibui yusuke

Slide 2

Slide 2 text

shibui yusuke ● いろいろ → Launchable(いまここ) ● MLOpsとかいろいろエンジニア ● もともとクラウド基盤の開発、運用 ● ここ6年くらいMLOpsとバックエンドと インフラとたまにデータ分析と Androidで仕事 ● Github: @shibuiwilliam ● FB: yusuke.shibui ● Meety: https://meety.net/matches/OPJgijxiEMHE cat : 0.55 dog: 0.45 human : 0.70 gorilla : 0.30 物体検知 2 物体検知

Slide 3

Slide 3 text

猫が物欲しそうな表情をしています。 3 1. 餌を上げる 2. 遊ぶ 3. 撫でる 4. ほっとく A. 全部試して反応をみる B. 経験から可能性の 高いものを選ぶ 答えはLTの最後で!

Slide 4

Slide 4 text

CI/CDの次へ 4 テストを書く テストを自動実行する 必要なテストを実行する

Slide 5

Slide 5 text

5 – エンジニアの声 コードを1行変えただけなのに テストをすべて実行しないと マージできない・・・。 “ “

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

Predictive test selection by machine learning 7 学習 推論 教師データ 実行するテスト Tests Test results Tests Test pass/fail probability Feature engineering Model training Evaluation Model serving Deploy judgement

Slide 8

Slide 8 text

Launchableの仕組み 8 Launchable git push CI/CD Collect tests Important and effective tests Analyse and filter tests Test records

Slide 9

Slide 9 text

Launchableの仕組み 9 Launchable Analyse and filter tests Test records ML

Slide 10

Slide 10 text

テスト実行の課題 時間の課題 全テスト実行時間を短縮したい ▶ 並列実行、リソース追加・・・ ▶ 失敗しやすいテストを優先して実行 10 安定性の課題 同一コミットでもランダムに失敗するテスト (Flaky test) ▶ Flakinessを評価し修正可能なテストを 明確化

Slide 11

Slide 11 text

実行する必要のあるテストを並び替え 11 Low Medium High T8 T4 T3 T6 T2 T5 T7 T1 Time to First Failure (TTFF) 失敗する可能性の高い テストを優先して実行する ように並び替えることで テスト実行を効率化

Slide 12

Slide 12 text

まとめ ▶ 機械学習による実行すべきテストのフィルタリング ▶ テストの失敗が判明するまでのテスト実行時間を評価 ▶ Flakinessによる直すべきテストの明確化 12 「盗んできたおやつを 開けられなくて 悲しい顔をしていた」 が正解

Slide 13

Slide 13 text

Thank you! 13