コードレビュー中のユニットテストは、開発中のユニットテストの貧弱な代替です。
あなたが提案していることは、直感的に多くの意味をなします。レビューは何のためですか?コードが良いことを確認する。テストの目的は何ですか?コードが良いことを確認する。それでは、2つを組み合わせてみませんか?
その理由は次のとおりです。
コードをテストするのは大変な作業です。意図したことだけで機能するコードを記述することは、1つのことです。効果的かつ効率的にテストできるコードを書くことも別の方法です。「実際の作業」と「テスト」という2つのシナリオでコードが実行されるという事実だけでも、はるかに高い柔軟性が必要であり、そのコードが意味のある方法で自立できることが要求されます。
テスト可能なコードを書くことは、余分な作業とスキルです。最初にテスト容易性を念頭に置いて書かれていなかった場合、テスト容易性のために他の誰かのコードをリファクタリングすることは、大きなタスクです。
開発者とレビュアーの間で努力を複製しています。おそらく、開発者は、コードが機能しているという少なくともある程度の自信がなければ、レビューのためにコードを渡していないでしょう。彼はすでにコードをテストする必要があります。現在、テストにはさまざまなレベルと範囲があります。QAは、開発者とレビューアの後、コードをテストします。しかし、開発者とレビュアーにとって適切だと思われるスコープが何であれ、開発者がコードをそのレベルまで一度テストする方法を理解することは意味がありませんが、テストを捨てて再現するのを難しくし、レビュアーをテストを再度開発する、今回は自動化され、再現可能なもの。あなただけ抱えているの両方に一度の悪い、一度うまく-それらのは、同じテストを書くに時間を投資します。
レビューをはるかに長い、より面倒なステップに変えています。テストがレビュープロセスの主要な部分である場合、一部のテストが失敗するとどうなりますか?レビュー担当者はテストをすべて実行する責任があるので、コードもデバッグする必要がありますか?それとも、テストを書いたり、他のテストに合格させたりして、行き来するのでしょうか?
場合によっては、すべて互いに直交する一連のテスト全体を記述できるため、ピンポンする必要はありません。レビュー担当者は多数のテストを作成しますが、そのうちの半分は失敗し、開発者はバグを修正し、すべてのテストは有効なままで、すぐに合格します。しかし...多くの場合、ブロッカーバグ、または再設計とAPIの変更を必要とするバグ、またはその他のバグがあります。レビュー担当者と開発者の間でテストをやり取りする責任を負っている場合、実際にはレビュー段階ではありません。あなたはまだ開発中です。
テストを書く必要があるからといって、より徹底的なレビューを奨励するわけではありません。基本的には、深く掘り下げるほど、より多くのテストを記述する必要があり、おそらくシステムの奥深くに行く必要のある難しいテストになることを意味します。
彼のインセンティブがあるテストを書いている開発者と比較してください。重要なテストを書いていない場合、レビューアはレビューでそれを指摘します。
コードの徹底的なテストに精通する必要がある場合、レビュアーでさえもシステムをよりよく理解できます。そして、掘り下げたテストの作成を停止してコードレビューをOKにできる時期を自分で決定する必要がある場合。
開発者が単体テストを作成していない場合、レビュー担当者も作成しません。一般的な方法としてテストを採用することには多くの障害があります。たぶんあなたはあまりにもプレッシャーにさらされており、コードベースをテストするのは難しいでしょう。たぶん、あなたはテストの経験があまりないので、学習曲線を買う余裕がないと感じます。たぶん、テストを書く人に脅迫的なメモを送信するx殺人者がいるでしょう。知りません!
しかし、原因が何であれ、それがレビュアーと開発者に等しく当てはまることは間違いありません。チームがストレスを感じている場合、レビュー担当者は開発者よりも時間がありません(もしそうなら、人々にストレスがかからないように作業を再配分します)。ユニットテストの書き方をよく知らない人は、おそらくレビュアーもそうではないでしょう(もしそうなら、座ってチームメイトに教えるべきです)。
この提案は、ある同僚から別の同僚に金を渡そうとしているように聞こえます。そして、私はそれがうまくいく方法を見ていません。何よりもまず、テストを行えるのは一人だけで、他の人はできないという状況を作り出すのは本当に難しい(そして不健康な)からです。すべてのテスト。
何んの仕事をされたとしても審査カバーテストを持ちます。開発者が既に10個のテストを作成している場合、開発者が何も作成していない場合よりも、レビューアがさらに10個のテストを提案できる可能性が高くなります。
また、コーナーケースのテストが主要なタスクである場合、チーム全体に広く配布することは理にかなっているかもしれません。**最初にコードがテスト可能になると、より多くのテストを書くことがはるかに簡単になります。**
レビューは、コーナーケースを見つける絶好の機会です。そして、レビュアーが飛び込んで、彼女が見つけたコーナーケースのテストを書くことができたら、ちょっと-いっそう良い!しかし、一般的に言えば、開発者が非常に貧弱なアイデアのように聞こえない場合に、レビュー担当者がテストを作成できると仮定します。