- 重大度は、システムに対するバグの影響を測定します。 優先度は、どれだけ緊急に修正する必要があるかを表します。
- 通常、テスターは重大度を提案し、製品所有者は通常、優先順位を決定します。
- これらは独立しているため、タイプミスは緊急を要する可能性があり、クラッシュは待機する可能性があります。
- 優先順位はビジネスの状況に応じて変化しますが、重大度は安定する傾向があります。
ホームページ上の会社名のスペルミスと、めったに使用されないエクスポート機能のクラッシュ: どちらを最初に修正しますか?このような議論がテストチームを分離する理由です重大度と優先度。 1 つは技術的な損害を説明し、もう 1 つはビジネスの緊急性を説明します。
この区別がなければ、すべてのバグは「重大」というラベルが付けられ、そのラベルは意味を失い、開発者はラベルを信頼しなくなります。このガイドでは、明確な定義と例、およびこれらの決定を下すための簡単なプロセスを説明します。例は例示的なものであり、正確な規模はチームやツールによって異なります。
短い答え
重大度の回答: このバグは製品にどの程度の悪影響を及ぼしますか?クラッシュやデータ損失は深刻ですが、表面上の不具合は深刻ではありません。
優先事項の答え: どれくらい早く修正する必要がありますか?それは、影響を受ける顧客、期限、収益、法的暴露、ブランドの評判によって異なります。
病院を考えてみましょう。重症度は、患者の状態がどれほど深刻であるかを表します。優先順位は患者が治療される順序であり、誰が安全に待つことができるか、どのリソースが空いているかなどの他の要因にも依存します。
重大度と優先度を並べて表示
| アスペクト | 重大度 | 優先順位 |
|---|---|---|
| 質問 | 影響はどの程度ですか? | どれくらい早く修正しなければなりませんか? |
| フォーカス | システムへの技術的影響 | ビジネスのニーズとスケジュール設定 |
| 通常は次のように設定されます | テスターまたは QA エンジニア | プロダクトオーナーまたはプロジェクトマネージャー |
| 基礎 | 観察された動作 | 顧客、収益、納期、リスク |
| 時間の経過とともに変化しますか? | まれに | 多くの場合 |
| 決定します | 欠陥がどれほど深刻であるか | 修正キューの順序 |
重大度レベル
ほとんどのチームは約 4 つまたは 5 つのレベルを使用します。一般的なスケールは次のとおりです。
| レベル | 意味 | 例 |
|---|---|---|
| クリティカル(S1) | システムダウン、データ損失、またはセキュリティ侵害、回避策なし | 請求書を保存すると顧客記録が削除されます |
| メジャー(S2) | 主要な機能が壊れているか、強力な回避策しか存在しません | 検索ではどのクエリに対しても結果が返されません |
| 中程度(S3) | 機能が部分的に失敗するが、合理的な回避策が存在する | 日付フィルターは失敗しますが、日付による並べ替えは機能します |
| マイナー(S4) | 多少の不便はあるが、機能はそのまま | ツールチップが間違った位置に表示される |
| 些細なこと (S5) | 化粧品のみ | 少しずれたアイコン |
優先レベル
| レベル | 意味 | 典型的なアクション |
|---|---|---|
| P1、緊急 | 今すぐ修正する必要があります | 他の作業を中止し、ホットフィックスを検討してください |
| P2、高 | 次のリリースまでに修正する必要がある | 現在のスプリントでのスケジュール |
| P3、中 | すぐに修正されるはずです | 今後のスプリントに参加する |
| P4、低 | 容量がある場合に修正する | バックログを保持し、時々レビューします |
チームにとって各レベルが何を意味するかを書き留め、理想的にはそれぞれの目標応答時間を示します。 「P1 は、誰かが 1 時間以内に開始することを意味します」は、「P1 は非常に重要であることを意味します」よりもはるかに便利です。
4 つの組み合わせと例
これを理解する最も明確な方法は、各組み合わせを確認することです。
| 高優先度 | 優先度が低い | |
|---|---|---|
| 重大度が高い | セール中にすべての顧客のチェックアウトが失敗する | ほとんど誰も使用していないファイル形式にエクスポートするとクラッシュする |
| 重大度が低い | ホームページの会社名のスペルが間違っています | 読者が少ない古いヘルプ記事のタイプミス |
重大度が高く、優先度が高い
チェックアウトは誰にとっても失敗し、ビジネスは刻々と損失を被り、回避策はありません。これは明白なケースです。すべてを削除して修正してください。
重大度は高く、優先度は低い
従来の形式にエクスポートすると、アプリケーションがクラッシュします。技術的には、それは重大な失敗です。ただし、ごく一部のユーザーのみがこの機能に触れ、最新の形式が問題なく動作する場合は、予定されたリリースを待つことができます。
重大度は低く、優先度は高い
ホームページ上の会社名のスペルが間違っています。何も壊れておらず、データが危険にさらされることもありません。しかし、すべての訪問者がそれを目にすることになり、信頼が損なわれます。明日大規模なリリースが予定されている場合は、今日中に修正する必要があります。
重大度が低く、優先度が低い
めったにアクセスされないヘルプ記事に小さなタイプミスがありました。都合の良いときに修正してください。バックログがこれらでいっぱいの場合は、それらを 1 つのクリーンアップ タスクにまとめることを検討してください。
1 つのバグ、2 つの異なる優先順位
同じ欠陥でも、コンテキストに応じて異なる優先順位が与えられる可能性があります。注文確認メールが間違ったロゴで送信されたとします。
| コンテキスト | 重大度 | 優先順位 |
|---|---|---|
| 小型内部工具 | マイナー | P4 |
| パブリック ブランドがブランド変更されたばかりで、今週発表される | マイナー | P1 または P2 |
システムへの影響は同じであるため、重大度は変わりません。しかし、経営状況はそうなりました。時間は物事を変えることもあります。現在 P3 であるバグが、主要クライアントの稼働前週には P1 になる可能性があります。
ヒント: コンテキスト内の一部の変更は重大度に影響します。間違った税計算は、すべての請求書に適用されることがわかるまでは大したことないように思えるかもしれないので、レベルを決める前に、バグがどの程度の範囲に及ぶかを確認してください。
重大度と優先度は誰が決定しますか?
- テスターは、動作を確認し、システムへの影響を理解しているため、通常、重大度を提案します。
- プロダクトオーナーまたはマネージャーは通常、顧客、収益、ロードマップを比較検討して優先順位を決定します。
- 開発者は、原因、修正のリスク、修正にかかる時間に関する情報を追加します。
- サポート チームは、影響を受ける顧客の数とその深刻さに関する証拠を提出します。
これらの責任はソースやチームによって異なり、小規模なスタートアップでは 1 人ですべてを行う場合もあります。重要なのは、誰が最終決定を下すかを誰もが知っているため、意見の相違は決定で終わるということです。
バグを評価する方法
不明な点がある場合は、次の質問に答えてください。
重大度については、次のとおりです。
- データの紛失や破損、あるいは個人情報の漏洩はありますか?
- main 機能の動作が停止しますか?
- 回避策はありますか?通常のユーザーはそれを見つけることができますか?
- 機能のどの程度が影響を受けますか?
優先順位としては:
- 何人のユーザーが影響を受けますか?またどのユーザーが影響を受けますか?
- 費用がかかりますか? それとも法的リスクやコンプライアンスのリスクが生じますか?
- リリース、デモ、またはセールが近づいていますか?
- それはどの程度目立つのでしょうか?また、評判を傷つける可能性がありますか?
- テストなどの他の作業が妨げられますか?
バグトリアージの実行
トリアージは、チームが新しいバグをレビューし、次に何を行うかを決定する定期的な会議です。単純な形式がうまく機能します。
- 準備します。 テスターは、それぞれの新しいバグに明確な手順、証拠、提案された重大度があることを確認します。
- 確認します。 複製可能であり、重複していないか確認してください。
- 決定します。 重大度に同意し、優先順位を設定し、所有者を割り当てます。
- ループを閉じます。 各バグを拒否、延期、またはスケジュールし、その理由を記録します。
短く、頻繁に伝えてください。リリース前の最後の数日間は、毎日 15 分間のトリアージが一般的です。重大度と優先度もリリースの決定に影響するため、終了基準の一部として、「リリース時に未解決の S1 または S2 バグがない」などのルールに事前に同意してください。
バグレポートの重大度と優先度
短く明確なエントリは、誰もが適切な決定を下すのに役立ちます。
Title: Checkout returns error 500 when a coupon is applied
Severity: S1 - blocks purchase, no workaround
Priority: P1 proposed - sale starts Friday
Build: 2.14.0, production
Reach: All customers using a coupon (around 30% of orders)
Steps: 1. Add an item 2. Apply SAVE10 3. Click Pay
Result: Error 500 and no order is created
Expected: Order is created with the discount applied
これらの数値は一例です。実際のレポートでは、ログから測定された数値を使用し、その推論を説明します。詳細については、バグ レポートの書き方に関するガイドをご覧ください。また、エラー コードの意味を知るのにも役立ちます。HTTP ステータス コードのチートシートを手元に置いておいてください。
よくある間違い
- これらを同じフィールドとして扱います。 2 つが常に一致すると、有用な情報が失われます。
- 注意を引くために重大度を誇張する。 すべてが重要な場合は、何も重要ではなくなります。
- テスターに優先順位を単独で設定させる。テスターがビジネス全体像を把握していることはほとんどありません。
- バックログを決してレビューしない。 優先順位は古くなるため、古いバグを定期的に再チェックしてください。
- 定義が書かれていない。定義がないと、人によってラベルの付け方が異なり、言葉について議論することになる。
- 重大度の低いパイルアップを無視する。 50 個の小さな問題があると、たとえどれも重大なものではなくても、製品が壊れているように感じられることがあります。
まとめ
2 つの質問を分けて考えてください。それはどの程度悪いのか、そしてどれくらい早く修正する必要があるのかということです。各レベルの書面による定義に同意し、誰が決定するかを明確にします。次のステップとして、トラッカー内の最も古い 10 個のバグを取り出し、上記の質問を使用してそれらを再評価します。おそらく、移動すべきものもいくつか、閉鎖すべきものもいくつか見つかるでしょう。
よくある質問
重大度と優先度の違いは何ですか?
重大度は、欠陥がシステムに与える害の程度です。優先順位は、どれだけ早急に修正する必要があるかです。 1 つは技術的な影響に関するもので、もう 1 つはビジネスの緊急性に関するものです。
バグの重大度が低く、優先度が高いことはありますか?
はい。ホームページ上の会社名のスペルが間違っていても何も問題はありませんが、非常に目立つため、チームはすぐに修正することを望むかもしれません。
バグの重大度が高く、優先度が低いことはありますか?
はい。めったに使用されないレガシー機能のクラッシュは技術的に深刻ですが、影響を受けるユーザーが少なく、適切な代替手段があれば、待つことができます。
重大度と優先度は誰が設定するのでしょうか?
通常、テスターが重大度を提案し、製品所有者またはマネージャーが優先順位を決定します。多くのチームは、バグトリアージ会議中に両方を一緒に最終決定します。
高重大度または高優先度のどちらを最初に修正する必要がありますか?
優先順位がキューを決定するため、優先順位に従って修正します。ただし、重大度は重要な入力であるため、通常は重大なバグが高い優先順位を与えられます。
学び続ける
テスト、WordPress、または SEO についてサポートが必要ですか?
私たちは、チームがより優れたソフトウェアを出荷し、サイトを成長させるのを支援します。あなたが取り組んでいることを教えてください。明確な次のステップを提案します。
詳しいガイドはこちら テスト、AI、最新の開発
この記事は気に入りましたか?トピックを選択して、最新のチュートリアルに直接アクセスしてください。
AI 幻覚の説明: 言語モデルが物事をでっち上げる理由とそれを軽減する方法
AI 幻覚について説明しました。幻覚とは何か、言語モデルが幻覚を生成する理由、一般的な種類、グラウンディングとプロンプトで幻覚を軽減する方法、そして私たちが実行した簡単なチェックです。
記事を読む →DevOps環境変数の説明: .env ファイル、シークレット、および設定が正しく行われている
実行した Python の例を使用して環境変数について説明します。環境変数の読み取りと設定、すべての値が文字列である理由、.env ファイル、プロセスの継承、シークレット、検証について説明します。
記事を読む →ソフトウェア開発API レート制限の説明: アルゴリズム、ヘッダー、および 429 エラーの処理
API レート制限については、実行したシミュレーションで説明します。トークン バケット、固定ウィンドウ、スライディング ウィンドウ、429 応答、レート制限ヘッダー、バックオフによる再試行、およびテスト制限です。
記事を読む →テスト自動化Python でのモッキング:unittest.mock、patch、およびテストを嘘にする間違い
Python でのunittest.mockによるモック、テスト済み: モックとreturn_value、side_effect、名前が使用されている場所のパッチ、仕様と自動仕様、日付のモック、およびよくある間違い。
記事を読む →ソフトウェアテストコードカバレッジの説明: 回線カバレッジとブランチカバレッジ、および 100% の実際の意味
実際のcoverage.pyの実行でコードカバレッジを説明: 行、分岐、条件のカバレッジ、レポートの読み取り、100%のカバレッジでもバグを見逃す可能性がある理由、および賢明なターゲット。
記事を読む →データベースとSQLSQL における DELETE、TRUNCATE、DROP: 違い、ロールバック、およびそれぞれをいつ使用するか
DELETE、TRUNCATE、DROP について、テスト済み SQL を使用して説明します。それぞれの削除内容、ロールバック、トリガー、ID リセット、速度、PostgreSQL、MySQL、SQL Server、SQLite の違いについて説明します。
記事を読む →データベースとSQLSQL ビューの説明: 作成、使用、落とし穴の回避、例を示します
SQL ビューについて、実行したクエリとともに説明しました。ビューの作成、ライブ結果、列の非表示、パフォーマンス、更新可能なビューと具体化されたビュー、壊れた依存関係、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発TypeScript インターフェイスと型: 実際の違い、コンパイラでテスト
TypeScript インターフェイスと型、実際のコンパイラでチェック: 両方でできること、片方だけでできること、宣言のマージ、拡張と交差、および従うべき簡単なルール。
記事を読む →ソフトウェア開発Python *args と **kwargs の説明: 柔軟な関数と明確な例
Python の *args と **kwargs について、実行したコードで説明しました。パッキングとアンパッキング、パラメーターの順序、キーワードのみの引数と位置のみの引数、デコレーター、一般的なエラーです。
記事を読む →ソフトウェア開発Python Lambda 関数: 構文、実際の用途、および使用すべきでない場合
Python のラムダ関数について、実行したコードとともに説明します。構文、キーによるソート、マップとフィルター、クロージャー、遅延バインディング トラップ、通常の def がより適切な選択である場合。
記事を読む →人工知能AIエージェントとは何ですか?シンプルなエージェント ループを実行できる仕組み
AIエージェントとは何ですか?エージェント ループ、ツール、メモリ、ガードレール、実行した小さな Python ループ、実際のリスク、およびシンプルなチャットボットがより良い選択である場合についてのわかりやすいガイドです。
記事を読む →DevOpsモニタリングと可観測性: ログ、メトリクス、トレースによる本当の違い
モニタリングと可観測性について説明: 既知および未知の障害、ログ、メトリクスとトレース、チェックアウト インシデントのウォークスルー、ゴールデン シグナル、OpenTelemetry、および便利なアラート。
記事を読む →DevOpsDocker ボリュームとバインド マウント: コンテナ データを正しい方法で保持する
Docker ボリュームとバインド マウントについて説明します。コンテナ データが消える理由、名前付きボリューム、バインド マウント、tmpfs、Compose の例、バックアップ、アクセス許可、およびそれぞれをいつ使用するかについて説明します。
記事を読む →テスト自動化TDD と BDD: 主な違い、1 つの機能が両方の方法で構築され、それぞれをいつ使用するか
TDD と BDD は、両方の方法で構築された 1 つの割引機能で説明されています。実行したコードによるレッド-グリーン-リファクタリング、Given-When-Then シナリオ、ツール、トレードオフ、およびそれぞれをいつ使用するかです。
記事を読む →ソフトウェアテストユーザー受け入れテスト (UAT): プロセス、チェックリスト、および実際の例
ユーザー受け入れテストの説明: 誰が実行するか、QA との違い、7 段階のプロセス、UAT テスト ケース テンプレート、チェックリスト、サインオフ基準、およびよくある間違い。
記事を読む →データベースとSQLSQL NULL 値の説明: IS NULL、COALESCE、NULLIF、および回避すべきトラップ
SQL の NULL 値について、実行したクエリで説明しました。3 つの値のロジック、IS NULL、COALESCE、NULLIF、集計、結合、並べ替えでの NULL の扱い方、およびそれが密かに引き起こすバグです。
記事を読む →データベースとSQLSQL CASE WHEN ステートメント: 構文、実際の例、およびよくある間違い
SQL CASE WHEN では、単純な検索フォーム、条件順序、SUM を使用したピボット、COUNT トリック、カスタム並べ替え、更新、回避すべき NULL トラップなど、実行したクエリを使用して説明しました。
記事を読む →ソフトウェア開発JWTとは何ですか? JSON Web トークンを実際の例で説明する
JWTとは何ですか? JSON Web トークンについて説明しました。3 つの部分、実行したコード内で構築および改ざんされたトークン、JWT とセッション、ストレージ、リフレッシュ トークン、およびセキュリティ上の間違いです。
記事を読む →ソフトウェア開発JavaScript イベントループの説明: コールスタック、マイクロタスク、タイマーと例
JavaScript イベント ループについて、実行したコードで説明しました。コール スタック、タスク キュー、マイクロタスク キュー、setTimeout 0 が即時ではない理由、ブロッキング、スターベーション、およびインタビュー クイズです。
記事を読む →ソフトウェア開発Python ジェネレーターと収量の説明: 実際の例でメモリを節約する
Python ジェネレーターと Yield について、実行したコードを使用して説明します。一時停止と再開の方法、メモリ節約の測定、パイプライン、無限シーケンス、Yield from、send、および一般的なトラップについて説明します。
記事を読む →人工知能埋め込みとは何ですか?ベクトルとコサインの類似度を簡単に説明
埋め込みとは何ですか?ベクトル、コサイン類似度、セマンティック検索に関する平易なガイド。私たちが実行した小さな例、一般的な使用法、モデルの選択、既知の制限が含まれています。
記事を読む →DevOpsBlue-Green デプロイメントと Canary デプロイメント: 違い、トレードオフ、および選択方法
ブルー グリーン デプロイメントとカナリア デプロイメントについて説明: それぞれの仕組み、コスト、リスクとロールバック、テストした安定したユーザー バケット化、データベース移行、ローリング アップデート、および選択方法。
記事を読む →テスト自動化不安定なテスト: 問題の原因とそれを永久に修正する方法
不安定なテストについては、私たちが実行したデモを使用して説明しました。主な原因、確認および診断する方法、タイミングの適切な修正、共有された状態と日付、隔離プロセスなどです。
記事を読む →ソフトウェアテスト負荷テストとストレス テスト: 違い、メトリクス、および k6 の例
ロード テストとストレス テストについて説明します。それぞれが何を証明するか、スパイク テストとソーク テスト、重要な指標、平均値が誤解を招く理由、K6 の例、テストの計画方法について説明します。
記事を読む →ソフトウェアテストテスト ケースとテスト シナリオ: 主な違い、例、およびそれぞれをいつ使用するか
テスト ケースとテスト シナリオの説明: 明確な定義、並べて表、シナリオからケースへの 1 つのパスワード リセット機能、テンプレート、およびそれぞれをいつ使用するか。
記事を読む →データベースとSQLSQL クエリの最適化: 実行プランを読み取り、タイミングを考慮して遅いクエリを修正
SQL クエリの最適化は 100 万行でテストされています。実行プランの読み取り、適切なインデックスの追加、検索対象外のフィルターの修正、複合インデックスとキーセットのページネーションの使用。
記事を読む →データベースとSQLSQL UNION と UNION ALL: 違い、例、テストされたパフォーマンス
SQL UNION と UNION ALL について、実行したクエリで説明しました。重複、両方に従うルール、実際のデータのバグ、測定されたパフォーマンス、INTERSECT と EXCEPT、およびそれぞれをいつ使用するかについて説明します。
記事を読む →ソフトウェア開発JavaScript Fetch API チュートリアル: GET、POST、エラー処理、タイムアウト
ローカル サーバーに対してテストされた JavaScript Fetch API チュートリアル: GET と POST、404 がスローされない理由、再利用可能なヘルパー、クエリ文字列、タイムアウト、CORS、およびよくある間違い。
記事を読む →ソフトウェア開発Python ファイル処理: 読み取り、書き込み、CSV、JSON、パスライブラリと例
Python のファイル処理について、実行したコードで説明します。オープン モード、大きいファイルの読み取り、CSV、JSON、パスライブラリ、バイナリ ファイル、安全な書き込み、エラー処理、およびよくある間違いについて説明します。
記事を読む →ソフトウェア開発Python のクラスとオブジェクト: 実際の例を含む OOP チュートリアル
Python のクラスとオブジェクトについて、実行したコードとともに説明します: __init__、メソッド、クラスとインスタンスの属性、継承、プロパティ、ダンダー メソッド、データクラス、およびよくある間違い。
記事を読む →人工知能大規模言語モデルとは何ですか? LLM の仕組みを誇大広告なしで説明
大規模言語モデルとは何ですか? LLM は、トークン、エンベディング、アテンション、トレーニング、温度およびコンテキスト ウィンドウ、小さな次の単語のデモ、実際の制限など、平易な言葉で説明されています。
記事を読む →DevOps初心者のための Linux コマンド: 例を含む基本ターミナル ガイド
初心者向けの Linux コマンド。ナビゲーション、ファイル、ログの表示、grep、パイプ、権限、プロセス、アーカイブなどのタスク別にグループ化されており、実用的なログ分析の例も含まれています。
記事を読む →テスト自動化Selenium と Playwright: 主な違い、コードの比較、どちらを選択するか
Selenium と Playwright の比較: アーキテクチャ、待機、ブラウザと言語のサポート、デバッグ、両方のツールでの同じテスト、移行のアドバイスと選択方法。
記事を読む →ソフトウェアテスト等価性分割: テスト設計手法を実際の例で説明
等価性パーティション化について説明しました。有効なパーティションと無効なパーティションを見つける方法、年齢、パスワード、クーポンに関する実際の例、実行したテスト、境界と組み合わせる理由。
記事を読む →ソフトウェアテストソフトウェアテストにおける重大度と優先度: 相違点、マトリックス、および実際の例
ソフトウェア テストにおける重大度と優先度について説明します。明確な定義、例を含む 4 方向のマトリックス、レベル スケール、それぞれの設定者、バグ トリアージの実行方法。
記事を読む →データベースとSQLSQL サブクエリのチュートリアル: 型、相関サブクエリ、および EXISTS と例
実行したクエリを含む SQL サブクエリのチュートリアル: スカラー、IN、FROM、SELECT サブクエリ、相関サブクエリ、EXISTS、NOT IN NULL トラップ、サブクエリ対 JOIN 対 CTE。
記事を読む →データベースとSQLSQL トランザクションと ACID の説明: COMMIT、ROLLBACK、分離レベル
SQL トランザクションと ACID について、実行した銀行振込で説明しました。COMMIT、ROLLBACK、セーブポイント、ロック、分離レベル、ダーティ リード、デッドロック、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発Git mergeとrebaseの違い:例と使い分け
Git mergeとrebaseの違いを、実際のログ出力、比較表、rebaseの黄金律、安全なチームワークフローで解説します。
記事を読む →ソフトウェア開発Pythonのリスト内包表記:構文・例・使うべきでない場面
Pythonのリスト内包表記を解説:構文、フィルタ、if-else、ネストしたループ、実測した処理時間、そして通常のforループの方が良い場面。
記事を読む →データベースとSQLSQL JOINを例で解説(Inner・Left・Right・Full)
サンプルのテーブルとクエリでSQL JOINを順に解説。INNER、LEFT、RIGHT、FULL、CROSS、SELFに加え、よくある間違いとパフォーマンスのコツも紹介します。
記事を読む →