原文:
測試可以顯示缺陷的存在,但不能證明系統不存在缺陷。測試可以減少軟體中存在缺陷的可能性,但即使測試沒有發現任何缺陷,也不能證明軟體或系統是完全正確的,或者說是不存在缺陷的。
窮盡測試是不可能的,當滿足一定的測試出口準則時測試就應當終止。考慮到所有可能輸入值和它們的組合,以及結合所有不同的測試前置條件,這是乙個天文數字,我們沒有可能進行窮盡測試。
根據統計表明,在軟體開發生命週期早期引入的錯誤佔軟體過程**現所有錯誤(包括最終的缺陷)數量的50%~60%。此外,ibm的乙份研究結果表明,缺陷存在放大趨勢。如需求階段的乙個錯誤可能會導致n個設計錯誤,因此,越是測試後期,為修復缺陷所付出的代價就會越大。因此,軟體測試人員要盡早地且不斷地進行軟體測試,以提高軟體質量降低軟體開發成本。
pareto原則表明「80%的錯誤集中在20%的程式模組中」。實際經驗也證明了這一點,通常情況下,大多數的缺陷只是存在測試物件的極小部分。缺陷並不是平均而是集群分布的。因此,如果在乙個地方發現了很多缺陷,那麼通常在這個模組中可以發現更多的缺陷。因此,測試過程中要充分注意錯誤集群現象,對發現錯誤較多的程式段或者軟體模組,應進行反覆的深入的測試。
論殺蟲劑用得多了,害蟲就有免疫力,殺蟲劑就發揮不了效力。在測試中,同樣的測試用例被一遍一遍反覆使用時,發現缺陷的能力就會越來越差。這種現象的主要原因在於測試人員沒有及時更新測試用例,同時對測試用例及測試物件過於熟悉,形成思維定勢。為克服這種現象,測試用例需要經常的評審和修改,不斷增加新的不同的測試用例來測試軟體或系統的不同部分,保證測試用例永遠是最新的,即包含著最後一次程式**或說明文件的更新資訊。
系統的質量特徵不僅僅是功能性要求,還包括了很多其它方面的要求比如穩定性、可用性、相容性等等。假如系統無法使用,或者系統不能完成客戶的需求和期望,那麼,這個系統的研發是失敗。同時在系統中發現和修改缺陷也是沒有任何意義的。
白盒測試:又稱結構測試、透明盒測試、邏輯驅動測試或基於**的測試"白盒"法全面了解程式內部邏輯結構、對所有邏輯路徑進行測試。白盒測試法的覆蓋標準有邏輯覆蓋、迴圈覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。
黑盒測試:也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。黑盒測試著眼於程式外部結構,不考慮內部邏輯結構,主要針對軟體介面和軟體功能進行測試。黑盒測試是以使用者的角度,從輸入資料與輸出資料的對應關係出發進行測試的。
灰盒測試:是介於白盒測試與黑盒測試之間的一種測試,灰盒測試多用於整合測試階段,不僅關注輸出、輸入的正確性,同時也關注程式內部的情況。
單元測試:是指對軟體中的最小可測試單元進行檢查和驗證。
整合測試:(也叫組裝測試,聯合測試)是單元測試的邏輯擴充套件。它最簡單的形式是:把幾個已經測試過的單元組合成乙個元件,測試它們之間的介面。
系統測試:是將已經確認的軟體、計算機硬體、外設、網路等其他元素結合在一起,進行資訊系統的各種組裝測試和確認測試。
驗收測試:是部署軟體之前的最後乙個測試操作。在軟體產品完成了單元測試、整合測試和系統測試之後,產品發布之前所進行的軟體測試活動。它是技術測試的最後乙個階段,也稱為交付測試。驗收測試的目的是確保軟體準備就緒,並且可以讓終端使用者將其用於執行軟體的既定功能和任務。
靜態測試不要求在計算機上實際執行所測程式,主要以一些人工的模擬技術對軟體進行分析和測試。而軟體的動態測試是通過輸入一組預先按照一定的測試準則構造的例項資料來動態執行程式,而達到發現程式錯誤的過程。
手工測試:就是由人去乙個乙個的輸入用例,然後觀察結果,和機器測試相對應,屬於比較原始但是必須的乙個步驟。
自動化測試:是把以人為驅動的測試行為轉化為機器執行的一種過程。
第三方測試:有別於開發人員或使用者進行的測試,其目的是為了保證測試工作的客觀性。
軟體測試的七大原則
軟體測試的七大原則 軟體測試是在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。軟體測試的基本原則有助於測試人員進行高質量的測試,盡早盡可能多的發現缺陷,並負責跟蹤和分析軟體中的問題,對存在的問題和不足提出質疑和改進,從而持續改進測試過程。軟體測試的...
軟體設計原則(七大原則)
本片是自己在工作閒餘時間學習軟體設計模式所獲,在這裡歸納總結,如有不足請多多指教 說到軟體設計原則,可能很多人都會和軟體設計模式混淆,尤其是對剛工作不久的童鞋,其實軟體設計原則只是我們在軟體設計中對軟體架構,各模組之間松耦合,可重用性的一種總結的抽象。而軟體設計模式傾向於軟體架構方面,是站在全域性看...
七大原則 開閉原則
開閉原則 open closed principle,ocp 由勃蘭特 梅耶 bertrand meyer 提出,他在 1988 年的著作 物件導向軟體構造 object oriented software construction 中提出 軟體實體應當對擴充套件開放,對修改關閉 software ...