您好,登錄后才能下訂單哦!
引言:在“DevOps能力之屋(Capabilities House of DevOps)”中,華為云DevCloud提出(工程方法+最佳實踐+生態)×工具平臺=DevOps能力。華為云DevCloud將推出“DevOps on DevCloud”系列,針對DevOps領域場景,闡述該場景在華為云DevCloud上的實施方法與實踐。
目前越來越多不同行業的企業開啟了數字化轉型,以提升業務敏捷性與開放合作能力,為客戶或合作伙伴提供更好的體驗。微服務架構(Microservices Architecture)和敏捷與DevOps成為諸多企業在數字化轉型中對于應用架構和工程方法的不二選擇。隨著微服務架構的廣泛流程,RESTful風格API也成為大勢所趨。因而,對API進行持續測試成為DevOps的關注點之一。隨著微服務數量規模增加、DTAP環境配置變化、軟件交付周期縮短,持續測試自動化成為更為亟需解決的問題。毫不夸張地講,沒有測試自動化,微服務架構的實施對于企業更會成為一場災難。
一談到測試自動化,大多數團隊通常將其視為純粹的技術挑戰,例如選擇測試框架、確定測試工具等等。實際上,測試自動化成功的核心原則之一是測試設計(Test Design)。團隊應該從一開始在測試設計上進行足夠多的投入。測試設計過程始于分析測試需求。為了提升測試覆蓋率,團隊可以使用“業務流(Business Flow)”方法來分析需求。團隊需要在業務層級(Business Level)與交互層級(Interaction Level)上對操作(Action)或數據(Data)進行抽象。因此,業界提出了關鍵字驅動測試(KDT,Keyword Driven Testing)或者數據驅動測試(DDT,Data Driven Testing)等方法來進行測試設計,提升測試自動化效率。
對于KDT和DDT,從其定義來講,存在一定的區別,即什么因素對測試結果起決定性作用就是什么驅動測試。當然KDT與DDT也有聯系。例如:以登錄為例,首先登錄由不同的Action組成(按鈕點擊、文本框輸入等),其次將登錄的用戶名、密碼作為變化的數據(參數化),可以只關注數據。因此,為提升復用性,在實際項目中,一般會采用混合驅動測試的方法,即融合關鍵字驅動測試與數據驅動測試。總而言之,測試設計需要對操作與數據進行抽象、分組等。
華為云DevCloud云測服務提供了接口測試功能,支持HTTP和HTTPS協議,并可通過參數化、自定義環境、關鍵字等特性支持混合驅動測試,同時將將接口測試納入流水線進行管理,支持產品團隊踐行DevOps理念,為微服務架構的API保駕護航。
華為云DevCloud對外提供了開放API,供第三方平臺進行集成。本接口測試將以華為云DevCloud項目管理服務相關API示例。華為云DevCloud的API列表請參考 https://support.huaweicloud.com/devg-devcloud/devcloud_api_1000.html,接口調用方法請參考 https://support.huaweicloud.com/devg-devcloud/devcloud_api_0001.html,獲取Token認證的方式請參考 https://support.huaweicloud.com/devg-devcloud/zh-cn_topic_0107684989.html。
開發者可以訪問華為云DevCloud( https://www.huaweicloud.com/devcloud/),登錄后在首頁新建項目,選擇“空白項目”的Scrum或者看板之一,輸入項目名稱(例如:Prj4ApiHDT)即可創建項目。
在訪問Prj4ApiHDT項目,并進入“測試”-“接口測試”后,就可以開展接口測試相關工作了。
本次API測試將覆蓋一個業務流(Business Flow):獲取授權令牌->創建項目->查詢項目當前工作項列表->在項目中新建工作項->查詢項目當前工作項列表->刪除項目。
調用華為云DevCloud的開放API首先需要獲取授權令牌(token),詳細情況請參考“獲取用戶token”( https://support.huaweicloud.com/api-iam/zh-cn_topic_0057845583.html)。為了測試API的所有用例方便獲取token,將創建關鍵字getAuthToken。
在進入“接口測試”頁面后,點擊“新建”,在“新建用例”頁面輸入名稱“manageProject”等信息,并點擊“確定”,用例創建成功并進入編輯用例腳本頁面。
在用例“manageProject”的編輯用例腳本頁面,進入“測試步驟”,新建“URL請求”,名稱設置為“getAuthToken”,并輸入以下信息:
§ 請求:如圖1所示,請求信息的方法選為“POST”,URL填為“iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens”;請求體選擇“JSON”,并填寫如下信息:
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"name": "$${userName}",
"password": "$${password}",
"domain": {
"name": "$${domainName}"
}
}
}
},
"scope": {
"domain": {
"name": "$${domainName}"
}
}
}
}
§ 檢查點:來源為“響應碼”,比較符為“等于(數字)”,目標值為“201”。參見圖2。
§ 響應 提取:出參為“X-Auth-Token”,來源為“響應頭”,屬性為“X-Subject-Token”。參見圖3。
圖6 使用關鍵字
在用例“manageProject”的編輯用例腳本頁面的“測試步驟”中,新建“URL請求”, 名稱設置為“createProject”,并輸入以下信息:
§ 請求:請求信息的方法選為“POST”,URL填為“api.devcloud.huaweicloud.com/pcedge/v1/projects”;請求頭名稱為“X-Auth-Token”,值為“${X-Auth-Token}”,此值為關鍵字getAuthToken的響應提取中的出參名稱“X-Auth-Token”。請求體選擇“JSON”,并填寫如下信息:
{
"name": "demo1",
"description": "項目描述",
"type": "scrum",
"homepage": ""
}
§ 檢查點:【1】來源為“響應碼”,比較符為“等于(數字)”,目標值為“200”。【2】來源為“響應體(JSON)”,屬性為“status”,比較符為“等于(字符串、區分大小寫)”,目標值為“success”。
§ 響應 提取:出參為“project_uuid”,來源為“響應體(JSON)”,屬性為“result.project.project_uuid”。此參數將作為后續API接口的輸入。
在用例“manageProject”的編輯用例腳本頁面的“測試步驟”中,新建“URL請求”, 名稱設置為“queryWorkItemList”,并輸入以下信息:
§ 請求:請求信息的方法選為“POST”,URL填為“api.devcloud.huaweicloud.com/pcedge/v1/projects/${project_uuid}/issues/query”;請求頭名稱為“X-Auth-Token”,值為“${X-Auth-Token}”,此值為關鍵字getAuthToken的響應提取中的出參名稱“X-Auth-Token”。請求體選擇“JSON”,并填寫如下信息:
{
"page_num": "1",
"page_size": "15",
"query_type": "backlog",
"tracker_id": [
2,
3,
7
]
}
§ 檢查點:來源為“響應碼”,比較符為“等于(數字)”,目標值為“200”。
在用例“manageProject”的編輯用例腳本頁面的“測試步驟”中,新建“URL請求”, 名稱設置為“createWorkItem”,并輸入以下信息:
§ 請求:請求信息的方法選為“POST”,URL填為“api.devcloud.huaweicloud.com/mobile/v1/projects/${project_uuid}/issues”;請求頭名稱為“X-Auth-Token”,值為“${X-Auth-Token}”,此值為關鍵字getAuthToken的響應提取中的出參名稱“X-Auth-Token”。請求體選擇“JSON”,并填寫如下信息:
{
"subject": "Item1",
"description": "工作項描述",
"type_id": 3,
"start_date": "1566809662",
"due_date": "1566896062",
"priority_id": 3,
"servity_id": 12,
"status_id": 1,
"expected_work_hours": 8
}
§ 檢查點:來源為“響應碼”,比較符為“等于(數字)”,目標值為“200”。
在用例“manageProject”的編輯用例腳本頁面的“測試步驟”中,在步驟“queryWorkItemList”上點擊“復制”,并將新的步驟拖拽到createWorkItem后面。
在用例“manageProject”的編輯用例腳本頁面的“測試步驟”中,新建“URL請求”, 名稱設置為“deleteProject”,并輸入以下信息:
§ 請求:請求信息的方法選為“DELETE”,URL填為“api.devcloud.huaweicloud.com/pcedge/v1/projects/${project_uuid}”;請求頭名稱為“X-Auth-Token”,值為“${X-Auth-Token}”,此值為關鍵字getAuthToken的響應提取中的出參名稱“X-Auth-Token”。
§ 檢查點:來源為“響應碼”,比較符為“等于(數字)”,目標值為“200”。
假如測試用例正確創建,那么執行的正常結果應該為:【1】成功創建項目;【2】項目中工作項數量為0;【3】成功創建工作項;【4】工作項數量為1;【3】成功刪除項目。在此過程中如果出現失敗的情況,可以查看測試用例manageProject的結果頁面,進行分析。
當然,大家仔細觀察測試步驟中有2步是“查詢工作項列表”,可以用關鍵字來進行處理,供大家自行實現。
本文通過案例展示了華為云DevCloud的接口測試特性的關鍵能力以及使用。在實際項目中,測試場景與測試用例等將更為復雜,因此正如前文所述,產品團隊應該投入精力進行測試設計,在此基礎上進行測試自動化,實現持續測試。當然持續測試不可能一蹴而就,產品團隊可以采用迭代的方式,持續重構優化。
華為云DevCloud作為一站式云端DevOps平臺,集成華為近30年研發實踐和前沿理念,面向開發者提供研發工具服務,讓軟件開發簡單高效。現支持5人以下額度范圍內,可以免費使用,并且可以預約免費的產品演示和技術交流,詳情查看華為云官網
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。