當程式碼變更遇上精準測試的總結

騰訊雲加社群發表於2018-08-01

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~

本文由elyyan 發表於雲+社群專欄

Martech 程式碼變更遇上精細化測試的總結

需求背景:

​ 敏捷模式下迭代頻繁,迴歸測試時總是不知道變動的範圍。Devlop 有的時候也不知道他改了哪些東西,影響到哪些節點,或者是很多人改的,彼此不知道。遇到有程式碼潔癖的,改了別人的程式碼,大家都不知道。通常情況是,要麼測試範圍定小了,遺漏了;要麼測試範圍過大,付出過多代價。每次迴歸,測試心裡總沒底,生怕漏了哪裡。如何才能準確定位到變更範圍呢?

專案測試過程的痛點:

1.迭代更新快,人力有限

2.多分支程式碼合入到主幹分支,修改哪個檔案哪個行,測試不可控。

3.程式碼更新影響哪些功能無感知

4.盲測,上線風險大

5.無法更加精準監控程式碼質量

6.不能做到高效精準,不可衡量ROI

解決方案:精細化測試探索

1流程圖:

img
整體架構圖

2錄製自動化測試+phpcoverage 配合落地XDEBUG檔案,解析覆蓋率檔案,生成檔案-行號/函式-用例 對映關係表【phpcover_process.py】

XDEBUG_IP服務ip_DATE日期.txt 檔案如下:

img
一個case涉及到的檔案遍歷明細

img
1個api->n個file->line_no集合->n個testcase集合

img
1個api->n個file->n個functionName->n個testcase集合

3基於git diff 針對版本號之間的差異化分析.【git_diff.py】

2.1過濾相關檔案(phpunit,js,test檔案,vendor公共庫)

2.2記錄當前程式碼分支版本號(分支-舊版本-新版本-系統-環境)

2.3針對新版本號和舊版本號 檔案中行變化的明細入庫(版本號-檔案-舊行號-新行號-變更型別class fun)

img
diff 檔案

img
專案-分支-舊版本-新版本-環境

img
版本號修改的檔案(檔案,舊行號,新行號,類,函式名,系統)

4生成命中的測試用例【down_accurate_case.py】

原理圖:

img

待測json檔案

img
生成需要執行的apiList 對應的caseId

5插樁-自動化測試(指定case_id順序執行)-缺陷數量回寫DB【accurate_runcase.py】

img
自動化測試執行日誌

img
版本-執行的api-資料統計(執行數-發現bug數)

img
生成自動化測試報告

6統計精準測試效果資料統計【accurate_stat_image.py】

img
精準測試報告

7.最新跑完的測試覆蓋率資料新增/更新/刪除 檔案-用例-行/函式 覆蓋率關係表,形成閉環為下次精準測試做鋪墊【phpcover_process.py】

總結

·精細化測試基於自動化覆蓋率到達一定量的基礎上去做比較有意義。

·通過這個探索能讓我們更加深入的去了解被測系統及架構,在保障質量的前提下,在不斷的版本迭代過程中更加高效、可靠、自信地制定合理的測試計劃和執行我們的測試工作。

·被測系統php 語言+ git程式碼管理,暫不包含js的精準性測試,測試解析語言:python。

問答

單元測試除錯

相關閱讀

安全報告 | 2018上半年網際網路惡意爬蟲分析:從全景視角看爬蟲與反爬蟲

安全報告 | SSH 暴力破解趨勢:從雲平臺向物聯網裝置遷移

給你的CVM安裝一個皮膚吧!

此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1158398?fromSource=waitui

歡迎大家前往騰訊雲+社群或關注雲加社群微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~

海量技術實踐經驗,盡在雲加社群

相關文章