Slide 1

Slide 1 text

自動化の罠 自動化してはいけないテスト By Chris Ding (クリス)

Slide 2

Slide 2 text

自己紹介 ● 中国生まれ、ニュージーランド育ち、 2022年3月に日本に引っ越し、現在 札幌在住 ● 主にCloudNativeアプリケーションの 品質管理 ● TierIVという自動運転会社で、Web・Cloud 側(Web.Auto) のQAチームリードをしています

Slide 3

Slide 3 text

Business : Autonomous driving system / platform development Established : Dec 2015 # of employees : Approx. 300 Location : Japan - Tokyo, Nagoya USA - Palo Alto China - Shanghai Funding : Approx. US$230million Shareholders : 3

Slide 4

Slide 4 text

Fleet Management/Remote Operation Web.Auto Overview Build Test Deploy Collect Data Source AD SW Integration Review Map/Scenario Data Search Maps, Scenarios OTA releases Vehicle data Dataset, ML Models CI/CD Evaluation Testing この成果は、国立研究開発法人新エネルギー・産業技術総合開発機構(NEDO)の助成事業 (JPNP21027)の結果得られたものです。

Slide 5

Slide 5 text

目次 ● テスト自動化の罠 - ケーススタディ ● 自動化してはいけないテスト ○ その1、存在しないものを自動化しない ○ その2、余計なテストステップを自動化しない ○ その3、コスパの悪いテストを自動化しない ● Q&A

Slide 6

Slide 6 text

テスト自動化 ー ケーススタディ ● Cloud Native Application ● 頻繁的にリリース ● バグがちょこちょこ出てくる

Slide 7

Slide 7 text

テスト自動化 ー ケーススタディ ● QAチームを採用 ● QAチームがマニュアルテストを行う 🧪

Slide 8

Slide 8 text

テスト自動化 ー ケーススタディ ● プロダクトとインフラがだんだん複雑になってくる ● QAリソースが足りなくなる ● ふんわりしたイメージで、「自動化した方がいいじゃない?」と考え始める 🤔

Slide 9

Slide 9 text

● 自動化ツールを調査、自動化始める ● 最初のいくつかの自動化テストが完成、行ける! テスト自動化 ー ケーススタディ

Slide 10

Slide 10 text

テスト自動化 ー ケーススタディ ● 全部自動化しよう!

Slide 11

Slide 11 text

だが。。。

Slide 12

Slide 12 text

● ある日、テストが不明の理由で失敗し始める(Flaky Test) テスト自動化 ー ケーススタディ

Slide 13

Slide 13 text

自動化しながら、既存テストを 修正〜

Slide 14

Slide 14 text

● いつの間にか不安定のテストが手に負えない 状況になった ● 一つの問題が解決できたら、まだいくつ の問題が出てくる テスト自動化 ー ケーススタディ

Slide 15

Slide 15 text

● テストが訳わからない原因で失敗 ○ テスト環境? ○ テストデータ? ○ テストツール? ○ テスト実装? ○ 仕様変更? ● 失敗しているテストの調査と修正が手動 テストより時間がかかるようになった ● 一つSprintの失敗を直そうとしたら、既に次のSprintになっちゃった テスト自動化 ー ケーススタディ

Slide 16

Slide 16 text

● いつも失敗するテストをDisable/削除 ● 結局手動で不安定なテストを実行 テスト自動化 ー ケーススタディ

Slide 17

Slide 17 text

● Cloud Native だからこそ ○ 頻繁なリリース ○ 頻繁なテスト実行 ○ テスト失敗の調査時間が短い テスト自動化 ー ケーススタディ

Slide 18

Slide 18 text

自動化のワナを避ける方法?

Slide 19

Slide 19 text

● 安定したテスト自動化ツールを使う? ● きれいなテストデータとテスト環境を保つ? ● テスト自動化のBest Practiceを参照しながらテストを書く? 自動化のワナを避ける方法は?

Slide 20

Slide 20 text

● 安定したテスト自動化ツールを使う? ● きれいなテストデータとテスト環境を保つ? ● テスト自動化のBest Practiceを参照しながらテストを書く? 全部大事ですが、テストを実装する前に、そもそも何を自動化すべきなのか? テスト自動化対象を決めるのが大事! 自動化のワナを避ける方法は?

Slide 21

Slide 21 text

テストを適当に書いてはいけない

Slide 22

Slide 22 text

その1、存在しないものを自動化しない

Slide 23

Slide 23 text

● よくあるパターン: ○ 手動テストケースを書かずに、ふんわりした感じでテストを書き始める その1、存在しないものを自動化しない ☁

Slide 24

Slide 24 text

● よくあるパターン: ○ 手動テストケースを書かずに、ふんわりした感じでテストを書き始める ● 手動テストケース = 自然言語で書かれているテストケース その1、存在しないものを自動化しない ☁

Slide 25

Slide 25 text

● 問題点 ○ カバレッジの洞察不足 その1、存在しないものを自動化しない

Slide 26

Slide 26 text

● 問題点 ○ カバレッジの洞察不足 ○ 故障理解が難しい その1、存在しないものを自動化しない

Slide 27

Slide 27 text

● 問題点 ○ カバレッジの洞察不足 ○ 故障理解が難しい ○ テストを書いた人以外の人はテストが理解しにくい その1、存在しないものを自動化しない

Slide 28

Slide 28 text

● 問題点 ○ カバレッジの洞察不足 ○ 故障理解が難しい ○ テストを書いた人以外の人はテストが理解しにくい ○ 省略できるテストステップが分からない その1、存在しないものを自動化しない

Slide 29

Slide 29 text

● 問題点 ○ カバレッジの洞察不足 ○ 故障理解が難しい ○ テストを書いた人以外の人はテストが理解しにくい ○ 省略できるテストステップが分からない ○ 等 その1、存在しないものを自動化しない

Slide 30

Slide 30 text

● 面倒くさい! その1、存在しないものを自動化しない

Slide 31

Slide 31 text

● 面倒くさい! ○ E2Eテストでを書くべきなのか? その1、存在しないものを自動化しない

Slide 32

Slide 32 text

● 面倒くさい! ○ E2Eテストを書くべきなのか? ○ 優先度低いテストを実装しようとしていないか、テストが雑すぎる? ■ 後でもっとお話します その1、存在しないものを自動化しない

Slide 33

Slide 33 text

自動テストは常にドキュメント化された テストに基づいて書く

Slide 34

Slide 34 text

その2 、余計なテストステップを自動 化しない

Slide 35

Slide 35 text

ログインを検証したい: 「ログイン」テスト: 1. UsernameとPasswordフィールドを入力 2. Confirmボタンを押す 3. Homepageに遷移することを確認 その2、余計なテストステップを自動化しない

Slide 36

Slide 36 text

自動化テストコード: 「ログイン」テスト: 1. UsernameとPasswordフィールドを入力 2. Placeholderテキストが正しいを確認 3. Confirmボタンを押す 4. Homepageに遷移することを確認 その2、余計なテストステップを自動化しない

Slide 37

Slide 37 text

別にいいんじゃない🤷

Slide 38

Slide 38 text

想像してください: ● Placeholderテキストが変化され、テストが失敗 ● テスト通知は: 🚨🚨🚨ユーザーがログインできない 🚨🚨🚨 その2、余計なテストステップを自動化しない (||゚Д゚)」ひぃぃぃ〜

Slide 39

Slide 39 text

● テスト失敗する時にFalse Alarmが出る ● テスト内容が分からなくなる ● 実行時間が長くなる ● メンテしにくい その2、余計なテストステップを自動化しない

Slide 40

Slide 40 text

決まったテストケースから離れない

Slide 41

Slide 41 text

その3、コスパの悪いテストを自動化し ない

Slide 42

Slide 42 text

● 「全てのテストを自動化したら楽になる!」 その3、コスパの悪いテストを自動化しない

Slide 43

Slide 43 text

● 「全てのテストを自動化したら楽になる!」 ● テストを書こうと思えば、無限に書ける ○ 優先度が低いテスト ○ 再現手順が複雑なテスト ○ 新機能 ● 自動化したテストはただではない ○ 実装コスト ○ 実行コスト ○ 失敗調査コスト ○ メインテナンスコスト その3、コスパの悪いテストを自動化しない

Slide 44

Slide 44 text

各テストのコスパを考えながら、 自動化対象を決めましょう

Slide 45

Slide 45 text

自動化対象 ビジネスインパクト 実装コスト + メンテコスト = 自動テストコスパ

Slide 46

Slide 46 text

● ビジネスインパクトの大きいテストケース 自動化対象 - ビジネスインパクト

Slide 47

Slide 47 text

● ビジネスインパクトの大きいテストケース ○ 手順が簡単、再現しやすい、影響されるユーザーが多い 自動化対象 - ビジネスインパクト

Slide 48

Slide 48 text

● ビジネスインパクトの大きいテストケース ○ 手順が簡単、再現しやすい、影響されるユーザーが多い ○ 不具合が出たらビジネスに対する損が大きい 自動化対象 - ビジネスインパクト 💸

Slide 49

Slide 49 text

● ビジネスインパクトの大きいテストケース ○ 手順が簡単、再現しやすい、影響されるユーザーが多い ○ 不具合が出たらビジネスに対する損が大きい ○ 不具合頻発の機能 自動化対象 - ビジネスインパクト ⚠

Slide 50

Slide 50 text

ビジネス側と相談して 決めましょう

Slide 51

Slide 51 text

● 不安定、メインテナンスコストが高いテストの実装は要注意! 自動化対象 - 実装/メインテナンスコスト

Slide 52

Slide 52 text

● 不安定、メインテナンスコストが高いテストの実装は要注意! ○ Canvas上の操作 自動化対象 - 実装/メインテナンスコスト

Slide 53

Slide 53 text

● 不安定、メインテナンスコストが高いテストの実装は要注意! ○ Canvas上の操作 ○ 新規機能 自動化対象 - 実装/メインテナンスコスト 🧪

Slide 54

Slide 54 text

● 不安定、メインテナンスコストが高いテストの実装は要注意! ○ Canvas上の操作 ○ 新規機能 ○ 色/レイアウト Visual系のテスト 自動化対象 - 実装/メインテナンスコスト

Slide 55

Slide 55 text

● 不安定、メインテナンスコストが高いテストの実装は要注意! ○ Canvas上の操作 ○ 新規機能 ○ 色/レイアウト Visual系のテスト ○ 手順が複雑のテスト 自動化対象 - 実装/メインテナンスコスト

Slide 56

Slide 56 text

● 不安定、メインテナンスコストが高いテストの実装は要注意! ○ Canvas上の操作 ○ 新規機能 ○ 色/レイアウト Visual系のテスト ○ 手順が複雑のテスト ○ 等 自動化対象 - 実装/メインテナンスコスト

Slide 57

Slide 57 text

● 不安定、メインテナンスコストが高いテストの実装は要注意! ○ Canvas上の操作 ○ 新規機能 ○ 色/レイアウト Visual系のテスト ○ 手順が複雑なテスト ○ 等 ● 既存のテストが不安定になったのもコストが高くなる! 自動化対象 - 実装/メインテナンスコスト

Slide 58

Slide 58 text

● 安全関係のテストは別枠で優先度とリターンを考えます ○ 車両走行に影響するテスト ○ 等 自動化対象 - 安全関係

Slide 59

Slide 59 text

自動化対象 自動化すべき🟢 マニュアル・探索的テスト🟡 慎重に自動化する🟡 自動化しない🔴 Business Impact 大きい Business Impact 小さい Cost 低い Cost 高い

Slide 60

Slide 60 text

● Unitテスト ● Integrationテスト ● 性能テスト ● 等。。。 自動化対象 - E2Eテストだけではない

Slide 61

Slide 61 text

● ひたすら全てを自動化しないのが第一歩 ● テストツール、実装、メンテナンス、テストプロセス、等も重要 自動化対象 - 追記

Slide 62

Slide 62 text

- 自動テストが大事ですが、盲目に自動化してはいけない - 特に頻繁的なリリースのあるようなCloudNativeアプリケーション - 自動化してはいけないテスト - 存在しないテストを自動化してはいけない - 余計なテストステップを自動化してはいけない - コスパの悪いテストを自動化してはいけない - ビジネスインパクトが低いテスト - コストが高いテスト まとめ

Slide 63

Slide 63 text

ビジネスに価値を提供できる自動化テ ストを書きましょう!

Slide 64

Slide 64 text

Questions (時間があれば)