亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 >
用Python編寫WEB服務器壓力測試工具
作者:網絡轉載 發布時間:[ 2012/11/29 13:48:22 ] 推薦標簽:

近在編寫一個簡單的WEB服務器,一個日常的工作是測試服務器的性能,試用了MS的Web Application Stress,發現它居然不支持除80以外端口的測試,其他的如Loadrunner 太貴而且太大,試用版只支持10個并發用戶,我Google到了100個并發用戶的許可想試用一下,不過沒有安裝成功。想想這種壓力測試實際上沒啥技術含量,自己用Python來編寫了小段測試代碼。

使用Python的原因
毫無疑問,編寫這樣的代碼使用Python合適,使用C/C++編寫有點小題大做,使用C#編寫編譯又很麻煩,我是使用Editplus來寫代碼的,因為要考慮做不同的測試,只能邊寫邊調整,使用Python,下載一個Python的加亮文件,設置User Tool 1 到 Python,運行的時候只需要按Ctrl+1,著實方便的很。

壓力測試的實現
壓力測試是通過模擬對WEB服務器的訪問,進行記錄響應時間,計算每秒處理數,記錄上傳下載的字節數。一般來說,一臺測試機器上視機器的性能,發起 50~200的連接,基本差不多了。考慮到測試機器的負載,一般使用多線程來完成多個WEB請求,幸運的是,Python對所有的這些支持的相當完善。以下是測試的代碼

# code by 李嘉
# 禁止任何商業目的的轉載
# 不對因使用代碼產生任何后果負任何責任
# 轉載請保留所有聲明
import threading, time, httplib, random
# 需要測試的 url 列表,每一次的訪問,我們隨機取一個
urls = [
 "/test?page=",
 "/test2?orderby=a&page=",
 "/test2?orderby=d&page=",
]
MAX_PAGE = 10000
SERVER_NAME = "192.168.0.64:80"
TEST_COUNT = 10000
# 創建一個 threading.Thread 的派生類
class RequestThread(threading.Thread):
 # 構造函數
 def __init__(self, thread_name):
  threading.Thread.__init__(self)
  self.test_count = 0

 # 線程運行的入口函數
 def run(self):
  # 不直接把代碼寫在run里面是因為也許我們還要做其他形式的測試
  i = 0
  while i < TEST_COUNT:
   self.test_performace()
   i += 1
  #self.test_other_things()

 def test_performace(self):
  conn = httplib.HTTPConnection(SERVER_NAME)
  # 模擬 Keep-Alive 的訪問, HTTP 1.1
  for i in range(0, random.randint(0, 100)):
   # 構造一個 url,提供隨機參數的能力
   url = urls[random.randint(0, len(urls) - 1)];
   url += str(random.randint(0, MAX_PAGE))
   # 這連接到服務器上去
   #print url
   try:
    conn.request("GET", url)
    rsps = conn.getresponse()
    if rsps.status == 200:
     # 讀取返回的數據
     data = rsps.read()
    self.test_count += 1
   except:
    continue
  
  conn.close()
 
# main 代碼開始

# 開始的時間
start_time = time.time()
threads = []
# 并發的線程數
thread_count = 100

i = 0
while i < thread_count:
 t = RequestThread("thread" + str(i))
 threads.append(t)
 t.start()
 i += 1
# 接受統計的命令
word = ""
while True:
 word = raw_input("cmd:")
 if word == "s":
  time_span = time.time() - start_time
  all_count = 0
  for t in threads:
   all_count += t.test_count
  print "%s Request/Second" % str(all_count / time_span)
 elif word == "e":
  # 準備退出 其實 X 掉 窗口更加容易,沒什么浪費的資源
  TEST_COUNT = 0
  for t in threads:
   t.join(0)
  break 

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美特黄一级大黄录像 | 欧美一区二区三区免费播放 | 国产精品手机在线亚洲 | 日本欧美小视频 | 午夜精品久久久久久久久 | 啪啪免费网站入口链接 | 99精品免费在线 | 色综合久久久高清综合久久久 | 精品久久久久久中文字幕202o | 国亚洲欧美日韩精品 | 在线免费福利 | 国产成人精品日本亚洲语言 | 中国大陆毛片 | 在线免费观看日韩视频 | 大色综合色综合网站 | 婷婷影院在线观看 | 福利片在线看 | 国产成人免费永久播放视频平台 | 成人深夜视频在线观看 | 久久99精品久久久久久青青91 | 日批免费网站 | 国产aⅴ一区二区 | 色香蕉在线视频 | 天天摸天天碰天天爽天天弄 | 国产一区二区精品在线观看 | 国产特黄特色a级在线视 | 成人www视频网站免费观看 | 成人伦理在线观看 | 成人羞羞视频国产 | 日韩欧美一区二区三区免费看 | 国产精品资源在线观看网站 | 香港三级日本三级三级人妇 | 成人羞羞视频在线观看免费 | 黄色的免费网站 | 中文字幕在亚洲第一在线 | 香蕉福利 | 国产成人a v在线影院 | 亚洲精品国产成人 | 一级片按摩 | 一级片视频免费观看 | 1插菊花综合 |