隨機測試

隨機測試

軟體測試中除了根據測試用例和測試說明書進行測試外,還需要進行隨機測試(Ad-hoctesting),主要是根據測試者的經驗對軟體進行功能和性能抽查。

簡介


隨機測試
隨機測試
隨機測試是根據測試說明書執行用例測試的重要補充手段,是保證測試覆蓋完整性的有效方式和過程。隨機測試主要是對被測軟體的一些重要功能進行複測,也包括測試那些當前的測試用例(TestCase)沒有覆蓋到的部分。另外,對於軟體更新和新增加的功能要重點測試。重點對一些特殊點情況點、特殊的使用環境、併發性、進行檢查。尤其對以前測試發現的重大Bug,進行再次測試,可以結合回歸測試(Regressivetesting)一起進行。理論上,每一個被測軟體版本都需要執行隨機測試,尤其對於最後的將要發布的版本更要重視隨機測試。隨機測試最好由具有豐富測試經驗的熟悉被測軟體的測試人員進行測試。對於被測試的軟體越熟悉,執行隨機測試越容易。只有不斷的積累測試經驗,包括具體的測試執行和對缺陷跟蹤記錄的分析,不斷總結,才能提高。

定義步驟


軟體測試即為了發現程序中的錯誤而執行程序的過程。軟體測試是幫助識別開發完成(中間或最終的版本)的計算機軟體(整體或部分)的正確度(correctness)、完全度(completeness)和質量(quality)的軟體過程;是SQA(softwarequalityassurance)的重要子域。軟體測試主要工作內容是驗證(verification)和確認(validation),下面分別給出其概念:

驗證

驗證(verification)是保證軟體正確地實現了一些特定功能的一系列活動,即保證軟體做了你所期望的事情(Do it right)。確定軟體生存周期中的一個給定階段的產品是否達到前階段確立的需求的過程;程序正確性的形式證明,即採用形式理論證明程序符號設一計規約規定的過程;評市、審查、測試、檢查、審計等各類活動,或對某些項處理、服務或文件等是否和規定的需求相一致進行判斷和提出報告。

確認

確認(validation)是一系列的活動和過程,目的是想證實在一個給定的外部環境中軟體的邏輯正確性。即保證軟體以正確的方式來做了這個事件(Do the right thing) 靜態確認,不在計算機上實際執行程序,通過人工或程序分析來證明軟體的正確性;
動態確認,通過執行程序做分析,測試程序的動態行為,以證實軟體是否存在問題。
軟體測試的對象不僅僅是程序測試,軟體測試應該包括整個軟體開發期問各個階段所產生的文檔,如需求規格說明、概要設計文檔、詳細設計文檔,當然軟體測試的主要對象還是源程序。

目標

測試是為了發現程序中的錯誤而執行程序的過程;
好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案;
成功的測試是發現了至今為止尚未發現的錯誤的測試。

相關說明


隨機測試演演算法實例
隨機測試演演算法實例
在軟體測試中除了根據測試用例和測試說明書進行測試外,還需要進行隨機測試(Ad-hoctesting)。隨機測試主要是根據測試者的經驗對軟體進行功能和性能抽查。隨機測試是根據測試說明書執行用例測試的重要補充手段,是保證測試覆蓋完整性的有效方式和過程。隨機測試有這樣一些缺點:測試往往不太真實;
不能達到一定的覆蓋率;
許多測試都是冗餘的;
需要使用同樣的隨機數種子才能重建測試。

基本原則


測試的原則: 1、應把“儘早和不斷地進行軟體測試”作為軟體開發者的座右銘,實踐證明單元測試能夠儘早發現問題,減少後期測試的錯誤量。可以採用Junit和Jtest來輔助進行單元測試。 2、測試用例應由測試輸入數據、測試執行步驟和與之對應的預期輸出結果三部分組成。
3、應當避免由程序員檢查自己的程序。(指後期系統測試階段,不包括單元測試)
4、測試用例的設計要確保能覆蓋所有可能路徑。在設計測試用例時,應當包括合理的輸入條件和不合理的輸入條件。不合理的輸入條件是指異常的,臨界的,可能引起問題的輸入條件。
5、充分注意測試中的群集現象。經驗表明,測試后程序殘存的錯誤數目與該程序中已發現的錯誤數目或檢錯率成正比。應該對錯誤群集的程序段進行重點測試。
6、嚴格執行測試計劃,排除測試的隨意性。測試計劃應包括:所測軟體的功能,輸入和輸出,測試內容,各項測試的進度安排,資源要求,測試資料,測試工具,測試用例的選擇,測試的控制方法和過程,系統的配置方式,跟蹤規則,調試規則,以及回歸測試的規定等等以及評價標準。
7、應當對每一個測試結果做全面的檢查。
8、妥善保存測試計劃,測試用例,出錯統計和最終分析報告,為維護提供方便。
軟體測試的對象:軟體測試並不單純等同於程序測試。軟體測試應該貫穿整個軟體定義與開發整個期間。因此需求分析、概要設計、詳細設計以及程序編碼等各階段所得到的文檔,包括需求規格說明、概要設計規格說明、詳細設計規格說明以及源程序,都應該是軟體測試(評審)的對象。在對需求理解與表達的正確性、設計與表達的正確性、實現的正確性以及運行的正確性的驗證中,任何一個環節發生了問題都可能在軟體測試中表現出來。

術語解釋


branchcoverage--分支覆蓋
軟體偽隨機測試生成方法
軟體偽隨機測試生成方法
通過測試執行到的分支的百分比。 branchoutcome--分支結果 見判定結果(decisionoutcome)
branchpoint--分支點
見判定(decision)
branchtesting--分支測試
通過執行分支結果來設計測試用例的一種方法。
BreadthTesting--廣度測試
在測試中測試一個產品的所有功能,但是不測試更細節的特性。
bug--缺陷
capture/playbacktool--捕獲/回放工具
參考capture/replaytool
Capture/ReplayTool--捕獲/回放工具
一種測試工具,能夠捕獲在測試過程中傳遞給軟體的輸入,並且能夠在以後的時間中,重複這個執行的過程。這類工具一般在GUI測試中用的較多。
CASE--計算機輔助軟體工程(computeraidedsoftwareengineering)
用於支持軟體開發的一個自動化系統。
偽隨機測試生成在混合電路參數測試中
偽隨機測試生成在混合電路參數測試中
CAST--計算機輔助測試 在測試過程中使用計算機軟體工具進行輔助的測試。
cause-effectgraph--因果圖
一個圖形,用來表示輸入(原因)與結果之間的關係,可以被用來設計測試用例。
certification--證明
一個過程,用於確定一個系統或組件與特定的需求相一致。
changecontrol--變更控制
一個用於計算機系統或系統數據修改的過程,該過程是質量保證程序的一個關鍵子集,需要被明確的描述。
codeaudit--代碼審計
由一個人、組或工具對源代碼進行的一個獨立的評審,以驗證其與設計規格、程序標準的一致性。正確性和有效性也會被評價。
CodeCoverage--代碼覆蓋率
一種分析方法,用於確定在一個測試套執行后,軟體的哪些部分被執行到了,哪些部分沒有被執行到。
CodeInspection--代碼檢視
一個正式的同行評審手段,在該評審中,作者的同行根據檢查表對程序的邏輯進行提問,並檢查其與編碼規範的一致性。
CodeWalkthrough--代碼走讀
一個非正式的同行評審手段,在該評審中,代碼被使用一些簡單的測試用例進行人工執行,程序變數的狀態被手工分析,以分析程序的邏輯和假設。
code-basedtesting--基於代碼的測試
根據從實現中引出的目標設計測試用例。
codingstandards--編程規範
一些編程方面需要遵循的標準,包括命名方式、排版格式等內容。