この記事は、システムのある機能(機能a)のふるまいを変更したときに「テストが足りないかも?」と思ったテスターが、実装者のプログラマーMさんと会話したときの記録です。一部ハイコンテクストで非常にわかりづらいので、まずはじめに会話の概要とこの記事で伝えたいことを書いておきます。
開発現場での会話が、miwaのシステムの内部設計の理解を助け、お客さまの現場での製品の使われ方をMさんが深く知るきっかけになった。miwaが知りたいと示した内容から、Mさんは自分が当たり前に知っていることを自認し、同時に相手(miwa)が知り得ないことに気づく。心配性のmiwaは気がかりをMさんに伝える。その心配はMさんに伝播し、Mさん自身の行動をすこし変えることになる。毎日の小さな会話のひとつひとつは、自分たちの開発やテストをあらためて見直す機会となり、それらがより良いものになるよう変化をうながし、わたしたちのモノづくりに地続きでつながっている。*1
2025.05.09(金) 16:32(トワイライトゾーン*2)
🥷miwa「Mさん、おつかれさまでーす。
Mさん「な、なにか見つけましたか?
🥷miwa「見つけてないです(笑)
🥷miwa「あのね、ちょっとご相談というか、Mさんたちが機能aで実装してくれたストーリーなんですけどね。
Mさん「あ!さっきチケットみました。miwaさんが試したこと書いてくれてますね。
隣にいるペアのプログラマーKさんも手を止めて会話に混ざってくる
🥷miwa「そうそう、それです。もう見てくれたんですね。ありがとうございます。試した範囲ではちゃんと動いてましたよ。素晴らしい!!
Mさん「よかったー。
🥷miwa「でね、自分で試したことがテスト(テストケース)に書いてあるのか気になっちゃって。調べた感じだとこの表のとおりなんですけどね。
| 試したこと | テストが書いてある場所 | 備考 |
|---|---|---|
| A | 本チケット | |
| B | 本チケット | |
| C | チケット1000 | |
| D | ||
| E | レイアウト違いで2種類 | |
| F | Referenceの切り替えで3種類 | |
| G | チケット2000 | |
| H |
Mさん「はいはい。
🥷miwa「テストがないのもありますね。
Mさん「ありますね。
🥷miwa「Dはテストがないですけど、たとえば、Aを試すことで自然にDのふるまいもカバーできるから、わざと(意図的に)書いてないとかですか?
Mさん「そうですね。実装的には同じところを通ってます。
🥷miwa「なるほどー、そうなんですね。ほかのE、F、Hも同じですか?
Mさん「同じです。
🥷miwa「いちおう、ねんのためというかなんというか、今回の変更の元になったチケット(ふるまいを変更する前のストーリー)を見てみたんですけどね、(そのチケットを画面に表示しながら)こちらのテストはOLD-Test(今回ふるまいを変更したことでテストが通らなくなるので識別子を入れて管理している)になってますよね。
Mさん「そうですね。
🥷miwa「で、OLD-Testに書いてあるテストをおさらいしてみたんですが、ここに書いてあるテストのこれね(指で指し示す)これが今回のストーリーではなくなっちゃった感じがするんですよね。この表だとEにたいするテストになると思うんですけどね。
Mさん「たしかにー。
🥷miwa「でも実装として同じところを通ってるなら、Aのテストでカバーできるのもわかるんだよな……。
Mさん「あーー(Aのテストで)カバーできるのがわかるのは、自分が実装してるからかー。実装を知らない人は、なんでテストがこれだけでいいのかわからないですね。
🥷miwa「うん。わたしもいまMさんに教えてもらったからわかったけど、わからなかったです。とくにHなんかはAからするとだいぶ遠いというか、うーん、想像できないなぁ…。
Mさん「あれ、Hも同じはずだよね?(Kさんの顔を見ながら)あとでちょっとコードを確認しておきますね。
🥷miwa「ありがとうございます。
🥷miwa「あとね、これはわたしの個人的な心配なんですけど、今はこれで大丈夫だとして、これから設計や実装がどんどん変わっていくじゃないですか。
Mさん「ですねぇ。
🥷miwa「たとえば1年後に、Eのふるまいはどうなっているのが正しいんだっけ?ってなったときに、Aのふるまいから正解にたどりつくのは結構大変になるんじゃないかと思うんですよね。開発日記を順に読んでいけば、まぁわかるといえばわかるんだろうけど。*3
Mさん「たしかに。テストを書かないなら書かなくていい理由を残しておくとかしないと大変か。
🥷miwa「ですです。
🥷miwa「あとね、この先いつになるかわからないけど、機能aやその周辺に変更が入ったとして、うっかり直し忘れてEが置いてけぼりになったりしたら、AのテストだけだとEがおかしいことに気づきづらくなってしまいそうで……心配なんですよね。
Mさん「たしかに……。
🥷miwa「この機能aはわりとよく使うんですよ。だからなんとしても!どんな場面でも!頑丈にしておきたいんです。
Mさん「そういえば、似たようなやつで機能bがありますよね。機能bでも機能aと同じようなことができますが、機能aとのチガイがよくわかってないかも、、、
🥷miwa「するどい! たしかに機能aと機能bは似てますね。でも使われ方がちょっと違うんですよね。
臨床現場でお客さまはどんなときにどういう使い方をするのか、それぞれの機能の嬉しさはなにかを話しながら、機能aと機能bのチガイがわかるように実際にやってみせる
Mさん「なるほどーー、こういう使い方をするなら機能aのEのテストは追加しておいたほうがいいですね。
🥷miwa「わたしもそう思います。テストがないところ、もう一度みていきましょうか?
Mさん「はい!
MさんとKさんが、表を見ながらこれはテストを追加したほうがいいね、この切り替えできるタイプの3つは使い方の括りとしては同じだから、代表して1つ書いておけばいいかな……と話し合ってるのを頷きながら聞いているmiwa
2025.05.09(金) 16:51(ひととおり見直しが終わって)
🥷miwa「うんうん。いい感じです。よかったー、ありがとうございます!
Mさん「こちらこそ、ありがとうございました!
🥷miwa「あっ、テストを追加するのは来週でいいですよ。
Mさん、Kさん「はい、来週追加しますー
🥷miwa「ありがとうございます。楽しみにしてます〜〜
あわせて読みたい
