Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Testing Automation to Continuous Testing

JapanTestCommunity
March 21, 2024
21

From Testing Automation to Continuous Testing

JapanTestCommunity

March 21, 2024
Tweet

Transcript

  1. Takuya Suemura 末村 拓也 󰏦 •QA Manager at •Forklift operator

    -> PHP developer -> QAE -> Support •Committee of JaSST Online •A serious TETRIS player
  2. Agenda 1. The major problems on the Testing Automation 2.

    How do we solve them with Shift Left & Shift Right 3. How can we shift to the Continuous Testing model
  3. A product development team • Product Owner (PO) creates a

    backlog item • Developer (Dev) implements the backlog item • QA creates the test cases according to the backlog item PO QA Dev
  4. Testing at the test phase Impleme nt Backlog Ticket Ticket

    Ticket Impleme nt Impleme nt QA Test Release Bug report UT UT UT
  5. Automate manual QA test Impleme nt Backlog Ticket Ticket Ticket

    Impleme nt Impleme nt QA Test Release Bug report UT UT UT Automation Target
  6. Automate manual QA test Impleme nt Backlog Ticket Ticket Ticket

    Impleme nt Impleme nt Release Bug report UT UT UT E2E Automated test
  7. The major problems on testing automation Impleme nt Backlog Ticket

    Ticket Ticket Impleme nt Impleme nt Release Bug report UT UT UT E2E Automated test This test code is out of date When will I do exploratory test? What kind of test cases should we automate? I believe automated test verify our quality automatically
  8. Test code does not follow changes of the app’s behavior

    1) Out-of-date test codes Test script 1. Choose “Small” in “Size” 2. Type “1” into “Quantity” 3. Type tomorrow’s date into “Delivery date” 4. Click “Add to cart Old New Delivery date is removed in the new UI
  9. Missing test cases We may miss some test cases due

    to ambiguous specs Let’s add “Order Now” button to allow users purchase item immediately Gotcha (And I will miss the test pattern when the user has not entry their shipping address)
  10. No human eyes Automated tests are too strict to catch

    something weird • Site Performance is slightly decreased • It’s functional, but not so useful • What will happen if I click the button 100 times in a row? But I can find them!
  11. But why? QA did a lot of things in the

    QA test phase all at once • Test design • Regression test • Exploratory test • Usability test • Performance test
  12. But why? It can’t be simply replaced by automated tests

    • Test design • Regression test • Exploratory test • Usability test • Performance test
  13. What is the shift-left and shift-right? Shift Left: bringing forward

    things that are too late Shift Right: postponing things that are too early
  14. 1. Why automated tests can be out of date? Because

    we run them AFTER changing the app behavior • Test code does not follow the app behaviour automatically • But human is capable to update manual test script dynamically
  15. How can we keep automated test codes up to date?

    Maintain test code and app’s source code at the same time Test script 1. Choose “Small” in “Size” 2. Type “1” into “Quantity” 3. Type tomorrow’s date into “Delivery date” 4. Click “Add to cart Test script 1. Choose “Small” in “Size” 2. Type “1” into “Quantity” 3. Click “Add to cart
  16. AD-TIME! Hard to shift left your test code? Here’s the

    AI-based self healing as the quickest solution! https://autify.com/
  17. 2. Why we may miss test cases? Because we work

    separately • PO designs specs, Dev implements them, and QA implement the test cases ◦ PO may forget to write a part of spec ◦ Dev and QA implement without being aware of it
  18. Let’s create specs and test cases TOGETHER • Brainstorm missing

    specs and edge cases during the ticket refinement • Create a concrete test cases and agree with them • Devs implement the feature and the automated tests according to the agreed test cases
  19. 3. Things that will not be covered by the automated

    tests Human eyes are capable to catch something weird • Site Performance is slightly decreased • It’s functional, but not so useful • What will happen if I click the button 100 times in a row? But trying to catch them at the test phase all at once is not sustainable
  20. Separate responsibility and re-design test architecture • Performance -> Monitoring

    • Usability -> Beta testing • Find issues flexibly -> Exploratory testing
  21. Continuous testing https://danashby.co.uk/2016/10/19/continuous-testing-in-devops/ Brainstorm specs and test cases Write and

    maintain automated tests Run automated tests Exploratory and beta testing Monitoring
  22. How can we learn from the right side? https://danashby.co.uk/2016/10/19/continuous-testing-in-devops/ Brainstorm

    specs and test cases Write and maintain automated tests Run automated tests Exploratory and beta testing Monitoring
  23. Get insights from the experiments • The performance tuning affect

    80% of network request and reduce 30% of response time • The closed beta test gets feedback from the • It turned out that there is a potential risk of data duplication from the exploratory test
  24. Then, we can improve our product CONTINUOUSLY https://danashby.co.uk/2016/10/19/continuous-testing-in-devops/ Brainstorm specs

    and test cases Write and maintain automated tests Run automated tests Exploratory and beta testing Monitoring
  25. Make unknown to known Known Unknown Known Concrete knowledge Certain

    risks Unknown Untapped knowledge Uncertain risks 1) Test uncertainty and make them concrete knowledge 2) Then, we can automate them!
  26. ある開発チーム • Webアプリケーション開発 • 開発者10人 + PO1人 + QA1人 •

    スクラム開発 / 1スプリント2週間 • スプリントの終わりにリリース PO QA 開発者
  27. クライマックステスト 実装 バックログ チケット チケット チケット 実装 実装 テスト リリース

    バグ報告 UT UT UT ・開発者はユニットテストを書くが、 E2Eは 書かない ・リリースの直前にQAが手動テスト ・リリース3日前にコードフリーズ(リリース 範囲の確定)
  28. E2E 自動テスト 手動テスト 課題 - 問題に気づくのが遅い バックログ チケット チケット チケット

    リリース バグ報告 ここでようやく問題に気づく このテストコード 古いみたいだよ 実装 実装 実装 UT UT UT
  29. 開発中に問題に気づける バックログ チケット チケット チケット E2E E2E E2E 実装 実装

    実装 UT UT UT バックログ テストコード が古い バグがある リリース 手動テスト
  30. E2Eテストしすぎを減らす ✅ 正しいメールアドレス [email protected] ✅ エイリアスの入ったアドレス [email protected] ❌ ローカルパートがない @example.com

    ❌ ドメインパートがない foo123 ❌ ピリオドが連続している [email protected] ❌ スペースが入っている foo [email protected] 結合テスト ユニットテスト E2Eテスト
  31. 課題感が変わった • ✅ 一度にリリースする量が多い • ✅ 駆け込みマージが多い • ✅ 手戻りが多い

    • どんなテストが必要か、 チームで議論する機会がない • 機能性以外のテストがない • QAの手動テストが ボトルネックになっている
  32. 課題感が変わった • どんなテストが必要か、 チームで議論する機会がない • 機能性以外のテストがない • QAの手動テストが ボトルネックになっている •

    必要なテストについて議論する • 非機能性もテストする • QAの手動テストに頼らず 様々な方法を使う • QAの手動テストを挟まず どんどんデプロイする
  33. 開発の前 実装 バックログ チケット チケット チケット 実装 デプロイ 実装 自動

    テスト 自動 テスト 自動 テスト デプロイ デプロイ β GA
  34. リファインメントでテスト計画を立てる 💡 SMSでの多要素認証 E2Eテスト: • ユーザーは電話番号にSMSを送信できる。 • ユーザーが不正な電話番号を指定すると、エラーが表示される。 • 多要素認証を有効にしていないユーザーには、SMS認証画面が表示されない。

    結合テスト: • Twilioのテスト用番号を使って正常系/異常系のテストをする。 探索的テスト: • 30分 3~5人 出来るだけ幅広いモバイルキャリア、OSを準備する • 目的: モバイルキャリアや端末に依存する問題を見つける。 ロールアウト: • 日本国内の1%のユーザーに対して有効にし、段階的に範囲を広げる。
  35. リファインメントでテスト計画を立てる 💡 バグ修正: 検索結果表示数に 100 を指定しても表示数が変わらない E2Eテスト: • ユーザーは “50”

    を指定すると検索結果が50件になる。(既存) 結合テスト: • APIパラメーターとして 25/50/75/100 が渡されたとき、レスポンスに含まれるアイテムの 数はそれらに準じた数になる。 • 検索結果の数が指定された数より少ない場合は、すべての検索結果がレスポンスに含 まれる。 探索的テスト: 実施しない。
  36. 継続的デプロイメントとテスト Janet Gregory, Lisa Crispin, and Yuya Kazama. Agile Testing

    Condensed Japanese Edition (Kindle Location 869). Kindle Edition. 図形とイラストの追加は発表者によるもの。
  37. ユーザーにテストしてもらう カナリアリリース / パブリックベータリリース • ユーザビリティーの改善 • 互換性など、事前に見つけにくい不具合の発見 ◦ 例:

    特定のOS、特定の言語設定でのみ文字化けする ◦ 例: 特定のファイアーウォール設定下でのみ 画面の自動更新が不安定になる
  38. リリース後 実装 バックログ チケット チケット チケット 実装 デプロイ 実装 自動

    テスト 自動 テスト 自動 テスト デプロイ デプロイ β GA
  39. 今日話したこと • 手動テストに依存したQAテストフェーズから 開発サイクル全体を通した 継続的テスト に進化する 道筋の例を話しました • この例をたたき台にして 自分たちのチームでも話してみてください

    • 開発サイクルの要所要所で段階的にプロダクトを検証し リズミカルに品質を上げていきましょう クライマックステスト テスト自動化 シフトレフト テスト リアーキテクティング 継続的テスト