標籤:

介面測試基礎

這一篇講介面測試的基礎,如果你還在做手工測試,你可以從這裡開始入門,做介面測試是最容易的一種自動化測試。

一、介面測試是什麼

首先要理解介面測試就是測介面,如圖所示:

讓我們以數據驅動的視角來看介面測試,介面測試就是按約定的格式(介面)給待測軟體傳入某種數據,之後檢查介面給的返回值是否正確。

這個是不是和黑盒測試的流程一模一樣呢?

確實介面測試就是這樣,也是最簡單的一種測試。唯一的問題是沒有圖形界面,不能通過點點點去測,而要使用一些其他方法。

二、手工做介面測試需要的工具

因為沒有圖形界面,我們需要有某種方式把準備好的數據傳給要測的介面。這一步通常需要藉助工具。舉個例子,如果目標介面是一個http介面(可以參考w3cschool的web service教程來了解什麼是http介面),那麼在linux使用curl命令就可以去調用這個介面,把數據傳給它了。

如果在windows上做介面測試,可以使用postman這個工具。

另外,抓包工具也是介面測試必備的,linux上可以tcpdump,windows可以fiddler或者charles,抓底層的包用wireshark。下面介紹下大體上怎麼用這些工具,至於具體教程,還請善用搜索引擎自己找具體教程。

注意本文主要以http介面為例子來解釋介面測試的基礎,如果你要測的介面不是http介面,記住原理也是類似的。掌握原理之後,無非是換幾個工具就能實現。

三、手工介面測試的流程

首先我們看一下普通的黑盒手工web測試的流程:

這中間通過抓包,可以抓到我們要的數據,也就是瀏覽器給伺服器傳送的輸入數據,和伺服器向瀏覽器傳送的返回值。

比如,用戶登錄時,輸入數據是用戶名密碼,返回值是登錄成功後生成的一個session id和cookie,以及「登錄成功」這句提示信息。

然後抓下來的數據包怎樣使用呢?

這個就是一個典型的手工介面測試的流程:

通過抓包或其他方法(比如看文檔)準備好輸入數據包,然後用發包的工具把數據發給服務端的介面,之後校驗其返回值。

如果你不知道某個介面需要什麼數據,可以看介面的設計文檔或者聯繫相關的開發人員,一般會提供給你一個調用的例子,相信大家能在網上搜到相關的例子的,在這個基礎篇里,就不展開講了。

四、初步的自動化介面測試

以上,大家已經了解了手工做介面測試的流程。

那麼下一步就是把一些介面測試編寫成腳本,放在本地(自己電腦上),人工觸發去批量得執行這些測試,並自動校驗返回結果。

這裡推薦一下使用的工具。

如果你是零基礎的,推薦你用jmeter或soupUI,兩者都不需要你具備任何代碼功底就能用。

Jmeter:當前最流行的性能測試工具。沒錯,他也可以做介面測試。並且腳本可以在性能測試里重用。特點是開源,免費,有圖形界面,可以錄製。學習方法:主要靠看官網用戶手冊,內容非常全。有空我再寫一盤jmeter學習指引。

SoupUI:一個很方便的介面測試工具,商業版有強大的功能。特點是圖形界面強大,易用。其腳本也可以使用一些方式在性能測試中重用。學習方法主要看官網教程。

假如你有編程基礎,可以考慮使用python+requests+pytest/robotframework來做介面測試。如果用了python+requests,那麼性能測試方面可以用python+locust。也可以不用locust,只要你掌握了前面提過的數據驅動的思想,配合一些自動化框架開發基礎,也一樣可以把介面測試做到能在其他性能測試工具里重用,當然這個就複雜了,以後再說吧。用java的話,也有對應的工具鏈,還是那句話,請善用搜索引擎。

最後,即使你熟練地使用jmeter或soupUI做了介面測試,這仍然只是初步的。真正的自動化測試,肯定得和持續集成相結合,更大地解放人力。持續集成相關的基礎文章也會稍後推出,希望能幫到大家。

首發於公眾號:測試進階(test_up)


推薦閱讀:

Windows Automation API和自動化測試
WEB自動化1:什麼是自動化測試?
為什麼要寫測試用例,測試用例寫給誰看?
在國外,資深的軟體測試人員大多是手動測試,他們厲害之處在於測試用例的設計,但在國內,很多測試人員都把自動化測試當成很厲害的資本,為什麼?
為何國內的前端對自動化測試好像不是很看重?

TAG:自动化测试 |