QAコミュニケーションアンチパターン 1章 崩れゆく調和と緊急対応
崩れゆく調和と緊急対応
程なくして、自分が作ったAPIを使った機能がリリースされたようだ。
リリース時にはドキドキしたが、エラーハンドリングの認識がずれていたくらいで、大きなバグはなかった。エラーハンドリングについてもすぐに修正し、連絡を入れた。このバグで顧客に迷惑がかからなかったようで、ホッとした。
続いて、自分たちの機能実装に取りかかる。
フロントエンドは龍井先輩が実装する。APIには特に追加実装はなく、ユーザーストーリーをもとにしたテスト設計とテスト実施は誤三さんが行うことになった。
龍井先輩の実装も順調で、API設計書や変更したエラーハンドリングについても連携し、作業は滞りなく進んだ。
テストが始まると、誤三さんからテキストで「バグです」と連絡があった。バグチケットを見ると、どのようなバグかは書かれているが、再現手順が記載されていない。文章でのみ説明されており、テストケースやユーザーストーリーとの関連がないため、背景がわからない。
龍井先輩がバグの再現を試みるが、再現できない。
「再現しないんですが、どのような手順で操作しましたか?」
「チケットに書いていますが」
「チケットに書いてある通りに操作しても再現しません」
「絶対にバグです」
議論が平行線をたどる。龍井先輩が「このバグチケット、APIの観点から何か分かりますか?」と尋ねる。
「あぁ、この挙動はバグっぽいかもしれないけど、前提となるデータはどうなっているのかな?」
そのことを誤三さんに尋ねると、
「いや、このデータでも挙動はこうなるはずです」
と一歩も譲らない。
「瀬羅さんに確認しましょう」
「必要ない!いいから、バグを直して」
「バグではないですってば、この対応をするとAPI側も直さなければならなくなります」
「わかりました。僕の方で対応します。」
瀬羅さんに確認しないのは不安だったが、誤三さんの言う通りにした。誤三さんのテストが終わり、リリースが決まった。
リリースから3日後、夜中に突然電話が鳴った。どうやらトラブルが発生したようだ。
エラー内容を見ると、自分が作ったAPIに関連しているらしい。その通知を見た時、嫌な予感がした。
程なくして、コミュニケーションツールに甲斐さんと龍井先輩も参加し、調査が始まった。
原因は誤三さんに指摘されて修正した箇所だった。やはり別の前提条件下ではバグが発生するようで、結果的にデータが消えてしまい、顧客の業務にも影響が出そうだった。調査の結果、元の実装が正しかったことが判明した。
そのことを甲斐さんに報告すると、ちょうど瀬羅さんもやってきた。深夜に起こされたため、みんな機嫌が悪い。
「元の実装に戻すと、このパターンではバグが発生するという報告を誤三さんから受けていますが、実装を戻しても良いですか?」
「え、このパターンはバグじゃないよ。挙動として正しい。エッジケースだけど」
「え?誤三さんがすごい剣幕で、これはバグだと言っていましたが」
「うーん、バグではない。ユーザーストーリーにも書いてあるよ」
ちなみに誤三さんはそこに来ていない。
「僕が責任取るから、その部分の実装を元に戻して」
「はい」
実装を戻し、ユニットテスト、APIテストを通して、ステージング環境にアップする。瀬羅さん、甲斐さん、龍井先輩、僕でテストを行い、問題ないことを確認して再リリースした。
挙動に問題がないことを確認した後、データパッチを実行してデータを元に戻す。
結果的に、顧客に迷惑をかけずに対応を終えた。
みんな安堵の表情で、動画通話サービスから退出していく。
次の日、今回の出来事を報告した。当然、誤三さんにも話を聞くことになった。
「それって僕のせいだと言っていますか?」
険悪な雰囲気だ。
「結局はバグを仕込んだエンジニアの責任ではありませんか?違うなら違うと言えばいい」
「はーひー」
つい口癖が出てしまう。
「いやいや、経緯を聞いたら、実装変更をお願いしたのは誤三さんじゃないですか」
「それはそうですが、実装したのは有路さんです」
「なぜ、誤三さんは瀬羅さんや甲斐さんに確認しなかったのですか?」
「それを確認するのはプログラマーでしょう」
「はぁ(ひーと言いそうになる)」
「いやいや、メビウス君は瀬羅さんに確認しようと言ったんだよね?」
「はひ」
龍井さんが「いい加減にしてくださいよ!僕もその場にいたんですよ!責任を押し付けないでください!」と声を上げた。
「責任を押し付けるのはあなたたちでしょう?」
八島さんが「ケンカしても仕方ないからやめましょう。とりあえずバグは直りましたから」と言って、その場をお開きにした。
その後、
「どうすればよかったんですかね?」
「どうもこうもないよ」
「そうなんですけど」
「なんだアイツ」
「まぁまぁ」
「来世さんがいたときはこんなことなかったのにさ」
「きっとそうですよね」
「あいつが入ってからおかしくなったよ」
「はーひー」
その次の日、ミーティングに呼ばれた。出社していたので、会議室に行くと先日話した他のプロダクトのエンジニアがいた。
「メビウスさんの実装が正しいですね、その変更だと確かにバグるはず」
という裏付けをしてくれた。QAさんもいて、
「ごめんね、誤三さんとは同じ会社なんだけど」
と申し訳なさそうにしている。
その後も、テストの抜け漏れによる市場バグが発生するようになった。瀬羅さんはロードマップの修正を余儀なくされ、八島さんは他のプロダクトとの調整に追われている。甲斐さんも実装を手伝ってくれているが、若干嬉しそうにしている。
「しょうがないなぁ、実装手伝ってやるよ」
(絶対この人、どさくさに紛れてソース触りたいだけだ)
みんなでそんなことを言い合っていた。ただ、市場バグが増えていて、会社内で問題になっているようだ。瀬羅さん、八島さん、甲斐さんが疲れた表情をすることが多くなった。
Discussion