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

「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう

Avatar for kawabeaver kawabeaver
September 08, 2025

 「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう

2025.9.8 QA Test Talk Vol.5 登壇資料

Avatar for kawabeaver

kawabeaver

September 08, 2025
Tweet

More Decks by kawabeaver

Other Decks in Technology

Transcript

  1. 自己紹介・・・する時間がないので飛ばします! • 経歴 ◦ Web系のQAエンジニア歴10年以上 ▪ 第三者検証(1年半) ▪ 医療系事業会社(7年半) ▪

    コミューン株式会社。 1人目のQA(2022年1月〜) ◦ QAチームのマネージャー歴 5年以上 ▪ 最近テストスキルの言語化を頑張ってます • ブログ、X ◦ https://kawabeaver.hatenablog.com/ ◦ https://zenn.dev/kawabeaver ◦ https://x.com/kawabeaver
  2. 今日の話の前提 • Webアプリケーションのテスト • ソースコード、インフラの構成などを知ることができる • 稼働中のプロダクトに対する機能追加や既存機能の改修が多い • 基本設計、詳細設計、コードの品質は一定の水準以上である •

    私個人の考え方なので、正解ではないかもしれません ※ 原則6:テストはコンテキスト次第   今日の内容は皆さんの現場に合わない可能性があります。ご了承ください
  3. ソフトウェアテストの理想と現実 • 理想 ◦ プロダクトに発生しうる状況(入力、データの状態など)を全てテストすること • 現実 ◦ 原則2:全数テストは不可能 ▪

    全ての状況はパターンが多すぎてテストするのは現実的には不可能 • 例:10桁表示の電卓アプリで足し算のテストをする場合、正の整数2つの足し算の組み 合わせだけでも10,000,000,000 * 10,000,000,000通りある ◦ 私たちは限られたテスト量で プロダクトがちゃんと動くことを担保しなければならない
  4. ソフトウェアテストの理想と現実 • 10桁表示の電卓アプリで足し算のテストをする場合、きっとこんなことを考えます ◦ 1 + 1, 100 + 100が正しいなら、きっと他の足し算の組み合わせもうまく動くだろう

    ◦ いや、足し算の結果が 10桁を超えた場合のテストもした方が良いな ◦ 負の整数の足し算もやっておこう ◦ 整数だけでなく小数と整数の足し算のテストもやっておいた方が良いかな ◦ あ、足し算を計算した結果の数値をそのまま使って連続で足し算をしてみよう ▪ 1 + 1を計算したあと、1 + 1の計算結果(2)を使って 2 + 3の計算を行う
  5. 前述のテスト条件を先ほどの分類に当てはめると • 1 + 1, 100 + 100が正しいなら、きっと他の足し算の組み合わせもうまく動く ◦ 足し算の「処理」

    • 足し算の結果が10桁を超えた場合のテストもした方が良いな ◦ 最大桁数を超えた場合の 「処理」または「出力」 • 負の整数の足し算もやっておこう ◦ マイナス記号の「入力」 、負の整数の計算「処理」 、マイナス記号の「出力」 • 整数だけでなく小数と整数の足し算のテストもやっておいた方が良いかな ◦ 小数の「入力」 、整数と小数の計算 「処理」 、小数の「出力」 • 足し算を計算した結果の数値をそのまま使って連続で足し算をしてみよう ◦ 「間接入力」 を使った足し算 ※「入力」に分類する考え方もあると思います
  6. それぞれの仕組みに応じたナレッジをためよう • 入力 ◦ ダブルクリックのテスト:処理を二重で行うことがないか ◦ 様々な文字種を入力するテスト:正常に扱えない文字がないか • 間接入力 ◦

    ユーザーの属性 • 間接出力 ◦ データ更新先:DB、サーバーキャッシュ、クラウドストレージ、ローカルストレージ ◦ データ削除:削除したデータに紐づくデータも削除されるか • 出力 ◦ 出力内容に予約語を含む:予約語が適切にエンコードなどされるか ▪ 例:CSVの「,」、URLの「&」や「?」、JSONの「”」
  7. 先ほどモデルのみでは思いつきにくいテストもある • ブラウザにURLを入力して直接特定の画面にアクセスすることができる ◦ UI上のリンクを非表示にしても、 URLを知っていればページにアクセスされてしまう • ブラウザでWebページを表示した時と、表示画面の操作をする時でデータの状態 が変わっている場合がある ◦

    ECサイトで注文しようと思ったら、他の人が先に同じ商品を注文していて商品が在庫切れに • ブラウザで同じページを複数開いたり、ブラウザの戻る機能を使ったりして1度しか できない操作を複数回試せる可能性がある ◦ アンケートの回答画面を複数開き、 2回回答できてしまう 1つのモデルを使えば安心というわけではない点に注意
  8. プロダクトを構成する仕組みをどこまでテストするか • 正常に動作することが担保されている仕組みは、細かくテストしない • 例)他の人が作成した品質が信頼できる仕組み ◦ サードパーティ製のメール配信システム、決済システム ▪ サードパーティ製ツールにデータを正しくセットするまでの処理をテストする ▪

    サードパーティ製ツールに設定した内容が正しいことを確認するテストをする ◦ フレームワークや信頼できるライブラリが提供する、古くから利用されている関数 ▪ 関数を正しく利用しているかまでをテストする • 例:四捨五入のテストでは、代表的な境界値だけテストする ◦ 信頼できるUIのコンポーネントのライブラリ ▪ Date Picker:閏年などの細かいテストはせず、代表的な日付のみ動作確認する ◦ HTMLの基本機能によるバリデーション ▪ inputタグのtype属性がemailの入力欄:細かくテストしない ※ メールアドレスの特殊なルールがある場合を除く
  9. 指定した条件の商品の一覧を取得する処理 ブラウザ サーバーアプリケーション (指定した条件の商品の一覧を取得 する処理を実行) レンダリングエンジン JavaScriptエンジン リクエスト レスポンス 指定した条件

    の 商品の一覧を ください 非表示の商品を除 いた商品の一覧を 返します リクエストの赤文字部分は ブラウザから指示を出す ブラウザでの手動テストも必要 複数ブラウザのテストは仕組み次第
  10. 修正した箇所より後に実行される関数内の処理 特別会員? 送料無料 合計金額が 5000円以 上? 送料が有料 No No Yes

    Yes 合計金額の判定を追加した場 合、この処理より前に実行され る「特別会員かどうかを判定す る処理」は修正の影響を受けな い
  11. 参考文献 • スライドの内容・構成を考える上で参考にした資料 ◦ 大西 建児、湯本 剛、町田 欣史、福田 里奈、角田 俊、藤原

    考功、大段 智広(著). 『ソフトウェアテスト教科書 JSTQB Foundation 第5版 シラバス2023対応』. 翔泳社. 2024 ▪ https://www.shoeisha.co.jp/book/detail/9784798188508 ◦ Glenford J. Myers, Tom Badgett, Todd M. Thomas, Corey Sandler(著), 長尾真(監訳), 松尾正信 (訳) .『ソフトウェア・テストの技法 第 2版』 . 近代科学社. 2019 ▪ https://www.kindaikagaku.co.jp/book_list/detail/9784764903296/
  12. 参考文献 • 機能抽象モデルの例 ◦ 井芹洋輝. 『テスト分析入門』 ▪ https://speakerdeck.com/goyoki/test-analysis-tutorial ◦ 山﨑祟.

    『テスト開発について改めて考えてみよう! ~ テスト分析やテスト設計を業務で上手くでき るようになるための四方山話』  ▪ https://speakerdeck.com/yamasaki696/tesutokai-fa-nituitegai-metekao-etemiyou-tesut ofen-xi-yatesutoshe-ji-woye-wu-deshang-shou-kudekiruyouninarutamenosi-fang-shan-hu a
  13. 参考文献 • Webの技術に関して参考にした資料 ◦ 小森裕介(著).『[改訂新版]プロになるための Web技術入門』. 技術評論社. 2024 ▪ https://gihyo.jp/book/2024/978-4-297-14571-2

    • この発表に関連する私の過去の記事 ◦ 『社内向けテスト設計プロセスを作ってみた』 ▪ https://tech.commune.co.jp/entry/2022/12/20/112000 ◦ 『テスト設計時に最低限のテストケースを選ぶための工夫(テストケース削減の工夫)』 ▪ https://kawabeaver.hatenablog.com/entry/2021/09/01/003000 ◦ 『修正内容に応じたリグレッションテストの実施範囲』 ▪ https://kawabeaver.hatenablog.com/entry/2021/12/18/000000