直接引用百度的 :java
精準測試是一套計算機測試輔助分析系統。精準測試的核心組件包含的軟件測試示波器、用例和代碼的雙向追溯、智能迴歸測試用例選取、覆蓋率分析、缺陷定位、測試用例聚類分析、測試用例自動生成系統,這些功能完整的構成了精準測試技術體系git
集團的同窗分享了關於精準測試的文章,看了下簡單記錄一下工具
(如下都是我的理解,若是有不對歡迎留言討論)測試
1. 作測試的朋友均可能碰到過:漏測/少測,根本緣由是不知道研發改動了什麼/影響到什麼 or 是知道了改動了什麼但由於一些需求歷史不清楚,致使不知道影響到了什麼;spa
1. 精準的對立就是模糊,精準測試說白了就是當研發提交一個新版本過來的時候,你知道它改動了什麼,影響到哪些接口/方法,而後針對改動點去測試。是從測試的角度去看待問題,提升測試的效率,畢竟以前是要求全量回歸的,如今只須要測試部分;接口
2. 精準測試 跟 迴歸測試有沒有悖論呢 ?迴歸測試,驗證新功能會不會對其餘原有功能形成影響;而精準測試貌似說是能夠發現這些影響面? 瞭解了精準測試的大體原理,我只能說很難發現,why?get
3. 精準測試的大體思路:研發改動了什麼 --> 影響面評估 --> 篩選用例 --> 用例執行 ;源碼
1. 提測 -- 研發提交代碼,告知改動點,可能的影響面,自測點,測試重點(這裏須要靠譜的研發!!)it
2. 用例編寫 -- 針對此次需求/改動點編寫用例,用業務經驗/技術經驗來評估影響面來新增用例;自動化
3. 用例review -- 用例發給組內同窗一塊兒討論下,從別人的角度看待問題;
4. 用例執行 ;
總結: 其實用業務經驗、技術經驗、用例組內review就是一種精確測試,只是人工的形式罷了
1. 提測 -- 經過git工具獲取本次提交的變動記錄,獲取改動的狀況,可具體到哪一個文件;
2. diff -- 經過diff工具,git也有diff功能,class文件的diff,目的就是找出方法級別的改動;
3. 分析調用鏈路 -- 經過分析源碼,找到入口,也就是top方法,java的service層,controller層
4. 篩選用例 -- 根據鏈路上的影響分析須要迴歸哪些用例;
總結:總體大體流程就是:代碼push --> 觸發精準測試任務 --> 經過git工具獲取改動詳情(文件,方法,入口)--> 在用例庫中篩選用例自動化執行 --> 報告輸出(用例+覆蓋率)
1. 評估影響面,對長鏈路測試有幫助,A-B-C-D,修改了C,能評估中ABD中方法級別的影響;
2. 提升測試效率,避免了沒必要要的用例執行;
1. 若是同一個工程中的鏈路,用精確測試確實能夠精確的發現影響面,提供測試效率,可是多系統之間呢 ?如購物車系統 + 訂單系統,兩個不一樣的團隊之間的鏈路,只能評估到比較粗的粒度;
2. 數據依賴的,沒法解決;A系統的代碼變動致使寫入DB中的數據變化了,B系統知識根據數據來走業務流程,那麼A跟B的聯繫 就斷開了,目前看到的文章只能在代碼級別作關聯;
1. 思路:從代碼追溯到接口級別的改動來篩選用例,能夠幫忙評估影響面,結合CI流程,是否是每次代碼push能夠有個大體的影響面評估圖呢?