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

見えないゴリラを見つけに行こう! 〜テストのバイブル『Explore It!』翻訳プロジェク...

Avatar for Jumpei Ito Jumpei Ito
October 06, 2025

見えないゴリラを見つけに行こう! 〜テストのバイブル『Explore It!』翻訳プロジェクトから見えた、チームの未来〜

Avatar for Jumpei Ito

Jumpei Ito

October 06, 2025
Tweet

More Decks by Jumpei Ito

Other Decks in Technology

Transcript

  1. 2 • 伊藤 潤平(@jp_110) • ウイングアーク1st株式会社 ◦ ソフトウェアプロセス&品質改善部 マネージャー • 社外活動

    ◦ Scrum Fest Niigata 実行委員会 代表 ◦ JaSST Niigata アドバイザー ◦ SigSQAメンバー ◦ YouTube翻訳活動 ◦ 書籍『Explore It!』翻訳 • プロフィール AgileTD Zone Keynotes in Japanese https://niigatabase.shabellbase.com/engineer_01/
  2. 自己紹介 • 古橋 明久(@AckyF1) • コミュニティ活動 ◦ Scrum Fest Mikawa

    実行委員会 ◦ Scrum Fest Niigata 実行委員会 ◦ 書籍『Explore It!』翻訳 • お仕事 ◦ 製造業のソフトウェアエンジニア
  3. チラ見(目次構成) 第1章 テストと探索について 第2章 探索をチャーターする 第3章 詳細を観察する 第4章 興味深いバリエーションを探す 第5章

    結果を評価する 第6章 手順と相互作用を変化させる 第7章 エンティティとその関係性を探索する 第8章 状態遷移の発見 第9章 エコシステムを探索する 第10章 ユーザーインターフェイスがない場合の 探索 第11章 既存システムの探索 第12章 要件の探索 第13章 探索を全体に統合する 付録1 探索的テストのスキルを見極める面接 付録2 テストヒューリスティック・チートシー ト
  4. Appendix:モンキーテストと何が違うの? 探索的テスト モンキーテスト アドホックテスト 思考 考える 学習し、次に何をすべきか判断する 考えない (ランダム) 思いつき

    (場当たり的) 目的 欠陥の発見とシステムの学習 システムを破壊す ること 目の前の欠陥を見つける こと スキル 高いスキルとドメイン知識が活きる 不要 経験に依存 体系性 体系的 (チャーター、セッション管理) 無秩序 非体系的
  5. AI時代に探索的テストは有効なのか? • 水面上 ◦ フロントエンド ◦ 機能要件 ◦ バグ出し •

    水面下 ◦ バックエンド ◦ 非機能要件 ▪ セキュリティ ▪ パフォーマンス ▪ 保守性 ◦ 他モジュールとの連携 2013年発売の本ですが、AI時代に突入した現在でも有効!
  6. テスト完了 = チェックした + 探索した チェックする 探索する • 網がカバーしていない領域を偵察 •

    テスターの個々のスキルを発揮 • リスクを発見したらより深く掘り下げ • テスト設計・実行・学習・舵取りを同時に トリップワイヤーの網の例
  7. チャーターの例 ターゲット:名字の編集 リソース:オマリー(O’Maley)とい う値を入力してみる 情報:プロフィール編集機能がアポ ストロフィー付きの名前を扱えるこ とを確認 細かすぎる例 ターゲット:システム全体 リソース:知りえる限り全てのハッ

    キングプログラム 情報:セキュリティホール ざっくりすぎる例 良いチャーターとは、テスト活動をあまり詳細に決めつけず、方向性だけを示すものです。いうなれば良いチャーターはプ ロンプトです。それは、インスピレーションの源を提示するのみで、こと細かに行動やアウトカムを指示しません。 ターゲット:プロフィールの変更 リソース:制約違反の可能性がある ユーザー名 情報:ユーザー名の制約が適用され ないケースがあるかどうかを確認 ターゲット:フィールド入力 リソース:JavaScriptおよびSQLイ ンジェクション攻撃 情報:セキュリティの脆弱性 ターゲット:ログインが必要なペー ジ リソース:なりすましURLとPOSTパ ラメータを使う 情報:購入していないコンテンツに アクセスできるかどうかを確認
  8. 第9章 エコシステムの探索 • エコシステムの図解 ◦ インターフェースの描画 ◦ 外部依存関係のマッピング ◦ 内部を埋める

    • 信頼境界 • What If?(もしも?)ゲーム ソフトウェアの内部にばかり気を取られるのではなく、大きなシステムとして捉える。
  9. 第10章 UIがない場合の探索 どんなシステムにも、少なくとも1つ、通常はそれ以上の種類のインターフェー スがある。例えばAPIの場合。 public double calculateSimilarity( String stringA, String

    stringB) calculateSimilarity(3, 5); // 整数型は文字列 型ではないので無効です calculateSimilarity(); // 2つのパラメータを必要とするため無効です calculateSimilarity( "a" , "a" ); calculateSimilarity( "a" , "z" ); calculateSimilarity( "" , "" ); calculateSimilarity(null, null); String myString = "100文字程度の長文 ... calculateSimilarity(myString, myString); Javaコンパイラの探索に なってしまう 正常な結果を確認 エラーになる結果を確認 性能の問題を検知 この辺はかなりAIの活 用が有効になってくる
  10. テストヒューリスティック • アブストラクト(抽象化) • Never/Alwaysルール • 先頭、途中、最後 • すべてを一箇所に集める •

    モデルを変えてみる • CRUD • すべてを分散させる • データを追跡する • ゴルディロックス(Goldilocks) • 中断 • 逆にする • 一部、なし、すべて • リソース不足にする • 少なすぎる • 多すぎる • 役立つ概算 • データ形式のルールを破ってみる • ゼロ • ゼロ、単数、複数 • ズームイン