當前位置:首頁 » 網頁前端 » 測試web介面
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

測試web介面

發布時間: 2022-08-07 21:37:51

1. 如何做好Web介面測試

你好,個人理解的你所說的後台的數據的測試是指的是對數據的校驗,不知理解的是否正確,那麼根據這個理解,我的解釋是,在我們框架中,增加了很多的功能方法用來幫助進行自動化腳本的編寫和結果校驗,其中就包括後台數據校驗方法,當我們的
測試用例需要在後台進行數據校驗的時候,調用這些數據校驗方法即可。相當於是,前台頁面操作的自動化是封裝selenium的方法去操作頁面,而對後台數據的校驗是通過增加功能方法來實現的,可以理解為不同的兩部分,但是在編寫測試腳本的似乎,根據測試用例的設計,這兩部分都可以拿過來使用。

2. 如何調用webservice介面測試

一、通過WSCaller.jar工具進行測試:

前提:知道wsdl的url。

wsCaller可執行程序的發布方式為一個wsCaller.jar包,不包含Java運行環境。你可以把wsCaller.jar復制到任何安裝了Java運行環境(要求安裝JRE/JDK 1.3.1或更高版本)的計算機中,用以下命令運行wsCaller:

java -jar wsCaller.jar

使用wsCaller軟體的方法非常簡單,下面是wsCaller的主界面:

首先在WSDL Location輸入框中輸入你想調用或想測試的Web
Service的WSDL位置,,然後點「Find」按鈕。wsCaller就會檢查你輸入的URL地址,並獲取Web
Service的WSDL信息。如果信息獲取成功,wsCaller會在Service和Operation下拉列表框中列出該位置提供的Web
Service服務和服務中的所有可調用的方法。你可以在列表框中選擇你要調用或測試的方法名稱,選定後,wsCaller窗口中間的參數列表框就會列出
該方法的所有參數,包括每個參數的名稱、類型和參數值的輸入框(只對[IN]或[IN,
OUT]型的參數提供輸入框)。你可以輸入每個參數的取值。如下圖:

這時,如果你想調用該方法並查看其結果的話,只要點下面的「Invoke」按鈕就可以了。如果你想測試該方法的執行時間,則可以在「Invoke
Times」框中指定重復調用的次數,然後再按「Invoke」按鈕。wsCaller會自動調用你指定的方法,如果調用成功,wsCaller會顯示結
果對話框,其中包括調用該方法所花的總時間,每次調用的平均時間和該方法的返回值(包括返回值和所有輸出型的參數)。如下圖:

wsCaller軟體是基於Axis庫(Apache eXtensible Interaction System)開發的,Axis庫的介紹及其版權信息請參見Apache Software Foundation的網站http://www.apache.org/。

二、編寫java的Main()函數,創建XFireProxyFactory調用聲明的Interface介面函數。

前提:知道wsdl的url、知道webservice程序的介面(方法)聲明。

舉例:

public static void main(String[] args) {
Service srvcModel = new ObjectServiceFactory()
.create(IHelloWorldService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());

String helloWorldURL = "";
try {
IHelloWorldService srvc = (IHelloWorldService) factory.create(
srvcModel, helloWorldURL);
System.out.print(srvc.example("dennis"));
} catch (MalformedURLException e) {
e.printStackTrace();
}

}

三、利用Eclipse向導生成webservice的客戶端調用程序。

前提:知道wsdl的url、知道webservice程序的介面(方法)聲明。

步驟:

1)在Eclipse中加入Xfire插件:

在Eclipse的安裝目錄的plugins下包含:

org.codehaus.xfire.eclipse.ui_1.0.2.xfire126.jar、

org.codehaus.xfire.eclipse.ui.wizards_1.0.2.xfire126.jar、

org.codehaus.xfire.eclipse.core_1.0.2.xfire126.jar

在Eclipse的安裝目錄的features下包含:

org.codehaus.xfire.eclipse_1.0.2.xfire126

2) 在Eclipse中創建一個Web Project項目,設為WSClient項目名。

同時點擊項目右鍵,添加Xfire nature。

3)在WSClient項目下創建一個Web Service Client文件組【或者是Code Generation from WSDL document的文件組!】。

即點擊項目右鍵,new--》other--》...

輸入webservice的url,比如:http://localhost:9999/WS/services/HelloWorldService?wsdl

再選好生成文件放置目錄。完成生成!

4)修改所生成文件組中的文件:****client.java 中的main函數.

比如:生成的文件為BizRemoteServiceClient.java,在main函數中找到:

BizRemoteServiceSoap bizRemoteServiceSoap = client.();

該語句用BizRemoteServiceSoap bizRemoteServiceSoap = client.getBizRemoteServiceSoap();代替即可!

public static void main(String[] args) {

BizRemoteServiceClient client = new BizRemoteServiceClient();

//create a default service endpoint
//BizRemoteServiceSoap bizRemoteServiceSoap = client.();

BizRemoteServiceSoap bizRemoteServiceSoap = client.getBizRemoteServiceSoap();

//TODO: Add custom client code here
//
//bizRemoteServiceSoap.yourServiceOperationHere();

MyResponse MyResponse=bizRemoteServiceSoap.login("ivy1", "111");
System.out.println(MyResponse.getFlag());
System.out.println(MyResponse.getDetail());

System.out.println("test client completed");
System.exit(0);
}

綠色代碼部分是根據測試業務邏輯加入的測試代碼!試具體測試任務而定!

直接運行該main函數,看結果即可!

3. 如何利用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行業跳槽也比較頻繁,萬一換了個人看不懂你的代碼怎麼辦?呵呵

4. web介面測試工具有哪些

關於Jmeter可以做什麼,官方上也有非常詳細的介紹。另外它的文檔也寫很詳細。如果想學習Jmeter,那麼它的文檔將會是最好的教材。
我相信你可以在官網上找到下載地址並把它下載下來。
Jmeter由Java語言開發,最新的Jmeter3.0版本的運行需要有Java 7 或之後版本的環境。我同樣相信你能搞定Java環境。
接下來,將下載的apache-jmeter-3.0.zip解壓,進入解壓目錄.../apache-jmeter-3.0/bin 。雙擊ApacheJMeter.jar啟動:

二、添加HTTP介面測試
我們的所以工具都會在Jmeter工具中完成,接來就按照一般步驟來創建一個HTTP介面測試。

如上圖,右鍵點擊「測試計劃」-->「添加」-->「Threads(Users)」-->「線程組」。

5. 怎樣做web介面測試

建議使用soapUI,無論測試webservice介面還是測試http介面都很好用
當然,也可以自己寫客戶端,這要根據具體的webservice介面來寫,網上還有很多自動生成webservice客戶端代碼的例子,我不習慣用那種方式,一般都是自己寫。可以多搜下~很多案例

6. 如何搭建學習web介面測試環境

介面測試就是對某一個介面進行測試代碼的編寫和執行。一般情況下,實施介面測試的優先順序是:對暴露在外面的介面(該介面會給第三方調用)進行介面測試;內部的核心功能介面也會做介面測試;內部非核心功能介面的介面測試(很多時候就是單元測試)。當然這個實施的具體細節,還需要根據項目的情景和人員的能力來確定如何實施介面測試、在哪裡做介面測試、為什麼要做介面測試、做到什麼程度等。
介面測試的實施條件
接下來說下,介面測試實施需要的一些條件。第一個就是測試人員的能力,代碼的熟悉能力、介面測試框架的使用能力、介面測試環境的搭建能力、介面測試設計的能力、基礎代碼的編寫能力、基礎Debug能力等。第二個就是介面測試框架,框架是否定製化一些功能(比如自動載入java bean、方便初始化數據、方便校驗資料庫數據等)。第三個就是測試團隊和測試流程的支持,測試團隊需要支持測試人員對核心介面進行介面測試(包括時間上、精力上、技術上等支持);測試流程上需要保證介面測試的效率和項目接入性(在項目當中實施介面測試,充分考慮開發團隊和功能測試團隊合作等)。

7. 怎麼用jmeter對web進行介面測試

演示一下簡單的介面測試,首先需要先進入到jmeter的界面窗口中,進行右鍵線程組,添加》sampler》http請求。
然後在添加一個為察看結果樹,進行右鍵線程組》監聽器》察看結構樹。
點擊已添加的http請求進入,然後在web伺服器中的添加需要的介面復制進入,例如使用網路閱讀的首頁網址信息,埠為80,協議使用是「http」。
然後進行運行jmeter,點擊上面綠色運行按鈕。
進入查看結果是否運行成功,可以進行點擊察看結果樹。
進入到查看結果樹中,在進入到響應數據的界面中,可以查看的是網路閱讀首頁返回的相關的數據,根據的自己的需要還可以進行添加相關的斷言。已進行判斷是否返回想要的數據。

8. 客戶端怎麼測試webservice介面,怎麼算測試成功

可以用soapui
!
soapui是測webservice的專業工具,不僅可以測試結果的正確性,還可以測試webservice的性能
如果你用的是myeclipse
我知道,myeclipse也可以測.
webservice訪問實際上就是一次http請求,那麼也就是請求和響應.
1.向webservice地址發送soap請求報文,
2.webservice伺服器返回soap結果報文.
所以說測試也就是
發送報文,然後看返回結果報文,返回正確,那麼測試就成功了

9. 關於jmeter測試web登錄介面

演示一下簡單的介面測試,首先需要先進... 1 然後在添加一個為察看結果樹,進行右鍵... 2 點擊已添加的http請求進入,然後在web... 3 然後進行運行jmeter,點擊上面綠色運行... 4 進入查看結果是否運行成功,可以進行點... 5 進入到查看結果樹中...

10. 如何測試webservice介面

1.了解url : http://localhost:8080/test/services/user?wsdl;

2.新建web service 項目 Test,啟動介面;

3.在項目Test上新建一個 web service client ,選擇JAX_WS;

4.Test項目會自動生成關聯代碼,新建一個Java類,main方法

publicstaticvoidmain(String[]args){
System.out.println("123");
ServiceCommandServicesc=newServiceCommandService();
IServiceCommandis=sc.getServiceCommandPort();
Strings=is.queryInstanceById();
System.out.println(s);
Strings2=is.queryInstanceList();
System.out.println(s2);
}