私はPythonに変換するPHPプログラマーです。単体テストの重要性(または重要ではない)を説明してください。私はPHPでユニットテストしたことはありません! [閉まっている

StackOverflow https://stackoverflow.com/questions/5864019

質問

私は、堅実なソフトウェア開発について学んでいる時点で、「光の速度でペダルからメダルへのコードと、実際の計画なしで良い結果を祈る」アプローチが機能しないことを認識しています。

私は、古い(そして明らかに素晴らしいことではない)方法を堅実な慣行に置き換えようとしています。私は以前にユニットテストを使用したことがありませんでしたが、ピラミッドを学ぼうとしていることに加えて(徹底的なドキュメントのおかげで順調に進んでいます)、一般的にユニットテストがどのように役立つかを確認しようとしています(将来の統合テストの追加、回帰テストなど)。 Nosetestのこのイントロを読みました http://ivory.idyll.org/articles/nose-intro.html, 、そして(フリッパントではないため)ユニットテストを使用して正規表現をテストして見ることができることがわかります。 if a=1; b=1; now does a == b. 。これは私がこの時点で見ることができるすべてです。このためのフレームワークは必要ありません。正規表現テスターと常識を使用して「テスト」することができます。単体テストを使用して2つの変数が等しいかどうかを確認する場合、変数を作成して何かに等しく設定するたびにテストを作成する必要はありませんか?この記事の例は、ちょうどarbitrary意的なように思えます。

私の心は、単体テストの利点を学ぶことには開かれていますが、単体テストの実用的なアプリケーションが何であるかを知りたいです。

結論:私は以前にユニットテストを使用したことがないので、なぜ私が間違っているのかを教えてください、そしてテストの使用を開始する必要があります。

乾杯!!

役に立ちましたか?

解決

ユニットテストにより、コードがあなたの期待を満たすことがある程度の確実性が得られます。ユニットテストは聖杯ではありません。これは、コードで適切なレベルの精度とモジュール性を達成するために使用できるツールの1つです。

ユニットテストはあなたの期待です。言い換えれば、テストは、テスト中のコードを呼び出したり呼び出したりし、結果(または返される)に対して結果(戻り値など)を測定します。結果が期待したものと一致しない場合、誤ったテスト(あなたの期待が間違っていた)か、テスト中のコードがあなたが思ったように動作していないかのどちらかです。

ユニットテストは、コードをリファクタリングまたはメンテナンスするときに特に役立ちます。コードを変更し、ユニットテストを実行し、変更がテストを破ったかどうかを確認することができます。

簡単に保つために、ユニットテストには他の利点もあります。通常、自動化された方法でそれらを実行できるはずです。そのため、毎晩ビルドを行うと実行することができ、朝に結果を確認できます。これは、複数の人がコードを変更または追加することができる大規模なチームで特に役立ちます。ユニットテストに適した方法でコードを構築することは、アプリを構築する際の分離されたアプローチにもつながります。これにより、コードの臭いが減り、将来の保守性と拡張性が低下します。

編集:

DID_EARNをテストすると、テストケースでハードコードを作成しますか。たとえば、user5をParam(user5が400回ログインしている)として手動で渡し、バッジが取れないことを確認しますが、user6(500ログイン)はバッジを取得しますか?

はい、それはまさにあなたがすることです。これは、の内部実装を変更する場合を意味します did_earn その後、あなたのテストは、それがまだあなたの期待を満たしているかどうかをすぐにあなたに伝えることができます(それは戻るだけです 真実 500ログイン以降)。 (スクリプト言語のように)強く入力されていないコードをテストしている場合は、整数などの代わりに文字列を関数に渡すと何が起こるかをテストすることも検討する必要があります。

現時点ではあなたには当てはまらないかもしれませんが、の概念もチェックアウトする必要があります モッキング, IOC依存関係インジェクション, 、これはすべて、単体テストで重く使用されている手法です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top