• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件可靠性評測及其應用探討(2)

    發表于:2016-01-11來源:uml.org.cn作者:劉杰點擊數: 標簽:軟件測試
    可靠性增長測試和可靠性驗證測試將從不同的角度理解故障數據。在可靠性增長測試中,測試以迭代的方式進行,根據測試期間跟蹤到的故障,使用基于軟

      可靠性增長測試和可靠性驗證測試將從不同的角度理解故障數據。在可靠性增長測試中,測試以迭代的方式進行,根據測試期間跟蹤到的故障,使用基于軟件可靠性增長模型和統計推理的可靠性評估程序進行故障強度的估計,并用于跟蹤測試的進展情況??煽啃则炞C測試是軟件系統提交前進行的最后測試。它是最終檢驗而不是調試。在驗證測試中,其目標是確定一個軟件組件或系統在風險限度內是被接受還是被拒絕。驗證測試使用可靠性示圖,故障被繪制在圖上。根據它落入的區域,來決定被測軟件是被接受還是被拒絕,或者繼續進行測試??梢愿鶕煌目蛻麸L險(接受一個不良程序的風險)和供應商風險(拒絕一個好程序的風險)級別構造圖表。

      三、軟件可靠性評測在工程實踐中的幾個問題

      1、運行剖面的定義

      定義運行剖面首先需要為軟件的使用行為建模,建??梢圆捎肕arkov鏈來完成。用Markov鏈將輸入域編碼為一個代表用戶觀點的軟件使用的狀態集?;∮脕磉B結狀態并表示由各種激勵導致的轉換。這些激勵可能由硬件、人機接口或其它軟件等產生。將轉換概率分配給每個弧,用來代表一個典型用戶最有可能施加給系統的激勵。這種類型的Markov鏈是一個離散的有限狀態機。這類模型可以用有向圖或轉換矩陣表示。

      定義運行剖面的下一步是開發使用模型,明確需要測試的內容。軟件系統可能會有許多用戶和用戶類別,每類用戶都可能以不同的方式使用系統。開發使用模型涉及到將輸入域分層。有兩種類型的分層形式:用戶級分層和用法級分層。 用戶級分層依賴于誰或什么能激勵系統。用法級分層依賴于在測試狀態下系統能做什么。換句話說,用戶級分層促使你考慮各種類型的用戶以及他們如何使用系統,用法級分層則要求考慮系統能夠提供的所有功能。一旦用戶和用法模型被開發出來,弧上的概率將被分配。這些概率估計主要是基于如下幾個方面: ① 從現有系統收集到的數據, ② 與用戶的交談或對用戶進行觀察獲得的信息, ③ 原型使用與試驗分析的結果, ④ 相關領域專家的意見。定義使用概率的最佳方法是使用實際的用戶數據,如來自系統原型、前一版本的使用數據;其次是由該軟件應用領域的用戶和專家提供的預期使用數據;在沒有任何數據可用的情況下,只能是將每個狀態現有的弧分配相同的概率,這是最差的一種方法。

      軟件可靠性測試假設每個操作的數據輸入都有同樣的發生錯誤的概率,這樣最頻繁出現的操作和輸入將表現出最高的故障率。對于特定的操作環境這是正確的,但無法貫穿系統的全部操作集合。典型的例子是飛機的飛行控制軟件,在正常飛行、起飛、降落、地面運動和地面等待這五個狀態中,盡管起飛和降落在操作剖面上只占有很小的百分比,但是它們卻占有很大的故障比例。對于高安全性要求的軟件,一個看起來很少使用的代碼路徑也可能帶來災難性的后果。因此,對于邊界、躍遷情況和關鍵功能不應該用簡單的操作剖面來對待,應該構造專門的操作剖面,補充統計模型之外的測試用例。在覆蓋率水平不夠時,可根據具體空白,進行適當的補充測試,如果補充測試發現了錯誤,就可分析這些錯誤,估計其對可靠性產生的影響。

      2、測試的實施

      有了軟件的運行剖面,就可以使用Monte Carlo仿真的形式實施測試。使用這類仿真,可保持統計的完整性。通過操作模型、弧上概率和隨機數的驅動,一個通過軟件的隨機路徑形成了一次在軟件上的統計試驗。有一些工具可以使用這些技術自動生成測試腳本,這些工具也生成大量的統計數據幫助測試機構建立可靠性評估和其它測試停止標準。

      軟件可靠性測試必須是受控試驗,在運行此類測試時,為了保證統計數據的有效性,測試過程中的每個測試用例必須施加于相同的軟件版本。新的軟件版本意味著新試驗的開始,其測試結果也必須是一致的。

      在有些情況下,不能進行純粹的可靠性測試。因為客戶的要求、合同的規定或者標準的約束,需要補充其它形式的非統計測試。這時的最佳選擇是既執行可靠性測試,也執行非統計測試(如覆蓋測試)。如果非統計測試在可靠性測試之前完成,由統計測試產生的統計數據仍然有效。但是在可靠性測試之后執行非統計測試,可能會影響軟件可靠性評估的準確性。

      軟件可靠性測試同樣依賴于軟件的可測試性??煽啃詼y試難點就在于判斷測試用例的運行是成功還是失敗。在控制系統及類似的軟件中,故障有詳細說明、時間(通常是CPU時間或時鐘時間)來客觀的定義。而在一般應用系統中,故障的定義更主觀些,它不僅依賴于程序是否符合規格說明的要求,也取決于指定的性能是否達到用戶的期望,但是否達到期望沒有確定的標準。在一些科學計算中,計算結果只能由計算機才能給出,在這種情況下,如果軟件只是輸出了錯誤的結果而不是整個系統發生故障,錯誤就不可能被發覺。此時可以將測試分成兩個階段進行。第一階段運行較少量的測試用例,并對照規范進行仔細檢查。第二階段再運行大量測試用例。第二階段不用人工檢查輸出的每項內容,而是找故障現象,包括錯誤信息、斷電、崩潰和死機。也可把輸出記錄到文件中,采用搜索或過濾方法進行處理。如果軟件有足夠的可測試性,這種方法不會漏掉很多的嚴重故障。如果計算的正確性無法驗證,就需要對軟件進行一些形式化的證明。

    原文轉自:http://www.uml.org.cn/Test/200903234.asp

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>