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

ソフトウェアテスト自動化、一歩前へ

 ソフトウェアテスト自動化、一歩前へ

2022/6/30 TEST Study #2「ソフトウェアテストにおける自動化」
発表資料

動画はこちら
https://www.youtube.com/watch?v=8VbL9Pv67oU&t=1s

YoshikiIto

June 30, 2022
Tweet

More Decks by YoshikiIto

Other Decks in Technology

Transcript

  1. ソフトウェアテスト自動化、一歩前へ
    Yoshiki Ito / TEST Study #2, June 30

    View Slide

  2. おことわり
    ◼ 資料はあとでSpeaker Deckに公開予定
    ◼ スライドのスクショ撮影、SNSシェア等OK
    2

    View Slide

  3. 前回 TEST Study #1 「品質とスピード」
    3
    ◼ YouTubeで視聴可能。まだの方はぜひ
    https://www.youtube.com/watch?v=fX0DtxTTZXc

    View Slide

  4. 目次
    1. はじめに
    2. ソフトウェアテストの自動化
    3. テストピラミッド&類似のモデル
    4. 一歩前に進める現実的なやりかた
    5. まとめ
    4

    View Slide

  5. 伊藤由貴(@yoshikiito)
    ◼ テスト自動化エヴァンジェリスト
    ◼ 仕事の経歴
    ⚫ 2012年 株式会社ベリサーブに新卒入社し、
    テスト・QAの世界へ
    ⚫ 2019年~ 自動テスト推進課を立ち上げ、
    社内外でテスト自動化の普及・推進活動を行っている
    ◼ コミュニティ活動
    ⚫ NPO法人日本ソフトウェアテスト技術振興協会 会員
    ⚫ JSTQB AL シラバス テスト自動化エンジニア
    日本語翻訳ワーキンググループ
    5

    View Slide

  6. 普段の仕事について
    https://www.veriserve.co.jp/corp/ より
    6

    View Slide

  7. 本講演の概要
    7
    Point1 “テスト自動化”のいろいろな側面を知る
    Point2 テスト自動化で「良い」とされている状態を知る
    Point3 理想と現実をどう近づけていくのか、を考える

    View Slide

  8. 目次
    1. はじめに
    2. ソフトウェアテストの自動化
    3. テストピラミッド&類似のモデル
    4. 一歩前に進める現実的なやりかた
    5. まとめ
    8

    View Slide

  9. Q:みなさんはどんな「テスト」をやっていますか?
    あるいは、どんな「テスト」をイメージしますか?
    9

    View Slide

  10. “ソフトウェアテストの自動化” は広い
    ◼ 人(役割)によって、“テスト”でイメージする範囲が違う
    ⚫ 人(役割)
    ⚫ 開発者、テスター、QAエンジニア、発注者 などなど
    ⚫ イメージする範囲≒テストレベル
    ⚫ 単体テスト、結合テスト、システムテスト、受け入れテスト などなど
    ◼ 特定の、特に自分が関わる部分だけでなく、
    広い「テスト」「テスト自動化」を色々な側面から見ることが大事
    10

    View Slide

  11. アジャイルテストの4象限
    11
    『実践アジャイルテスト』P96より
    単体テスト
    コンポーネントテスト
    機能テスト

    ストーリーテスト
    プロトタイプ
    シミュレーション
    探索的テスト
    シナリオ
    ユーザビリティテスト
    UAT(受入テスト)
    アルファ/ベータ
    パフォーマンス/負荷テスト
    セキュリティテスト
    「~性」テスト
    自動
    手動
    自動と手動
    ツール
    Q1
    Q2 Q3
    Q4
    技術面
    ビジネス面















    View Slide

  12. アジャイルテストの4象限のうち自動化に向いている範囲
    12
    『実践アジャイルテスト』P96より
    単体テスト
    コンポーネントテスト
    機能テスト

    ストーリーテスト
    プロトタイプ
    シミュレーション
    探索的テスト
    シナリオ
    ユーザビリティテスト
    UAT(受入テスト)
    アルファ/ベータ
    パフォーマンス/負荷テスト
    セキュリティテスト
    「~性」テスト
    自動
    手動
    自動と手動
    ツール
    Q1
    Q2 Q3
    Q4
    技術面
    ビジネス面















    View Slide

  13. Testing vs Checking
    13
    ◼ Checking is something that we do with the motivation of confirming existing beliefs. Checking is a process
    of confirmation, verification, and validation. When we already believe something to be true, we verify our
    belief by checking.
    ◼ チェックとは、既存の信念を確認する動機で行うものである。確認は、確認、検証、そして妥当性確認のプロ
    セスである。私たちがすでに何かを真実だと信じているとき、私たちはチェックすることによってその信念を
    確認します。
    Checking
    ◼ Testing is something that we do with the motivation of finding new information. Testing is a process
    of exploration, discovery, investigation, and learning. When we configure, operate, and observe a product
    with the intention of evaluating it, or with the intention of recognizing a problem that we hadn’t anticipated,
    we’re testing.
    ◼ テストとは、新しい情報を見つけようという動機で行うものです。テストは、探索、発見、調査、学習のプロセス
    です。製品を評価するつもりで、あるいは想定していなかった問題を認識するつもりで、製品を構成し、操作
    し、観察することがテストです。
    Testing
    Blog: Testing vs. Checking より 日本語訳はDeepL

    View Slide

  14. Testing vs Checkingのうち自動化に向いている範囲
    14
    ◼ Checking is something that we do with the motivation of confirming existing beliefs. Checking is a process
    of confirmation, verification, and validation. When we already believe something to be true, we verify our
    belief by checking.
    ◼ チェックとは、既存の信念を確認する動機で行うものである。確認は、確認、検証、そして妥当性確認のプロ
    セスである。私たちがすでに何かを真実だと信じているとき、私たちはチェックすることによってその信念を
    確認します。
    Checking
    ◼ Testing is something that we do with the motivation of finding new information. Testing is a process
    of exploration, discovery, investigation, and learning. When we configure, operate, and observe a product
    with the intention of evaluating it, or with the intention of recognizing a problem that we hadn’t anticipated,
    we’re testing.
    ◼ テストとは、新しい情報を見つけようという動機で行うものです。テストは、探索、発見、調査、学習のプロセス
    です。製品を評価するつもりで、あるいは想定していなかった問題を認識するつもりで、製品を構成し、操作
    し、観察することがテストです。
    Testing
    Blog: Testing vs. Checking より 日本語訳はDeepL

    View Slide

  15. 目次
    1. はじめに
    2. ソフトウェアテストの自動化
    3. テストピラミッド&類似のモデル
    4. 一歩前に進める現実的なやりかた
    5. まとめ
    15

    View Slide

  16. テストピラミッド
    16
    TestPyramid より
    • UI≒End to End
    • Service≒Integration

    View Slide

  17. アイスクリームコーン
    17
    The Software Testing Ice Cream Coneより(※原典がドメイン切れ?のため別サイトより引用)

    View Slide

  18. 似たようなモデル
    18
    Fixing a Test Hourglass より https://twitter.com/kentcdodds/status/960723172591992832 より

    View Slide

  19. バグフィルター
    19
    『A Practical Guide to Testing in DevOps Japanese Edition』 セクション6 DevOpsにおけるテスト戦略 より

    View Slide

  20. ピラミッド&類似のモデルからの学び
    20
    ◼ 特定のテストレベル(自分が関わっているテストレベル)に閉じず、
    テスト全体、各レイヤーの総体としてどうテストするかを考える
    ⚫ 良いとされているモデルを参考にしつつも、自分たちにとって最適な形を模索すべし

    View Slide

  21. 目次
    1. はじめに
    2. ソフトウェアテストの自動化
    3. テストピラミッド&類似のモデル
    4. 一歩前に進める現実的なやりかた
    5. まとめ
    21

    View Slide

  22. 「テストを自動化したいんです」というときのよくある実情
    22
    開発状況 既にプロダクトはリリース済で機能追加・改修フェーズ
    単体・結合テスト ほぼない or どれだけあるのか把握されていない
    E2Eテスト 手動で行っているが追いつかない、不具合を見逃してしまう

    View Slide

  23. 負のサイクル
    23
    修正
    コスト大
    テストが
    不十分
    不具合
    が多い
    ココを自動化で
    なんとかする

    View Slide

  24. 理想を掲げるだけでは前に進めない
    24
    ◼ 単体・結合テストがほぼ無く、E2Eテストでなんとかしている場合
    ⚫ 理想:単体テストから整備する。テストピラミッドなどから、費用対効果も良いはずである。
    ⚫ 現実:単体テストができない。
    理想通りでないからやらない、では改善されない。

    View Slide

  25. 現実的な道
    25

    View Slide

  26. アンチパターンであることを理解したうえで、やる
    26
    ◼ アンチパターンである理由がいわゆる「コスパ」であれば、
    受け入れるという選択肢もある
    ⚫ どのみち、どこかでお金と時間をかけなければ成功しない
    ◼ 単体テストから整備するべきである、という共通認識は持ちつつも、
    E2Eテストから整備することで
    「ユーザーにとって不利益になっていない」ことを担保できる状態を作る

    View Slide

  27. 現実的な道①:E2Eテストを整備する
    27

    View Slide

  28. E2Eテスト、どこからやるか
    28
    ◼ E2Eテストは100%自動化をめざすとうまくいかない(ことが多い)
    どんな順番でどこまでやるか、を考える必要がある
    ◼ 順序・範囲を決める方法はいくつかある
    ⚫ 大まかには、なんらかのスコアをつけて上から順にやる方法

    View Slide

  29. 『リーン開発の現場』のやり方
    29
    ◼ リスク、手動テストのコスト、自動化コスト、に大小をつけ
    リスクと手動テストのコストが大の部分からやる
    質とスピード(2022春版、質疑応答用資料付き)P105~111 より

    View Slide

  30. Angie Jonesのやり方
    30
    ◼ 直感(G)、リスク(R)、価値(V)、費用対効果(C)、過去の状況(H)で
    スコアを付け、自動化対象を選択する方法
    オリジナル:Which Tests Should We Automate? by Angie Jones
    講演者によるブログ記事:自動化するテストの選択方法(自動化スコアで判断する方法)
    いずれの方法も、
    チームで優先順位・
    範囲を考え、
    合意することが大事!

    View Slide

  31. 今ある(手動実行前提の)テストケースをそのまま自動化しない
    31
    ◼ 懸念点
    ⚫ 手順や確認項目が曖昧な場合、不安定・低信頼な自動テストになる
    ⚫ テストケースに依存関係が含まれがちで、Fail時の原因調査や保守が大変
    ◼ 例外
    ⚫ E2Eテストの自動化をこれから始める、ツールの適合性を確認する、
    というときには既存のテストケースを一部コンバートしてみるのはアリ
    ◼ 対策
    ① 今あるテストケースの再構成や詳細化をして使う
    ② 「テストケース」になる前から考える

    View Slide

  32. テスト設計プロセスに自動化検討を組み込む
    32
    ◼ テストケースから自動化対象を選ぶのではなく、
    テスト設計(以前)からテスト自動化を考慮
    テスト設計コンテスト’21 OPENクラス エムスリーQAチームプレゼン資料より

    View Slide

  33. 現実的な道②:E2Eテスト以前を整備する
    33

    View Slide

  34. E2Eテストをセーフティネットにして、より前段のテストを整備
    34
    ◼ 単体テストができない技術的な理由の例
    ⚫ クラスや関数同士が密結合になっていて、そのままでは単体テストができない。
    単体テスト可能な状態にしようとすると、壊してしまいそう
    ◼ E2Eテストを頼りにまずは「単体テストができる状態」を目指して
    手を入れていく
    ⚫ 何か問題が起こったら、E2Eテストが一定検知してくれる

    View Slide

  35. 単体テスト、どこからやるか
    35
    ◼ 『ソフトウェア品質を高める開発者テスト』のやり方
    ⚫ ほとんどのバグはソースコードファイルの10%~20%から出る、という考えに基づく
    ⚫ 複雑度(ファイル行数と相関)とHotspot値(バグの出やすさを数値化したもの)
    によってスコア付け
    ⚫ 複雑度が高いものはファイルを分割し、単体テストを書いていく

    View Slide

  36. 目次
    1. はじめに
    2. ソフトウェアテストの自動化
    3. テストピラミッド&類似のモデル
    4. 一歩前に進める現実的なやりかた
    5. まとめ
    36

    View Slide

  37. まとめ
    37
    ◼ いきなりベストプラクティスの通りでなくとも良いので、
    理想を目指して多少の遠回りを許容しつつもテスト自動化をすすめよう
    ⚫ 知らずにアンチパターンを踏むのと、理解しつつ一部を許容するのとでは全く異なる

    View Slide

  38. ありがとうございました
    この続きは後半のパネルトークで!
    イベント後に質問・感想・ご意見などあれば以下までお願いします ☺
    ◼ e-mail: yoshikiito.elあっとgmail.com
    ◼ Twitter: @yoshikiito

    View Slide