5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

検証に入る前に「目的」を確認するだけで、手戻りはかなり減る (はず?)

5
Posted at

はじめに

前回、「複雑な情報を行動に変えるには、判断基準まで絞ることが大事」という話を整理しました。

そこから思い出したのが、検証前の目的合わせです。

開発現場では、同じチケットを見ているはずなのに、メンバーごとに微妙に違うものを見ていることがあります。

  • 開発者は「仕様どおり動くか」を見ている
  • QAは「壊れていないか」を見ている
  • POやPdMは「ユーザーの課題が解けるか」を見ている
  • 運用担当は「リリース後に問い合わせが増えないか」を見ている

どれも間違いではありません。問題は、検証に入る前に「今回の検証で何を確かめたいのか」が揃っていないことです。

fig0_overview.png

この記事では、検証前にチームで目的を確認するための実務メモをまとめます。

なお、この記事では「検証」を、テストケースの実行だけでなく、レビュー、ログ確認、リリース判断、運用影響の確認などを含む広い意味で使います。

※本記事は個人の整理メモです。

検証のズレは、観点の違いではなく「目的の違い」から起きる

検証観点が多いこと自体は悪くありません。

ただし、目的が揃っていないまま観点だけを増やすと、次のようなことが起きます。

  • QAは境界値を見ていたが、POは業務フロー全体の妥当性を見てほしかった
  • 開発者はエラーが出ないことを確認したが、CS(カスタマーサポート)はエラーメッセージの分かりやすさを気にしていた
  • レビューではコードの変更範囲を見ていたが、リリース判断では既存ユーザーへの影響が重要だった
  • 検証完了後に「で、これは何が大丈夫になったの?」という話になる

これは、誰かがサボったという話ではありません。

同じ「確認する」という言葉の中に、複数の意味が混ざっているだけです。

「何を確認するか」より先に「何のために確認するか」を置く

検証前の会話では、ついテストケースや確認手順から入りがちです。

しかし、手順は目的の後に決まります。

たとえば「ログインできることを確認する」という手順があっても、その目的によって見るべきものは変わります。

  • 新規実装の正しさを確認したい
  • 既存機能のデグレードがないことを確認したい
  • 障害対応後の再発防止を確認したい
  • ユーザーが迷わず使えることを確認したい
  • リリースしてよい状態かを判断したい

同じ操作でも、目的が違えば、必要な証拠も、見るべきログも、巻き込む相手も変わります。

fig1_purpose_first.png

だから、検証前にはまず次の一文を揃えます。

今回の検証は、〇〇を判断するために行う。

この一文がない検証は、頑張っているのに判断につながりにくくなります。

既存のフレームワークでも「目的」や「成功条件」は重視されている

これは個人的な感覚だけではありません。既存のフレームワークや公開情報を見ても、目的や成功条件を先に揃える考え方は繰り返し出てきます。

fig2_official_sources.png

ISTQB: テスト目的は「テストをする理由や目的」

ISTQB Glossary では、test objective は「テストをする理由や目的」と説明されています。

つまり、テストは単に手順を実行するものではなく、何らかの理由や目的に向かって行われるものです。

「とりあえず一通り確認しました」ではなく、「この判断のために、この確認をしました」と言える状態にする。ここが検証前の目的合わせの出発点になります。

Scrum Guide: Sprint Goal はチームを別々の活動から引き戻す

Scrum Guide では、Sprint Goal が Sprint の単一の目的であり、チームに一貫性と集中をもたらすものとして説明されています。また、Definition of Done は、成果物が Done と言える基準について共通理解を作るものとされています。

これは検証にもそのまま応用できます。

検証が「各自の観点の寄せ集め」になると、チームは別々の活動をしているような状態になります。そこに「今回の検証で判断したいこと」を置くと、確認観点が同じ方向を向きます。

Atlassian Team Playbook: キックオフでは目的・役割・成功条件を揃える

Atlassian の Project Kickoff Play では、プロジェクト開始時に目的、役割、責任、成功条件(成功の目印)を揃えることが重要だと説明されています。

検証も小さなプロジェクトと考えれば同じです。

特に、複数人で見る検証、リリース判断に関わる検証、障害対応後の検証では、最初に「成功とは何か」を揃えないと、終わったあとに判断が割れます。

検証前に確認したい5つの問い

長い会議は不要です。

検証に入る前に、5分だけ次の問いを確認します。

その前に、この記事で出てくる用語を簡単に整理しておきます。

  • 目的: なぜ検証するのか。何を判断したいのか
  • OKの主語: 誰の視点でOKと言うのか
  • 終了条件: 何が分かれば検証を終えられるのか
  • 対象外: 今回の判断に含めないものは何か
  • 判断者: 結果を見て最終判断するのは誰か

これらは別々の問いというより、1つの判断を支える5つの面と捉えると、後のテンプレートが使いやすくなりそうです。

fig3_five_questions.png

1. 今回、何を判断したいのか

最初に確認するのは、検証の目的です。

今回の検証は、リリース可否を判断するために行う。
今回の検証は、障害の再発防止策が効いているかを判断するために行う。
今回の検証は、ユーザーの主要導線が壊れていないかを判断するために行う。

ここが曖昧なままだと、検証結果も曖昧になります。

2. 誰にとってのOKなのか

「OK」の主語を確認します。

開発者にとってOK
QAにとってOK
ユーザーにとってOK
運用にとってOK
リリース責任者にとってOK

たとえば、機能としては正しくても、問い合わせが増えるUIなら運用上はOKではないかもしれません。逆に、内部実装に改善余地があっても、緊急修正としては十分な場合もあります。

OKの主語が違うと、同じ結果に対する判断も変わります。

3. 何が分かれば終わりなのか

検証は、無限に広げられます。

だからこそ、終了条件を先に決めます。

主要3導線で正常完了できる
既存の正常系が落ちていない
対象エラーが再現しない
想定ログが出力される
問い合わせ時に説明できる証跡が残る

「全部見る」ではなく、「今回の判断に必要な証拠は何か」を決めるのがポイントです。

4. 今回見ないものは何か

検証前に「見ないもの」を確認しておくと、後からのすれ違いが減ります。

今回は性能検証は対象外
今回は文言改善は対象外
今回は管理画面だけを見る
今回は既存データ移行までは見ない

これは手抜きではありません。範囲を明確にするための合意です。

もちろん、重大なリスクに気づいたら別途扱います。ただし、それは「今回の検証に混ぜる」のではなく、「追加で判断する」形に分けた方が混乱しにくくなります。

5. 結果を誰がどう判断するのか

最後に、検証結果の受け手を決めます。

QAが結果をまとめ、POがリリース可否を判断する
開発者がログを確認し、SREが運用影響を判断する
CSが問い合わせ観点を確認し、PdMがユーザー影響を判断する

検証する人と判断する人が違う場合、ここを曖昧にすると「確認は終わったが、誰も判断していない」という状態になります。

そのまま使えるミニテンプレート

チケットやSlackに貼るなら、これくらいで十分です。

## 検証前の目的確認

### 目的
今回の検証は、〇〇を判断するために行う。

### OKの主語
誰にとってOKか:

### 終了条件
- 
- 
- 

### 今回見ないもの
- 
- 

### 判断者
検証結果を見て、最終的に〇〇さん / 〇〇ロールが判断する。

重要なのは、きれいなフォーマットを作ることではありません。

検証前に、メンバー間のズレを表に出すことです。

なお、このテンプレートを毎回きっちり埋める必要はありません。軽微な文言修正や、影響範囲が明確な修正では、形式化が逆に負担になります。複数ロールが関わる検証、リリース可否に関わる検証、障害対応後の検証では、最初に数分だけでも目的を揃える価値があります。

例: 「保存ボタンの不具合修正」を検証する場合

たとえば、保存ボタンを押してもデータが保存されない不具合を直したとします。

目的が曖昧だと、各メンバーはこう見ます。

  • 開発者: 修正した条件で保存できるか
  • QA: 関連する入力パターンで壊れていないか
  • PO: ユーザーの主要業務が完了できるか
  • CS: 問い合わせ済みユーザーに説明できるか

ここで、検証前に次のように揃えます。

fig4_save_button_example.png

## 検証前の目的確認

### 目的
今回の検証は、保存失敗の再発防止と、主要業務フローのリリース可否を判断するために行う。

### OKの主語
ユーザーが主要入力パターンで保存を完了でき、CSが問い合わせに説明できる状態をOKとする。

### 終了条件
- 障害発生時の入力条件で保存できる
- 通常の新規作成・編集・再保存ができる
- エラー時の表示とログが確認できる
- CS向けに確認結果を説明できる

### 今回見ないもの
- 保存処理の性能改善
- 入力フォーム全体の文言改善
- 管理画面側の一覧表示改善

### 判断者
QAが結果をまとめ、POがリリース可否を判断する。

この状態なら、検証結果がそのまま判断材料になります。

目的合わせで起きる「よい衝突」

目的確認をすると、たまに意見が割れます。

QA: 既存導線の回帰も見たいです。
PO: 今回は障害条件だけ確認できれば出したいです。
CS: 問い合わせが来ているので、説明用の証跡は必要です。

これは悪い衝突ではありません。

むしろ、検証後に起きるはずだったズレが、検証前に出てきただけです。

目的合わせの価値は、全員を同じ意見にすることではありません。違う前提を早めに見つけて、今回の判断基準を決めることです。

まとめ

image.png

検証前に目的を確認するだけで、検証の質はかなり変わります。

  • 同じチケットを見ていても、メンバーごとに見ている「OK」は違う
  • 検証手順より先に、検証の目的を置く
  • 「誰にとってのOKか」を確認する
  • 終了条件と今回見ないものを決める
  • 検証結果を誰が判断するかまで決める

検証とは、作業を消化することではなく、判断に必要な証拠を集めることです。

だからこそ、始める前に一度だけ問いを置きます。

今回の検証は、何を判断するためにやるのか。

この一文が揃うだけで、チームの検証はかなり強くなります。

参考・関連情報

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?