一小時學會接口測試

iTesting2019-04-14 03:23:44

iTesting,愛測試,愛分享


接口測試最近幾年越來越流行了,特別是隨着微服務的興起,系統和系統之間,甚至系統內部模塊之間的互相調用都開始大量使用接口了(一般採用RESTFUL風格的http調用),這就給我們的質量保證工作帶來的新的機遇,在業務測試之前驗證接口的正確性,將使得我們在更早的階段發現問題,提升效率。

如果你從來沒接觸過接口測試,請查看:
接口測試

接口測試如何做呢?一般已經上線接口都會自動化掉,關於接口自動化,可以使用現成的接口框架,也可以移步我之前關於測試框架的文章,
pytest測試框架
自研測試框架ktest

對於正在開發或還未達到上線條件的接口,手工測試就必不可少。對於這部分測試,相信大家都有自己的心得,簡單的接口,可以通過fiddler或者Charles模擬請求,也可以在接口請求發送前或服務器結果返回前加入斷點,更改請求內容或返回內容。
但對於複雜的接口,或者需要多次定時運行,甚至接口間有先後調用順序的接口,或者團隊成員需要輪換測試不同的接口時,Postman就是唯一一個選擇了。

我將分以下幾個方面介紹:

  1. 介紹 & 安裝

  2. 常見請求:

  3. 變量定義,重用, 環境變量。

  4. Collection

  5. Conditional Workflows

  6. Newman

  7. 跟Jenkins集成

  8. Moniter & Mock Server & API Documentation

總結起來就一句話,看完本篇,讓你玩轉“手工”接口測試。

1.介紹 & 安裝
什麼是postman?

Postman Makes API Development Simple, so does the API testing.

自己去官網下載後安裝,你可以創建一個用户,或者關閉註冊窗口繼續使用, 我用的企業版,直接登錄後使用,你會看到如下圖。

2.常見請求:
界面左上角 “+New” -> “Request”,或者根據上圖選第一個Request,創建你的第一個request:
GET:
URL裏填寫,點擊send request

注意, get請求的參數實際上就是我們在url裏看到的?後面的一串,如果有多個參數你可以在Params裏添加。

POST:
對於POST類型的請求, 填寫好body內容, Headers內容

的POST方法都需要authentication,那麼你可以在Authorization裏添加相應的類型(現在用Bearer Toeken較多),實際情況用什麼認證需問開發。

這部分非常基礎, 不展開。

3.變量定義,重用, 環境變量 和Scripts。
一個請求常常需要用不同數據在不同測試環境測試多次,那麼參數化就必不可少。
Postman裏變量用{{variables}}來表示。

環境變量的定義在這裏:


以上圖的例子來説,我定義個變量名為url,

定義好後,使用上只要就可以了。環境變量可以導出供其它用户使用,注意環境變量是全局的,即定義好後,任何請求都可以重用。

本地變量和全局變量在pre-scripts和Tests裏的定義:
設置:

獲得(我新建了一個請求):

注意定義的local variables不能在其他請求裏使用,但是global變量可以,定義的環境變量也是全局的,同時定義好後它可以在Environment裏可以看到。

在接口測試裏,我們經常需要發送一個接口後進行檢查,postman給我們提供了一些通用的檢查模板,在Tests裏編寫代碼如下:

 1// example using pm.response.to.have
2pm.test("response is ok"function () {
3    pm.response.to.have.status(200);
4});
5// example using pm.expect()
6pm.test("environment to be production"function () 
7    pm.expect(pm.environment.get("env")).to.equal("production"); 
8});
9// example using response assertions
10pm.test("response should be okay to process"function () 
11    pm.response.to.not.be.error; 
12    pm.response.to.have.jsonBody(""); 
13    // 關注iTesting,跟萬人測試團一起成長
14    pm.response.to.not.have.jsonBody("error"); 
15});
16// example using pm.response.to.be*
17pm.test("response must be valid and have a body"function () {
18     // assert that the status code is 200
19     pm.response.to.be.ok; // info, success, redirection, clientError,  serverError, are other variants
20     // assert that the response has a valid JSON body
21     pm.response.to.be.withBody;
22     pm.response.to.be.json; // this assertion also checks if a body  exists, so the above check is not needed
23});

有時候某些接口入參需要一些隨機數,postman也貼心的提供瞭如下方案:

1 : Adds a v4 style guid
2: Adds the current timestamp
3: Adds a random integer between 0 and 1000
4#需要注意的是這些參數只能在request URL / essay-headers / body裏使用。


4.Collection
什麼是Collection?

A Postman Collection lets you group individual requests together. You can organize these requests into folders.

測試時候需要根據一個個用户scenario來,collection是最好的方式

5.Conditional Workflows
創建好Collection,你可以把一個個接口請求放入Collection裏,方便以後測試:
我們知道,測試的時候接口之間往往要有調用順序的要求,如此我們只要在第一個接口請求的Tests里加入即可:

1postman.setNextRequest('get-example');
2#注意事項:
30. 如果沒有設置setNextRequest,Collection的各個請求是順序運行的。
41. 設置了setNextRequest後,最好設置工作流停止條件在最後一條請求的Tests裏,設置方法: postman.setNextRequest(null);  否則可能會導致無限循環。

Runner裏設置,運行環境, Iteration次數, 及使用數據文件。
之前我講過數據驅動,同一個接口,需要不同數據來驗證,Postman允許使用datefile。我們先來看一個請求:

我們定義了兩個參數 path 和value,在Tests裏寫我們的驗證點:

1var jsonData = JSON.parse(responseBody);
2tests['Response has data value'] = jsonData.form.foo === data.value
3//打印出foo的值
4console.log(jsonData.form.foo)

我們再定義一個datafile, 格式可以是json,csv。

 1# 1.json
2[{
3  "path""post",
4  "value""1"
5}, {
6  "path""post",
7  "value""2"
8}, {
9  "path""post",
10  "value""3"
11}, {
12  "path""post",
13  "value""4"
14}
]

datafile也可以用csv的格式:

1# 1.json
2path, value
3post,    1
4post,    2
5post,    3
6post,    4

我們來運行下,點擊菜單欄上的Runner:

配置如下,然後點擊”Run with data files”:

運行好後來看結果:

注意,Iteration需要跟datafile的一致,如果超出會用最後一個data。


6. Newman
什麼是Newman:

Newman is a command line Collection Runner for Postman. It allows you to run and test a Postman Collection directly from the command line.

安裝:

1npm install -g newman

最簡單使用:
導出Collection(mycollection.json)

command line裏切換目錄到你的mycollection所在文件夾:

 1#直接運行導出的collection:
2newman run mycollection.json
3#如果你的collection用到了environment的變量,你需要將它導出(本例是env.json),
4#並在運行時加參數 -e
5newman run mycollection.json -e env.json
6#newman 命令行有很多參數,其中常用的是如下:
7#    --folder [folderName]           Specify a single folder to run from a collection.
8#    -e, --environment [file|URL]    Specify a Postman environment as a JSON [file]
9#    -d, --data [file]               Specify a data file to use either json or csv
10#    -g, --globals [file]            Specify a Postman globals file as JSON [file]
11#    -n, --iteration-count [number]  Define the number of iterations to run
12#    更多命令,以 newman run -h 查看。
13# newman還支持把運行結果導出以方便後續分析。
14#json格式
15newman run mycollection.json -e env.json --reporters cli,json --reporter-json-export outputfile.json
16#junit格式
17newman run mycollection.json -e env.json --reporters cli,json,junit --reporter-junit-export  outputfile.xml
18#html格式,首先要安裝:
19npm install -g newman-reporter-html
20#然後執行命令
21newman run mycollection.json -e env.json --reporters html --reporter-html-export outputfile.html


7.跟Jenkins集成
newman命令知道了,跟Jenkins集成就非常簡單了,建立一個自由風格的項目,然後在Build選擇Execute Shell即可

命令就填寫我們在6裏的命令即可:

注意:
1.需要在Jenkins服務器本地安裝newman程序。
2.如果你設置了junit類型的報告給Jenkins用,記得在Jenkins的Post Action裏選擇Publish JUnit test result report,把生成的報告路徑填對。
3.Jenkins其它參數配置例如定時運行請自行了解。

8.Moniter & Mock Server & API Documentation
這都是企業版的功能,也非常強大,設置來説都是三步,可以針對一個請求或者一個Collection來操作。
拿Moniter舉例, New->Moniter, 我設置一個Moniter來定時運行一個Collection,也可以選擇時區。

設置好後,會看到一個webdashboard,

點擊進去看看,裏面會顯示這個moniter的情況,可以手工運行也可以讓它自己運行,運行成功後你的郵箱將會收到結果文件(企業版可以用郵箱登陸),這個其實就是替換jenkins的。

Mocker Server就是可以對某一個請求或一個Colection做mock,直接返回結果。
API Documentation 可以為一個請求或者一個collection生成API文檔,postman也會提供你一個網址訪問。
因為絕多數朋友不會用專業版,這裏我就不詳細介紹了。

再很長的一段時間內,手工測試絕對不會消失,那麼如何高效的開展手工測試,提高個人生產率,從而對業界平均生產率產生價值差,就是我們不懈的追求了。

2019年了,我祝大家生活有追求,技術不落伍,祝大家新年快樂!

(新的一年,請繼續關注iTesting,多點贊多轉發,幫助更多的人提升自己。)


 -  End  -

作者:

Kevin Cai, 江湖人稱蔡老師。

兩性情感專家,非著名測試開發。

技術路線的堅定支持者,始終相信Nobody can be somebody。      

                     

· 猜你喜歡的文章 ·

1

2

3



https://hk.wxwenku.com/d/200085695