軟件測試與可靠性評估方法研究

字號:

一.軟件測試的定義
    軟件測試(Software testing)是軟件生存期(Software life cycle)中的一個重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟。通俗地講,軟件測試就是在軟件投入運行前,對軟件需求分析、設(shè)計規(guī)格說明和編碼進(jìn)行最終復(fù)審的活動。1983年IEEE提出的軟件工程術(shù)語中給軟件測試下的定義是:“使用人工或自動的手段來運行或測定某個軟件系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實際結(jié)果之間的差別”。這個定義明確指出:軟件測試的目的是為了檢驗軟件系統(tǒng)是否滿足需求。
    從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應(yīng)該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程”?;蛘哒f,軟件測試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤或缺陷。
    二.軟件測試的生命周期
    測試主要依據(jù)是被試系統(tǒng)的研制任務(wù)書和技術(shù)規(guī)格書,是對軟件整體功能和性能的綜合測試與評估。測試原理是軟件測試活動的理論基礎(chǔ),測試方法是測試原理的實際應(yīng)用和獲得測試數(shù)據(jù)的手段?;谲浖墓残?,對于軟件的測試要遵循一般軟件的測試原理和方法。同時,針對軟件的特性,必須找到合適的測試方法。測試用例的合理性對于軟件的測試與評估具有關(guān)鍵作用,而如何使設(shè)計的用例合情、合理并且典型有效并不容易。所以應(yīng)該與軟件的研制人員以及最終用戶一起,有針對性地研究實際操作環(huán)境并加以描述,形成合理的測試用例集。另一方面,軟件運行環(huán)境的復(fù)雜程度對軟件評估具有重要作用,所以應(yīng)產(chǎn)生盡量逼真的運行背景以便于研究。軟件測試的周期如圖1所示。
    實踐證明,盡管人們在開發(fā)軟件的過程中使用了許多保證軟件質(zhì)量的方法和技術(shù),但開發(fā)出的軟件中還會隱藏許多錯誤和缺陷。這對于規(guī)模大、復(fù)雜性高的軟件更是如此。所以,嚴(yán)格的軟件測試對于保證軟件質(zhì)量具有重要作用。
    圖1 軟件測試的生命周期
    軟件測試在軟件生存期中橫跨兩個階段。在軟件編碼階段,當(dāng)編寫出一個模塊后,通常要對它進(jìn)行必要的測試(稱為單元測試),這時測試與編碼屬于同一個階段。在編碼階段結(jié)束后,對軟件系統(tǒng)還要進(jìn)行各種綜合測試(集成測試與系統(tǒng)測試),這是一個獨立階段,即軟件測試階段。在這個測試階段又有兩種性質(zhì)不同的測試:研制單位內(nèi)部進(jìn)行的集成測試和系統(tǒng)測試與用戶(或第三方)進(jìn)行的驗收性測試。
    在軟件測試生命周期內(nèi),錯誤在軟件開發(fā)的每個階段都可能被帶入。在軟件測試中,某些錯誤被發(fā)現(xiàn)、分類、隔離,最終被糾正。由于軟件不斷被修改,所以這個過程是一個反復(fù)進(jìn)行的過程。