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