1. 程式人生 > >軟體測試基礎知識(摘)

軟體測試基礎知識(摘)

一、軟體測試基本概念

  1.軟體=程式+文件,軟體測試=程式測試+測試文件。

  “軟體”是指能夠實現某種功能的指令集合,“文件”是指軟體在開發、使用和維護過程中產生的圖文集合。

  2.軟體分類

    按功能分:系統軟體、應用軟體

    按技術架構分:單機版軟體、C/S結構軟體、B/S結構軟體(B指瀏覽器)

    按使用的使用者分:產品軟體、專案軟體

    按規模分:小型、中型、大型

  3.BUG的定義

    軟體的BUG指軟體(包括程式和文件)中不符合客戶需求的問題。常見三類BUG:完全沒有實現的功能;基本實現了客戶需求的功能;實現了使用者不需求的功能。

  4.測試環境的分類:軟體開發環境,軟體生產執行環境。測試環境=軟體+網路+硬體,搭建環境:真實、乾淨、無毒、獨立。

  5.測試用例:指在測試執行之前設計的一套詳細的測試方案,包括測試環境、測試步驟、測試資料和及其結果!測試用例=輸入+輸出+測試環境。測試用例有兩個模板,word和excel,前者適合效能測試,後者適合功能測試。

二、軟體測試分類

  1.黑盒測試:把被測得軟體當作一個盒子,我們不用去關心盒子裡面是什麼樣子的,只需要放東西再取出東西,就像在測試時只關心軟體的輸入資料和輸出結果。

  2.百合測試:需要我們瞭解盒子裡面是什麼樣的,去研究裡面的原始碼和程式結構。

  3.靜態測試:不實際執行被測軟體,而只是檢查程式程式碼、介面或文件中可能存在的錯誤。

  4.動態測試:實際執行程式碼,輸入相應的測試資料,檢查實際輸出結果和預期結果是否相符。判斷一個測試是動態測試還是靜態測試,就可以看它是否運行了程式。

  注:同一個測試,既有可能屬於黑盒測試,也有可能屬於動態測試;既有可能屬於靜態測試,也有可能屬於白盒測試。他們之間有可能會交叉。

  5.單元測試:編譯執行程式->靜態測試->動態測試

  6.整合測試:單元測試的下一個階段,指通過測試的單元模組組裝成系統或者子系統,再進行測試,重點測試不同模組的介面處。

  7.系統測試:將這個軟體系統看做一個整體進行測試,包括對功能、效能,以及軟體所執行的軟硬體環境進行測試。

  8.驗收測試:在系統測試後期,以使用者測試為主,或有測試人員等質量保障人員共同參與測試,它也是軟體正式交給使用者使用的最後一道工序。

    驗收測試又分為α測試和β測試,α測試是指由使用者、測試人員、開發人員等共同參與的內部測試。β測試指在內測之後的公測,完全交給終端使用者測試。

  9.功能測試:是黑盒測試的一種,它檢查軟體的功能是否符合使用者的需求。功能測試又可細分很多種:邏輯功能測試、介面測試、易用性測試、安裝測試、相容性測試等。

  10.效能測試:它包括很多方面,主要分時間效能和空間效能測試兩種。時間效能:主要指軟體的一個具體事務的相應時間。空間效能:主要指軟體執行時所消耗的系統資源。

  軟體效能測試分一般性測試、穩定性測試、負載測試和壓力測試。

    一般性測試:指讓被測系統在正常的軟硬體環境下執行,不向其施加任何壓力的測試。

    穩定性測試:即可靠性測試,是指連續執行內測系統,檢測系統執行時的穩定程度。我們常用MTBF(錯誤發生的平均時間間隔)來衡量系統的穩定性,越大穩定性越強。

    負載測試:通常指被測系統在其能忍受的極限範圍內連續執行,來測試系統的穩定性。

    壓力測試:指連續不斷地給被測系統增加壓力,知道被測系統被壓垮為止,用來測試系統能承受的最大的壓力。

    假設一個很輕鬆的就能被一袋大米,背兩袋米很吃力,最多就能背三袋,那麼:

    一般性測試:我就讓他背一袋米。

    穩定性測試:讓他背一袋米,但讓他去操場上跑圈,看你多久累倒。

    負載測試:讓他背兩袋米去操場跑圈,看他多久累倒。

    壓力測試:讓他背兩袋米、三袋米、四袋米。。。最後發現他最多就能背三袋米。

  11.迴歸測試:指對軟體的新版本測試時,重複上一個版本的測試用例。

  12.冒煙測試:在對新版本進行大規模的測試之前,先驗證一下軟體的基本功能是否還存在,是否具備可測性。

  13.隨機測試:指測試中所有的輸入資料都是隨機生成的,真實意圖是模擬使用者的真實操作,並發現一些邊緣的問題。

三、測試工程師

  1.具備的基本職業素質:三心二意一能力。三心:細心、耐心、信心;二意:服務意識、團隊意識;一能力:溝通能力。

  2.如何成為一名優秀的測試工程師:

    內功:即基礎知識,包括計算機硬體、網路、作業系統、資料庫等。

    測試技術:黑盒測試中等階類、邊界值、因果圖等,白盒測試中的語句覆蓋、分支覆蓋、路徑覆蓋等。

    不斷學習充電、閱讀原版書籍、閱讀缺陷管理系統中的系統報告、閱讀高手寫的測試用例、學習產品相關的業務知識。

  3.SQA:軟體質量保障,CMM是SQA用來監督專案的一個標準質量模型,SQA按照它上面的各種規則來檢驗各種各樣的專案。CMM:能力成熟度模型。

  4.軟體測試的原則:

    1)zero bug:指軟體沒有一個bug。(沒有bug是不可能的,我們只能想方設法把bug數量控制在看忍受的範圍之內。)

     good enough:指只要軟體達到一定的質量要求時,就可以停止測試了。

    2)不要試圖窮舉測試。

    3)開發人員既不是運動員也不是裁判員。

    4)軟體測試要儘早執行。

    5)軟體測試應該追溯需求。

    6)缺陷的二八定理:缺陷的叢集現象或是蟲子窩現象。

    7)缺陷具有免疫性。

  5.BUG的分類

    BUG嚴重級別:Severity,指因缺陷引起的故障對軟體產品的影響程度。由測試人員指定。

    A:這類BUG導致了宕機、產品失敗(“崩潰”)、系統無法操作等。

    B:功能未實現或導致一個特性不能執行並且不可能有代替方案(包括計算錯誤)。

    C:導致一個特性不能執行但有一個替代方案。

    D:BUG是表面化或微小的(提示資訊不太準確友好、錯別字、UI佈局或罕見故障等),對功能幾乎沒有影響,產品及屬性仍可使用。

    E:建設性的建議或意見。

    BUG優先順序:指缺陷必須被修復的緊急程度。由BUG分配者(開發組組長/經理)指定。

    5:立即進行修復,阻止與此密切相關功能的進一步測試。

    4:必須修改,發版前必須修改。

    3:必須修改,不一定馬上修改。

    2:如果時間允許應該修改。

    1:允許不修改。

  6.缺陷型別(TYPE):根據缺陷的自然屬性劃分的缺陷種類。

    bulid:由於配置庫、變更管理或版本控制引起的錯誤。

    data :資料、資料庫、計算錯誤等。

    function:影響了重要的特性、產品介面、硬體結構介面和全域性資料結構。如邏輯、指標、迴圈、遞迴、功能等缺陷。

    interface:與其他元件、模組或裝置驅動程式、呼叫引數、控制塊或引數列表相互影響的介面缺陷。

    performance:不滿足系統可測量的屬性值,如:執行時間,事務處理效率等。

    reqiurement:需求方面缺陷,如:不明確、錯誤、考慮不全面等。

    user Interface:人機互動介面:螢幕格式,頁面排版、控制元件位置等方面的缺陷。

    其它:未知錯誤。

  7.BUG狀態(STATUS)

    指缺陷經過一個修復過程中的進展情況。包括Open、Fixed、Closed及Postponed等狀態。

    Open:測試人員提交新發現的問題所使用的標誌。或者是任務分配人對該問題準備進行修改並對個問題分修改人員所使用的標誌。對沒有進入此狀態的BUG,程式設計師不用管。

    Fixed:為開發人員修改問題後做標誌的狀態,修改後還未測試。

    Closed:為測試人員對修改問題進行驗證後通過所標誌的狀態。由測試人員改變。

    Postponed:1.由於開發時間、進度、重要程度或者技術、設計、需求等方面的原因,認為不能解決、需延遲解決、或本版本不做解決,待到後續版本再來解決。2.因設計結構問題無法修改。測試人員認為它不符合邏輯、也不符合使用者的要求,但開發人員則認為死按照設計做的、只能做如此處理,否則修改代價太大,這種問題可以拖後處理。

    duplicated:BUG被重複提交。

    Not error :測試人員理解錯,不是BUG。

  8.提交BUG注意事項:確保重現、要用最少且必要的步驟描述BUG、簡潔準確完整、一個BUG一個報告。

  9.常見的BUG管理工具:TD、Track Record、Clearquest、Bugzilla、Mantis、JIRA。

四、軟體測試工具簡介

  1.一般軟體測試工具:黑盒測試工具、百合測試工具、測試管理工具。

  2.MI loadrunner:效能測試。MI winrunner:功能測試。MI testdiretor:測試管理工具。MI QTP:功能測試工具