如何找到適合自己的開源API測試工具?

2021-12-26 測試窩

當我們大談特談基於人工智慧和UI測試工具的好處時,基於人工智慧和機器學習的API測試也同時到來。

隨著越來越多的公司轉向DevOps、持續集成(CI)和持續部署(CD),測試反饋需要比以往更快。僅僅關注UI自動化測試(它是出了名的慢)可能會扼殺我們的測試自動化工作。當我們確保快速、高質量地交付應用程式新版本時,API測試應該是整體自動化策略的一部分。API是當今軟體開發的基礎,尤其是隨著越來越多的團隊遠離單體架構、開始採用微服務方法進行軟體開發。隨著微服務成為大多數新開發工作的支柱,API測試變得比以前更加關鍵。考慮到API測試即將興起,Joe Colantonio 在2014年就寫過一本API測試的書——The UFT API Testing Manifesto: A step-by-step, hands-on testing guide for the masses。從2019年開始,每年都有2-3本接口測試的圖書出版,也說明接口測試已引起大家足夠的重視。接口測試本身的設計與執行並不困難,但如果考慮接口參數組合、從業務角度進行接口調用鏈的測試,人們還是遇到一些困難。其次,要想實現自動化測試,工作量也不小,特別是設置驗證點,也無法自動生成,需要手工配置。這些,都成為藉口測試的障礙。
為了降低API測試的複雜性,一些供應商已經創建了利用人工智慧(AI)將手動UI測試轉換為API測試的實用工具。這些工具就像嗅探器,使用機器學習(ML)自動發現模式,並在用戶與應用程式交互時,它能發現不同服務之間的連接關係。隨著AI/ML方法變得更加完善,我們能想像到API測試生成的複雜性將會顯著降低。但AI/ML方法應用在API測試上,只有商業工具開始引入,還沒有在開源API工具中看到這方面的能力,但不要因此而阻礙我們的學習,無論是現在還是未來的AI驅動API。4. 11款優秀的API測試工具,希望能幫助你選擇最適合自己的工具。使用Java時,REST-Assured是進行API自動化測試的首選,也是許多人從事API測試的主要工具之一。REST assured是一個流暢的Java庫,可以用來測試基於http的REST服務。它在設計時考慮了測試,並且能與現有的、基於Java的自動化框架(如JUnit)集成起來。即使你不是HTTP專家,也可以使用REST-Assured 進行API測試。它提供了一種類似於行為驅動開發(BDD)的DSL(特定領域的描述語言),使得用Java創建API測試變得簡單。它還有很多內置的功能,這意味著我們不必從頭開始編寫代碼。其它優勢:如果你使用Serenity自動化框架,你會喜歡與REST- assured無縫集成,這意味著你可以將UI和REST測試都組合在一個框架中,生成統一對、很棒的測試報告。在Java中測試和驗證REST服務,比在動態語言 (如Ruby、Groovy) 中更難。這是使用REST-Assured的另一個原因,因為它帶來了在Java領域中使用這些語言的簡單性。如果產品主要由Java代碼開發,強烈推薦使用REST-Assured進行API測試。有些人不希望在集成開發環境中使用與開發人員相同的語言編寫代碼。畢竟,如果開發人員不為自動化測試工作做出貢獻,為什麼要強迫自己使用開發人員的技術堆棧,而這對我們來說不是最好的選擇?有時,只是想要一個成本相對低的、快速而粗略的API測試,或者需要一個工具來幫助對API進行探索式測試。Postman在這樣應用場景中是完美的選擇,但它也足夠強大,只要我們樂意,我們也能創建更集成的解決方案。Postman是一個易於使用的REST客戶端,可以通過利用它的Chrome插件快速開始使用它,也有支持Mac和Windows的客戶端版本。

Postman有許多REST客戶端沒有的豐富界面,這使得它易於使用。它還可以讓我們輕鬆地與同事分享使用技巧,因為可以打包所有請求和預期的響應,並將它們發送給其他人,以便他或她可以查看。某休閒遊戲公司使用Postman作為協作工具。據該公司的測試軟體開發工程師說,他一個人負責研究並找出API的所有測試用例,然後他將該信息發布到wiki上,這樣其他人就可以運行API測試,並確保他們所做的不會破壞現有的API功能。Postman甚至允許在公司內部網站上放置一個按鈕——上面寫著「在Postman中運行」,它會自動啟動Postman測試。

如果測試團隊不僅想測試API,而且還想擁有一個工具來幫助自動化一些探索性API測試工作,那麼Postman是一個很好的選擇。

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測試工具的一小部分。你最喜歡哪一個?還缺少哪一個優秀工具?歡迎大家留言補充。


相關焦點

  • 10款常用的開源API測試工具
    客戶端針對某一資源發出請求,該請求被發送到伺服器並找到可以響應該請求的伺服器。伺服器查找客戶端所請求的資源並將響應發送回客戶端。可以使用什麼工具來自動化地進行API測試?Selenium是一個基於瀏覽器的測試工具,你也許想要知道有什麼工具可以開展基於REST或SOAP的服務的測試。下面將介紹幾個流行的API測試工具,可以用來測試符合REST和SOAP規範的web服務。
  • API 測試工具 Hitchhiker v0.10 發布
    Hitchhiker 是一款開源的支持多人協作的 Restful Api 測試工具,支持自動化測試, 數據對比,壓力測試,支持腳本定製請求
  • API 測試工具 Hitchhiker 0.4:無所不能的腳本
    Hitchhiker 是一款開源的 Restful Api 測試工具,支持 Schedule, 數據對比,壓力測試,支持上傳腳本定製請求
  • 適合寫API接口文檔的管理工具有哪些?
    所以api接口文檔就變的十分有意義了,目前市場有哪些比較優秀的接口文檔管理工具呢?1、MinDoc網址:https://www.iminho.me/MinDoc 是一款針對IT團隊開發的簡單好用的文檔管理系統。MinDoc 的前身是 SmartWiki 文檔系統。
  • 分享幾款優秀的API測試工具
    伴隨更多的公司轉向持續部署(CD)、持續集成(CI)、以及DevOps,他們對測試反饋的要求比以往更加高速。所以越來越多的團隊需要通過自動化測試工具,來開展全面、及時的測試。以下推薦幾款好用的API測試工具。
  • 適合寫api接口文檔的管理工具有哪些?
    Showdoc一個非常適合IT團隊的在線API文檔、技術文檔工具。測試接口是否正常運作:1. 支持在線、本地(localhost)測試,2. 支持跨域測試,3. 支持文件測試,4. 強大的參數構造器。Mock API實現敏捷開發:1. 根據文檔自動生成校驗數據,2. 支持請求協議、請求方式校驗,3. 支持簡易Mock、高級Mock(MockJS),4. 支持跨域調用。
  • 如何基於 Swagger 使用 OpenAPI Generator 生成 JMeter 腳本?
    如果我們能找到一種能自動生成腳本的方法,那將是一個提高的能效的好事情。在本文中,我演示解釋如何使用 Swagger & openapi-generator 生成用於 API 測試的 JMeter 腳本。
  • 十大開源Web應用安全測試工具
    Web應用安全測試可對Web應用程式執行功能測試,找到儘可能多的安全問題,大大降低黑客入侵機率。在研究並推薦一些最佳的開源Web應用安全測試工具之前,讓我們首先了解一下安全測試的定義、功用和價值。安全測試可以提高信息系統中的數據安全性,防止未經批准的用戶訪問。
  • smart-doc 2.0.1 發布,Java 零註解 API 文檔生成工具
    smart-doc是一款同時支持java restful api和apache dubbo rpc接口文檔生成的工具
  • 以及如何使用開源網絡情報工具?
    在本文中,我們將帶您快速了解OSINT開源網絡情報的全部內容,以及學習如何使用OSINT開源網絡情報工具。什麼是OSINT開源網絡情報?你可能聽說過這個名稱,但不知道它的具體含義,OSINT代表開源網絡情報,它是指可以合法地從有關個人或組織的免費公共來源中收集的任何信息。
  • API 測試工具 Hitchhiker 0.1.2 發布,增強體驗
    在線體驗: http://www.hitchhiker-api.com/, 可以用 `try without login` 來免登錄使用。
  • API測試指南
    自動化測試從分類上來說,可以把它分為客戶端自動化測試和服務端自動化測試,或者可以更加具體的說就是API的自動化測試,API的測試是軟體測試的一種測試模式
  • smart-doc 2.0.2 發布,Java 零註解 API 文檔生成工具
    smart-doc 是一款同時支持 java restful api 和 Apache Dubbo rpc 接口文檔生成的工具,smart-doc 顛覆了傳統類似 swagger 這種大量採用註解侵入來生成文檔的實現方法
  • api文檔自動生成工具
    接口文檔工具,支持RESTful風格,今天我們來學一下api-doc的生成作者:網際網路編程。Java開發時,使用註解把文檔相關信息標註在類的方法上,通過工具自動掃描代碼的註解,生成json數據,發給前端,前端angular解析生成頁面本項目自帶一個spring-boot框架為基礎的demo(這裡使用spring-boot做演示的demo僅僅是為了方便,本質上只要是java寫的項目都可以用該工具),前端用angular做了一個比較漂亮的界面(最終前端界面都編譯成了html,如果你前端不熟悉
  • Ruckus推出開源ZAP無線網性能測試工具
    Ruckus宣布在開源社區推出其廣受歡迎的「ZAP」無線性能測試工具,用以鼓勵在開源社區開發出更為先進的無線測試工具
  • smart-doc 2.0.0 重磅發布,Java 零註解 API 文檔生成工具
    smart-doc是一款同時支持java restful api和apache dubbo rpc接口文檔生成的工具
  • 目前市場上六種優秀的API測試工具
    市面上六大API測試工具1.Katalon StudioKatalon Studio是一個開源、全面且健壯的測試自動化工具,可用於測試API、Web應用、桌面端、以及行動應用程式。在API測試中,它更適合於複雜的測試場景,可以讓開發人員輕鬆地測試SOAP、REST、以及Web服務。作為一個headless功能性的測試工具,它為用戶提供了一個完整的源框架。
  • API測試工具SoapUI & Postman對比分析
    SoapUISoapUI是一個開源測試工具,通過soap/http來檢查、調用、實現Web Service的功能/負載/符合性測試。該工具既可作為一個單獨的測試軟體使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。
  • 使用pyhttptest 輕鬆測試 REST API
    pyhttptest 命令行工具,用於通過 RESTful api 進行 HTTP 測試。這個工具通過簡單的三個步驟自動化測試安裝pip install pyhttptest用文件中最簡單且廣泛使用的格式 JSON 描述針對 API 服務的 HTTP 請求測試用例發送 HTTP GET 請求json文件內容如下{ "name": "TEST: Get server status", "verb": "GET", "endpoint": "/
  • 谷歌發布 OSS-Fuzz 開源模糊測試服務
    僅在微軟宣布提供Springfield編碼模糊測試服務兩個月後,谷歌也發布了他們自己的面向對象存儲模糊測試,OSS-Fuzz的測試版。這兩個項目的目的都是為了幫助開發者鎖定導致入侵的程序錯誤,但是項目本身就像這兩家公司的商業模式一樣,大相逕庭。一個需要付費另一個則是免費,一個擁有專利保護另一個則是開源的。