當我們大談特談基於人工智慧和UI測試工具的好處時,基於人工智慧和機器學習的API測試也同時到來。
Postwoman是Postman的另一種選擇,是一個在過去幾個月裡越來越受歡迎的新工具。它有一個乾淨且現代的UI,使創建API請求快速和容易。
Postwoman因下列特點而聞名,在GitHub上獲得了近1.5萬顆星,說明它很受歡迎:
能夠在線運行所有東西(不需要安裝)
支持多平臺和多設備
可以從任何地方訪問它
高可定製性
如果需要開始測試API,並且不想在機器上安裝臃腫的軟體,那麼就選這個工具。如果我們面對複雜的API測試場景,並且側重於專業的測試工程師來使用的API測試工具,SoapUI是值得首先試用的工具,它有下列優勢:
ReadyAPI使強大的REST API測試自動化變得容易從API的服務描述生成測試,然後使用測試覆蓋率特性動態分析功能測試覆蓋率SoapUI功能完備,可以滿足API測試的全面需求(基於API的功能測試、性能測試和安全性測試等),而且可以從零開始生成完整的API測試方案。如果出於某種原因需要創建自定義工作流或功能,可以使用Groovy在SoapUI中編寫解決方案。
雖然JMeter是為負載測試而創建的,但許多人也將它用於功能API測試。
JMeter包括測試API所需的所有功能,以及可以增強API測試工作的額外特性。例如,JMeter可以自動處理3文件,這樣可以快速為API測試生成惟一的參數值。它還能與Jenkins集成,因此可以在CI管道中包含API測試。
如果我們計劃創建API功能測試,並希望在性能測試中利用這些功能測試,那麼可以使用JMeter作為主要API測試系統,從而一舉兩得。
幾年前由Intuit公司創造的Karate(https://intuit.github.io/karate),已經發展成為具有綜合能力的測試框架,覆蓋了API 接口功能測試、性能測試,並提供Mocks支持(mock API servers:API test Doubles),甚至支持UI的自動化測試,下面這張圖就充分證實了這一點。
測試是使用BDD編寫的,類似於Cucumber的語法,但與大多數BDD框架(Cucumber、JBehave、SpecFlow)不同的是:不需要編寫步驟定義。Karate已經創建了開始測試api所需的所有步驟定義。如果您是編程或自動化方面的新手,那麼空手道很容易使用,因為您不需要任何Java知識。如果這是你的情況,Karate可能是完美的選擇。Citrus框架(https://citrusframework.org/)於2009年9月發布,自那以後一直在穩步更新,現在最新版本是2.8。Citrus框架可以幫助我們為各類消息協議或數據格式自動集成測試,其優勢有:
如果我們計劃測試REST services之外的其他headless技術,Citrus是比較好的選擇。它可以處理任何headless協議,為所有非UI測試需求提供了優秀的解決方案。如果在企業環境中工作,並且需要測試許多不同類型的應用程式,那麼這種靈活性是有益的。你可能會問: 「PowerShell?真的嗎? 」 是的,真的。
隨著在基於windows的組織中採用DevOps, PowerShell在從命令行自動化許多事情方面表現得非常出色。使用PowerShell進行API測試的一些好處是:
C:\> (Invoke-WebRequest -Uri $endpointUri).Content
{"all":[{"_id":"5894af975cdc7400113ef7f9",
"text":"The technical term for a cat's hairball is a bezoar.",
"user":{"_id":"587288f6e6f85e64ae1c7ef7",
"name":{"first":"Alex","last":"Wohlbruck"}},
"upvotes":[{"user":"5872812829f7f43cacb0c4de"}]},
{"_id":"58e007db0aac31001185ecf7",
"text":"There are cats who have survived falls from over 32 stories (320 meters) onto concrete.","user":{"_id":"58e007480aac31001185ecef","name":{"first":"Kasimir","last":"Schulz"}},"upvotes":[{"user":"5872812829f7f43cacb0c4de"}]},{"_id":"58e008780aac31001185ed05","text":"Owning a cat can reduce the risk of stroke and heart attack by a third.","user":{"_id":"58e007480aac31001185ecef","name":{"first":"Kasimir","last":"Schulz"}},"upvotes":[{"user":"5872812829f7f43cacb0c4de"},{"user":"5c2dd8241d3f5500149d59fc"}]},{"_id":"58e008800aac31001185ed07","text":"Wikipedia has a recording of a cat meowing, because why not?","user":{"_id":"58e007480aac31001185ecef","name":{"first":"Kasimir","last":"Schulz"}},"upvotes":[{"user":"5872812829f7f43cacb0c4de"}]},{"_id":"58e008b80aac31001185ed0d","text":"Adu
<SNIP>
C:\> Invoke-restmethod -Uri $endpointUri
all
---
{@{_id=5894af975cdc7400113ef7f9;
text=The technical term for a cat's hairball is a bezoar.;
user=; upvotes=System.Object[]},
@{_id=58e007db0aac310011 ...
PS> $token = 'xxxxxxxxxx'
PS> $params = @{
Uri = 'https://cat-fact.herokuapp.com/facts'
Headers = @{ 'Authorization' = "Bearer $token" }
Method = 'POST'
Body = $jsonSample
ContentType = 'application/json'
}
PS> Invoke-RestMethod @param
PowerShell是一個開源的微軟產品。因此,任何時候想要使用命令行或自動化任何東西,比如Windows生態系統(或幾乎任何微軟產品)中的API測試,我們都應該使用PowerShell。
Insomnia (https://insomnia.rest)不僅有一個漂亮的界面、易於使用,而且是免費的,以及有下列這些優勢:
Taurus(https://gettaurus.org/)是一個友好的、持續測試的自動化框架,之前在2020年軟體測試趨勢報導:徹底實現持續測試 也提到過它。Taurus可以和JMeter集成,進行有效的API測試,其強大之處在於它允許我們用YAML(Yet Another Markup Language,一種人類可讀且可編輯的方法,完成了巨大的飛躍)編寫測試,也允許用簡單的文本文件描述測試。實際上,可以用大約10行文本描述一個完整的腳本,這允許團隊在YAML或JSON文件中描述所計劃的測試。
當團隊想採用基於BDD的測試方法進行API測試工作時,Taurus非常適合。使用YAML文件可以提供清晰、易於閱讀的測試,團隊中的任何人都可以理解。Fiddler能監視、操作和重用HTTP請求,還能做很多事情,如調試網站問題等。它有許多擴展功能,其中API測試就是其中的一個擴展,有很強能力驗證web API的行為。對於更多的硬核API測試開發,使用FiddlerCore——NET類庫來構建API測試基礎設施。
對使用.NET語言的團隊來說,Fiddler是一個很好的選擇,因為可以使用.NET語言開發所要完成的測試。
沒有適合每個人的完美工具,因為每個組織都有不同的要求。實際上,上面列出的API測試工具都很不錯,但是否適合你的環境,需要根據自己的需求、開發環境和產品特點等來進行選擇,希望上述介紹有助於你做出最好的選擇。
這些工具只是開源API測試工具的一小部分。你最喜歡哪一個?還缺少哪一個優秀工具?歡迎大家留言補充。