課程簡介
Software Defines Everything!Software Runs The World!人們正在構建超出自身管理能力的復雜智能化系統(tǒng)。通信、航空航天、金融、醫(yī)療等行業(yè)軟件對可靠性本身要求就很高,伴隨著智能化產(chǎn)品的難解釋性、不確定性給可靠性測試設計帶來更大挑戰(zhàn)。智能軟件正代替人類進行各種重大決策,系統(tǒng)的可靠性要求越來越高。如何驗證復雜軟件的可靠性設計?如何通過可靠性測試來驅動開發(fā)完善可靠性設計?本課程通過總結以OS(Linux/Android/AI車載系統(tǒng)/編譯器等)為代表的復雜軟件可靠性測試技術及優(yōu)秀實踐,形成體系化的課程。從傳統(tǒng)的基于故障模型的可靠性測試技術開始,再深入到軟件ABC化(AI/Big Data/Cloud Computing)后可靠性測試面臨的挑戰(zhàn)和智能化應對技術,涉及可靠性測試技術如啟發(fā)式FUZZING、混沌工程、基于搜索的測試、形式化驗證符號執(zhí)行、AI輔助的測試用例自動生成、AI-based系統(tǒng)的自動化測試生成等相關論文10余篇,通過大量產(chǎn)學研合作的成功實踐案例來引導學員理解和掌握先進的、系統(tǒng)化的可靠性測試方法。
目標收益
通過大量產(chǎn)學研合作的成功實踐案例來引導學員理解和掌握先進的、系統(tǒng)化的可靠性測試方法。
培訓對象
測試工程師、測試架構師、可靠性專項測試工程師等。
課程大綱
系統(tǒng)可靠性(DFR)基礎 |
1.軟件產(chǎn)品的質量標準 2.產(chǎn)品質量模型中的可靠性定義 3.廣義可靠性和狹義可靠性 4.軟件缺陷的相關定義和類型 5.復雜系統(tǒng)的可靠性需要體系化的測試來保障 6.系統(tǒng)可靠性的度量指標 7.狹義可靠性和可用性的關系(可靠性不高但可用性高?) 8.系統(tǒng)可靠性的度量方法和階段 9.軟件可靠性的避錯設計(分解抽象和重用) 10.軟件可靠性的避錯設計(模塊化) 11.軟件可靠性的避錯設計(模塊耦合及復雜度控制) 12.軟件可靠性的檢錯設計(主動和被動式) 13.軟件可靠性的容錯設計(局部容錯和完全容錯) 14.軟件可靠性的糾錯設計(糾錯時機和方法) 15.IPD流程中可靠性測試軟件工程(可靠性增長和確認的端到端測試) 16.案例:復雜系統(tǒng)的可靠性架構 17.案例:某類型軟件可靠性測試方法和評估 18.案例:產(chǎn)品開發(fā)過程中的可靠性快速度量 |
復雜系統(tǒng)可靠性測試挑戰(zhàn) |
1.Software Defines Everything!Software Runs The World! 2.人們正在構建超出自身管理能力的系統(tǒng) 3.智能化產(chǎn)品大量使用復雜/龐大的開源軟件 4.集成第三方/開源項目的測試設計過程被壓縮 5.云/ABC的不確定性(難解釋性)影響測試分析 6.ABC智能化系統(tǒng)/產(chǎn)品/解決方案的測試設計越來越難 7.人工測試設計存在嚴重的殺蟲劑悖論 8.可靠性測試的三層防護網(wǎng) 9.智能化測試需同時解決輸入域探索和輸出預期判斷(test oracle)的問題 10.輸入域測試數(shù)據(jù)自動生成常用技術 11.輸出結果的自動比較技術分類和選擇 12.快速智能化的可靠性測試用例擴展技術和方法 |
可靠性測試防護網(wǎng)第一層:精準的人工設計 |
1.可靠性測試的正向和逆向設計 2.架構的正向測試:復雜系統(tǒng)可靠性架構設計評審關注點(韌性/彈性/業(yè)務連續(xù)/可持續(xù)運維) 3.可靠性軟件缺陷的模式和影響及根因 4.故障模型和影響分析FMEA 5.軟件的故障模式分析(SWFMEA) 6.故障模式分析之故障模式庫和ECA要素 7.案例演練:業(yè)務鏈路得可靠性FMEA分析 8.故障注入測試的輸入輸出因子提?。ü收嫌|發(fā)) 9.故障注入測試的輸入因子選擇及去重合并 10.故障注入測試的結果檢測——基于業(yè)務特征做oracle判斷 11.故障注入測試的結果檢測——基于系統(tǒng)特征做oracle判斷 12.基于硬件和基于軟件故障注入測試技術對比 13.硬件及驅動故障注入測試 14.軟件系統(tǒng)故障注入測試 |
可靠性測試防護網(wǎng)第二層:隨機和混沌工程測試 |
1.人工設計可靠性測試的不足(殺蟲劑悖論,人的腦力相比復雜被測系統(tǒng)的局限性) 2.隨機自動化測試——FUZZING 3.隨機的混沌工程實驗/探索測試 4.混沌工程原則 5.混沌工程和傳統(tǒng)測試對比 6.Netflix創(chuàng)始的混沌工程實踐 7.混沌工程關鍵技術 8.混沌工程技術發(fā)展趨勢 9.案例:實踐1——最大化注入事件的真實性 10.案例:實踐2——安全混沌工程CloudStrike 11.案例:實踐3——區(qū)塊鏈共識算法上應用混沌工程 12.混沌工程常用工具框架 13.混沌工程通用架構抽象 |
可靠性測試防護網(wǎng)第三層:智能化的“全”覆蓋探索測試 |
1.普通隨機測試的盲目性會導致探索深度不夠 2.“智能”的啟發(fā)式隨機可靠性測試 3.測試設計自動化——測試自動生成技術的分類 4.程序行為分析“全路徑”的測試自動生成技術 5.“全”路徑覆蓋的智能化測試生成——符號執(zhí)行測試 6.測試設計自動化——AI輔助的測試全自動生成 7.測試設計自動化——等效蛻變測試全自動生成 |
智能的基于搜索的可靠性測試(SBST技術) |
1.軟件工程問題的共性和本質 2.解決軟工問題的搜索優(yōu)化技術 3.SBST測試自動生成——爬山算法 4.SBST測試自動生成——GA算法 5.SBST技術演進趨勢 6.案例:業(yè)界實踐——Android應用自動探索測試 Sapienz 7.案例:業(yè)界實踐——崩潰復現(xiàn)用例自動搜索框架 BOTSING |
AI-based系統(tǒng)的可靠性測試 |
1.AI系統(tǒng)測試需解決的問題和挑戰(zhàn)——難解釋性、不確定性(test oracle未知) 2.AI系統(tǒng)的測試過程 3.AI系統(tǒng)用例擴展的主要方法 4.AI系統(tǒng)的可靠性測試——充分性度量 5.案例:AI汽車可靠性智能化測試生成技術 |
系統(tǒng)可靠性(DFR)基礎 1.軟件產(chǎn)品的質量標準 2.產(chǎn)品質量模型中的可靠性定義 3.廣義可靠性和狹義可靠性 4.軟件缺陷的相關定義和類型 5.復雜系統(tǒng)的可靠性需要體系化的測試來保障 6.系統(tǒng)可靠性的度量指標 7.狹義可靠性和可用性的關系(可靠性不高但可用性高?) 8.系統(tǒng)可靠性的度量方法和階段 9.軟件可靠性的避錯設計(分解抽象和重用) 10.軟件可靠性的避錯設計(模塊化) 11.軟件可靠性的避錯設計(模塊耦合及復雜度控制) 12.軟件可靠性的檢錯設計(主動和被動式) 13.軟件可靠性的容錯設計(局部容錯和完全容錯) 14.軟件可靠性的糾錯設計(糾錯時機和方法) 15.IPD流程中可靠性測試軟件工程(可靠性增長和確認的端到端測試) 16.案例:復雜系統(tǒng)的可靠性架構 17.案例:某類型軟件可靠性測試方法和評估 18.案例:產(chǎn)品開發(fā)過程中的可靠性快速度量 |
復雜系統(tǒng)可靠性測試挑戰(zhàn) 1.Software Defines Everything!Software Runs The World! 2.人們正在構建超出自身管理能力的系統(tǒng) 3.智能化產(chǎn)品大量使用復雜/龐大的開源軟件 4.集成第三方/開源項目的測試設計過程被壓縮 5.云/ABC的不確定性(難解釋性)影響測試分析 6.ABC智能化系統(tǒng)/產(chǎn)品/解決方案的測試設計越來越難 7.人工測試設計存在嚴重的殺蟲劑悖論 8.可靠性測試的三層防護網(wǎng) 9.智能化測試需同時解決輸入域探索和輸出預期判斷(test oracle)的問題 10.輸入域測試數(shù)據(jù)自動生成常用技術 11.輸出結果的自動比較技術分類和選擇 12.快速智能化的可靠性測試用例擴展技術和方法 |
可靠性測試防護網(wǎng)第一層:精準的人工設計 1.可靠性測試的正向和逆向設計 2.架構的正向測試:復雜系統(tǒng)可靠性架構設計評審關注點(韌性/彈性/業(yè)務連續(xù)/可持續(xù)運維) 3.可靠性軟件缺陷的模式和影響及根因 4.故障模型和影響分析FMEA 5.軟件的故障模式分析(SWFMEA) 6.故障模式分析之故障模式庫和ECA要素 7.案例演練:業(yè)務鏈路得可靠性FMEA分析 8.故障注入測試的輸入輸出因子提?。ü收嫌|發(fā)) 9.故障注入測試的輸入因子選擇及去重合并 10.故障注入測試的結果檢測——基于業(yè)務特征做oracle判斷 11.故障注入測試的結果檢測——基于系統(tǒng)特征做oracle判斷 12.基于硬件和基于軟件故障注入測試技術對比 13.硬件及驅動故障注入測試 14.軟件系統(tǒng)故障注入測試 |
可靠性測試防護網(wǎng)第二層:隨機和混沌工程測試 1.人工設計可靠性測試的不足(殺蟲劑悖論,人的腦力相比復雜被測系統(tǒng)的局限性) 2.隨機自動化測試——FUZZING 3.隨機的混沌工程實驗/探索測試 4.混沌工程原則 5.混沌工程和傳統(tǒng)測試對比 6.Netflix創(chuàng)始的混沌工程實踐 7.混沌工程關鍵技術 8.混沌工程技術發(fā)展趨勢 9.案例:實踐1——最大化注入事件的真實性 10.案例:實踐2——安全混沌工程CloudStrike 11.案例:實踐3——區(qū)塊鏈共識算法上應用混沌工程 12.混沌工程常用工具框架 13.混沌工程通用架構抽象 |
可靠性測試防護網(wǎng)第三層:智能化的“全”覆蓋探索測試 1.普通隨機測試的盲目性會導致探索深度不夠 2.“智能”的啟發(fā)式隨機可靠性測試 3.測試設計自動化——測試自動生成技術的分類 4.程序行為分析“全路徑”的測試自動生成技術 5.“全”路徑覆蓋的智能化測試生成——符號執(zhí)行測試 6.測試設計自動化——AI輔助的測試全自動生成 7.測試設計自動化——等效蛻變測試全自動生成 |
智能的基于搜索的可靠性測試(SBST技術) 1.軟件工程問題的共性和本質 2.解決軟工問題的搜索優(yōu)化技術 3.SBST測試自動生成——爬山算法 4.SBST測試自動生成——GA算法 5.SBST技術演進趨勢 6.案例:業(yè)界實踐——Android應用自動探索測試 Sapienz 7.案例:業(yè)界實踐——崩潰復現(xiàn)用例自動搜索框架 BOTSING |
AI-based系統(tǒng)的可靠性測試 1.AI系統(tǒng)測試需解決的問題和挑戰(zhàn)——難解釋性、不確定性(test oracle未知) 2.AI系統(tǒng)的測試過程 3.AI系統(tǒng)用例擴展的主要方法 4.AI系統(tǒng)的可靠性測試——充分性度量 5.案例:AI汽車可靠性智能化測試生成技術 |