可靠性測試就是為了評(píng)估產(chǎn)品在規(guī)定的壽命期間內(nèi),在預(yù)期的使用、運(yùn)輸或儲(chǔ)存等所有環(huán)境下,保持功能可靠性而進(jìn)行的活動(dòng)。是將產(chǎn)品暴露在自然的或人工的環(huán)境條件下經(jīng)受其作用,以評(píng)價(jià)產(chǎn)品在實(shí)際使用、運(yùn)輸和儲(chǔ)存的環(huán)境條件下的性能,并分析研究環(huán)境因素的影響程度及其作用機(jī)理。通過使用各種環(huán)境試驗(yàn)設(shè)備模擬氣候環(huán)境中的高溫、低溫、高溫高濕以及溫度變化等情況,加速反應(yīng)產(chǎn)品在使用環(huán)境中的狀況,來驗(yàn)證其是否達(dá)到在研發(fā)、設(shè)計(jì)、制造中預(yù)期的質(zhì)量目標(biāo),從而對(duì)產(chǎn)品整體進(jìn)行評(píng)估,以確定產(chǎn)品可靠性壽命。
測試可靠性是指運(yùn)行應(yīng)用程序,以便在部署系統(tǒng)之前發(fā)現(xiàn)并移除失敗。因?yàn)橥ㄟ^應(yīng)用程序的可選路徑的不同組合非常多,所以在一個(gè)復(fù)雜應(yīng)用程序中不可能找到所有的潛在失敗。但是,可測試在正常使用情況下最可能的方案,然后驗(yàn)證該應(yīng)用程序是否提供預(yù)期的服務(wù)。如果時(shí)間允許,可采用更復(fù)雜的測試以揭示更微小的缺陷。
組件壓力測試
壓力測試是指模擬巨大的工作負(fù)荷以查看應(yīng)用程序在峰值使用情況下如何執(zhí)行操作。利用組件壓力測試,可隔離構(gòu)成組件和服務(wù)、推斷出它們公開的導(dǎo)航方法、函數(shù)方法和接口方法以及創(chuàng)建調(diào)用這些方法的測試前端。對(duì)于那些進(jìn)入數(shù)據(jù)庫服務(wù)器或一些其他組件的方法,可創(chuàng)建一個(gè)提供所需格式的啞元數(shù)據(jù)的后端。測試儀器在觀察結(jié)果的同時(shí),反復(fù)插入啞元數(shù)據(jù)。
這里的想法是在隔離的情況下,對(duì)每個(gè)組件施加遠(yuǎn)超過正常應(yīng)用程序?qū)⒔?jīng)歷的壓力。例如,以盡可能快的速度使用 1 – 10,000,000 循環(huán),查看是否有暴露的問題。單獨(dú)測試每個(gè) DLL 可幫助確定組件的失敗總次數(shù)。
對(duì)于分布式 Web 應(yīng)用程序,Microsoft 提供“Web 應(yīng)用程序壓力工具”。有關(guān)更多信息,請(qǐng)參見“Microsoft Web Application Stress Tool”(Microsoft Web 應(yīng)用程序壓力工具).如果您購買了 Visual Studio .NET 企業(yè)版,還會(huì)提供另一個(gè)名為 Application Center Test 的工具,它用來預(yù)覽 Application Center 2000 中某些技術(shù)的介紹性信息。
集中壓力測試
對(duì)每個(gè)單獨(dú)的組件進(jìn)行壓力測試后,應(yīng)對(duì)帶有其所有組件和支持服務(wù)的整個(gè)應(yīng)用程序進(jìn)行壓力測試。集中壓力測試主要關(guān)注與其他服務(wù)、進(jìn)程以及數(shù)據(jù)結(jié)構(gòu)(來自內(nèi)部組件和其他外部應(yīng)用程序服務(wù))的交互。
集中測試從最基礎(chǔ)的功能測試開始。您需要知道編碼路徑和用戶方案、了解用戶試圖做什么以及確定用戶運(yùn)用您的應(yīng)用程序的所有方式。
測試腳本應(yīng)根據(jù)預(yù)期的用法運(yùn)行應(yīng)用程序。例如,如果您的應(yīng)用程序顯示 Web 頁,而且 99% 的客戶只是搜索該站點(diǎn)、只有 1% 的客戶將真正購買,這使得提供對(duì)搜索和其他瀏覽功能進(jìn)行壓力測試的測試腳本才有意義。當(dāng)然,也應(yīng)對(duì)購物車進(jìn)行測試,但是預(yù)期的使用暗示搜索測試應(yīng)在測試中占很大比重。
在日程和預(yù)算允許的范圍內(nèi),應(yīng)始終盡可能延長測試時(shí)間。不是測試幾天或一周,而是要延續(xù)測試達(dá)一個(gè)月、一個(gè)季度或者一年之久,并查看應(yīng)用程序在較長時(shí)期內(nèi)的運(yùn)行情況。
真實(shí)環(huán)境測試
在隔離的受保護(hù)的測試環(huán)境中可靠的軟件,在真實(shí)環(huán)境的部署中可能并不可靠。雖然隔離測試在早期的可靠性測試進(jìn)程中是有用的,但真實(shí)環(huán)境的測試環(huán)境才能確保并行應(yīng)用程序不會(huì)彼此干擾。這種測試經(jīng)常發(fā)現(xiàn)與其他應(yīng)用程序之間的意外的導(dǎo)致失敗的交互。
需要確保應(yīng)用程序能夠在真實(shí)環(huán)境中運(yùn)行,即能夠在具有所有預(yù)期客戶事件配置文件的服務(wù)器空間中,使用最終配置條件運(yùn)行。測試計(jì)劃應(yīng)包括在最終目標(biāo)環(huán)境中或在盡可能接近目標(biāo)環(huán)境的環(huán)境中運(yùn)行應(yīng)用程序。這一點(diǎn)通??赏ㄟ^部分復(fù)制最終環(huán)境或小心地共享最終環(huán)境來完成。
隨機(jī)破壞測試
測試可靠性的一個(gè)最簡單的方法是使用隨機(jī)輸入。這種類型的測試通過提供虛假的不合邏輯的輸入,努力使應(yīng)用程序發(fā)生故障或掛起。輸入可以是鍵盤或鼠標(biāo)事件、程序消息流、Web 頁、數(shù)據(jù)緩存或任何其他可強(qiáng)制進(jìn)入應(yīng)用程序的輸入情況。應(yīng)該使用隨機(jī)破壞測試測試重要的錯(cuò)誤路徑,并公開軟件中的錯(cuò)誤。這種測試通過強(qiáng)制失敗以便可以觀察返回的錯(cuò)誤處理來改進(jìn)代碼質(zhì)量。
隨機(jī)測試故意忽略程序行為的任何規(guī)范。如果該應(yīng)用程序中斷,則未通過測試。如果該應(yīng)用程序不中斷,則通過測試。這里的要點(diǎn)是隨機(jī)測試可高度自動(dòng)化,因?yàn)樗耆魂P(guān)心基礎(chǔ)應(yīng)用程序應(yīng)該如何工作。
可能需要某種測試裝備,以驅(qū)使混亂的、高壓力的、不合邏輯的測試事件進(jìn)入應(yīng)用程序的接口中。Microsoft 使用名為“注射器”的工具,使得以將錯(cuò)誤注射到任何 API 中,而無需訪問源代碼。“注射器”可用于:模擬資源失敗,修改調(diào)用參數(shù),注射損壞的數(shù)據(jù),檢查參數(shù)驗(yàn)證界限,插入定時(shí)延遲,以及執(zhí)行許多其他功能。