テストプロセスを用いて、テストケース作成の思考を整理しよう
View Slide
自己紹介● 風間裕也(ブロッコリー)● @nihobuson● 社外活動○ WACATE 2019 夏からWACATE実行委員○ JaSST Review 実行委員長● 翻訳活動○ 書籍『Agile Testing Condensed』○ 書籍『Testing in DevOps』○ 書籍『The BDD Books - Discovery』● 猫派
セッションの目的● プロセスについて理解する● テストプロセスについて理解する● テストプロセスの定義を行うメリットを理解する
プロセスとは何か
プロセスとは何かプロセス(process)は、英語で「過程」「工程」を意味する外来語である。プロセッシング (processing) と言った場合は、「処理」を意味する。手続き(procedure)に着目し、対象を所定の手続きによって別のものに変換する活動を表す場合もある。プロセス (曖昧さ回避) - Wikipedia
プチワーク①以下の計算問題を解いてください(30秒)8×7ー32÷4
プチワーク①以下の計算問題を解いてください(30秒)8×7ー32÷4答え…48どうやって計算しましたか?
解答を導き出すまでの過程=プロセス8×7ー32÷4を計算答えは48
解答を導き出すまでの過程=プロセス掛け算を計算答えは48引き算を計算割り算を計算8×7=56 32÷4=8 56ー8=48
解答を導き出すまでの過程=プロセス計算順序を確認答えは48引き算を計算割り算を計算掛け算を計算掛け算と割り算を計算してから引き算すれば良いな
解答を導き出すまでの過程=プロセス計算順序を確認答えは48繰り下がりの引き算を計算割り算を計算掛け算を計算10の位との合計を計算16ー8=10ー2=840+8=48 56ー 8 484 1
解答を導き出すまでの過程=プロセス8×7ー32÷4を計算答えは48計算順序を確認答えは48繰り下がりの引き算を計算割り算を計算掛け算を計算10の位との合計を計算
解答を導き出すまでの過程=プロセス8×7ー32÷4を計算答えは48計算順序を確認答えは48繰り下がりの引き算を計算割り算を計算掛け算を計算10の位との合計を計算人によってプロセスは違うプロセスを細かく分けることができる
細かいプロセスを示すとレビューしやすい8×7ー32÷4=64どこで間違えたんだろ…?
細かいプロセスを示すとレビューしやすい8×7ー32÷4=648×7ー32÷4=72ー32÷4=72ー8=64掛け算が間違ってた
テストプロセス
昔のテストプロセステスト実行より前に行う内容(「テスト設計」「テスト準備」などの呼び方あり)テスト実行参考:http://aster.or.jp/business/contest/doc/2020_U-30_V1.0.0.pdf#page=65
JSTQBで示しているテストプロセステスト分析テスト設計テスト実装テスト実行何をテストするかそれをどうテストするかテストの実行に必要なものすべてを準備したかテストスイートを実行する参考:ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018V3.1.J02
JSTQBで示しているテストプロセス(全体)テスト計画テスト分析テスト設計テスト実装テスト実行 テスト完了テストのモニタリングとコントロールテストの目的と、制約内でテストの目的を達成するためのアプローチを定義する計画した進捗と実際の進捗を継続的に比較する何をテストするかを決定するどのようにテストするかを決定するテストの実行に必要なものすべてを準備するテストスイートを実行する完了したテストのデータをまとめるISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018V3.1.J03を参考に作成
ログイン画面を題材にテストプロセスを考える
テスト分析「何をテストするか」を考える。例えば…● 正しい組み合わせでログインできるか● ログイン失敗時、エラーメッセージが適切か● パスワードの入力欄はマスクされているか● 指定回数以上ログイン失敗した場合、ロックされるか箇条書きやマインドマップなどの記法を活用するテスト分析テスト設計テスト実装テスト実行
テスト分析テスト設計の方針も考える例えば…● 正しい組み合わせでログインできるか● ログイン失敗時、エラーメッセージが適切か● パスワードの入力欄はマスクされているか● 指定回数以上ログイン失敗した場合、ロックされるか○ →境界値分析が使えそう…?テスト分析テスト設計テスト実装テスト実行
「どのようにテストするか」を考える● 指定回数以上ログイン失敗した場合、ロックされるか同値分割、境界値分析、デシジョンテーブル、状態遷移、ユースケースなどのテスト技法を活用する。テスト設計5 6ロックされない ロックされるテスト分析テスト設計テスト実装テスト実行
テスト実装テストの実行に必要なものすべてを準備する。● 手動テストの場合…手順書作成● 自動テストの場合…テストスクリプト作成テスト分析テスト設計テスト実装テスト実行
テストプロセスを意識した成果物を作成する理由● テスト分析として「何をテストするのか」を決めていることで、テスト設計に役立てられる● テスト設計の成果物を見ることで、どんなパターンをテストしようとしているのか把握しやすい● テスト実装の成果物を見ることで、具体的にどんな値を用いてテストするのか把握しやすい
テストプロセスを用いて開発プロセスの早い段階でテストの考えを注入する
早い段階でのテストの考えの注入要件定義 設計 実装テスト分析 テスト設計 テスト実装 テスト実行こういう内容をテストしよう具体的な期待値までは定義できないが…
早い段階でのテストの考えの注入の具体例[要求定義、要件定義]ログイン失敗が続いた場合、アカウントをロックしたい[テスト分析]指定回数以上失敗した場合にアカウントロックされるか確認しよう(この段階では具体的な回数を定めていない)
テストプロセスを意識した成果物作成の注意点
技術を使っている≠テストプロセスを行っている右は、デシジョンテーブルっぽい書き方を用いたテスト手順書の例これはテスト設計ではなくテスト実装である
技術を使っている≠テストプロセスを行っている右は、マインドマップの記法を用いたテスト実行結果の例これはテスト分析ではなくテスト実行である
おわりに
まとめ● プロセスを細かく分けることによって、どの段階で何を考えるべきなのか明確にできる● テストプロセスを分けて定義し、成果物を作成することで、テストプロセスの目的に沿ったものを把握できる○ 成果物作成のための技術を学習する必要あり● テストプロセスを分けて定義することで、開発プロセスの早い段階でテストの考えを注入できる
おしまい