3

私は TDD に精通しており、職場と自作の Web アプリケーションの両方で TDD を使用しています。ただし、Web アプリケーションで TDD を使用するたびに、Web サーバーに完全にアクセスできるという贅沢がありました。つまり、サーバーを更新して、サーバーから直接単体テストを実行できます。私の質問は、サード パーティの Web ホストを使用している場合、単体テストをどのように実行するのですか?

アプリが適切に設計されていて、ビルド プロセスが健全で自動化されている場合、実稼働サーバーで単体テストを実行する必要はないと主張することもできますが、個人的には、その後もすべてが「グリーン」であることを知って安心できるのが好きです。メジャーアップデート。


「展開する前にテストしてください」と「ステージング サーバーを持っていませんか?」と答えたすべての人にとって、私はあなたがどこから来ているのか理解しています。ステージング サーバーと CI プロセスをセットアップしています。私の単体テストは実行され、本番環境への更新の前にすべてが合格することを確認しています。

完璧な世界では、私はこれに関心がないことを理解しています. しかし、私はそれが起こるのを見たことがあります。ファイルが更新から除外された場合、または SQL スクリプトが実行されなかった場合、単体テストを実行するとその影響がすぐにわかりますが、それらがないとかなりの時間気付かないことがあります。

ここで私が求めているのは、私自身の強迫観念を満たすためだけに、アプリケーションをインストールできないサーバーまたはリモートにあるサーバー (たとえば、FTP アクセスしかできないサーバー) で単体テストを実行する方法があるかどうかです。ファイルを更新するために)?

4

5 に答える 5

3

技術的に言えば、本番環境にデプロイするまでには、「開発」を過ぎているため、本番サーバーで単体テストを実行することは実際には TDD の一部ではないと主張する必要があると思います。

私は TDD にかなりのこだわりを持っており、クライアントにメリットを説いていると、「TDD を半分採用することはできません。すべてかゼロかです」とよく言います。

おそらく必要なのは、展開の「後に」実行する何らかの形式の自動テストですが、これらは TDD の一部ではありません。

プロセスをもう一度見直す必要があるかもしれません。

于 2008-08-21T17:03:40.790 に答える
1

WATIRWATIN 、またはSeleniumなどで機能テストを記述して、特定のフォーム データを投稿したり、特定の URL を要求したりした後に、応答ページで何が返されるかをテストできます。

于 2008-08-21T16:58:25.670 に答える
1

明確にするために:あなたのウェブサーバーへのアクセスの種類は何ですか?FTP または WebDAV のみですか? あなたの質問から、私はsshアクセスが利用できないと推測しています.展開するディレクトリにファイルをドロップしています. あれは正しいですか?

もしそうなら、単体テストの答えはおそらく「デプロイする前にやる」でしょう。Seleniumのような自動化されたツールによって駆動される機能テストをセットアップして、Web インターフェースを介してアプリをリモートでテストできますが、それはシステム全体のテストに制限されているという意味で、実際には単体テストではありません。

展開環境をミラーリングするか、少なくとも模倣するステージング サーバーを、おそらく VMWare インスタンスとしてセットアップすることを検討しましたか?

于 2008-08-21T17:05:43.767 に答える
1

サーバーで単体テストを実行できない原因は何ですか? 実稼働コードをアップロードしてそこで実行できる場合、この他のコードをアップロードして実行できないのはなぜですか?

于 2008-08-21T17:07:10.923 に答える
0

Python と httplib/urllib2 を使用するサイト用のテスト ツールを作成しましたが、通常はやり過ぎでしたが、これらの場合には適していました。ただし、それが一般的に使用されるかどうかはわかりません。

于 2008-08-21T17:00:28.367 に答える