機能バグは、ソフトウェアの機能に関連する問題です。たとえば、ボタンを押してもフォームが送信されない、検索がユーザーの入力に反応しない、アプリがクラッシュするなどです。操作を行った際にWebサイト/アプリが期待どおりに反応しない場合は、機能上の問題である可能性があります。お客様の製品についての情報が限られており、その実装について十分な知識がないため、観察された動作が意図されたものなのか、実際にバグなのかを判断することは困難です。経験に基づいて合理的に推測し、さまざまなシナリオをテストして製品の動作を分析することで、判断の助けになります。
アプリの動作が機能バグかどうかを判断する方法:
ある機能が特定の方法で設計されているのか、それとも実際に壊れているのかを確認してください。単独でテストするとともに、他の機能と組み合わせてテストし、違いがないか確認します。
お客様がどのような意図で設計した可能性があるかを考え、その製品は単に実装されたとおりに動作しているだけかもしれないことを考慮してください。
何かが本来の動作をしていないことを示す証拠を見つけ、その主張を裏付けてください。
例:あるWebショップの機能が、あなたが知っている他のWebショップとは異なる動作をします。それだけで、その機能が壊れているとは限りません。お客様は自分たちの製品を自由に実装できます。
例:フォームフィールドがバリデーションされておらず、それがバグだと主張する場合、そのフィールドがバリデーションされる仕様であることを示す根拠があるか確認してください。たとえば、あるケースではフィールドがバリデーションされるが、別のケースではされないことを示すことで、この証拠を提示できます。証拠を提示しない場合、それは裏付けのない主張です。
ビジュアルまたはコンテンツの問題が機能を妨げる場合、それは機能上の問題となるため、機能バグとして報告する必要があります。
ある機能が異なるシナリオでも一貫して同じように動作し、明らかな問題がない場合、それはおそらく意図された動作です(バグではありません)。その場合は、変更をユーザビリティに関する提案として行ってください。
重大度の判定
機能バグの重大度レベルを判定する際には、複数の要因を考慮する必要があります。問題が機能に与える影響、問題の範囲、回避策が存在するか、またはショーストッパーであるか、潜在的かつ重大な売上損失が発生する可能性があるか、そして同じ重大度の他のバグと比較できるかどうかです。
分かりやすい方法として、バグが機能に与える影響を見ることができます。ある機能が利用できないことがどれほど重大なのかを考えてください。補助的な機能が壊れていても、主要な機能が壊れている場合とは異なり、ユーザーが目的を達成することを妨げるとは限りません。その機能が製品全体の中でどれほど重要なのかを考えてください。
機能上の問題によって何人のユーザー、何個の製品、または何件の項目が影響を受けるかは、問題の範囲を判断する重要な要素です。たとえば、Webショップの商品詳細ページすべてで「Add to Cart」ボタンが反応しないのでしょうか、それとも特定の1ページだけでしょうか。問題の影響を受けるのは少数のユーザーでしょうか、それとも全員でしょうか。
別の経路やオプションから目的を達成できるか、それともある機能が利用できないままなのかを考えてください。バグを直感的かつ簡単に回避する方法を見つけられる場合、このいわゆる回避策によって、引き続き目的を達成できます。回避策があるバグは、同等のバグで回避策がない場合よりも低い重大度になります。最後に、壊れた主要機能に回避策が存在しない場合、それはショーストッパーです。
潜在的な売上損失の見積もりは二次的な判断方法です。バグに対して人々がどのように反応するかは、多くの場合、推測することしかできないためです。それでも、潜在的な損失がどの程度になるかは考慮してください。商品の価格差が数セントなのか、数百ドルなのかでは大きな違いがあります。
また、同じチームリーダーがこのテストですでに承認したバグと自分のバグを比較することで、自分の重大度レベルが適切かどうかを確認することもできます。
機能バグには3つの重大度レベルがあります:
低(LOW):
製品の利用への影響が最小限である。
製品は意図しない動作をするが、通常の利用には影響しない。
影響を受けるユーザー、製品、または項目が少ない。
機能または機能の一部が壊れている、または利用できないが、簡単な回避策で問題を解決できる。
高(HIGH):
製品の利用に重大な影響があるが、主要な機能は正常に動作している。
多数のユーザー、製品、または項目が影響を受ける。
重要度の高い機能が壊れている、または利用できず、回避策も存在しない。
重要な機能が壊れている、または利用できないが、回避策が存在する(したがってショーストッパーではない)。
重大(CRITICAL):
バグによってアプリ/Webサイトの中核機能が利用できなくなる。
ショーストッパーによってユーザーが主要な処理を続行できなくなる。例:チェックアウト処理。
バグによって、アプリまたはWebサイトを運営する企業に潜在的かつ重大な売上損失が発生する。
一般的な判定
重大度が固定されているケースの一覧があります。上記の判定方法は、その一覧に記載されているケースには適用されません。この一覧は時間の経過とともに更新されるため、定期的に確認してください。
エッジケースのバグ
エッジケースのバグは、機能が通常とは異なる方法で使用された場合に発生します。一般的なデータと通常のユーザー操作で使用する場合、機能自体は壊れていません。例:
ボタンをクリックした直後にアプリを最小化するなどの即時操作
同じ操作を繰り返し行う。例:メニューを開いたり閉じたりする
一般的ではない一連の操作を行った後にのみ発生するバグ
各ケースは個別に評価する必要があります。お客様にとって関連性のあるエッジケースのバグは、低重大度のバグとして処理されます。ほとんどのエッジケースのバグに該当する関連性のないケースは却下されます。
強制的に発生させたバグ
通常とは異なる操作や特殊な条件によってバグを強制的に発生させることは、一般的に対象外です。このようなバグはお客様にとって関連性がないためです。通常とは異なる操作は、通常のユーザー行動を反映していません。通常とは異なる操作や特殊な条件の例:
複数の要素を同時にタップする
ボタンをランダムに押す
ボタンを何度も素早くクリックする
ウィンドウのサイズを通常ではない大きさまで変更したり、コンテンツをズームイン/ズームアウトしたりする
RAMまたは内部メモリがいっぱいになり、予期しない動作が発生する
非公式、ベータ版、または改変されたOSバージョンを使用する
