博客

API測試自動化教程:一個循序漸進的指南

作者:

Tricentis員工

各種各樣的貢獻者

日期:2017年8月29日

貴公司寫一個API的軟件嗎?如果答案是肯定的,那麼你絕對需要測試它,幸運的是你,本教程一步一步解釋如何進行自動化API測試使用工具像郵差,紐曼,詹金斯Tricentis qt

但首先,讓我們的土地。原來你的軟件的API實際上是最重要的部分,你可以測試應用程序,因為它有最高的安全風險。

例如,瀏覽器或應用程序,客戶端軟件可以防止很多糟糕的用戶體驗,如發送100用戶名或允許奇怪的編碼字符輸入,但你的API阻止這些事情嗎?如果有人開始猜測其他用戶的“獨特”的令牌,軟件應對真正的數據嗎?它有一個Apache錯誤消息,包括服務運行的版本嗎?如果這些問題的答案是是的,有一個相當大的安全缺陷。或者如果有人破解API呢?他們能生產數據,比特幣贖金服務器機器上也可以隱藏,直到有有趣的事情發生了。底線是,使用API時的風險遠高於如果隻有一個錯誤在您的應用程序的UI——你的數據可能麵臨風險,通過代理,所有用戶的數據。

幸運的是,API測試不僅是最重要的測試要做對您的應用程序,但它也是最簡單和最快的執行。這意味著沒有理由你不應該有一個廣泛的API測試套件(相信我,有一個會幫你晚上睡得更好)。有了一個API測試套件和你持續集成可以很容易地:

  • 測試你的所有端點無論在哪裏舉辦,從AWSλ到本地機器上。
  • 確保你所有的服務按預期運行。
  • 確認你所有的端點安全從未經授權的和未經身份驗證的用戶。
  • 看您的測試執行“神奇”填充您的測試管理工具。

那麼如何把所有這一切付諸行動?你來對地方了。讀了一個按部就班的API測試教程如何設置郵遞員,紐曼,如何從詹金斯執行您的測試,最後如何將所有這些測試結果集成到測試管理工具如qt經理。

讓我們開始吧!

建立了郵遞員


1)
首先第一:你需要下載郵差。它是免費的,十分有趣,它作用於Mac, Windows和Linux機器。注意:如果你有一個大的團隊,您經常更新你的服務和測試,你可能想要考慮郵差Pro(但你可以決定升級後)。

郵差x573——1 - 1024

2)確保應用程序的API文檔方便。這個演示,我將使用Tricentis qt管理器API的簡單的和公眾。如果你想試試這些演示逐字,你可以得到一個審判Tricentis qt經理免費在這裏。網上還有大量的api,您可以使用(我推薦入手AnyAPI如果你想要其他地方)。

3)接下來,打開登錄調用API的文檔你使用(你可以找到的文檔Tricentis qt下麵的經理)。這個文檔應該包括:

  • 方法(POST / PUT /會/刪除/等)
  • URI (/ oauth /令牌將遵循qt的實例使用的URL)
  • 身體

在這個例子中,登錄調用需要x-www-form-urlencoded - type頭。你可以選擇它在郵遞員,它會自動添加適當的頭。一旦你選擇了這個選項,郵遞員將允許您為格蘭特類型,輸入名稱/值對用戶名和密碼。注意:任何時候你打電話,確保您的web協議是HTTPS,否則你的所有數據在互聯網上以明文,沒人想要。

api -登錄- 2 - 1024 x573

4)如果你使用Tricentis qt經理,繼續和結構測試,並寫出是什麼你想要測試的測試用例。當我們完成了,我們將鏈接的測試用例的自動化API測試測試用例ID映射。一般來說,先編寫測試應該做什麼在你的測試用例管理工具是一個偉大的過程編寫自動化測試用例。

5)一旦你結構測試和寫什麼您想要您的測試用例,完整的可追溯性鏈接,你的要求,然後鉤你的自動化測試執行測試用例。如果你使用一個工具像qt經理JIRA的鏈接,你會看到你所有的文本執行JIRA對於每一個匹配的要求。很酷,不是嗎?

6)現在讓我們使我們的第一個電話登錄終端,這樣我們可以得到一個令牌(稍後我們會令牌傳遞給後續調用API知道我們登錄)。查看登錄文檔,我看到這是一個POST請求。如果是,你會通過URL傳遞您的用戶名和密碼。為了確保一切順利進行,確保你有以下設置:

  • 方法:文章
  • URL: http://your.qTestURL/oauth/token
  • 點擊身體x-www-form-urlencoded選項卡並設置請求主體(這些隻是不同的標準方法來傳遞數據的身體你的HTTP請求),單擊單選按鈕僅僅是一個HTTP報頭字段內容類型設置為application / x-www-form-urlencoded。
  • 現在體內設置3名稱/值:
    • grant_type:密碼
    • 用戶名:你的qt的用戶名
    • 密碼:您的qt密碼

注意命令在API文檔關於密碼沒有被填寫,名稱/密碼地區在郵遞員提供的字段。

郵差- - 1024 x781進行身份驗證
Postman-Authenticate-5
郵差- - 4 - 1024 x781進行身份驗證

7)你的設置相匹配嗎?太棒了!現在你有一個工作的API調用。讓我們保存它到郵遞員收集以後我們可以重用它。創建一個新的郵差收集,隻需點擊文件夾圖標,再加上,在左邊的麵板。

一旦您創建了集合,您可以通過單擊“保存”按鈕保存你的電話在屏幕的右上角(標準操作係統快捷方式)。我叫API調用qt的測試用例ID。以後這將允許我地圖我的測試用例,這樣我可以跟蹤每次我運行這個API調用連同我剩下的測試。

8)隻有一個步驟在我們寫一個測試之前,我們需要做的幾件事與HTTP響應:

  • 驗證碼是200 (OK)狀態
  • 確認你回到一個非空訪問令牌
  • 驗證您的範圍是準確的

注意,我們不關心其他字段——他們測試對你並不重要,你登錄。

9)現在是時候寫第一個測試!小心不要讓你的測試脆性——聰明你測試和為什麼你測試它。

10)接下來,讓我們編寫另一個測試將測試用例添加到我們現有的項目。首先,我們需要登錄和保存我們的令牌。我們將創建一個環境變量,稱之為“access_token”:

郵差-驗證- 6 - 1024 - x818

這個訪問令牌存儲的美是現在可以在後續的調用中使用它。這意味著您可以自動化測試和您不需要手動讓你每次登錄令牌。太好了!在接下來的電話,你會看到令牌使用雙花括號{{access_token}}。

11)讓我們看看文檔添加一個測試用例,你能找到這裏嗎:

qt - api - 7 - 1024 - x818

然後創建一個新的測試用例:

qt -經理- api - 8 - 1024 x698

12)現在讓我們創建新的POST請求添加一個測試用例。有一個變量URL(路徑)稱為{項目}。填寫這個變量,我們需要在qt的ID項目,我們可以從qt的URL。在這種情況下,你可以看到它的45625:

經理- api - 9 - 1024 x515

我們還需要填寫這些字段的字符串:

  • 名稱:測試創建測試用例
  • 描述:這個測試用例是由API測試
  • parent_id: 2656708

注意parent_id文件夾/模塊我們剛剛創建的ID為這些測試會傾倒。ID可以在測試模塊頁麵的URL。

13)接下來,我們要將注意力轉向我們的兩個數組屬性。test_steps,這將是一個JSON數組,它是一個逗號分隔的列表JSON對象之間的兩個方括號內。每個對象都是一個步驟,每一個JSON對象數組中的字符串應該引號內。小心不要複製在“引用”從一個Microsoft Word文檔或其他來源,額外的美化你的文本。

Test_steps:

“test_steps”: [{

“描述”:“第一步,打開登錄頁麵”,

“預期”:“登錄頁麵打開,很明顯”,

“附件”:[]

},

{

“描述”:“步驟2 -登錄與愉快路徑”,

“預期”:“用戶被重定向到主屏幕”,

“附件”:[]

},

{

“描述”:“步驟3——點擊漢堡酒吧”,

“預期”:“菜單顯示”,

“附件”:[]

})

14)最後一個請求頭從第一次調用使用令牌。正如前麵所提到的,我們可以使用一個變量保存與雙括號{{}}:

郵差- 10 - 1024 x491

和請求主體:

郵差- 11 - 1024 x647

然後幾個測試:

郵遞員- 12 - 1024 - x636

驗證響應,進入測試選項卡並確保你得到正確的數據。

15)現在可以運行整個測試套件或者子文件夾立刻使用“跑步者”。

api - 13 - 1024 x762

這些大多是快樂的路徑,但也有不少事情可能出錯,這些調用,數十或數百個測試,你可以做,包括相當多的安全測試。客戶如果項目屬於另一個什麼?如果模塊ID不存在什麼?如果你上傳一個文件,是巨大的嗎?編寫一次,測試每一個時間!

一個大的項目我們沒有涉及被存儲在不同的環境中。如果你想測試你的開發、QA、分段或生產環境中,你可能有不同的測試數據為每個環境或登錄你想使用。可以和選擇環境在運行測試時通過GUI(我們)或與紐曼從命令行。讓我們做下一個。

建立了紐曼
現在,您已經有了一個集合,您想要執行,也許一個相應的環境配置,您需要從命令行運行它。你必須能夠以運行它從詹金斯或任何其他持續集成調度程序。要做到這一點,我建議紐曼,這是一個可執行程序運行Javascript編寫的郵差的集合,可以安裝包管理器的節點(NPM)。它隻需要幾個步驟:

1)打開你的終端/命令行應用程序的選擇:https://www.davidbaumgold.com/tutorials/command-line/

2)安裝NPM:https://www.npmjs.com/get-npm

3)在你的機器上安裝紐曼全球:https://www.npmjs.com/package/newman/tutorial

紐曼- 14 - 1024 x211

4)從郵遞員出口集合(右鍵單擊測試你想出口在左窗格中)和出口環境(去“管理環境”,點擊下載按鈕)從郵遞員。將這些文件保存在您的機器上你在哪裏在你的終端導航。

5)一旦你在你的終端,沒有什麼剩下要做但運行您的測試!在這種情況下,您不需要任何選項或環境變量,所以命令應該說:

“紐曼運行路徑/ /我/出口/ json /郵差/ collection.json '

api - 15 - 1024 x1002

看起來漂亮,對嗎?很是偉大的,但當你使用詹金斯!讓我們使用一個更典型的JUnit輸出詹金斯能理解。喜歡的東西:

“紐曼記者junit運行,json路徑/ /我/出口/ json /郵差/ collection.json

此命令實際上產生兩種類型的輸出:一個標準,更少的描述性JUnit以及高度描述性. json文件。看看兩下——他們應該創建一個文件夾叫“紐曼”在您的工作目錄(即您跑紐曼命令的目錄)。

我們很快要編寫一個腳本上傳測試結果qt和使用JUnit輸出允許詹金斯顯示係統內置的圖表,幫助通過或失敗構建沒有任何額外的幫助。

雖然你也可以上傳結果直接qt經理使用JUnit的結果和自動化的內容,使用的API提供了更多的靈活性和測試結果出現在工具的地方。

現在,我們已經從命令行運行測試,是時候把這個放進我們的詹金斯的工作,因此它可以包括持續集成的一部分。我建議這對你的開發環境中運行每次開發人員努力工作分支。
從詹金斯執行您的測試
我不會進入詹金斯的設置,配置工作,但是這是在本地下載頁麵,如果你想試一試。

如果你不想安裝詹金斯直接在您的機器上,您可以安裝它碼頭工人。如果你想使用碼頭工人,你可以開始通過下載事實上的詹金斯碼頭工人實例和改變Dockerfile包括節點使用以下節點安裝代碼中發現的碼頭工人/ Jenkins庫:

#安裝節點

運行curl https://deb.nodesource.com/setup_4.x sl | bash

運行安裝nodejs apt-get - y

運行節點- v

運行npm - v

紐曼運行npm安裝- g

在這裏,您將需要重建碼頭工人圖像,然後啟動容器在這個GitHub ReadMe相同的指令

您現在應該擁有一個完全詹金斯實例安裝在本地工作。太棒了!現在回到手頭的任務使用新任詹金斯的實例:

1)創建一個新的在詹金斯“自由式”類型的工作。

在本例中,我們將設置它允許你上傳集合作為一個參數。用您自己的項目,當你這樣做時你應該提交郵遞員收集到的任何庫使用,直接從存儲庫來構建通過選擇“這個項目是參數化”,然後選擇“添加參數”與“文件參數。”

詹金斯16 - 1024 x763

2)選擇兩個文件上傳——一個用於收集和一個用於環境。

jankins x421——17 - 1024

3)添加一個post-build與“執行Shell”(或“執行Windows批處理命令”如果你詹金斯是運行在Windows機器上的)。您將使用相同的命令你過去從命令行運行它自己(假設你使用相同的操作係統)早些時候除了你的道路現在應該隻是收集。js,命名為“紐曼收集運行。json文件中的參數名稱字段。

4)現在進行測試和運行構建。我剛上傳的集合。json,因為我沒有使用環境文件,但是你可以將它添加到命令行:

“紐曼收集運行。json - e environment.json”

詹金斯x878——18 - 1024

博客- 1024 x780控製台- 19

以確保一切工作,檢查測試所做的——應將一些新的測試用例添加到您的項目。

此外,如果您想要使用內置的JUnit詹金斯查看器,可以存檔XML測試結果和測試點。這裏有一個樣品如何存檔並使用JUnit測試的結果。如果你使用Tricentis qt經理,你也可以下載詹金斯qt管理器插件在這裏

構建- 20 - 1024 x1024的博客

通過API qt上傳結果

在這一點上,我們已經成功運行的筆試CI工作。我們可以構建失敗如果測試失敗(API測試好主意!),但是我認為我們也應該上傳測試結果Tricentis qt給這些測試通過或失敗的證據。要做到這一點,我們可以使用一個腳本,我寫道,你能找到這裏嗎

1)使用這個腳本,我們將使用從紐曼. json的記者。

紐曼在那個文件夾,你應該找到你的樣品測試結果。如果你想嚐試這個節點腳本沒有設置測試郵遞員,你可以,但是你想要修改. json測試結果文件匹配數據與自己的項目。在下麵的示例中,您將想要改變測試用例id匹配測試用例id從您自己的項目。

2)現在我們運行的腳本命令

節點uploadNewmanToQTest。js - f newman-json-result。json - c信譽。json -我真的- r”([0 - 9] +) - * ?”

後的部分- r選項有點嚇人。這是一個JavaScript的正則表達式告訴腳本在哪裏尋找測試用例ID(或名稱如果我假在場)。這讓第一位,並使用它們作為測試用例ID。默認情況下,結果整個測試用例名稱將使用如果沒有提供的正則表達式。例如,如果測試用例的名字是“驗證成功登錄”和我假(使用測試用例名稱而不是ID),那麼它將尋找一個相應的測試用例的名稱“驗證成功登錄。“當然,如果這個名字出現兩次,它將更新相關的測試運行與測試用例。這個腳本有很多選擇,但並不是所有的都完成了。如果有你想看到的東西,不要猶豫或發表評論Tricentis直線下降

就是這樣,你應該得到一個成功的輸出!

當然,這隻是一個例子如何做的許多API測試。你也可以看看這個郵遞員教程這個郵遞員&詹金斯介紹為更加偉大的信息。

如果你有任何特定的請求,請在下麵發表評論,我會做我最好的回應。否則,測試快樂!

作者:

Tricentis員工

各種各樣的貢獻者

日期:2017年8月29日
Baidu
map