『壹』 目前常用的軟體測試工具有那些
主流軟體測試工具介紹
測試工具一般可分為白盒測試工具、黑盒測試工具、性能測試工具,另外還有用於測試管理(測試流程管理、缺陷跟蹤管理、測試用例管理)的工具,這些產品主要是MercuryInteractive(MI)、Segue、IBM Rational、 Compuware和Empirix等公司的產品,而MI公司的產品佔了主流。
白盒測試工具
白盒測試工具一般是針對代碼進行測試,測試中發現的缺陷可以定位到代碼級,根據測試工具原理的不同,又可以分為靜態測試工具和動態測試工具。
靜態測試工具:直接對代碼進行分析,不需要運行代碼,也不需要對代碼編譯鏈接,生成可執行文件。靜態測試工具一般是對代碼進行語法掃描,找出不符合編碼規范的地方,根據某種質量模型評價代碼的質量,生成系統的調用關系圖等。靜態測試工具的代表有:Telelogic公司的Logiscope軟體;PR公司的PRQA軟體。
動態測試工具:動態測試工具與靜態測試工具不同,動態測試工具的一般採用"插樁"的方式,向代碼生成的可執行文件中插入一些監測代碼,用來統計程序運行時的數據。其與靜態測試工具最大的不同就是動態測試工具要求被測系統實際運行。動態測試工具的代表有:Compuware公司的DevPartner軟體;Rational公司的Purify系列等。
黑盒測試工具
黑盒測試工具適用於黑盒測試的場合,黑盒測試工具包括功能測試工具和性能測試工具。黑盒測試工具的一般原理是利用腳本的錄制(Record)/回放(Playback),模擬用戶的操作,然後將被測系統的輸出記錄下來同預先給定的標准結果比較。黑盒測試工具可以大大減輕黑盒測試的工作量,在迭代開發的過程中,能夠很好地進行回歸測試。黑盒測試工具的代表有:Rational公司的TeamTest、Robot;Compuware公司的QACenter。
性能測試工具
專用於性能測試的工具包括有:Radview公司的WebLoad;Microsoft公司的WebStress等工具;針對資料庫測試的TestBytes;對應用性能進行優化的EcoScope等工具。 MercuryInteractive的LoadRunner是一種適用於各種體系架構的自動負載測試工具,它能預測系統行為並優化系統性能。LoadRunner的測試對象是整個企業的系統,它通過模擬實際用戶的操作行為和實行實時性能監測,來幫助您更快的查找和發現問題。
測試管理工具
測試管理工具用於對測試進行管理。一般而言,測試管理工具對測試計劃、測試用例、測試實施進行管理,並且,測試管理工具還包括對缺陷的跟蹤管理。測試管理工具的代表有:Rational公司的Test Manager;Compureware公司的TrackRecord;Mercury Interactive公司的TestDirector等軟體。
『貳』 區域網如何架設ftp伺服器,用什麼軟體、怎麼操作
【怎樣建立個人FTP】
Serv-U FTP Server 5.0.0.11 final 特別破解版漢化版
點擊下載
《FTP Serv-U 教程》+《FTP的建立和維護手冊》
點擊下載
在網上做過軟體下載的人都知道,建立一個FTP下載伺服器相對比較簡單,一般用WIN2000下自帶的IIS就可以,但IIS在功能上好多都不盡人如意,下面我就介紹一款功能非常強大,但使用簡單的FTP伺服器構建軟體-Serv-U FTP Server,讓我們也來體驗一下自己DIY FTP伺服器的快樂! 在說明使用之前,讓我先大致介紹一下Serv-U(本文中提到Serv-U版本為3.0.0.17), Serv-U 是一個可以運行於Windows 95/98/2000/ME 和 Windows NT 4.0下的FTP伺服器程序如圖所示,
有了它,你的個人電腦就可以模擬為一個FTP伺服器,也就是說,你所連接的網路中的計算機用戶可以訪問你的個人電腦,通過FTP協議(文件傳輸協議)復制、移動、刪除你的電腦中的文件或文件夾,可以做一切許可權所允許的事情。FTP協議規定了計算機之間的標准通訊方式,使所有不同類型,不同操作系統,不同格式的電腦之間得以互換文件。它可以用最簡單的方式創建用戶帳號,並且在硬碟空間上劃分一定的區域用以存放文件,讓用戶以各種FTP客戶端軟體(如CuteFTP、WS_FTP等)上傳或下載所需要的文件。
有許多FTP伺服器和客戶端軟體可用於不同的系統中,Serv-U是用於運行MS-Windows 並且已安裝了WinSock 版本 1.1 兼容 TCP/IP協議的個人電腦中的,這幾乎包括了所有的Windows操作系統。
Serv-U由兩大部分組成,引擎和用戶界面。Serv-U引擎(ServUDaemon.exe)其實是一個常駐後台的程序,也是Serv-U整個軟體的心臟部分,它負責處理來自各種FTP客戶端軟體的FTP命令,也是負責執行各種文件傳送的軟體。在運行Serv-U引擎也就ServUDaemon.exe
文件後,我們看不到任何的用戶界面,它只是在後台運行,通常我們無法影響它,但在ServUAdmin.exe中我們可以停止和開始它。Serv-U引擎可以在任何Windows平台下作為一個本地系統服務來運行,系統服務隨操作系統的啟動而開始運行,而後我們就可以運行用戶界面程序了。在Win NT/2000系統中,Serv-U會自動安裝為一個系統服務,但在Win 9x/Me中,你需要在「伺服器」面板中選擇「自動開始」,才能讓它轉為系統服務。Serv-U用戶界面(ServUAdmin.exe)也就是Serv-U管理員,它負責與Serv-U引擎之間的交互。它可以讓用戶配置 Serv-U,包括創建域、定義用戶、並告訴伺服器是否可以訪問。啟動Serv-U管理員最簡單的辦法就是直接點接系統欄的「U」形圖標,當然,你也可以從開始菜單中運行它。
在此有必要把Serv-U中的一些重要的概念給大家講清楚:每個正在運行的Serv-U引擎可以被用來運行多個「虛擬」的FTP伺服器,在管理員程序中,每個「虛擬」的FTP伺服器都稱為「域」,因此,對於伺服器來說,不得不建立多個域時是非常有用的。每個域都有各自
的「用戶」、「組」和設置。一般說來,「設置向導」會在你第一次運行應用程序時設置好一個最初的域和用戶帳號。伺服器、域和用戶之間的關系大家可以參考下表:
*Serv-U 伺服器
*域 1
*用戶帳號 1
*用戶帳號 2
*用戶帳號 3
*域 2
*用戶帳號 1
*用戶帳號 2
*域 3
*用戶帳號 1
*用戶帳號 1
這個表有點類似與Serv-U管理員中伺服器、域和用戶的排列。
Serv-U FTP Server 是試用軟體,安裝後三十天內,你可以作為「專業版本」使它,但試用期過後,你就只能作為免費的「個人版
本」使用了,只有基本功能了。
好了,說了這么多,還沒到關鍵部分-如何自己來建立FTP伺服器。下面我就一步一步來說明。
一、 安裝原版軟體和漢化補丁,這個過程就不多說了,想必沒人不會的。
二、 建立第一個本地FTP伺服器
安裝完成後程序會自動運行,你也可以在菜單中選擇運行。
1、 第一次運行程序,它會彈出設置向導窗口如圖,
將會帶你完成最初的設置,
2、 單擊「下一步」,出現「顯示菜單圖像」的窗口,問你是否在菜單中顯示小圖像,看各人喜歡了;
3、 單擊「下一步」,這個窗口是讓你在本地第一次運行FTP伺服器,只要「下一步」就行了。
4、 接下來要你輸入你的IP地址如圖,
如果你自己有伺服器,有固定的IP,那就請輸入IP地址,如果你只是在自己電腦上建立FTP,而且又是撥號用戶,有的只是動態IP,沒有固定IP,那這一步就省了,什麼也不要填,Serv-U 會自動確定你的IP地址,「下一步」;
5、 在這兒要你輸入你的域名,如圖
如果你有的話,如:ftp.abc.com,沒有的話,就隨便填一個;
6、 「下一步」,詢問你是否允許匿名訪問如圖
一般說來,匿名訪問是以Anonymous為用戶名稱登錄的,無需密碼,當然如果你想成立一個會員區什麼的,就應該選擇「否」,不讓隨便什麼人都可以登錄,只有許可用戶才行,在此我們填「是」;
7、 「下一步」,問你匿名用戶登錄到你的電腦時的目錄,如圖,
你可以自己指定一個硬碟上已存在的目錄,如F:\temp\xyz;
8、 「下一步」,詢問你是否要鎖定該目錄,鎖定後,匿名登錄的用戶將只能認為你所指定的目錄(F:\temp\xyz)是根目錄,也就是說他只能訪問這個目錄下的文件和文件夾,這個目錄之外就不能訪問,對於匿名用戶一般填「是」;
9、 「下一步」,詢問你是否創建命名的帳號,也就是說可以指定用戶以特定的帳號訪問你的FTP,這對於辦會員區可很有用哦,你可以對於每個人都創建一個帳號,每個帳號的許可權不同,就可以不同程序地限制每個人的權利,方法將在後面講到,這里選擇「是」;
10、 「下一步」,請你填入所要建立的帳號的名稱,如圖,如:ldr,
11、 「下一步」,請輸入密碼,如:123,
12、 「下一步」,詢問登錄目錄是什麼,這一步與第7步一樣,如:F:\temp
13、 「下一步」,詢問你是否要鎖定該目錄,同第8步,這里選擇「否」;
14、 接下來詢問你這次創建的用戶的管理員許可權,如圖,
有幾項選擇:無許可權,組管理員,域管理員,只讀管理員和系統管理員,每項的許可權各不相同;這里選擇「系統管理員」;
15、 最後一步,點擊「完成」就OK了,你有什麼需要修改的,可以點「上一步」,或者進入Serv-U管理員直接修改。至此,我們建立
了一個域ftp.abc.com,兩個用戶,一個Anonymous,一個ldr。
三、 既然我們已經建立好FTP伺服器,那麼我們就應該可以用FTP客戶端軟體來嘗試登錄。
怎麼辦呢?其實很簡單,我們不用上網,就可以測試。我們知道,不上網時,本地機的IP地址默認就為127.0.0.1,FTP埠號為21。打開FTP客戶端軟體,我就用FlashFXP來說明,打開快速連接,填入相應內容,如圖
然後連接,如圖
可以看到,我左邊窗格以Anonymous登錄,右邊窗格以ldr登錄,由於是本地機,所以速度奇快,上網後,假如我要讓你登錄到我的電腦上,我只要把我的上網時的IP地址給你,你就可以匿名訪問我的電腦了(注意不要開防火牆),是不是很方便?
四、Serv-U管理員中的各項設置
在設置完成後,將會進入Serv-U管理員的主界面,如圖
左邊窗格中顯示各個欄目,右邊窗格中顯示各個欄目的具體選項,下面就大概講一講設置內容。
1、 在圖中,我們可以人為地控制Serv-U引擎的運行或停止,記住,在Win 9x/Me 中,我們就要在此選擇「系統服務」,才會運行
Serv-U引擎。
2、 「許可」,如果你花美元買了注冊號,就可以在此輸入。
3、 「設置」,這個設置是對於「本地伺服器」來說的。「常規」設置中,如圖
可以限制伺服器的最大速度,可以攔截FXP(站點到站點傳送),也可以限制用戶的數量,這樣不至於你的伺服器被拖跨。「目錄緩存」設置中,如圖
允許你自己確定目錄列表的個數以及超時時間,在Windows 95 和 NT下,目錄列表默認設置為25,當緩存滿了之後,新的請求將替換老的請求。「高級」設置中,如圖
可以讓你自己定義伺服器、Socket、文件的上傳和下載的各項設置。
4、 「活動」,在這里記錄了用戶的活動日誌,已封鎖的IP的活動日誌,以及任務日誌;任務日誌中顯示的就是你開始停止的各項操作記錄,你可以點擊右擊,選擇一此過濾文本,使其只顯示你所想見的內容,如圖
5、 「域」,這里包含了你一開始根據向導所建立的用戶、設置、域等。「域--設置」中所設置的內容其實與第3步差不多,只是它更
加具體,可以對於每一個不同域定製。「域--活動」中記載了這個域下所有用戶的活動情況。
6、 「域--組」,我們可以自己建立一些便於管理的組,然後把一類的用戶歸到一個組中。
7、 「域--用戶」中,大家可以看到一開始我們建立的兩個帳號,一個Anonymous,一個ldr。現在就帳號ldr來對其中的細節設置說明一下。
A、「帳號」欄,如圖
對於一些不守規則的人,我們可以選擇「禁用帳號」,雖然有帳號,但可以使用戶一時間無法登錄;你也可以設置讓程序到達某個日期後自動刪除某個帳號;下面幾欄是這個帳號的基本信息,我們都可以在此更改,其中密碼改過後並不顯示,而是統一顯示<>,特別要注意選項「鎖定用戶於主目錄」,什麼意思呢?大家應該碰到,每次我們登錄到FTP伺服器上後,在根目錄下只顯示「/」,選擇這項選項後,就是這樣,如果不選,會出現什麼情況呢?你可以做一下試驗,在根目錄下將顯示「/f:/temp/」,也就是說顯示了你硬碟中的絕對
地址,這在某些情況下是很危險的,有不懷好意的高手,你就麻煩了!
你可以隱藏屬性為隱藏的文件,可以限制同一IP的登錄個數,是否允許用戶更改密碼(這需要客戶端軟體的支持),最大上傳下載的速
度,超時時間以及空閑時間,你也可以限制最大用戶數量,如20,說明同時只能有20個用戶登錄。
C、「目錄訪問」欄,如圖
在此你可以控制用戶對於文件目錄的許可權,對文件有讀取、寫入、刪除、追加、執行等操作,對於文件夾有列表、創建、刪除,以及是否繼承子目錄;如果覺得目錄不夠,你也可以添加可訪問的目錄。
D、「IP訪問」欄,如圖
在這里你可以規定某個IP是否可以訪問你的FTP伺服器,你可以拒絕它的訪問,只要填上相應的IP地址,以後由這個IP的訪問通通被攔下。
E、「上傳/下載率」欄,如圖
在這里你可以設置上傳和下載之間的比值,控制好上傳和下載之間的數據流量關系。
F、「配額」欄,如圖
這里你可以為每個FTP用戶設置磁碟空間,點擊「計算當前」,可以知道當前目前下的所有空間大小,在「最大」一欄中填入你想要限制的容量。
最後有一點,改過設置後一定要點擊右鍵,選擇「應用」使設置生效才行,否則一切都白做了!!
希望大家學會後,能為更多的人提供下載,享受寬頻帶來的快樂!
==========================================================================================================
SERV-U FTP的歡迎詞設置
讓你的SERV-U FTP看起來更專業一點
現在很多的朋友都用SERV-U做個人FTP的伺服器,有關如何使用SERV-U架設伺服器的文章很多了,這兒我就不多說了。不過大家不知道注意到了沒有,當你登陸很多FTP的時候,會顯示一些歡迎信息,比如說顯示你的IP,告訴你目前有多少人在使用FTP,帶寬是多少等等。。。看起來就比較的專業樣子。其實你自己也是可以做的,SERV-U這個軟體本身就有這個功能。下面我就說明以下如何在自己的FTP裡面加上這些信息。
第一、先建立一個文本文件,隨便取一個名字。我們這兒就取message.txt吧。
第二、這個這個文本文件裡面加上這些文字
-----------------------------------
歡迎來到XXX的個人FTP伺服器
你的IP地址是:%IP
目前伺服器所在的時間是 %time
已經有 %u24h 個用戶在最近24小時訪問過本FTP
本FTP伺服器已經運行了 %ServerDays 天,%ServerHours 小時 和 %ServerMins 分。
伺服器的運行情況:
所有登陸用戶數量: %loggedInAll total
當前登陸用戶數量: %Unow
已經下載位元組數: %ServerKbDown Kb
已經上傳位元組數: %ServerKbUp Kb
已經下載文件數: %ServerFilesDown
已經上傳文件數: %ServerFilesUp
伺服器平均帶寬: %ServerAvg Kb/sec
伺服器當前帶寬: %ServerKBps Kb/sec
------------------------------------
其中XXX可以改成你的名字
你也可以加上一些你自己認為喜歡的文字,不過要注意的是每行最好不要超過80個字元
其中以%開頭的都是一些變數,下面是SERV-U能支持的變數
時間和日期
%Time - 顯示你的計算機當前時間
%Date - 顯示你的計算機當前日期
伺服器的統計信息
%ServerDays - 顯示伺服器已經運行的天數
%ServerHours - 顯示伺服器已經運行的小時數
%ServerMins - 顯示伺服器已經運行的分鍾數
%ServerSecs - 顯示伺服器已經運行的秒數
%ServerKbUp - 顯示自從伺服器運行以來已經上傳的位元組數
%ServerKbDown - 顯示自從伺服器運行以來已經下載的位元組數
%ServerFilesUp - 顯示自從伺服器運行以來已經上傳的文件數
%ServerFilesDown - 顯示自從伺服器運行以來已經下載的文件數
%LoggedInAll - 顯示自從伺服器運行以來已經登陸的用戶數
%ServerAvg - 顯示伺服器的平均帶寬
%ServerKBps - 顯示伺服器的當前帶寬
伺服器的設定信息
%MaxUsers - 顯示伺服器能同時登陸的最大用戶數量
%MaxAnonymous - 顯示伺服器能同時登陸的最大匿名用戶數量
用戶信息
%Name - 顯示登陸的用戶名
%IP - 顯示登陸的用戶IP地址
%Dir - 顯示登陸的用戶的當前目錄
%Disk - 顯示登陸的用戶的當前磁碟
%DFree - 顯示登陸的用戶的當前磁碟空間,單位是MB
%FUp - 顯示登陸的用戶上傳的文件數量
%FDown - 顯示登陸的用戶下載的文件數量
%FTot - 顯示登陸的用戶上傳和下載的總的文件數量
%BUp - 顯示登陸的用戶上傳的位元組數,單位是KB
%Bdown - 顯示登陸的用戶下載的位元組數,單位是KB
%BTot - 顯示登陸的用戶上傳和下載的總位元組數,單位是KB
%TconM - 顯示登陸用戶連接時間,單位是分鍾
%TconS - 顯示登陸用戶連接時間,單位是秒,要和%TconM一起使用
%RatioUp - 顯示登陸用戶的上傳流量限制
%RatioDown - 顯示登陸用戶的下載流量限制
%RatioCredit - 顯示登陸用戶還有多少credit可以上傳和下載,這個是針對有些FTP是要上傳多少文件,才能下載多少文件而設置的
%QuotaUsed - 顯示登陸用戶的已經使用了多少空間,單位是KB
%QuotaLeft - 顯示登陸用戶的還有多少空間可以使用,單位是KB
%QuotaMax - 顯示登陸用戶的的最大空間,單位是KB
後面3個是針對有磁碟限制的用戶設置的
用戶數量
%UNow - 顯示當前有多少用戶連接
%UAll - 顯示從伺服器運行以來一共有多少用戶連接過
%U24h - 顯示最近24小時有多少用戶
%UAnonAll - 顯示當前總的匿名用戶數量
%UAnonThisIP - 顯示所有匿名登陸的用戶數
%UNonAnonAll - 顯示所有當前非匿名登陸用戶數
%UNonAnonThisIP - 顯示所有非匿名登陸用戶數
%UThisName - 顯示所有使用這個名字登陸的用戶數
自己在先建立一個.txt文件,輸入你想要顯示的文字,具體參數看上面的內容,然後在Serv_u內的server設置裡面,加入這個.txt文件就可以了
==========================================================================================================
——常見FTP登陸Log信息——
常見FTP登陸Log信息
1.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER anonymous
530 Sorry, no ANONYMOUS access allowed.
QUIT
這個就是不許匿名登錄啦
2.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
331 User name okay, need password.
PASS xxxxxx
530 Not logged in.
QUIT
一般是密碼輸入錯誤時出現的信息,但對於Serv-U來說,如果沒有這個帳號(test)存在,也會產生同樣的出錯信息。
3.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
這個表明對方未開機,也可能是對方不在你能訪問的范圍內
4.
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
這個一般表明對方已開機,但未開啟FTP服務(沒有開Serv-U)
也可能為對方不提供在這個埠上的服務
5.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出現這個信息實在是很倒霉,你極有可能被對方Ban了。
如果只是Ban幾分鍾or幾小時or一天還好,不然只有和站長說說好話,讓他給你解封吧。
6.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
USER XXX
331 User name okay, need password
PASS xxxxxx
530 Not logged in, unauthorized IP address.
QUIT
這個有點麻煩,你的IP不在站長允許訪問的IP范圍內,只有和站長聯系,讓他把你的IP網段加入Allow Access列表裡吧
7.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER user
421 Too many users - please try again later.
哈哈,這個很常見吧,用戶太多
8.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
530 Not logged in, only one session from same IP allowed at a time.
QUIT
每個IP只能開一個下載,就不要用多線程啦,小心Ban了你。
----------------------------------------------------------------------------------------------
內網、區域網如何設置IP,建立FTP
首先,我們知道動態IP機器出去的最大問題是IP,因為動態IP機器的IP外網是無法識別的,我們討論的是最普通的區域網內工作站出去做FTP和WEB站點的問題!
動態域名解析正好能夠解決此類問題,它的原理是將本機的動態IP自動映射到預先申請好的虛擬域名上,這樣外面就可以通過訪問固定的虛擬域名來訪問到動態IP機器了。
<花生殼>該軟體使用方便,幾乎不用動什麼腦筋,唯一要做的事情就是去注冊,然後申請一個以vicp.net為後綴虛擬域名。
1.進入http://www.oray.net/,下載<花生殼>,並「注冊網域護照」!
2.注冊完成後,登陸「我的控制台」
3.進入「我的控制台」,點擊左下角的『我要.激活花生殼服務』
4.點擊「開始」進入
在『免費域名』填入不重復的你想要得名字就是你將來的域名,例如:AGHU
5.以後就是「服務條款」和「填寫站點信息」,這些地球人都知道怎麼填!
填完結束,恭喜你,你的域名已經有了!例如:你以後的域名就是AGHU.VICP.NET
申請完免費域名以後,就安裝你已經下載的<花生殼>,然後打開運行
輸入你的注冊名和密碼,等一下就會激活你的域名,興奮吧!
然後你的ftp和web就可以啟動咯!
架設ftp伺服器的事情,另外有帖子詳細介紹了!!
======================================
區域網內公開的ip只有一個,除非你是在主機上建私服,否則你無法公開你的私服,只能在區域網內,解決的辦法如下。
由於公網ip地址有限,不少isp都採用多個內網用戶通過代理和網關路由共用一個公網ip上internet的方法,這樣就限制了這些用戶在自己計算機上架設個人網站。要實現對我們來說是比較困難的,首先得得到系統管理員的支持才能夠實現。因為這一切的設置必須在代理伺服器上做的。要實現這一點,可以用windows 2000 服務者 的埠映射功能,除此之外winroute pro也具有這樣的功能,還有各種企業級的防火牆。而對於我們這些普通用戶,恐怕還是用windows 2000 的轉換以解決ip地址匱乏問題。在防火牆上實現nat後,可以隱藏受保護網路的內部拓撲結構,在一定程度上提高網路的安全性。如果反向nat提供動態網路地址及埠轉換功能,還可以實現負載均衡等功能埠映射功能可以讓內部網路中某台機器對外部提供www服務。 埠映射功能還可以完成一些特定代理功能,比如代理pop,smtp,telnet等協議。理論上可以提供六萬多個埠的映射,恐怕我們永遠都用不完的。
一、下面來介紹一下通過nat共享上網和利用nat來實現埠映射。
1、在windows 2000 server上,從管理工具中進入「路由和遠程訪問」(routing 並且 遙遠 access)服務,在伺服器上滑鼠右擊,-》「配置並啟用路由和遠程訪問」
2、點「下一步」
3、選「internet連接伺服器」,讓內網主機可以通過這台伺服器訪問internet.(最好先配置好nat共享,讓內網主機可以正常上網,不然的話,配好埠映射後再來配置nat共享就有點麻煩了,弄的不好nat還共享不了。)
4、選「設置有網路地址轉換(nat)路由協議的路由器」,不要選「設置internet連接共享(ics)」.(ics與nat的區別在於使用的容易程度上,為了啟用ics,只需要選擇一個復選框就可以了,而為了啟用nat,則需要更多的配置任務,此外,ics用於小型網路上的原因還在於:針對內部主機,它需要有一個固定的ip地址范圍;針對與外部網路的通信,它被限制在單個公共ip地址上;它只允許單個內部網路介面。)
後面還有寫不下了
自己看吧:http://www.1cfc.com/newbbs/archive/topic/220653-1.html
參考資料:http://www.1cfc.com/newbbs/archive/topic/220653-1.html
『叄』 如何利用cURL和python對服務端和web端進行介面測試
工具描述
cURL是利用URL語法在命令行方式下工作的文件傳輸工具,是開源愛好者編寫維護的免費工具,支持包括Windows、Linux、Mac等數十個操作系統,最新版本為7.27.0,但是我推薦大家使用7.26.0,從這里可以下載7.26.0版本。
以下是官方介紹的翻譯: cURL是一個使用URL語法來傳輸數據的命令行工具,支持DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMTP,SMTPS,Telnet和TFTP。 cURL支持SSL證書,HTTP POST,HTTP PUT,FTP上傳,HTTP基礎表單上傳,代理,cookies,用戶+密碼身份驗證(Basic, Digest, NTLM, Negotiate, kerberos...),恢復文件傳輸,隧道代理等等。
Python是一種面向對象、直譯式計算機程序設計語言,由Guido van Rossum於1989年底發明,它的強大和易用就無需多做說明了,在web開發中或者對開發速度要求較高的開發中應用十分廣,不過因為屬於腳本類語言,它的性能始終比不上C++、C等語言。
本文主要利用實例說明這兩款工具的在測試中的部分用途,更多用法留待大家繼續探索。
應用場景
使用cURL模擬客戶端對服務端進行查詢
在進行介面測試時,應該先找開發人員提供介面列表和對應參數,這樣測試的時候就可以驗證測試方法是否正確,不過如果可以用瀏覽器模擬操作的話,也可以自己先試試的,後面的例子會提到。
首先使用客戶端訪問需要測試的服務端介面,用wireshark抓包結果如下:
把查詢字元串以multipart方式post數據到伺服器的file_health_info.php介面。
Tips:
Windows版的cURL不像Linux或者Mac一樣屬於系統自帶工具,需要下載,如果要在命令提示符下使用就需要跳轉到工具所在目錄下才能運行,十分麻煩,我們可以直接把這個工具文件放到Windows目錄下,這樣無論在哪個目錄都可以直接使用「curl」命令運行工具了。
cURL默認就是以post方式發送數據的,所以只需要加入multipart方式就可以了,-F在cURL幫助中的解釋是:
-F, --form CONTENT Specify HTTP multipart POST data (H)
--form-string STRING Specify HTTP multipart POST data (H)
--ftp-account DATA Account data string (F)
--ftp-alternative-to-user COMMAND String to replace "USER [name]" (F)
--ftp-create-dirs Create the remote dirs if not present (F)
--ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)
--ftp-pasv Use PASV/EPSV instead of PORT (F)
Specify HTTP multipart POST data正好滿足我們的要求,所以模擬的語句是:
curl -F "newmd5=###25016566###d:\test.exe###1###" file_health_info.php
後面的都是參數,測試前就要找開發確認好。
不過因為服務端支持以gzip方式返回數據,所以我們還可以在請求中加入—compressed參數,即是:
curl --compressed -F "newmd5=###25016566###d:\test.exe###1###"file_health_info.php
為了更好判斷服務端介面是否正常,除了對返回數據進行判斷外,我們還需要對服務端返回的數據包頭進行解析,所以還可以在cURL請求中加入-i參數,最終這個測試語句就變為:
curl –i --compressed -F "newmd5=###25016566###d:\test.exe###1###"file_health_info.php
模擬完成後就要考慮判斷返回值的事了,我們首先在命令提示符下運行這個語句,看看返回值。
運行以上命令後,返回的數據如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Date: Fri, 24 Aug 2012 07:47:45 GMT
Content-Type: application/xml
Transfer-Encoding: chunked
Connection: keep-alive
Server: 360 web server
Content-Encoding: gzip
<?xml version="1.0" encoding="GBK" ?>
<ret>
<retinfo code="0" msg="Operation success" total="1" success="1" empty="0"
cost="999.92752075195"/>
<softs>
<soft>
<md5></md5>
<sha1></sha1>
<level>4040</level>
<e_level>40.3</e_level>
<size></size>
<soft_name><![CDATA[]]> </soft_name>
<describ><![CDATA[]]></describ>
<file_desc><![CDATA[]]></file_desc>
<upload>0</upload>
<attr_upload>2</attr_upload>
<class><![CDATA[private]]></class>
<malware><![CDATA[cloud.virus]]></malware>
<is_sys_file>0</is_sys_file>
<is_rep>0</is_rep>
<age>0</age>
<pop>0</pop>
</soft>
</softs>
</ret>
數據包包頭是常見的,一般來說,我們只要判斷包頭中含有「HTTP/1.1 200 OK」就可以確定服務端正常返回了數據。另外從內容可以看到這是一個xml格式的數據包,我們只需要判斷是否存在關鍵的欄位即可,比如<level>,確定這些之後我們就可以在python中添加如下案例代碼了:
首先運行指定的curl命令:
response = os.popen('''curl -i --compressed -F "newmd5=###25016566###d:\test.exe###1###"
然後判斷返回值中是否存在我們想要的欄位:
self.assertNotEqual(response.find('HTTP/1.1 200 OK'),-1)
self.assertNotEqual(response.find('<level>'),-1)
上面的內容看起來差不多可以了,但實際還不夠嚴謹,因為服務端返回的這些數據是從資料庫中獲取的,所以我們還需要查詢資料庫獲取指定值,判斷是否和數據包中的一致,比如<level>:
首先使用python登錄資料庫伺服器:
conn = MySQLdb.connect(host='172.22.54.31', user='user',passwd='test321',db='cloud')
cursor = conn.cursor()
count = cursor.execute('SELECT plevel FROM file where md5=""')
result = cursor.fetchone()
然後判斷返回值中的level是否資料庫中的值:
self.assertNotEqual(response.find('''<level>%s</level>'''%result[0]),-1)
測試時除了使用cURL等工具進行模擬,還可以自己用python或其他語言寫代碼進行post數據,不過當時簡單起見所以就選擇了用cURL測試。
使用cURL模擬控制台登錄
說到模擬登錄或者模擬點擊,很多同學可能直接聯想到QTP等模擬界面操作的工具,事實上這種工具有一個很大的弊端是太依賴控制項,如果界面控制項變了,那麼可能整個腳本就無效了,現在的程序設計都傾向界面邏輯分離,這樣修改界面時就不會動到底下的功能介面,開發人員可以隨時修改界面控制項,如果還是採取QTP等模擬點擊的方法測試,結果可能是事倍功半的,如果測試時直接點用介面就可以避免這種問題。
下面的例子是模擬控制台登錄的,登錄URL為:
index.php?r=site/login ,首先使用瀏覽器登錄一次,看看實際效果如何。
Tips:
測試php或其他web程序時建議使用chrome,因為它自帶的Developer Tools十分好用,當然firefox或者IE9也有類似的工具,看個人習慣吧。按F12打開工具,選擇Network標簽頁,然後輸入用戶名、密碼點擊登錄,這時Network下方會顯示登錄過程中瀏覽器想控制台請求的所有數據,包括請求類型、表單數據等,這些是我們模擬操作的數據來源。
從上圖可以獲取幾個重點信息:請求URL、請求類型、數據類型、數據內容、並且支持gzip壓縮等。我們用curl模擬如下:
curl -i --compressed cloud/index.php?r=site/login -d 「username=admin」 -d 「userpass=admin」
使用-i和—compressed的原因再上一個例子已經說了,這里不再贅述,重點是後面的-d,它在官方幫助的解釋是:
-d, --data DATA HTTP POST data (H)
--data-ascii DATA HTTP POST ASCII data (H)
--data-binary DATA HTTP POST binary data (H)
--data-urlencode DATA HTTP POST data url encoded (H)
--delegation STRING GSS-API delegation permission
--digest Use HTTP Digest Authentication (H)
--disable-eprt Inhibit using EPRT or LPRT (F)
--disable-epsv Inhibit using EPSV (F)
而我們從Developer Tools返回的數據已經知道,返回數據的格式是
「application/x-www-form-urlencoded」,所以很明顯需要使用-d的HTTP POST data url encoded特性。不過格式中還有關鍵字form,莫非也支持-F參數登錄,試試:
curl -i --compressed cloud/index.php?r=site/login -F 「username=admin」 -F 「userpass=admin」,果然成功,呵呵~
也許有同學有疑問,為何不模擬warnsetup、refer,這是因為測試時發現登錄界面只需要用戶名和密碼就夠了,refer 用於記錄來源網頁,在這里用處不大,warnsetup只是用於驗證登錄碼的,這個已經去掉了。
接下來要驗證數據,我們在命令提示符中運行上面的命令,返回結果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
HTTP/1.1 302 Moved Temporarily
Date: Fri, 24 Aug 2012 08:29:07 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.3
Set-Cookie: PHPSESSID=; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=; path=/
Location: ./index.php
Server: 360 web server
很奇怪吧,乍一看控制台沒有返回任何有用信息,不過裡面那句HTTP/1.1 302 Moved Temporarily是不是特別眼熟?這個特殊的302(表示http重定向)正是我們在Developer Tools看到的狀態值,看到這個已經可以80%確定我們登錄已經成功了,更重要的是返回包中的內容:Location: ./index.php,這說明控制台已經通知請求端跳轉到index.php,如果登錄失敗控制台會繼續停留在當前登錄界面的,我們只需要修改curl語句中的用戶名或者密碼就知道了,這種情況下返回包就是登錄界面的php源碼,這里不再贅述。
使用cURL以get方式測試控制台搜索介面
測試方法同上面差不多,首先使用chrome打開控制台進入對應頁面,在搜索框中輸入「test.exe」,點擊搜索,使用developer tools抓包,內容如下:
cURL模擬get方式發送數據的參數是-G,了解這個後面要模擬就很簡單了:
curl -i --compressed -G 「cloud/index.php?r=file_cloud/api/search&filename=&bg=0&lm=19 」
其中每個參數的含義要分別了解:filename表示輸入的關鍵字,bg表示資料庫第一行,lm表示共顯示19行數據。這個介面返回的數據如下:
{"rows":[{"level":"10","plevel":"10","id":"20","md5":"","soft_name":"","soft_desc":"","file_desc":"","is_sys_file":"127","size":"41984","is_rep":"0","file_name":"apihex86.d
ll","file_version":"6.1.7600.16385","proct_version":"6.1.7600.16385","right":"\u00a9 Microsoft Corporation. All rights reserved.","lang":"0","org_name":"YXBpaGV4ODYuZGxs","sign_name":"TWljcm9zb2Z0IFdpbmRvd3M=","company_name":"Microsof
t Corporation","update_time":"2012-07-31 18:14:27","create_time":"2012-07-31 18:14:27","creator_mid":""}],"count":"1"}
分別是文件屬性和文件信息,這涉及到兩個資料庫表,所以驗證數據需要用python從兩張表中獲取對應信息。
從第一張表獲取文件屬性,比如只獲取plevel:
SELECT plevel FROM `file` where md5=""
從第二張表獲取文件信息,比如只獲取company_name:
SELECT company_name FROM file_info where md5=""
Python代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
conn = MySQLdb.connect(host='%s'% self.host, user='user',passwd='test321',db='cloud')
cursor = conn.cursor()
count = cursor.execute('SELECT plevel FROM `file` where md5=""')
result = cursor.fetchone()
self.assertNotEqual(response.find(str(result[0])),-1)
count = cursor.execute('SELECT company_name FROM file_info where md5=""')
result1 = cursor.fetchone()
self.assertNotEqual(response.find(result1[0]),-1)
當然嚴謹的測試案例是每一個屬性欄位都需要進行查找和匹配,這里就不再贅述了。
後記:這種介面測試用到的無非就是curl、python的unitest而已,可能有的人會疑問,為什麼用curl而不用py自帶的pycurl或者request之類,我覺得只要能滿足需求,能夠用現成的就用現成的,怎麼簡單怎麼來。搞一堆代碼維護起來也麻煩啊,現在qa行業跳槽也比較頻繁,萬一換了個人看不懂你的代碼怎麼辦?呵呵
『肆』 測試用badboy+jmeter,有類似badboy的其他軟體嗎
推薦兩個非常好用的測試工具jmeter和badboy
loadruner就不用說了,測試軟體的霸主。今天推薦倆新秀,小巧實用,而且完全免費。因為一個是開源軟體,一個是不用於商業用途就不用付費。
簡單介紹下jmeter和badboy
JMeter是Apache組織的開放源代碼項目,它是功能和性能測試的工具,100%的用java實現
JMeter可以用於測試靜態或者動態資源的性能(文件、Servlets、Perl腳本、java對象、資料庫和查詢、ftp伺服器或者其他的資源)。JMeter用於模擬在伺服器、網路或者其他對象上附加高負載以測試他們提供服務的受壓能力,或者分析他們提供的服務在不同負載條件下的總性能情況。你可以用JMeter提供的圖形化界面分析性能指標或者在高負載情況下測試伺服器/腳本/對象的行為。
Badboy也是一個強大的測試工具,是用C++開發的,被設計用於測試和開發復雜的動態應用。Badboy功能豐富(包括一個捕獲/重播介面,強大的壓力測試支持,詳細的報告、圖形)使得測試和開發更加容易。
為什麼要把這倆工具放在一起說呢,也許有朋友對jmeter比較熟悉,jmeter本身功能就已經很強大了,為什麼還要用badboy呢?它比jmeter的功能還要強大嗎?答案是否定的,它不比jmeter功能多,但是有了badboy可以讓你的測試腳步製作更加輕松。
用過jmeter的人都知道,jmeter測試簡單點的靜態頁面還成,腳本製作也就三兩步就搞定了。但是要是製作復雜點的測試腳步就非常困難了,比如登錄系統輸入用戶名和密碼,什麼函數、參數配置之類的,肯定會把你搞暈。而且網上jmeter相關復雜點的案例也非常少,它本身提供的幫助文檔也只有一個很簡單的例子,用處不大。有了badboy就不一樣了,它可以提供像loadrouner一樣的錄屏功能,不需要你自己去配置什麼協議、參數、cookie manager之類的,只要你把你的測試過程錄制出來,然後save as jmeter 腳本格式就ok了。
所以說這倆軟體是絕配,誰用誰知道,badboy讓你簡單的製作測試腳本,而jmeter可以給你提供強大的測試功能和聚合報告。