12

会社が作成した API をテストするための個人用の小さな Web サイトを構築しています。私の上司は、Web サイトにアクセスし、GET または POST を使用してフォームを要求し、要求を送信する回数を指定できる Web サイトを望んでいます。彼は、ログに記録された要求、要求ごとの時間、およびすべての要求の平均時間を求めています。

Ruby を使用して GET または POST リクエストの応答時間を測定する方法はありますか?

Net::HTTP ライブラリを調べましたが、かかった時間を返すものは何もありませんでした。

すでにこれを行っている Web サイトはありますか? 非技術者が使用できるように、GUI が必要です。そうでない場合は、スクリプトを実行し、そのスクリプトの出力をテキスト ファイルまたはスプレッドシートに書き込み、それをユーザーに送信する単純なフォームを用意することを計画していました。

他の提案はありますか?(見栄えの良い AJAX のインターフェイスは適切に機能する可能性がありますが、おそらくデータベース ストレージが必要になるでしょう。1 回の実行で 10000 リクエストの場合、それはかなりの量になる可能性があります。

4

2 に答える 2

25

コメントで述べたように、ruby にはベンチマーク モジュールがあります。

require "benchmark"

time = Benchmark.measure do
  #requests
end
于 2013-03-28T07:23:36.690 に答える
7

Net::HTTP は応答時間を追跡しません。それはその仕事ではないからです。

リクエストの前後に、Time.now開始時間と終了時間を設定するために使用します。

start_time = Time.now
# ...do request...
elapsed_time = Time.now - start_time

それを平均したい場合は、elapsed_time値を足し合わせてテスト数で割ります。

total_time += elapsed_time
# ... do some stuff...
average_time = total_time / num_of_iterations

時間はマイクロ秒まで測定されます。これは、ニーズに対して十分に正確なはずです。

それはまったく別の主題であり、本を構成するため、インターフェースについてはあなた自身です。

于 2013-03-28T00:09:01.627 に答える