背景介紹
作為一個
測試
同學,提交bug是個繞不過去的坎(請不要槓哈,我真不太相信有測試同學從來未提交過bug)。
但是每次提交bug,少則幾項多則幾十項,填得有點頭大有沒有?即使有模板,根據模板再修改,手動填的時候也經常會漏掉一些項有沒有?
所以為了我們這些懶人的福利,自動化提交bug就應運而生了。
測試需求分析
此自動化需求主要涉及到python/pytest,且需要jira API文件(下文有jira介面文件連結)。
測試流程
自動化指令碼實現
bug模板及提交jira手工步驟
提完bug的bug模板參考下圖:
建立bug時,參考下圖,可以看見目前統一模板有如下10個必填項:
專案、問題型別、概要、優先順序、嚴重程度、復現機率、bug分類、影響版本、模組、描述。
此處10個必填項對應後面jira介面的相應欄位。
jira提交issue介面定義
createissue介面定義,baseurl參考公司網址,此介面的詳細url為:/rest/api/2/issue,方法為method。
請求體參考下圖的example、update欄位,此處非必要,暫時忽略,我們步驟1中說的10個必填項都包含在fields欄位中。
一般情況,每個欄位可以透過id、name、key3個屬性值來設定,但有些時候name屬性不一定能找到(例如專案),所以建議首先用id和key,然而id有需要呼叫其他介面獲取,無法直接從介面知道,所以可以首選key。
例如專案的key則為括號裡的內容,參考下圖,bug管理demo專案的專案key是BUGDEMO,
此點為本人呼叫其他介面觀察到的,具體可以找atlassian官方確認諮詢。
經過呼叫多方介面獲得能成功呼叫的介面欄位屬性如下圖:
summary、description此處暫不用特別關注,在後面步驟中我們將會使用捕捉到的內容進行替換。
更多jira介面文件詳細參考:https://docs。atlassian。com/software/jira/docs/api/REST/8。5。5/#api/2/issue-createIssue
issue相關資訊捕捉
版本及環境:面板機此處是呼叫獲取裝置狀態資訊的介面獲取相關韌體和演算法等版本資訊(作為setup呼叫一次即可):
專案:步驟2中已描述,此處不再贅述。
標題(summary)、詳細描述(description)、附件的捕捉:
(1) 斷言時描述詳細資訊(包括失敗欄位、預期結果和實際結果),例如下圖:
(2) 加入hook函式pytest_runtest_make_report監聽執行相關資訊。
(3)對監聽到的相關資訊進行處理,title即為捕捉到的執行的
測試用例
標題,由於函式title為英文,可以再和中文標題一一對映一下。
description為執行時的詳細輸出,類似於下圖:
out為除錯日誌寫入到檔案,後期作為附件上傳,其內容主要是寫用例時的日誌輸出,類似下圖:
其中hook函式pytest_runtest_make_report 更多詳細內容可參考pytest官方文件(上一節中有附件),日誌輸出可以參考logger模組或是個人的寫日誌模組。
透過以上步驟初步生成的bug如圖:
注意,上傳附件為另外一個介面:
指令碼迭代最佳化
可以不用呼叫原始的jira介面,python中jira庫中有封裝常用的jira介面,如jira。create_issue等。
可能遇到的問題
捕捉資訊可能需要在寫自動化指令碼的時候相關操作,都能斷言實際和預期等詳細資訊。
附件中的資訊也需要自行控制輸出。
如果bug系統非jira,可以自行找其bug系統的介面文件或其他提交bug操作。
總結
此方案及示例需要配合自身的自動化用例使用,否則手動操作後也無法自動捕捉其錯誤資訊。
此方案的重點也是在捕捉錯誤資訊,其他呼叫jira介面對於一個調包俠來說是基本操作,獲取jira模板自行與pm商議即可,此方案如果上線到jenkins透過每日構建每天來run的話可能會出現大量重複的bug(由於開發解決bug沒有那麼快),多次後面會有
文章
來討論如何解決此問題。
文末福利——推薦一個《Python自動化測試學習交流群》給大家:
請關注+私信回覆:"測試"
就可以免費拿到軟體測試學習資料,同時進入群學習交流~~