1.前言
- 本規范的目的是保證測試部成員編碼的統一。
- 本規范的核心規則就是接口測試腳本命名規則。
2.名詞解釋
- 業務流程測試用例:關於產品業務、重要流程的測試用例。
3.接口測試腳本規范
3.1接口測試腳本編寫的規范
1)基本信息
在每個腳本模塊的最上面,必須寫上腳本編寫人(使用英文名或中文拼音縮寫)、腳本創建時間、腳本修改時間、修改說明、輸入參數、輸出參數、腳本描述等。
2)命名規范
常量、變量、參數、函數的命名統一采用駝峰命名法,即第一個單詞以小寫字母開始;第二個單詞的首字母大寫或每一個單詞的首字母都采用大寫字母,
例如:myFirstName、myLastName。
3)代碼注釋規范
注釋要盡量簡單,清晰明了。着重注釋的意思,對不太直觀的部分進行注解。此外,JavaScript 的注釋有兩種"//" 和"/* .... */",建議"//"用作代碼行注釋,"/* .... */"形式用作對整個代碼段的注銷,或較正式的聲明中,如函數參數、功能、文件功能等的描述中。
4)空行
空行是區分代碼塊與塊的間隔,在函數之間必須加上空行;而在函數內部,變量聲明塊和實現塊(實現塊指除變量聲明外的其他代碼)要使用空行來間隔,實現塊的內部,通過空行來標識一個功能段。
5)縮進
必須嚴格執行縮進,變量聲明塊不縮進,實現塊必須保證全部縮進(不可能有實現塊是行首對齊的);對於基本的控制結構來說,必須要有縮進,如IF、DO、WITH、FOR、WHILE塊。
6)續行
對於過長的語句來說,必須使用續行,續行位置要有明顯意義,例如,sql ="SELECT [code],[name] FROM [Person]"_&"WHERE [code] LIKE'001%'"。
7)==和!=
在JS中有=、==、===三種形式,其中“=”表示賦值、“==”表示一般比較只要求值相等,“===”表示嚴格比較要求值和類型都相等。一般情況下除賦值外,比較采用“==”即可。
8)[ ]和{ }
[ ]表示數組,{ }表示對象
注意:在任何地方,不要寫ElseIf語句,最好轉換成If…Else…Endif結構。
3.2 Postman使用規范
1)環境變量和全局變量
變量命名規則同樣采用駝峰命名法。
2)文件夾和單個接口腳本的描述
文件夾是一組具有邏輯關系或是屬於相同模塊的接口集合(如購買流程、用戶個人中心模塊),在其描述中要注明a.執行該組接口的前提條件;b.執行該組接口的內容;c.執行該組接口的目的。
單個接口是指具體到接口的用途如上傳文件、創建項目、獲取列表等,在其描述中同樣需要注明a.執行該接口的前提條件;b.執行該接口的內容;c.執行該接口的目的。
3)Postman—tests內置腳本
(1). 清除一個全局變量 Clear a global variable
對應腳本:
postman.clearGlobalVariable("variable_key");
參數:需要清除的變量的key
(2).清除一個環境變量 Clear an environment variable
對應腳本:
postman.clearEnvironmentVariable("variable_key");
參數:需要清除的環境變量的key
(3).response包含內容 Response body:Contains string
對應腳本:
tests["Body matches string"] =responseBody.has("string_you_want_to_search");
參數:預期內容
(4).將xml格式的response轉換成Json格式 Response body:Convert XML body to a
JSON Object
對應腳本: var jsonObject = xml2Json(responseBody);
參數:(默認不需要設置參數,為接口的response)需要轉換的xml
(5).response等於預期內容 Response body:Is equal to a string
對應腳本:
tests["Body is correct"] = responseBody === "response_body_string";
參數:預期response
(6).json解析key的值進行校驗 Response body:JSON value check
對應腳本:
tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args
參數:test替換被測的值,args替換被測的key
(7).檢查response的header信息是否有被測字段 Response headers:Content-Type header check
對應腳本:
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
參數:預期header
(8).響應時間判斷 Response time is less than 200ms
對應腳本:
tests["Response time is less than 200ms"] = responseTime < 200;
參數:響應時間
(9).設置全局變量 Set an global variable
對應腳本:
postman.setGlobalVariable("variable_key", "variable_value");
參數:全局變量的鍵值
(10).設置環境變量 Set an environment variable
對應腳本:
postman.setEnvironmentVariable("variable_key", "variable_value");
參數:環境變量的鍵值
(11).判斷狀態碼 Status code:Code is 200
對應腳本:
tests["Status code is 200"] = responseCode.code != 400;
參數:狀態碼
(12).檢查code name 是否包含內容 Status code:Code name has string
對應腳本:
tests["Status code name has string"] = responseCode.name.has("Created");
參數:預期code name包含字符串
(13).成功的post請求Status code:Successful POST request
對應腳本:
tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;
(14).微小驗證器Use Tiny Validator for JSON data
對應腳本:
var schema = { "items": { "type": "boolean" }};
var data1 = [true, false]; var data2 = [true, 123]; console.log(tv4.error);
tests["Valid Data1"] = tv4.validate(data1, schema);
tests["Valid Data2"] = tv4.validate(data2, schema);
參數:可以修改items里面的鍵值對來對應驗證json的參數
4.單個接口測試
1)接口
接口是組成流程測試的基本單元,組合不同的業務接口可以實現不同的業務流程測試。如創建項目+查詢項目+修改項目組成了一個關於項目的測試流程。
2)接口測試的優點
5.整個流程的開發過程
使用接口測試業務流程,需要對產品需求、產品所涉及的行業有一定的深度的了解,業務流程分為通用流程和被測產品專用流程。
通用流程如注冊登錄、上傳文件等,專用流程是被測產品特有的流程,以創盟項目為例
