独自のコードのテストを改善する方法[終了]


12

今日、私はいくつかのコードの変更をチェックインしましたが、かなり愚かでありながら非常に重要な何かが原因でまったく機能しないことが判明しました。私はそれについて本当に気分が悪く、最終的にそこから何かを学ぶことを望みます。愚かなことは、私はこれらのことを以前にやったことがあり、いつも自分に言い聞かせて、次回はそんなに愚かではないだろうと...そして再び起こり、私はそれについてさらに悪く感じます。

あごを維持し、間違いから学ぶ必要があることは知っていますが、ここにあります。私は自分自身を改善しようとしていますが、これらの出来事を防ぐ方法がわかりません。

だから、今私はあなたにみんなに尋ねています:あなたのコードをテストするときに特定の基本原則がありますか?


1
これが役立つことがあります。 programmers.stackexchange.com/questions/45479/...
アミールレザエイ

回答:


17

コードを変更する前にテストを作成します。

提案された変更がバグを修正することである場合、最初にバグを示すことによりテストを失敗させます。次に、バグを修正した後、パスすることを確認します。後でテストを書いて、合格したのを見ただけなら、そもそもバグを適切にテストしたかどうかはわかりません。

提案された変更が既存の機能の変更または機能の追加である場合、変更するコードの領域が適切にカバーされることを確認するためのテストを作成します。コードの変更を開始する前にこれらのテストに合格していることを確認し、終了しても合格します。


これは本当に良いアドバイスです。バグ修正を出すのに少し時間がかかるかもしれませんが、この種の間違いを二度と起こさず、全体的に安定したコードを書くことができます。
ピーター

@Peterは、長期的にはメンテナンス時間を節約するはずです。テスト修正を手動でスモークする時間を短縮する必要があります。また、次回コードが編集されるときにテストが実施されます。場合によっては、バグを再現する単体テストをすばやく作成すると、そもそもバグのデバッグと修正が速くなることがあります。
アルプ

@Peterバグを修正しながら何度か再現することがよくあります。代わりに小さなテストを作成すると、通常は時間を節約できます。もちろん、確実に機能することを確信できることは言うまでもありません(今後も機能します)。
-DasIch

これは素晴らしいアドバイスバディです、ありがとうございます!
シェーア

@Albまたは短期的にも。

3

エッジケースをテストすることを忘れないでください!多くのバグは、最も一般的なアクションがテストされたが、それほど一般的なアクションではないためです。


本物の宝石は、これらのエッジケースを見つけることです。特定のシナリオを考えていなかったという理由だけで、システムから発生するバグにしばしば驚かされます。
ピーター

2

技術指向の回答の技術的なアドバイスに従ってください。それは良いものです。私の答えは態度についてです。

すべての開発者が時折犯すようなミスをするのは気分が悪いだけで、将来そのようなミスを犯さないようにする助けにはなりません。そこに座って気分が悪くても、ビルドはまだ壊れています。そして、あなたの仕事は間違いを避けることです。それは、朝起きて毎日エキサイティングな冒険になることを知っていますよね?

壊れたコードをチェックインすることが公共の恥の原因となる企業を聞いたことがあります。私は、そのような行動につながるようなゆがんだ、平凡な、中上級の思考のようなものに頭を悩ませることさえできません。チームリーダーやマネージャーにとって、逆効果になるものはほとんどありません。

だから自分を打ち負かさないでください。私たちは皆それをやった。私はおそらく、馬鹿げた間違いで週に半日かかったので、これを(咳)長い間行ってきました。それはコードを書くことのように見えます-あなたは自分の不備のように見えるものに対して絶えず激怒しています。プロフェッショナルをプロフェッショナルにするのは、ミスを犯すことのない神話的な品質(大きなミスも含む)ではなく、犯したミスにどのように対応するかです。

私が一緒に働くすべての開発者に教え込むことができる1つのマントラがある場合、それはこれです:あなたはあなたのコードではありません。あなたはコードを書きます。できる限り効率よく書きます。それから家に帰ります 自分の価値や自尊心をコードの質を備えた人間と同一視すると、自分が本当に誰なのかがわからなくなります。


私はあなたが公共の恥についての言うことを理解し、しかしジョーBloggsがチェックインする前に、すべてのプラットフォームを構築していなかったので、ビルドが壊れているので、同時にそれのイライラをブロックする。
tenpn

@tenpn-完全に。しかし、私が言っていることの裏返しは、Joe Bloggsにも当てはまります。彼は自分のコードでもありません。同僚として、私たちの目ではジョーを馬鹿にしようという衝動に抵抗しなければなりません。
ダン・レイ・

実際、@ tenpnは、トランク/マスターに変更をコミットする前にビルドを自動的にテストしないことをシステムのせいにすることもできます。
デビッド

2
@tenpn-どちらも同僚をbeっていません。
ダン・レイ

1
変更によってビルドが中断されない場合はどうなりますか?チェックインする前にコードをビルドすることは常識です。あらゆる方法でコードをテストすることはそれほど明白ではありません。あなたが持っていなかったいくつかのシナリオが常にあります。ちょうど今日、私は数字あなたが正しい(間違っている)を持って起こる場合にのみ発生し、浮動小数点丸めエラーに遭遇した
ピーター

2

別の重要なテスト方法は、テストを記述し、コードを記述する前に少なくとも1回は失敗することを確認することです。あなたがチェックしている状態を誤ってテストしないトートロジーテストを台無しにして書くのは簡単です。虚偽の保証は、保証なしよりもほとんど(そして時には悪い)です。


0

私が時々使ってきたアイデアの1つは、

ブランチを作成してコードを壊し、テストを実行して、テストがエラーをキャッチすることを確認します。


0

コードをテストするときに特定の基本ルールがありますか?

  • コードを常に単体テストし、可能な限り高いカバレッジに到達するようにしてください。

いくつかの追加の一般的なポイント:

  • コーディングを開始する前に、設計と計画に時間をかける
  • コードをリファクタリングしてください!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.