単体テストとリファクタリングオン

単体テストとリファクタリングオン

比喩

古い、アジャイルではない足や手、松葉杖で歩行、歩行が安定していないですが、また、転倒を防止します。

しかし、それは落ちますか?

崩壊後の助けにあえて誰もありませんか?彼らは行くことができないのヘルプ?あなたが行くことができる場合は、早く以前のように行くことができませんか?あなたが行くことができない場合は、病院に行くのされていませんか?

ない松葉杖、悲惨なドミノ効果を持っていました。

意味

ユニットテストは、松葉杖を残して、開発者、老人の杖の同等にある行くことができますが、それは1足の深い浅い足ですが、いつでも、落下の危険があり、人のうち下落した後、一連の問題を生成します打撲とボロボロ。

書かれたサポートユニットテストコードがない場合には、あなたは、コードを知らない、何の論理はありません BUG の期待に沿ったもので、符号化プロセスが導入されたエラーを見つけることはできませんが、デザインと需要の問題を見つけることができないかどうか、。

私は彼が言っていない測定したとき、彼自身のメソッドのコードは、少し問題がない確認するために、約実行した後に終了し、非効率的で漏れの傾向があるテスト、開発者がテストを書いていないしている会社を持っている、非常にアマチュア、単に侮辱ソフトウェアですこの上の背の高いプロのエンジニア(目の私の軽蔑を参照してください)。

あなたがサービスを記述すると仮定し、あなたが完全なパスメソッドを記述するためのユニットテストを書くすべてのメソッドは、このような異常として、上書き、 IF-、スイッチの他の文は、そのため、提出するだけで準備ができて、突然の通知を受け、需要があなた、に変更されました私たちは、どのようにそれを行うには、符号化論理を変更するには、この時間を持っていましたか?まず、ユニットテストは、対応するコードの要件に合わせてユニットテストコードカバレッジへの変更を変更したり、追加し、あなたは、スタートボタンを指しているの後、変更された、ニーズを分析し、その後、全体のテスト関数を介して確認してくださいあなたの現在の実行を行い、再実行します、(緑のチェックマークを再生しているすべてのテストを見て良い方向に変える:✔)、あなたは落ち着かせ、提出コードを黙ら、アナリストは言って、ああ、いや、そのガラスを入れ、包丁をピックアップ!あなたは醤油Shenerではありません見て?

私達はちょうど何が起こったのかを見てみましょう。

まず、あなたがある変更の需要、ユニットテスト、リファクタリング、または変更のための需要を恐れていないので、我々はコード書かを作ることができ、より自信を持って、ユニットテストに完全なパスカバレッジを書くため。

第二に、あなたはエラーが発生した期待することができ、私たちはあなたの手の中にある、上層ロジックにバブリングまたは生体内で消化されます。我々のプロセスをコーディングやテストを書くことは、これらの例外が見つからなかった場合であっても、総合の場所を持っている必要はありません、この例外の後ろに会った、あなたはまた、テストは、テストの内部にそれをカバーする修正することができます。私たちは、自分自身の手順書で明らか胸を完全に制御できます。

原則

比較的完全なR&Dチームは、通常、要件文書を受け取った後にテスト部門、テスト計画の準備を設定し、開発者がテスト計画を読んで、要件文書を組み合わせ、あなたはすぐにプロジェクトと運用シナリオのプロセスを理解することができます。でも、経験豊富な開発者は、テスト計画に基づいて、直接使用することができます TDDのモード高速な実装。

しかし、まだその事業開発志向のプロジェクトのサポートで簡単に話すように、単一の測定モードの書き込みロジック側に使用されるほとんどの開発者は、我々は、ユニットテスト、および一般的に使用される方法を簡単に紹介の原則を記述します。

まず最初は、に言って、プロジェクトとデータ依存の問題は、一緒に問題を分析し、我々が最初にこの試験方法のテストの目的はあなたのことが何であるかを尋ねる必要がありますか?テストビジネスロジックやプロジェクトへのテストコードは、メタデータに依存しています。かつての場合、我々は、ビジネスロジック用テスト・ユニットを作成したデータ、一部にすることができますモックは解決しました。それは後者であれば、あなたはテストの存在下で適切に実行することを確認する必要があり、生産およびその他の環境プロジェクトは、メタデータに依存している。しかし、現在の環境でのメタデータの定義が存在すると予想されるデータが存在するかどうかをチェックするために特別に書かれたテスト・ユニットとすることができます定義。この例では、チェックコードロジック、プロジェクトを使用すること、従って、2個の異なる標的試験細胞を正常な動作を保証することであるモック、環境を確認する必要が。

その後、我々は、外部インターフェースとプロジェクトの依存関係と言います。この問題は、より一般的です。外部インターフェイスに依存しているために、我々は、(など非応答性のインターフェース、戻り値のエラー処理、など)の符号化ダウングレードを行う準備ができ、それが不安定であることをユーザーフレンドリーなフィードバックを仮定しなければなりません。それでは、どのようにそれをテストするには?

同様に、各書き込みは、外部インターフェースを期待するかどうか、2つの試験ユニット、コールの戻り値の外部インタフェースをチェックするための方法を必要とすると別の試験ユニットモックの我々のフォローアップ検査ロジックに返される様々な外部インタフェースのシミュレーション結果を。

なぜそれを直接テストする外部インタフェースを呼び出すことではありませんか?それが誰かの家のプログラマの作業でした!

チームが開発タスクの完了後、テストを提出し、標準的なテストグループを設定します。姿勢のさまざまな方法を使ってテストした同僚のグループでは、あなたは見つけるでしょう、私たちのプロジェクトを乱用 BUG 修理のために、私たちに提出します。今回は、まず最初に行うには、ユニットテストを書かないために再現することであるあるBUGをするまで、その後、コードを修正するバグがもはや表示されます。これは、あなたが再びコードを提出した後に、このことを保証するために、また、私の同僚の尊重のためのテストですBUGが繰り返されることはありません。

ライトユニットテストは、配達に遅延が発生することはありません

それは少し人間に聞こえます。しかし、実際には、書き込みユニットテストは、最終的には先に、目標の完了される傾向があるので、というコーディングプロジェクトの遅延発生しないが、私たちの仕事はよりターゲットを絞っようになります、より効率的ではないだけ。

なぜこのようにですか?目標が明確であるので、あなたは投機と相まって想像はるかに少ないコードのロジックを、記述したコードアウトこれらの書き込みがまだ存在する可能性があること BUGを、結果はあなたには、いくつかの不要なデバッグロジックを変更するために長い時間がかかったということです。

より複雑な論理の繰り返しで、それがサポートテストを持っていたので、修正し、それぞれ増加の機能は、それが軽量とアジャイル、優雅で神秘的になります。

すべてがいじめをテスト対象のユニットを再構築することではありません

いくつかの同僚は感じるかもしれ再構成が再びプログラム構造、データ構造を打倒するためにある限りとすることを「復興」あまりにも恐ろしい言葉を。しかし、これらのプログラマは恐怖の復興だけでなく、道路を成長するための最良のパートナーとして復興を信じていないだけでなく、成長に焦点を当てています。

復興周波数の前に、それは彼らのコードが自己検査を行うために、各コードを提出することをお勧めします。このコードはあまりにも複雑になっているかどうかを自問してみてください?より簡潔な方法はありますか?その可読性が良いでしょうか?どのように保守性は?コードがより大きくなる、またはあなたが複数のマイルストーンのそのコードを検討している場合も、自分で設計の原則とモデルについての質問をするかもしれません。

復興の間隔が、あまりにも長い間、深刻な技術的負債、およびこれらの技術の債務返済にターンは、このセクションの冒頭で、プログラム構造を言うであるデータ構造、以来、一日に比べて、多くの変更があるだろう-データの発展の正義、複雑さ、リスクとコストが頭痛になります。特に、あなたが再構築するために行くときに「旧」のコードが去ったとき、その気分は非常に酸っぱいクールです。だから、私たちの「新参者」を保つために酸っぱいクール、あなたはユニットテストを書くことを、当然のことながら、それぞれの提出前に自己検閲に付着し、再構築してください。

事実は、我々は、高速かつ安定の各反復を(または既存の機能を調整したり、新しい機能を追加)を確保するためには、反復手順にされているので、ビジネスニーズを持つユーザーのニーズは常に、変化しているということです私たちは自分自身に安全対策を与える必要があり、これはユニットテストです。

だから、コードの前にそれぞれ提出を検討し、恐れて再建することはありません - > リファクタリングコード- > ユニットテスト、我々はワークフローを提出するたびに前に修正する必要があります。

ユニットテストやリファクタリング、道路の成長と良きパートナー。                                                                                                                                                                                                                                  

研究開発センター

2019年11月29日

おすすめ

転載: www.cnblogs.com/zanpen2000/p/11959547.html