1. 程式人生 > >《軟體工程》-軟體測試

《軟體工程》-軟體測試

【前言】
軟體測試的目的和原則
軟體測試的過程和策略
軟體測試用例設計
軟體測試種類
程式除錯
【內容】
1.軟體測試目的
(1)測試是程式的執行過程,目的在於發現錯誤;
(2)一個好的測試用例在於能發現至今未發現的錯誤;
(3)一個成功的測試是發現了至今未發現的錯誤的測試。
2.軟體測試的原則
(1)應當把“儘早地和不斷地進行軟體測試”作為軟體開發者的座右銘。
(2)測試用例應由測試輸入資料和對應的預期輸出結果這兩部分組成。
(3)程式設計師應避免檢查自己的程式。
(4)在設計測試用例時,應當包括合理的輸入條件和不合理的輸入條件。
3.測試資訊流
在這裡插入圖片描述
輸入:軟體配置、測試配置、測試工具
輸出:測試結果分析、排錯(除錯)、修正後的文件再測試
4.測試過程


是依相反順序安排的自底向上,逐步整合的過程。
在這裡插入圖片描述
5.測試用例設計
(1)黑盒測試和白盒測試
黑盒測試(功能測試):這種方法是把測試物件看做一個黑盒子,檢查程式的功能是否符合它的功能說明。
白盒測試(結構測試):此方法把測試物件看做一個透明的盒子,對程式所有邏輯路徑進行測試。
(2)邏輯覆蓋
它屬於白盒測試,邏輯覆蓋是以程式內部的邏輯結構為基礎的設計測試用例的技術。
1)語句覆蓋
語句覆蓋就是設計若干個測試用例,執行被測程式,使得每一可執行語句至少執行一次。
2)判定覆蓋
判定覆蓋就是設計若干個測試用例,執行被測程式,使得程式中每個判斷的取真分支和取假分支至少經歷一次。

3)條件覆蓋
條件覆蓋就是設計若干個測試用例,執行被測程式,使得程式中每個判斷的每個條件的可能取值至少執行一次。

4)判定-條件覆蓋
判定-條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執行一次,同時每個判斷中的每個條件的可能取值至少執行一次。

5)條件組合覆蓋
條件組合覆蓋就是設計足夠的測試用例,執行被測程式,使得每個判斷的所有可能的條件取值組合至少執行一次。
6)路徑覆蓋
路徑測試就是設計足夠的測試用例,覆蓋程式中所有可能的路徑。
6.軟體測試的策略
測試過程按4個步驟進行,即單元測試、組裝測試、確認測試和系統測試。
在這裡插入圖片描述
(1)單元測試
又稱模組測試,是針對軟體設計的最小單位-程式模組,進行正確性檢驗的測試工作。
單元測試的內容
在這裡插入圖片描述
單元測試的步驟
測試模組時,同時要考慮他和外界的聯絡,用一些輔助模組去模擬與被測模組相聯絡的其它模組。
在這裡插入圖片描述


部分常見錯誤清單
(一)、模組介面檢查表
1)模組接受的輸入引數個數與模組的變元個數是否一致?
2)引數與變元的屬性是否匹配
3)引數與變元所用的單位是否一致?
4)傳遞給被呼叫模組的變元的數目是否等於那個模組的引數的數目?
5)傳遞給被呼叫模組的變元屬性和引數的屬性是否一致?
6)傳遞給被呼叫模組的變元的單位和該模組引數的單位是否一致?
7)傳遞給內部函式的變元屬性、數目和次序是否正確?
8)是否修改了知識作為輸入用的變元?
9)全程變數的定義在各個模組中是否一致?
10)有沒有把常數當作變數來傳遞?
(二)、完成外部輸入/輸出時的檢查表
1)檔案屬性是否正確?
2)OPEN語句是否正確?
3)格式說明與輸入/輸出語句給出的資訊是否一致?
4)緩衝區容量與記錄長度是否一致?
5)在進行讀寫操作之前是否打開了檔案?
6)對結束檔案條件的判斷和處理是否正確?
7)對輸入/輸出錯誤的處理是否正確?
8)有沒有輸出資訊中有正文錯誤?
(三)、模組區域性資料結構檢查表
1)不正確或不一致說明?
2)錯誤的初始值或錯誤的預設值?
3)變數名拼寫錯或縮寫錯?
4)不相容的資料型別?
5)下溢、上溢或時地址錯誤?
(2)組裝測試
通常,把模組組裝成為系統的方式有兩種:
1)一次性組裝方式
在這裡插入圖片描述
2)增殖式組裝方式
a.自頂向下的增殖方式
b.自底向上的增殖方式
c.混合增殖式測試
(3)確認測試
又稱有效性測試。任務是驗證軟體的功能和效能及其它特性是否與使用者的要求一致。
在這裡插入圖片描述
1)進行有效性測試(黑盒測試)
有效性測試就是在模擬的環境(可能就是開發的環境)下,運用黑盒測試的方法,驗證被測軟體是否滿足需求規格說明書列出的需求。
2)軟體配置複查
軟體配置複查的目的是保證;
軟體配置的所有成分都齊全;
各方面的質量都符合要求;
具有維護階段所必需的細節;
而且已經編排好分類的目錄。
(4)系統測試
系統測試,是將通過確認測試的軟體,作為整個基於計算機系統的一個元素,與計算機硬體、外設、某些支援軟體、資料和人員等其它系統元素結合在一起,在實際執行環境下,對計算機系統進行一系列的組裝測試和確認測試。
7.測試種類
軟體測試是由一系列不同的測試組成。主要目的是對以計算機為基礎的系統進行充分的測試。
(1)功能測試
功能測試是在規定的一段時間內執行軟體系統的所有功能,以驗證這個軟體系統有無嚴重錯誤。
(2)可靠性測試
如果系統需求說明書中有對可靠性的要求,則需進行可靠性測試。
(3)強度測試
強度測試是要檢查在系統執行環境不正常乃至發生故障的情況下,系統可以執行到何種程度的測試。
(4)效能測試
效能測試是要檢查系統是否滿足在需求說明書中規定的效能。特別是對於實時系統或嵌入式系統。
(5)恢復測試
恢復測試是要證實在克服硬體故障(包括掉電、硬體或網路出錯等)後,系統能否正常地繼續進行工作,並不對系統造成任何損害。
(6)啟動/停止測試
這類測試的目的是驗證在機器啟動及關機階段,軟體系統正確處理的能力。
(7)配置測試
這類測試是要檢查計算機系統內各個裝置或各種資源之間的相互聯結和功能分配中的錯誤。
(8)安全性測試
安全性測試是要檢驗在系統中已經存在的系統安全性、保密性措施是否發揮作用,有無漏洞。
(9)可使用性測試
可使用性測試主要從使用的合理性和方便性等角度對軟體系統進行檢查,發現人為因素或使用上的問題。
(10)可支援性測試
這類測試是要驗證系統的支援策略對於公司與使用者方面是否切實可行。
(11)安裝測試
安裝測試的目的不是找軟體錯誤,而是找安裝錯誤 。
(12)過程測試
在一些大型的系統中,部分工作由軟體自動完成,其它工作則需由各種人員,終端使用者等,按一定規格同計算機配合,靠人工來完成。
(13)互連測試
互聯測試是要驗證兩個或多個不同的系統之間的互連性 。
(14)相容性測試
這類測試主要想驗證軟體產品在不同版本之間的相容性 。
(15)容量測試
容量測試是要檢驗系統的能力最高能達到什麼程度。
在使系統的全部資源達到“滿負荷”的情形下,測試系統的承受能力。
(16)文件測試
這種測試是檢查用文件(如使用者手冊)的清晰性和精確性。
8.除錯
軟體除錯時在進行了成功的測試之後才開始的工作。它與軟體測試不同,除錯的任務是進一步診斷和改正程式中潛在的錯誤。
除錯的步驟
(1)從錯誤的外部表現形式入手,確定程式中出錯位置;
(2)研究有關部分的程式,找出錯誤的內在原因;
(3)修改設計和程式碼,以排除這個錯誤;
(4)重複進行暴露了這個錯誤的原始測試或某些有關測試。
幾種主要的除錯方法
除錯的關鍵在於推斷程式內部的錯誤位置及原因。可以採用以下方法:
(1)強行排錯
這種除錯方法目前使用較多,效率較低。它不需要過多的思考,比較省腦筋。
(2)回溯法除錯
這是在小程式中常用的一種有效的除錯方法。
一旦發現了錯誤,人們先分析錯誤徵兆,確定最先發現“症狀”的位置。
(3)歸納法除錯
歸納法除錯的基本思想是:從一些線索(錯誤徵兆)著手,通過分析它們之間的關係來找出錯誤。
收集資料的方法:
常以3W1H形式組織可用的資料:
“What”列出一般現象;
“Where”說明發現現象的地點;
“When”列出現象發生時所有已知情況;
“How”說明現象的範圍和量級。
在這裡插入圖片描述
(4)演繹法除錯
演繹法是一種從一般原理或前提出發,經過排除和精化的過程來推匯出結論的思考方法。
在這裡插入圖片描述
9.除錯原則
在除錯方面,許多原則本質上是心理學方面的問題。除錯由兩部分組成,除錯原則也分成兩組。
(1)確定錯誤的性質和位置的原則
用頭腦去分析思考與錯誤徵兆有關的資訊;
避開死衚衕;
只把除錯工具當做輔助手段來使用;
避免用試探法,最多隻能把它當做最後手段。
(2)修改錯誤的原則
在出現錯誤的地方,很可能還有別的錯誤;
當心修正一個錯誤的同時有可能會引入新的錯誤。
10.測試分析報告
1.引言
1.1編寫目的
1.2專案背景
1.3定義
1.4參考資料
2.測試計劃執行情況
2.1測試專案
2.2測試機構和人員
2.3測試結果
3.軟體需求測試結論
4.評價
4.1軟體能力
4.2缺陷和限制
4.3建議
4.4測試結論