1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

バグ票のタイトルの分析

Posted at

1. はじめに

バグ票のタイトルを機械的に分析することで次のようなことがわかることがあります。

  • システムテスト工程へ流出しがちなバグ
  • テストチームに検出を期待しているバグと実際に起票されているバグのミスマッチ
  • バグ検出工程のミスマッチ

そこで生成AI(ChatGPT)で生成した架空のバグのタイトルを題材に分析してみます。

2. バグ一覧のサンプル

生成AI(ChatGPT)にテストエンジニアになったつもりで架空のデジタルカメラの架空のバグを何回かに分けて合計160件出力してもらいました。修正優先度、重篤度、タイトルのいずれも生成AIの出力です。

No. 修正優先度 重篤度 タイトル
1 P2 High AF機能 - 低照度環境でオートフォーカスが動作しない
2 P2 High 連写モード - 高速連写中に撮影が途中で停止する
3 P3 Mid ホワイトバランス - 「太陽光」設定が反映されない
4 P1 High 動画撮影 - 4K録画中にランダムでフリーズする
5 P1 High バッテリー管理 - 残量20%以下で突然電源が落ちる
6 P3 Mid Wi-Fi接続 - スマートフォン連携時に接続が途切れる
7 P3 Mid タッチパネル - 一部のUIボタンが反応しない
8 P4 Low RAW現像 - カメラ内現像時に色が正しく表示されない
9 P3 Mid SDカード認識 - 特定のブランドのカードが認識されない
10 P3 Mid ファームウェアアップデート - アップデート後に設定が初期化される
No.11~No.160はこちら
No. 修正優先度 重篤度 タイトル
11 P2 High シャッター - 高速シャッター時に画像が黒くなる
12 P2 High 露出補正 - EV値を変更しても反映されない
13 P3 Mid ISO感度 - オートISOが意図しない値になる
14 P4 Low ノイズ低減 - 長時間露光時のノイズ低減が動作しない
15 P3 Mid 手ブレ補正 - 動作が不安定で時々効果がない
16 P1 High 連写バッファ - 連写後にカメラが応答しなくなる
17 P3 Mid EVF - 電子ビューファインダーの表示が遅延する
18 P4 Low JPEG圧縮 - 画質設定が正しく反映されない
19 P1 High HDMI出力 - 外部モニター接続時に画面が乱れる
20 P2 High フォーカスピーキング - 設定ONでも表示されない
21 P3 Mid メモリーカードフォーマット - 初期化が失敗する
22 P3 High Bluetooth接続 - リモート撮影時に頻繁に切断される
23 P3 Mid メニュー操作 - ダイヤル操作が一部反応しない
24 P4 Low ファームウェアアップデート - 進行状況が100%で止まる
25 P3 Mid バリアングル液晶 - 角度によって表示がちらつく
26 P2 High 動画音声 - 録音された音声がノイズ混じりになる
27 P4 Low 画像プレビュー - 再生時に一部サムネイルが表示されない
28 P3 Mid 露出計 - 室内撮影時に誤った測定結果を示す
29 P1 High フラッシュ - 内蔵フラッシュが発光しない
30 P3 Mid 撮影モード - パノラマ撮影で画像が正常に保存されない
31 P4 Mid メニュー表示 - 言語設定変更後も一部が英語のまま
32 P2 High AF-Cモード - 連写時にピントが合わなくなる
33 P3 Mid 撮影設定 - 設定リセット後も一部の設定が変更されない
34 P2 High 露出補正 - ±3EV以上の設定ができない
35 P1 High メカシャッター - 低速シャッター時に異音がする
36 P3 Mid バリアングル液晶 - 反転時に画面が表示されないことがある
37 P4 Low カスタムボタン - 一部の機能が登録できない
38 P2 High 4K動画撮影 - 長時間録画時にフレームドロップが発生する
39 P1 High 電源管理 - スリープ解除後にフリーズすることがある
40 P3 Mid AFエリア選択 - タッチ操作が正しく動作しないことがある
41 P2 High シャッターボタン - 半押しでAFが作動しないことがある
42 P4 Low Wi-Fi転送 - 画像転送中に進行バーが更新されない
43 P3 Mid 露出シミュレーション - 設定変更時に画面がブラックアウトする
44 P1 High 動画録画 - 長時間録画後にカメラが再起動する
45 P2 High 手ブレ補正 - 望遠レンズ使用時に補正効果が低い
46 P3 Mid フラッシュ発光量 - 設定変更が反映されないことがある
47 P4 Low メニュー表示 - 一部の翻訳ミスがある
48 P2 High HDMI出力 - 外部モニターに正しく出力されないことがある
49 P3 Mid SDカードフォーマット - 完了後にエラーメッセージが表示される
50 P1 High USB接続 - PC接続時に認識されないことがある
51 P4 Low RAWファイル再生 - 再生時に表示が遅い
52 P3 Mid EVF輝度調整 - 設定が保存されないことがある
53 P2 High オートホワイトバランス - 室内光の条件で不安定
54 P3 Mid メニュー操作 - 一部のオプションがグレーアウトして選択できない
55 P1 High 連写後の処理 - バッファ解放後にカメラが操作不能になる
56 P2 High タイムラプス撮影 - 撮影途中で止まることがある
57 P3 Mid AFポイント表示 - 設定変更後も反映されないことがある
58 P4 Low 画像回転 - 自動回転設定が無効になることがある
59 P2 High バッテリー残量 - 低残量時に誤った値が表示される
60 P3 Mid タッチシャッター - 一部のエリアで反応しない
61 P4 Low フォーカスアシスト - 選択中のオプションが画面から消える
62 P1 High メモリーカード書き込み - 途中でエラーが発生する
63 P2 High 連写撮影 - 連写中にブラックアウトが発生する
64 P3 Mid ファームウェアアップデート - 完了後に設定が初期化される
65 P4 Low カメラ内RAW現像 - 出力結果が意図した色合いにならない
66 P1 High 動画撮影 - 音声が録音されないことがある
67 P2 High AF速度 - 低コントラスト環境で遅延が発生する
68 P3 Mid シャッター音 - 消音モードでもわずかに音がする
69 P4 Low 画像回転 - サムネイルと再生画像の向きが一致しない
70 P1 High スリープ復帰 - 復帰後にカメラが反応しないことがある
71 P2 High EVF情報表示 - 撮影情報が欠落することがある
72 P3 Mid タッチUI - 一部メニューのタッチ操作ができない
73 P4 Low JPEG出力 - 一部の色が意図しないトーンになる
74 P1 High センサー清掃 - 自動クリーニングが機能しない
75 P2 High 低温環境 - 気温0℃以下で動作が不安定になる
76 P3 Mid カスタム設定 - 設定内容が意図せずリセットされる
77 P4 Low SDカード挿入 - 認識までに時間がかかることがある
78 P1 High メニュー応答 - 長時間使用後に反応が遅くなる
79 P2 High 動画手ブレ補正 - 歩行撮影時に不自然な揺れが発生する
80 P3 Mid ライブビュー - 高速シャッター時に遅延が発生する
81 P4 Low 撮影履歴 - 再生モードで表示順がランダムになる
82 P2 High AFトラッキング - 被写体追尾中に急に外れることがある
83 P3 Mid ISOオート - 低照度で意図しない高ISO設定になる
84 P4 Low 画像プレビュー - サムネイルが一部表示されない
85 P1 High シャッター遅延 - レリーズ後に0.5秒遅れて撮影される
86 P2 High バースト撮影 - 連写中に途中で止まることがある
87 P3 Mid EVF切替 - 自動切替時にブラックアウトする
88 P4 Low Wi-Fi接続 - パスワード入力時に文字化けする
89 P1 High タイムコード - 動画撮影時に記録がズレる
90 P3 Mid バッテリー持続時間 - メーカー公称値より極端に短い
91 P4 Low AFポイント表示 - 設定変更後に表示が一瞬遅れる
92 P2 High 低温環境 - 氷点下でバッテリー残量が急激に減少する
93 P3 Mid 手動フォーカス - ピーキング表示が遅延する
94 P4 Low HDMI出力 - メニュー画面の解像度が低くなる
95 P1 High ファームウェア更新 - 成功後に再起動せず操作不能になる
96 P2 High タッチAF - タップ時に意図しない位置にピントが合う
97 P3 Mid SDカード抜き差し - 取り外した後にエラー表示が残る
98 P4 Low 画像比較 - マルチ画像再生でズーム倍率が異なる
99 P1 High 連写後のバッファ解放 - 書き込み完了までフリーズする
100 P2 High Bluetoothペアリング - 接続時にカメラがフリーズする
101 P3 Mid タッチ操作 - メニュー内でスクロールが途切れる
102 P4 Low カラー設定 - 「暖色」設定時に色温度が極端に偏る
103 P1 High 高感度撮影 - ノイズリダクション設定が反映されない
104 P2 High タイムラプス撮影 - 撮影完了後に動画が生成されない
105 P3 Mid ダイヤル操作 - 回転方向が逆になることがある
106 P4 Low カメラ内編集 - コントラスト変更後にリセットできない
107 P1 High 長時間撮影 - 連続使用で本体が異常に熱くなる
108 P2 High GPSログ - 記録がランダムに停止することがある
109 P3 Mid EVF情報表示 - 撮影情報がランダムに消える
110 P4 Low 画像回転 - 自動回転が有効でも適用されないことがある
111 P1 High 高速SDカード - UHS-IIカードで書き込み速度が遅い
112 P2 High マルチフォーカス - 顔認識がONでも機能しない
113 P3 Mid プリセット撮影モード - 設定を適用後にフリーズする
114 P4 Low SDカードスロット - カードを抜くと時々エラー表示が出る
115 P1 High スリープ復帰 - 一部のキー入力が効かなくなる
116 P2 High 連続動画撮影 - 2時間超過後に録画が停止する
117 P3 Mid タイムラプスプレビュー - 再生時にフレームが飛ぶ
118 P4 Low JPEG圧縮 - 「標準画質」設定時にノイズが増える
119 P1 High HDMIライブビュー - 長時間使用後に信号が途切れる
120 P2 High Wi-Fi経由転送 - 大容量データ転送時に失敗する
121 P3 Mid AF音 - AF駆動音が異常に大きいことがある
122 P4 Low 画像エフェクト - 「モノクロ」モードの色味が不自然
123 P1 High スローシャッター - 長時間露光で画像が暗くなる
124 P2 High ISO拡張 - 低ISO(50)設定が反映されない
125 P3 Mid 画像情報 - EXIFデータの一部が欠落する
126 P4 Low ダイヤルカスタマイズ - 割り当てた機能が適用されない
127 P1 High メモリーカード書き込み - 保存中にフリーズする
128 P2 High シャッター音 - 無音設定でも音がわずかに残る
129 P3 Mid 低照度AF - フォーカス精度が著しく低下する
130 P4 Low 動画記録設定 - H.265設定が適用されない
131 P1 High 長時間録画 - 60分超過後にカメラが勝手にシャットダウンする
132 P1 High HDR撮影 - 画像合成後にアプリがクラッシュする
133 P2 Mid タッチパネル - メニュー内でスクロールが途中で止まる
134 P3 Low 画像プレビュー - 縦位置撮影のサムネイルが回転しない
135 P1 High パノラマ撮影 - 撮影完了後にエラーで保存されない
136 P2 High Wi-Fi転送 - RAWファイル転送時に途中で失敗する
137 P3 Mid 連続撮影 - 5分以上の連写後にバッファ解放が遅延する
138 P4 Low HDMI出力 - 外部モニター接続時に画面がちらつく
139 P1 High 低速シャッター - 1秒以上の露光でブラックアウトする
140 P2 High 電源管理 - 自動スリープ後にシャッターが効かなくなる
141 P3 Mid USB接続 - 外部ストレージへ直接書き込みできない
142 P4 Low カスタムボタン - 割り当てた機能が適用されないことがある
143 P1 High バッテリー充電 - 100%表示なのにすぐに電源が落ちる
144 P2 Mid GPS記録 - 位置情報が正しく保存されないことがある
145 P3 Low タイムラプス - 撮影した画像が正しい順番で記録されない
146 P1 High 4K動画 - 撮影開始後にフリーズすることがある
147 P2 High シャッタースピード - 1/4000秒で撮影時にノイズが発生
148 P3 Mid ISOオート - 室内撮影時に極端に高ISOが選択される
149 P4 Low マニュアルフォーカス - ピント位置が正しく保存されない
150 P1 High リモートシャッター - ワイヤレス接続時に反応しない
151 P2 High 外部フラッシュ - 同調速度がずれることがある
152 P3 Mid バッテリー残量表示 - 突然0%になり電源が落ちる
153 P4 Low ホワイトバランス - 「日陰」設定時に青みが強くなる
154 P1 High RAW現像 - 内部処理時に画像が破損することがある
155 P2 High AF速度 - 暗所でAFが極端に遅くなる
156 P3 Mid 動画手ブレ補正 - 一部のフレームで歪みが発生する
157 P4 Low 撮影モード切替 - 「風景」モードの彩度が不自然に高い
158 P1 High SDカードエラー - 高速書き込み中にデータ破損が発生
159 P2 High 連続撮影 - 10コマ目以降で露出が不安定になる
160 P3 Mid AFエリア選択 - タッチパネルで選択ができないことがある

修正優先度(P1~P4)と重篤度(High、Mid、Low)の内訳を以下に示します。

修正優先度 High Mid Low 総計
P1 35 0 0 35
P2 38 2 0 40
P3 1 47 2 50
p4 0 1 34 35
総計 74 50 36 160

テストチームが重篤度を設定して起票し開発チームが修正優先度を設定してバグ修正するスタイルを想定すると架空のバグ一覧とはいえChatGPTは次の理由で優秀なテストエンジニアと思います。

  • 重篤度Highが46%、Midが31%、Lowが23%で、やばいバグが半数を占めている
  • 修正優先度P1とP2と重篤度High、P3とMid、P4とLowがほぼ対応している
    • テストチームからすればせっかく起票しているのに修正してもらえない、開発チームからすればそこまで修正優先度の高くないバグを重篤なバグとして起票してくる、というミスマッチが起きていないように見える

重篤度をHigh、Mid、Lowで付けるようにプロンプトで指示したところ生成AIから次のような提案をされました。

重篤度(Severity) は、High / Mid / Low で設定しました。
High: 重大な機能不全(撮影不可、フリーズ、電源断など)
Mid: 影響があるが致命的ではない(設定が反映されない、一部機能が不安定)
Low: 影響が小さい(画面表示の問題、特定条件で発生)

また、修正優先度は特に何段階とは指示しなかったにもかかわらず次のような提案をされました。

次のステップとして、修正優先度(Priority)を設定しますが、何か基準を決めて適用しましょうか? 例えば以下のようなルールで設定できます。
修正優先度の例

P1(最優先): システムがフリーズ、クラッシュ、電源が落ちるバグ
P2(高優先度): 撮影や基本機能に影響があるバグ
P3(通常優先度): 一部の設定・機能が動作しないが、回避策があるバグ
P4(低優先度): UIの問題や軽微な表示の不具合

このルールで適用する形で良いですか? それとも、別の方針を希望しますか? 😊

重篤度、修正優先度ともたたき台として十分役立つように思いました。

3. タイトルの分析

バグ票のタイトルを分析して修正優先度が高いバグ票の特徴を調べます。おおまかな手順は次の通りです。

  1. バグ票のタイトルを単語で分割する
  2. 単語の登場回数を調べる

3.1 バグ票のタイトルを単語で分割する

形態素分析を行います。本稿ではExcelとWordを使って超お手軽単語頻度分析 | すごい改善で紹介されている方法で行いました。

  • 「連写」が「連」「写」と分割されていたため手作業で修正しました
  • シャッターに関する次の単語はそれぞれ別の単語として切り出されていて本稿ではそのまま(シャッターでひとまとめにしない)で分析しています
    • シャッター
    • シャッタースピード
    • シャッターボタン
    • シャッター音
    • スローシャッター
    • タッチシャッター
    • メカシャッター
    • リモートシャッター

3.2 単語がタイトルに含まれているかを調べる

単語がタイトルに含まれているかをCOUNTIF関数で調べます。

fig.1 countif関数で調べる
fig.1 countif関数で調べる

  • セルF2に「撮影」を記入しています
  • セルF16に「=COUNTIF(\$E16, "*"&F\$2&"*")」を記入しています
  • セルE16に「撮影」が含まれていてCOUNTIFの結果が1になっています

3.3 修正優先度および重篤度ごとに単語の登場回数を調べる

修正優先度、重篤度、単語の3つが合致するセルの数をCOUNTIFSで調べます。

fig.2 countifs関数で調べる
fig.2 countifs関数で調べる

  • セルF6に「=COUNTIFS(\$C\$15:\$C\$1007,"P2",\$D\$15:\$D\$1007,"High",F\$15:F\$1007,1)」を記入しています
    • 1007はバグ一覧の行数よりも大きな値であれば構いません
    • 最初は適当に1000にしていたのが行の挿入や削除を繰り返していろいろ試しているうちに1007になった、というのが実際のところです
  • セルF6は修正優先度:P2、重篤度:High、単語:撮影を満たすセルが11個あることを示しています

3.4 単語の出現回数を整理する

3.1節で出現回数が4以上の単語について整理したものをfig.3に示します。

fig.3 3.1節で出現回数が4以上の単語
fig.3 3.1節で出現回数が4以上の単語

サンプルのバグ一覧は修正優先度P1とP2と重篤度High、P3とMid、P4とLowがほぼ対応していることから重篤度を省いて整理してみます。また、件数だけでなく割合にも着目してみます。P1のチケット件数→P1のチケット割合を大きい順にソートしたものをfig.4に、P1のチケット割合→P1のチケット件数を大きい順にソートしたものをfig.5に示します。

fig.4 P1のチケット件数→P1のチケット割合を大きい順にソート
fig.4 P1のチケット件数→P1のチケット割合を大きい順にソート

fig.5 P1のチケット割合→P1のチケット件数を大きい順にソート
fig.5 P1のチケット割合→P1のチケット件数を大きい順にソート

3.5 単語の出現回数からわかること

  • fig.4 L5「撮影」は登場回数は多いもののP1からP4のどこにも分布しています。カメラのテストで「撮影」が多いのは当たり前と考えられるのでこういった単語は無視します。
  • fig.4 L7「書き込み」、L10「動画」、L11「シャッター」、L18「連写」、L15「録画」はP1やP2の登場回数が多い機能のため欠陥が偏在している可能性があります。重点的にテストするとよさそうです。
  • fig.5 L6「長時間」、L8「フリーズ」、L45「途中」は架空のバグとはいえ結合テストやシンプルな機能テストで見つけるのは難しいかもしれません。修正優先度が高いわりに見つけるのが難しいバグはそれを見つけるためのテストに工数を投下する価値がありそうです。
  • 一方、fig.4 L55「再生」は件数の多さのわりに起票しても修正優先度が低く、起票してもなかなか直してもらえない項目がわかるとより優先度の高いバグを見つけるテストに工数を配分するヒントになりそうです。あるいは優先度の低いバグがシステムテスト工程に流出しないよう開発者に前工程のテストで摘出するように働きかけるのも一案です。

4. 分析結果の活用

4.1 開発

  • バグ票を分析することで「上手に開発するのが難しい機能」や「上手にチェックするのが難しい機能」がわかることがあります。
  • テストチームに検出を期待しているバグと実際に起票されているバグにミスマッチが感じられる場合、それがただの思い込みなのか実際にミスマッチしているかを定量的に把握できるのはメリットと思います。

4.2 テスト

優先度や重要度の高いテストにリソースを集中するための定量的な判断材料の一つになります。

  • 全数テストは不可能なことや欠陥は偏在することが知られています。新機能や新機能を追加するために改修した既存機能に加えてバグ票を分析することで得られた「上手に開発するのが難しい機能」「上手にチェックするのが難しい機能」はテストを厚くする候補といえます。
  • 顧客満足に寄与する度合いが高いものほど優先度が高くなると考えると開発チームによって設定されたバグの修正優先度はその開発チームやチームが所属する組織、ドメインにおける顧客満足の考え方が反映されていると考えられます。

2.全数テストは不可能
すべてをテストすることは、ごく単純なソフトウェア以外では非現実的である(Manna 1978)。全数テストの代わりに、テスト技法(第4章参照)、テストケースの優先順位付け(5.1.5項参照)、リスクベースドテスト(5.2節参照)を用いて、テストにかける労力を集中すべきである。
4.欠陥の偏在
通常、見つかる欠陥や運用時の故障の大部分は、少数のシステムコンポーネントに集中する(Enders 1975)。この現象は、パレートの法則を示している。予測した欠陥の偏在、および実際にテスト中または運用中に観察した欠陥の偏在は、リスクベースドテストの重要なインプットとなる(5.2節参照)。
出典:ISTQBテスト技術者資格制度Foundation Level シラバス 日本語版 Version 2023V4.0.J02

4.3 QA

QAエンジニアの役割の一つに「品質計画の策定」があり、計画を立てるための材料になります。

3-7 品質計画の策定
QAエンジニアは「品質計画」の策定に関与するケースも少なくありません。品質計画とは、プロジェクトが達成すべきソフトウェアの品質目標や、その達成に向けたプランを明確にするプロセスのことです。
出典:QA(品質保証)とは?主な7つの役割と求められるスキル・資格を解説【ソフトウェア開発・テスト用語 】| Qbook

これは顧客が期待する水準を維持するためにプロセスの各段階で何をどれくらいどうやるかを組織の品質方針と矛盾しないように決めることといえます。また、やることを決めるのはやらないことを決めることでもあります。

  • 品質目標をISO 9001にならって解釈すると「組織の品質方針と整合する、組織が品質に対して達成すべき目標」となります。
  • 「顧客が期待する水準の維持」は次のOxford Business English DictionaryのQuality Assuranceの説明を参考にしています。

(Production) the practice of managing every stage of the process of producing goods or providing services to make sure they are kept at the standard that the customer expects
(参考:DeepL翻訳)(生産)商品を生産したりサービスを提供したりするプロセスの各段階を管理し、顧客が期待する水準に保たれるようにすること。

サンプルのバグ一覧では「再生」を含むバグは重篤度、修正優先度が低いことがわかりました。「再生」を含むタイトルを以下に示します。

No. 修正優先度 重篤度 タイトル
27 P4 Low 画像プレビュー - 再生時に一部サムネイルが表示されない
51 P4 Low RAWファイル再生 - 再生時に表示が遅い
69 P4 Low 画像回転 - サムネイルと再生画像の向きが一致しない
81 P4 Low 撮影履歴 - 再生モードで表示順がランダムになる
98 P4 Low 画像比較 - マルチ画像再生でズーム倍率が異なる
117 P3 Mid タイムラプスプレビュー - 再生時にフレームが飛ぶ

もしシステムテスト工程の手動テストでこれらのバグを見つけているならその工数はもっと重篤度や優先度の高いバグを見つけることに使う方が有意義な可能性があります。また、No.27、69、81は実機を治具で操作したり期待画像と比較することでチェックの自動化ができそうです。そこで次のような品質計画が考えられます。

目的
重篤度や優先度の高いバグをより多く摘出し、以って顧客満足度向上をはかる
段取り
①No.27、69、81のような重篤度や優先度が低いバグの手動テストを割愛すると決める
②割愛してねん出した工数を重篤度や優先度の高いバグを見つけるテストに割り振る
③手動テストを割愛しても後工程にバグが流出しないよう前工程(実装工程)に自動チェックを追加するよう開発チームに働きかける
④もしチェック自動化が難しいならQAチームで巻き取る
  • バグの入り込みに着目した品質計画も考えられますが本稿では割愛します
  • テストを減らしたりなくしたりするのは難しいですが、顧客が期待する水準を維持できるように代替手法を組み込む、リソースをリスクの高いところに振る、リスクを評価して戦略的に判断する、と考えるとよいと思います
  • テストにおける戦略の考え方は「テスト戦略談義まとめ」が参考になります
  • 戦略は「戦術 tactic と戦略 strategy の違いを英語で詳しく解説」がわかりやすいと思いました

5. おわりに

バグ票のタイトルの分析は機械的なテキスト処理ながらも単語の出現回数という定量データが得られ、改善活動として手を付けやすいと思います。

A. 補足

より高度な手法としてテキストマイニングによるバグ分析があります。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?