1、金融軟件系統質量可信評估王文皓恒生電子股份有限公司王文皓負責自動化測試、精準測試和效能平臺的研發。曾就職于華為技術有限公司和中國電信。至今已擁有超10年的軟件測試和開發的從業經驗。參與信通院發布的精準測試平臺能力要求標準的撰寫。本次演講課題金融軟件質量可信評估曾獲證券期貨業金融科技研究發展中心2021年度研究課題的三等獎。恒生電子-技術平臺效能TDU 測試開發專家嘉賓照片目錄CONTENTS背景介紹背景介紹01 解決方案解決方案02 關鍵關鍵技術技術03 實踐效果實踐效果04 思考思考和展望和展望05 01背景介紹背景介紹業務架構復雜,變更評估困難用例規模龐大,回歸周期短質量無法量化,測試的效
2、果無法客觀評價準確地給出版本的變更影響分析精準用例推薦和高效回歸將軟件的質量風險以數字化方式量化地評價現 狀挑 戰02解決方案何為質量可信研發過程可追述 通過測試技術手段將研發過程對外體現和展示,包括本次開發的代碼、SQL文件以及配置管理過程中的日志信息,測試的過程中展示出對應的設計和分析的依據。并能結合變更內容、歷史缺陷、質量特性、人員畫像推薦出對應的測試用例。測試結果可量化 從代碼覆蓋率、業務功能覆蓋率、質量特性覆蓋率層面進行評價,建立金融軟件質量可信評估的計算模型,對質量給出客觀的量化評價??尚旁u估系統的建??尚哦仍u價指標 =,A為測試充分性評價指標,C為代碼的分支覆蓋率,B為功能業務覆
3、蓋率,F為質量特性覆蓋率,r為各個CBF的權重值。=1+2+3 =,100%=100%=100%其中=13=1,Part(T,pi)為用例集T所對應的分支覆蓋數,Part(pi)為總分支數,r1、r2、r3根據各個產品自身特點合理分配系數。金融軟件行業,由于其強業務需求特點,取r1=50%,r2=30%,r3=20%可信評估系統的使用場景設計開發階段 評估修改可能帶來的系統影響范圍,預防因評估不充分導致的漏改、錯改。測試階段 評估真實變更影響范圍,避免因評估不足導致的漏測。依據變更精準地推薦用例,縮減測試范圍,實時地展示用例執行過程中代碼覆蓋率地變化情況做到測試過程可信。發布階段 發布可信評估
4、報告,讓實施/維護/客戶對本次升級可能帶來的影響和測試結果以及覆蓋情況有全面清晰地了解,讓客戶對我們質量更放心需解決的關鍵技術03關鍵技術1.變更分析依賴的技術手段:git loggit blamegit blame-reverse抽象語法樹AST技術 EclipseJDT or JavaPrase6cedb914CSTPT-0001 a4e70a159CSTPT-00028c5adcbeCSTPT-00032015d40cCSTPT-0004目標:分析出集成在測試包內的每一個任務單(需求)對應改動代碼、SQL和開發者。1.變更分析git blame顯示作者最后新增和修改文件的每一行信息表示區
5、間內行內容無修改13行、20-22行為修改內容,結合語法樹可得出歸屬的函數。git blame-reverse它不是顯示一行出現的修訂,而是顯示一行存在的最后修訂17行為刪除行,展示的是該行的前一次commitId1.變更分析-表分析u MyBatis APIXMLMapperBuilder、XMLStatementBuilder結合反射技術構造Dao層的實體參數,將屬性遞歸賦值,還原出對應的SQL語句。u Druid通過Parser,AST,Visitor將SQL語句進行分析,提取出使用的數據庫表名目標:不僅考慮代碼的變更,同時將數據庫表結構的變化、SQL語句變化也納入變更分析的范圍。1.變
6、更分析-表分析u JDT針對特定持久層框架DAO層注解含義,結合AST技術,提取對應的數據庫表名稱。1.變更分析-表分析u針對不同數據庫操作方式采用不用方式建立DAO層函數和SQL語句的關系。u解析SQL語法,獲取表名以及列名等信息。u建立DAO層函數和數據庫表名的關系u針對不同數據庫操作方式采用不用方式建立DAO層函數和SQL語句的關系。u解析SQL語法,獲取表名以及列名等信息。u建立DAO層函數和數據庫表名的關系1.變更分析-系統參數分析u對常量類、枚舉類進行解析,獲取出特定的系統參數常量值;uAST語法樹分析獲取函數調用的系統參數常量或枚舉,進而獲取對應的系統參數編號;u建立函數和系統參
7、數在Neo4j中的關系TABLE_RELATION;1.變更分析-影響面分析函數表參數調用鏈路接口功能菜單業務變更元數據通過與函數相關聯,結合后續推導出的完整調用鏈路,將變更對象和接口相關聯。再結合從元數據管控平臺獲取的接口-功能-菜單-業務的關系,進而精準的分析出變更對象對函數、接口、功能、菜單和業務的影響。2.源碼插樁Jacoco(Condition Coverage)Gcov(Condition Coverage)Hundsun(Condition Decision Coverage)Jacoco、Gcov無法直觀地展示出每個條件的真假和整個判定語句的真和假。2.源碼插樁算法不改變原程序
8、邏輯 通過抽象語法樹(AST)對程序進行分析,將判定語句、條件表達式進行插樁擴展,算法并不改變原程序執行邏輯。條件-判斷覆蓋 hs_cdc_t函數,hs_cdc_f函數分別標識真假判斷,同時變量hs_cond_n_0和 hs_cond_n_1的值標識各自的條件真假。目標:一套算法適用于多種語言(JAVA/CPP),詳細感知每個條件和路徑地真假覆蓋情況。2.源碼插樁a 1|b 1?hs_cond_n0!=(hs_cond_n0=1):hs_cond_n0=(hs_cond_n0=0)|b 40人天05思考和展望思考和展望模型中,各類覆蓋是否采用,權重值,需根據業務特性和系統架構分別定義。當前采用的評估模型,根據恒生某系統的研發過程和技術架構定義,有一定的特殊性,其完善通用模型需要進一步探索。當前代碼與用例的關系建立在函數的維度上,粒度稍粗,更精細化的做法是關聯到分支上,依據控制流的變化來決定用例的推薦,更精細化基于研發人員的畫像(年限、能力等),歷史數據(缺陷密度、缺陷級別等)對質量評估的維度進行擴展,對模型進行學習和評價。通過對源碼、SQL進行掃描分析,提前分析軟件方面的缺陷以及安全漏洞、合規方面的風險,主動進行告警提醒。完善模型AI&大數據分支推薦風險提醒 Q&A歡迎與我們交流感謝聆聽關注QECon公眾號