《軟件測試失效案例分析》由會員分享,可在線閱讀,更多相關《軟件測試失效案例分析(46頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、軟 件 測 試 失 效 案 例 分 析中航一集團軟件可靠性管理與測評中心王軼辰 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 報 告 提 綱研究軟件失效的目的軟件失效的產(chǎn)生機理軟件測試典型失效有效的軟件測試 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 研 究 軟 件 失 效 的 目 的l軟件質(zhì)量是軟件的生命;l軟件失效是影響軟件質(zhì)量的關鍵;l軟件缺陷是導致軟件失效的根本原因;l軟件缺陷是軟件系統(tǒng)的根本屬性之一;l軟件缺陷歸根結(jié)底由人為因素造成。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 首屆軍工產(chǎn)品軟件測試技術
2、專題研討會 中航一集團軟件可靠性管理與測評中心 研 究 軟 件 失 效 的 目 的l目前的軟件開發(fā)仍然是一種“個人行為”,一個人的經(jīng)驗、知識和能力總是有限的;l軟件的個體特征體現(xiàn)在兩個方面:應用域的特殊性和編程者的特征;l每一個具體軟件所處理的應用域問題各不相同,軟件表現(xiàn)個體特征。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 研 究 軟 件 失 效 的 目 的l缺陷分析需要總結(jié)各種各樣的缺陷,找到一種對“群體行為”的分析;l缺陷研究的結(jié)果應該“知識化”,并建立某種形式的缺陷知識庫;l將群體的知識固化下來,有利于指導個體的行為。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中
3、航一集團軟件可靠性管理與測評中心 提 綱研究軟件失效的目的軟件失效機理的探討軟件測試典型失效有效的軟件測試 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 軟 件 失 效 機 理 的 探 討l缺陷產(chǎn)生的原因可以歸結(jié)為軟件生產(chǎn)者的的錯誤所致;l缺陷的產(chǎn)生出現(xiàn)在軟件生產(chǎn)過程中的各個環(huán)節(jié),不同的生產(chǎn)者由于各自知識的有限而制造出來;l軟件的缺陷具有相對性和演化性。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 軟 件 失 效 機 理 的 探 討l如圖所示軟件開發(fā)的不同階段由于執(zhí)行者對上層設計的認識不充分而導致本階段的軟件實現(xiàn)與上一層的設計意圖不相符,即
4、產(chǎn)生了缺陷。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 提 綱研究軟件失效的目的軟件失效機理的探討軟件測試典型失效有效的軟件測試 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 軟 件 測 試 典 型 失 效l從以下兩個方面描述一個失效或缺陷:失效表現(xiàn) 軟件動態(tài)運行中所表現(xiàn)出來的功能或性能方面的欠缺;缺陷分析 導致軟件失效的原因所在;糾正措施 軟件測試者提出的修改建議或開發(fā)方進行的改正方案。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 需 求 類 缺 陷 ( 一 )l需求缺陷是在軟件需求到軟件設計的轉(zhuǎn)換過程中由需
5、求制定者產(chǎn)生于軟件需求之中的隱患;l軟件的需求類缺陷主要產(chǎn)生于:軟件應用領域的不確知性;設計者對軟件應用領域認識不充分;設計者考慮不周導致的需求缺陷。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 需 求 類 缺 陷 ( 二 )l失效表現(xiàn)在空間輻射環(huán)境中,計算機按照一個不確定的流程執(zhí)行,導致程序執(zhí)行邏輯混亂。l缺陷分析在空間輻射環(huán)境中,一些能譜寬、分布廣的高能級重粒子和太陽耀斑質(zhì)子,對具有存儲記憶功能的半導體器件會產(chǎn)生電離現(xiàn)象,引起晶體管的敏感區(qū)沉積足夠多的電荷,造成CPU寄存器或存儲器RAM單元發(fā)生二進制邏輯位翻轉(zhuǎn)。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟
6、件可靠性管理與測評中心 需 求 類 缺 陷 ( 三 )l糾正措施增強器件的抗單粒子翻轉(zhuǎn)能力;對重要和關鍵的程序段,增加程序復執(zhí)和指令復執(zhí)等容錯設計;對主要的控制參數(shù)和狀態(tài)標志等,采用先三取二多數(shù)表決后使用,并增加截取有效位數(shù)、數(shù)據(jù)平滑濾波、域值分析、微量修正和數(shù)據(jù)冗余等容錯設計。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 需 求 類 缺 陷 ( 四 )l失效表現(xiàn)飛行過程中,設備出現(xiàn)掉電情況,在飛行結(jié)束后,發(fā)現(xiàn)存儲在非易失存儲器中的故障信息丟失了。l缺陷分析需求中制定非易失存儲器的自檢測機制中,沒有考慮對非易失特性的測試。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一
7、集團軟件可靠性管理與測評中心 需 求 類 缺 陷 ( 五 )l糾正措施需求中規(guī)定,在NVRAM中專門設置一個檢測區(qū),并預先規(guī)定了兩個寫入值,在每次斷電前寫入一個值,在每次開機檢測時,檢查該值是否與上一次斷電前的值相同。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 需 求 類 缺 陷 ( 六 )l失效表現(xiàn)飛機飛越東西經(jīng)180度線時,計算錯誤,導致飛機沿相反方向飛行。l缺陷分析需求中設計的地理坐標系到大地坐標系轉(zhuǎn)換的公式中,沒有考慮到東西經(jīng)180度(正負180度)是同一條經(jīng)線的特殊情況。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 需 求 類
8、 缺 陷 ( 七 )l糾正措施軟件人員將需求中飛機經(jīng)緯度轉(zhuǎn)換為平面坐標的公式進行了修改,加入了對經(jīng)度等于和大于180度以及小于等于-180度情況的特殊處理,修改了缺陷。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 需 求 類 缺 陷 ( 八 )l失效表現(xiàn)某飛行控制軟件在同時遇到多個交聯(lián)設備出現(xiàn)不同故障的情況下,軟件對故障的處理與預期不一致。l失效分析需求中未對可能出現(xiàn)的故障進行等級劃分,且每種故障的處理也不盡相同,于是在故障組合發(fā)生的情況下,軟件沒有按照預期的故障處理情況進行處理。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 需 求 類
9、缺 陷 ( 九 )l糾正措施需求制定者根據(jù)實際使用情況,對軟件需要處理的各種故障按照優(yōu)先級進行了排序,并且重新規(guī)定了各級故障的處理方式,使得多個故障同時發(fā)生的情況下優(yōu)先處理高級別故障。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 一 )l設計缺陷是在軟件需求到軟件設計的轉(zhuǎn)換過程中由設計者產(chǎn)生于軟件設計之中的隱患。l軟件的設計類缺陷主要產(chǎn)生于:設計者對需求的理解不充分;設計者對程序語言的理解不充分;設計者疏忽導致的設計紕漏。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 二 )l失效表現(xiàn)飛行前自
10、檢測過程中出現(xiàn)/D接口故障,導致軟件死機,不再響應外部命令。l缺陷分析軟件設計中使用無限循環(huán)結(jié)構(gòu)作為等待接口信號的機制,一旦A/D接口出現(xiàn)故障無法發(fā)出信號,軟件陷入死循環(huán)。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 三 )l糾正措施在設計的循環(huán)結(jié)構(gòu)中加入了延時退出的判斷條件,使得出現(xiàn)A/D接口故障后,延時一段時間,循環(huán)自動退出,并且進入錯誤處理程序。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 四 )l失效表現(xiàn)多個航路點位置重疊時,飛機直線飛行,失去控制。l缺陷分析設計中缺少對這種情況的考
11、慮,且代碼中沒有對除零情況進行保護。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 五 )l糾正措施設計人員對上述問題進行了雙重保護:首先,在航路點輸入、修改、刪除等操作流程中增加了對相同航路點情況的判斷,避免此種情況的出現(xiàn);其次,在程序設計的待飛距計算公式中,增加了對分母為零情況的判斷和相應處理。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 六 )l失效表現(xiàn)設備掉電重啟后,飛機不再按照掉電前的飛行狀態(tài)進行飛行。l缺陷分析軟件設計中沒有將飛機的重要飛行狀態(tài)信息保存在非易失存儲器中。 首屆軍工產(chǎn)
12、品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 七 )l糾正措施設計人員根據(jù)需求重新對程序變量進行了分析,找出了其中影響飛行姿態(tài)和航跡的關鍵變量,在每個程序運行周期內(nèi)都將這些變量往NVRAM中存儲一次,有效地防止了掉電重啟對重要數(shù)據(jù)的損壞情況。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 八 )l失效表現(xiàn)任務機軟件為導彈提供任務數(shù)據(jù),由于數(shù)據(jù)不夠精確,導致導彈的命中率很低。l缺陷分析在任務機軟件的設計中,任務數(shù)據(jù)的計算按照地理平面坐標進行,與實際的地球坐標相差較大。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中
13、航一集團軟件可靠性管理與測評中心 設 計 類 缺 陷 ( 九 )l糾正措施重新設計了軟件中的任務數(shù)據(jù)計算方式,將平面坐標改為使用球面坐標,事實證明極大的提高了任務數(shù)據(jù)的精確性,導彈的打靶準確度得到改善。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 代 碼 類 缺 陷 ( 一 )l代碼缺陷是在軟件設計到軟件代碼的轉(zhuǎn)換過程中由編程者產(chǎn)生于代碼中的隱患。l軟件的代碼類缺陷主要產(chǎn)生于:編程人員的疏漏;對軟件設計理解的不充分;對程序運行環(huán)境的了解不充分。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 代 碼 類 缺 陷 ( 二 )l失效表現(xiàn) 1962
14、年7月22日,攜帶著飛向金星的無人駕駛飛船水手1號的火箭在升空290秒之后毀掉了。l缺陷分析地面計算機的程序:If not 雷達能夠與火箭聯(lián)系 then 不要糾正火箭的飛行路線 但由于錯誤,語句中的not被丟掉了。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 代 碼 類 缺 陷 ( 三 )l糾正措施顯而易見,當然是直接修改了代碼。 NASA對這個缺陷的調(diào)查表明:代碼檢查和程序測試都是不完全的,它們都是基于檢查者和測試者的想象力和洞察力;程序測試能說明程序錯誤的存在,但卻不能說明它們不存在! 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 代
15、碼 類 缺 陷 ( 四 )l失效表現(xiàn)刪除航點時,多拷貝了一個航點。若航線的長度為150時,會出現(xiàn)數(shù)組越界。 l缺陷分析航線中的航點保存在一個長度為150的數(shù)組中,刪除航點的操作是每次刪除一個點,并且將后面的元素往前移一個,缺陷產(chǎn)生于對數(shù)組中最后一個航點的刪除操作中。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 代 碼 類 缺 陷 ( 五 )l糾正措施在刪除航點的代碼中,增加了對是否為數(shù)組中最后一個航點的判斷,如果為最后一個航點則不再將后面的數(shù)據(jù)向前移動,同時刪除其他航點時,后面的航點也僅限于數(shù)組內(nèi)的數(shù)據(jù)向前移。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠
16、性管理與測評中心 代 碼 類 缺 陷 ( 六 )l失效表現(xiàn)計算機采用8086+8087方式,計算采用短實數(shù)格式,偶爾發(fā)生計算失敗。l缺陷分析由于輸入量中有接近零的情況,因此計算的個別中間結(jié)果有可能小于短實數(shù)格式的最小值,另外由于8087是80位二進制運算,但對它設置為短實數(shù)格式,并且在計算過程中有小于短實數(shù)格式的最小值的數(shù)字量出現(xiàn)時,8087就發(fā)生下溢,因為程序沒有對8087下益的處理,所以8087向8086送回一個未規(guī)格化的結(jié)果。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 代 碼 類 缺 陷 ( 七 )l糾正措施這個問題的解決有兩種方法:當8087產(chǎn)生下溢時引發(fā)
17、一個8086中斷,在中斷程序中進行下溢處理,這種方法在沒有下溢出現(xiàn)時,并不增加時間開銷,但要改變硬件連接;對計算的中間結(jié)果進行判別,當小于10-8時,就以機器零代替。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 提 綱研究軟件失效的目的軟件失效機理的探討軟件測試典型失效有效的軟件測試 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 有 效 的 軟 件 測 試l每種測試技術(方法)都針對某一類(或幾類)缺陷具有超出其他方法的優(yōu)勢;l從實踐來看,每一種測試技術(方法)都不可能發(fā)現(xiàn)一個軟件中的所有缺陷;l在軟件生命周期的不同階段,需要使用不同的測試
18、技術(方法)找出不同類型的缺陷。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 代 碼 審 查 技 術l一種靜態(tài)測試方法;l通過試驗統(tǒng)計數(shù)據(jù),被某些機構(gòu)認為是最有效的一種測試方法;l從實踐經(jīng)驗來看,代碼審查是一種對測試者水平要求很高的一種方法;l從對軟件缺陷的分類來看,代碼審查適合測試出代碼類缺陷。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 代 碼 審 查 技 術l發(fā)現(xiàn)代碼類缺陷對測試者的要求:充分了解被測代碼的編程語言特性;充分了解被測代碼所運行環(huán)境的特性;充分了解軟件設計的思想;l發(fā)現(xiàn)設計類和需求類缺陷的要求:理解被測軟件的需求;掌握
19、被測軟件的應用域知識; 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 系 統(tǒng) 測 試 技 術l一種動態(tài)測試方法;l關心軟件的動態(tài)行為(性能和功能),不關心軟件的實現(xiàn)結(jié)構(gòu);l系統(tǒng)測試的依據(jù)主要為軟件的需求和用戶手冊以及任務書等;l系統(tǒng)測試是一種較為綜合的方法,三類缺陷均可發(fā)現(xiàn)。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 系 統(tǒng) 測 試 技 術l系統(tǒng)測試的充分性很大程度受限于依據(jù)文檔的質(zhì)量和測試者的專業(yè)知識。l測試者應具備的素質(zhì)包括:充分了解被測軟件所支持的設備的基本原理與功能;充分了解被測軟件所處理的應用領域中的相關知識。 首屆軍工產(chǎn)品軟件測試技術專題研討會 中航一集團軟件可靠性管理與測評中心 總 結(jié)l研究軟件的失效可以讓開發(fā)者的“盾”更堅,讓測試者的“矛”更鋒。l軟件缺陷的產(chǎn)生歸根結(jié)底由人為因素導致。l知己知彼,方能百戰(zhàn)百勝,典型缺陷的分析有助于認識軟件的本質(zhì)。l認識缺陷,可以讓軟件測試有的放矢,提高測試質(zhì)量。 謝 謝 !中航一集團軟件可靠性管理與測評中心