1. 程式人生 > >軟體工程小記——編碼與測試

軟體工程小記——編碼與測試

第六章 編碼與測試

1.程式設計語言分為兩大類:
    面向機器語言:
        面向機器語言包括機器語言和組合語言;
    高階語言:
        高階語言分為專用語言和通用語言;
        
2.程式設計語言的選擇
    理想標準、實用標準、系統使用者的要求、工程的規模、軟體的執行環境、可以得到的軟體開發工具、
    軟體開發人員的知識、軟體的可移植性要求。
    
3.軟體測試
    軟體測試是使用人工或自動手段來執行或測試某個系統的過程,其目的在於檢驗它是否滿足規定的
    需求或是弄清預期結果與實際結果之間的差別。
4.測試用例設計的核心:
    a.要測試的內容;
    b.輸入資訊和對應的預期結果;
    
5.軟體測試的重要性
    a.尋找軟體錯誤,以便進行修正;
    b.證明軟體符合要求,是可用的;
    c.驗證軟體是否符合使用者要求;
    d.指導軟體的開發過程;
    e.提供軟體的相關特徵;
    
6.軟體測試的分類
    按照是否需要檢視程式碼分類:
        a.黑盒測試:
            黑盒測試是將被測軟體看出一個黑盒子,只考慮系統的輸入和輸出,完全不考慮程式內部的邏輯結構和處理過程。
            黑盒測試的依據是開發各階段的需求規格說明。
        b.白盒測試:
            白盒測試是將黑盒子開啟,研究原始碼和程式內部的邏輯結構;
    
    按照是否需要執行被測軟體分類:
        a.靜態測試:
            又稱為靜態分析,是不實際執行被測軟體,而是直接分析軟體的形式和結構,查詢缺陷。
            主要包括對原始碼、程式介面和各類文件及中間產品所做的測試。
        b.動態測試:
            又稱為動態分析,是指需要實際執行被測軟體,通過觀察程式執行時所表現出來的狀態、行為等發現軟體缺陷。
            包括在程式執行時,通過有效的測試用例來分析被測程式的執行情況或進行跟蹤對比,發現程式所表現的行為
            與設計規格或客戶需求不一致的地方。
        c.按照測試階段分類:
            a.單元測試:模組測試。
            b.整合測試:組裝測試。
            c.確認測試:有效性測試。
            e.系統測試:驗證系統是否達標。
            f.驗收測試:接受測試。
        d.按照是否需要人工干預分類:
            手工測試:
            自動測試:
        e.其他測試
        
7.軟體測試的基本原則
    a.儘早地並不斷地進行軟體測試
    b.程式設計師或程式設計機構應避免測試自己的程式
    c.測試用例中不僅要有輸入資料,還要有與之對應的預期結果
    d.測試用例的設計不僅要有合法的輸入資料,還要有非法的輸入資料
    e.在對程式進行修改之後要進行迴歸測試
    f.程式中尚未發現的錯誤的數量通常與該程式中已發現的錯誤的數量成正比
    h.妥善保留測試計劃、全部測試用例、出錯統計和最終分析報告,並把他們作為軟體的組成部分之一,為維護提供方便。
    i.應當對每一個測試結果做全面的檢查
    j.嚴格執行測試計劃,排除測試的隨意性。

8.白盒測試
    8.1 白盒測試的概念
        白盒測試,又稱為結構測試或邏輯驅動測試,是一種透明的測試技術,它是以程式的內部邏輯結構為基礎來設計測試用例的。
    8.2 白盒測試的原則
        a.保證程式中每一獨立的路徑至少執行一次;
        b.保證所有判定的每一個分支至少執行一次;
        c.保證每個判定表示式中每個條件的所有可能結果至少出現一次;
        d.保證每一迴圈都在邊界條件和一般條件至少個執行一次;
        e.驗證所有內部資料結構的有效性;
    8.3 白盒測試技術
        邏輯覆蓋
            邏輯覆蓋,是指設計測試用例對程式的內部分支邏輯結構進行部分或全部覆蓋的技術。
            邏輯覆蓋由弱到強的幾種覆蓋技術:
            a.語句覆蓋
                語句覆蓋是指設計足夠多的測試用例,使程式中的每條語句至少執行一次;
            b.判定覆蓋
                判定覆蓋是指設計足夠多的測試用例,使每個判定的每種可能結果都至少出現一次,也就是
                使每個判定的每個分支都至少自行一次。
                判定覆蓋也稱為分支覆蓋。
            c.條件覆蓋
                條件覆蓋是指設計足夠多的測試用例,使每個表示式中的每個條件的每種可能值都至少出現一次。
            d.判定/條件覆蓋
            e.條件組合覆蓋
            f.路徑覆蓋
        基本路徑
        迴圈覆蓋
        
    8.4 黑盒測試技術
        a.黑河測試,又稱功能測試或資料驅動測試,是在已知軟體產品應該具有的功能的情況下,通過測試來檢驗是否
        每個功能都能正常使用的測試。
        b.黑盒測試主要測試的錯誤型別:
            不正確或遺漏的功能;
            介面錯誤;
            效能錯誤;
            資料結構或外部資料訪問錯誤;
            初始化或終止條件錯誤等。
        c.黑盒測試用例設計方法:
            等價類劃分;
            邊界值分析;
            因果圖法;
            錯誤推測法;

9.軟體測試階段
    a.單元測試
        單元測試的測試物件是經過軟體設計並編碼的一個個程式模組。
        單元測試的主要依據是程式程式碼和詳細設計文件;
        單元測試可以並行進行;
    b.整合測試
        整合測試是在單元測試的基礎上,按照系統設計要求把通過單元測試的單元模擬逐步組裝與測試,
        最後組裝成一個完整的軟體系統的測試過程。
        整合測試的方式:
            非增量整合方式:將經過單元測試的所有模組一次性地全部組裝起來,然後進行整體測試,最後得到所要求的的軟體系統。
            增量整合方式:將經過單元測試的模組逐步組裝成較大的系統,一邊組裝,一邊測試,以便發現模組間與介面有關的問題。
                自頂向下整合、自底向上整合。
    c.確認測試
        確認測試又稱為有效性測試,任務是驗證軟體的功能和效能及其他特性是否與使用者的要求一致。
    d.系統測試
        系統測試是指將通過確認測試的軟體,作為整個基於計算機系統的一個元素,與計算機硬體、外設、某些支援軟體、資料和
        人員等其他系統元素結合在一起,在實際執行環境下,對計算機系統進行一系列的組裝測試和確認測試。
        系統測試的型別:
            恢復測試:
            安全性測試:
            強度測試:
            效能測試:
    
    e.驗收測試
        驗收測試是軟體開發結束後,軟體產品投入實際應用以前進行的最後一次質量檢驗活動,是以使用者為主,軟體開發人員和質量保證人員
        也參加的測試。