はじめに
私は元QAで開発チームに配属されました。
そして、コードレビューに参加すること幾星霜、全く発言できない状態を改めようと考えました。
コードの良し悪しがわからない!
一番の問題点です。
if文とfor文くらいはわかるので、時間をかけて読めばどんな動きをしているのかはわかります。
しかし、
- それが最適なのか
- 問題は無いのか
- もっとよくできないのか
といった点はさっぱりでした。
他の人の指摘には感心するばかりです。
コードで考えるのをやめた
眼前のコードを眺めても、何も思いつきません。
しかしながら、いざ私がテストをすると、ちらほら不具合は出てきます。
不具合があるから、コードが修正されます。
ロジックはわかるので、不具合と紐づきます。
テストから考えていけば、不具合の起きるロジックに気付けました。
この瞬間「私なら言えることあるのでは?」と至りました。
目の前のコードを読んで考えるのではなく、そのロジックを頭の中でテストすればよい、と。
QAのスキルをフル活用
熟練のテスト設計者が扱えるテスト手法に「探索的テスト」というものがあります。
端的に言えば「頭の中でテスト設計しながらテスト実行」です。
また、類似のテスト手法に「アドホックテスト」というものがあります。
端的に言えば「直感的に不具合が出そうな操作を実行」です。
レビューの短い時間では瞬発力を高めるため、
探索的テストの思想でテスト設計し、
アドホックテストの嗅覚でテストケースを選出し、
そのケースを脳内検証、ロジックに問題ありそうなら指摘ができます。
脳内検証の時間が不十分であったり、答えが出ない場合は、
「これこれこういうケースが考えられますが、その場合はどうなりますか?」
と聞きます。
考慮されているのであれば教えてくれますし、そうでなければ追加検証の場合もあります。
もちろん、聞いている最中に「あ、こんなケースやっぱりないんで大丈夫です」となる場合もあります。
正解は「テスト駆動開発」
この手法は、私の苦肉の策であり、属人的で再現性が無いので、再現性のある手法に置き換えたいな、と思っています。
テストからロジックを見ているので、実質テスト駆動レビューです。
この世界にテスト駆動開発が満ち溢れれば、きっとこの頭の使い方もしなくてよくなるはずです。