読者です 読者をやめる 読者になる 読者になる

mixi engineer blog

ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

新社会人のためのバグレポートの基本

QA

はじめまして、品質管理部門の柿崎です。
最近、Skyrim にハマってしまい、人生一回休みになりかけています。

季節は春ということで、新社会人になられる方も多いと存じます。
新社会人が会社勤めをするようになって、初めて書くビジネス文書といえば......
そうですね!「バグレポート」ですね。
今回はバグレポートの基本について書きたいと思います。

近年、開発現場ではバグトラッキングシステムが定着し、ドッグフーディングのような社内テストを行う現場も増え、テスト担当者以外の方でもバグレポートを提出する機会が増えています。そして前衛的なバグレポートによって、プログラマ達が理不尽かつ不可解なバグ地獄に叩き込まれる機会も増えています。

バグレポートは諸刃の剣です。
良いバグレポートはアプリケーションの問題を速やかに解決まで導きますが、反対にダメなレポートは現場に混乱をもたらします。

良いバグレポートを書く方法は、それほど難しくはありません。
たった3つの要素をレポートに盛り込むことで、現場を混乱から守ることができます。

1. 何が起きたのか伝える

残念なバグレポートによく見られるのが、
何が起きたのかわからないというパターンです。

「フォト投稿画面がおかしい」
「設定変更画面がおかしい」

このレポートを読んだプログラマは考えます。
「一体、何がおかしいのだろう?そして二度と"おかしい"って単語を口にするんじゃねえ!」と。

何が起きたかはできるだけ詳しく伝えるべきです。

「フォト投稿画面で写真を選択するとブラウザがクラッシュする」
「設定変更画面でレイアウトが崩れている」

バグを見つけて焦る気持ちはわかります。
しかし、「〇〇がおかしい」という、
悪い意味でざっくばらんとした記述をすることは避けるようにしましょう。

2. 期待されることを伝える

時折、何が悪いのか分からないレポートがあります。

報告者: 「ごみ箱をクリックするとフォトが消えます」
プログラマ: 「ごみ箱をクリックしたならフォトは消えるよ」
報告者: 「仕様書では削除前に確認のダイアログが表示されることになっています」
プログラマ: 「言いたいことは良くわかりました。修正します」

報告者が期待していることを書き添えるだけで、
プログラマは状況把握がしやすくなります。

上記の例では、比較的穏やかに問題解決していますが、
やり取りの回数が多くなりすぎて、
バグトラッキングシステム上の罵り合いに発展することは、
割と良くある光景なので注意したいところです。

3. 再現手順を伝える

プログラマにとって、現象が再現できないバグレポートほど、もどかしいものはありません。もし、報告したレポートが「再現せず」で差し戻されていたら、それは再現手順が明示されていないか、間違っていると考えられます。

バグが発生した時、どんな操作を行ったのか、しっかり記載するようにしてください。
できれば、レポートを打ち上げる前に記載した手順で、バグが再現することを確認しておくと良いでしょう。他の人にレポートを読みながら再現してもらう、という手段も非常に効果的です。

また、バグが発生したり、しなかったりと、再現手順を確定させることが難しいこともあります。その場合は、再現手順を書かない、ではなく、いつもそのバグが発生するわけではない旨を書き添えて、再現手順を書くようにしましょう。

稀に「Step1 PCを立ち上げる」、「Step2 コーヒーを飲む」、
「Step3 RSSを消化する」...(中略)...「Step20 リンクをクリックするとサーバーエラー」みたいな、
手順がやたらと多いレポートをあげてくる人もいます。
バグの発生と因果関係のない手順はできるだけ省いて報告しましょう。

手順が短く簡潔で、確実にバグを再現できるレポートは、プログラマにとって、とても有益な情報となります。

まとめ

以下、3つの要素が盛り込まれていれば、概ね良いバグレポートだと言えます。

1. 何が起きたか
2. 期待されることは何か
3. どうやって再現させるのか

プログラマに半角全角の入り乱れた数字を見せ続けると死ぬ ことは、割とよく知られた話ですが、開発終盤にわけのわからないバグレポートを見せ続けても、やはりプログラマは死んでしまいます。
そんな悲劇を起こなさいためにも、本エントリーを参考にして、有意義な新社会人生活(バグトラッキングライフ)を過ごして頂ければ幸いです。