選擇黑盒測試用例設計方法的綜合策略

自動化測試老莫 發佈 2022-08-01T20:30:59.935011+00:00

前言具體的黑盒測試用例設計方法包括等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、判定表驅動法、正交試驗設計法、功能圖法、場景法等。這些方法都是比較實用的,但在具體工作中要採用什麼方法,需要針對項目的特點加以適當的選擇。

前言

具體的黑盒測試用例設計方法包括等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、判定表驅動法、正交試驗設計法、功能圖法、場景法等。這些方法都是比較實用的,但在具體工作中要採用什麼方法,需要針對項目的特點加以適當的選擇。在實際高水平的測試中,往往需要綜合使用各種方法以有效地提高測試效率和測試覆蓋度。

  以下介紹的是各種測試用例設計方法選擇的綜合策略,供大家參考。

  (1)首先進行等價類劃分,包括輸入條件和輸出條件的等價劃分,將無限測試變成有限測試,這是減少工作量和提高測試效率最有效的方法。

  (2)在任何情況下,都必須使用邊界值分析法。經驗表明,用這種方法設計出的測試用例發現程序錯誤的能力最強。

  (3)可以使用錯誤推測法追加一些測試用例,這需要依靠測試工程師的智慧和經驗。

  (4)對照程序邏輯,檢查已設計出的測試用例的邏輯覆蓋程度。如果沒有達到要求的覆蓋標準,應當再補充足夠的測試用例。

  (5)如果程序的功能說明中含有輸入條件的組合情況,則一開始就可以選用因果圖法和判定表驅動法。

  (6)對於參數配置類的軟體,要用正交試驗法選擇較少的組合方式達到最佳效果。

  (7)利用功能圖法,我們可以通過不同時期條件的有效性設計不同的測試數據。

  (8)對於業務流程清晰的系統,可以利用場景法貫穿整個測試案例設計過程,在案例中綜合使用各種測試方法。



黑盒測試方法揭密

一、黑盒測試在快速應用開發(rad)環境中的重要作用


  軟體測試方法一般分為兩種:白盒測試與黑盒測試。其中,白盒測試又稱為結構測試、邏輯驅動測試或基於程序本身的測試,著重於程序的內部結構及算法,通常不關心功能與性能指標。黑盒測試又被稱為功能測試、數據驅動測試或基於規格說明的測試,實際上是站在最終用戶的立場上,檢驗輸入輸出信息及系統性能指標是否符合規格說明書中有關功能需求及性能需求的規定。


  隨著rad環境的發展,軟體工程面臨新的挑戰,其中包括:


  ●應用系統的規模越來越龐大,結構越來越複雜;

  ●開發團隊人員越來越多,分工越來越細;

  ●項目投資日益提高,導致投資風險增大。


  在這樣一種背景下,軟體質量面臨著更大的危機,而解決問題的關鍵正是黑盒測試,可是由於傳統的黑盒測試往往局限於手工測試,憑藉工程人員的經驗自發地進行,缺乏嚴格的測試管理機制,因而效果並不明顯。


  在分發一個應用系統之前,若沒有經過科學、周密的黑盒測試,就相當於將大量隱含的缺陷(defect)交付到最終用戶手中,這對於開發團隊自身、項目投資方及最終用戶來說都是不負責任的表現,也將嚴重損害三方的利益。


  今天,軟體的質量要求越來越受到重視,在對軟體的質量監督中,黑盒測試起著重要的、不可替代的作用;而隨著軟體開發平台及軟體設計思想的進步和發展,特別是rad技術的發展,對黑盒測試提出了更明確的要求,人們發現,必須遵循一定的測試理論,依賴於優秀的測試工具,才能進行科學、完備的測試。


  二、黑盒測試的操作步驟


  在傳統的軟體開發生命周期當中,測試工作往往被擱置到整個開發過程的後期進行,也就是說,當應用程式的編碼工作已經基本完成,才開始進行測試,這樣做的缺點在於:


  a)由於應用程式龐大而複雜,測試工作千頭萬緒,測試人員難以組織科學、全面的測試用例,從而大幅度提高了測試成本,並嚴重影響測試的全面性和有效性;

  b)由於缺陷所涉及的模塊從開發到測試之間的時間間隔較長,使得程式設計師的修改和維護工作要付出更大的代價;

  c)由於受到分發日期的限制,測試工作往往是在忙碌中結束的,而將大量的缺陷遺留給最終用戶,也就是說,真正的測試工作實際上是由最終用戶來完成的。

  因此,為了保證測試工作科學、精確、全面、有序地進行,應該採取一邊開發一邊測試的策略,使得開發工作與測試工作平行進行,這也就是俗話所說的「越早測試越好」的概念。


一套完整的測試應該由五個階段組成:


  1.測試計劃

  首先,根據用戶需求報告中關於功能要求和性能指標的規格說明書,定義相應的測試需求報告,即制訂黑盒測試的最高標準,以後所有的測試工作都將圍繞著測試需求來進行,符合測試需求的應用程式即是合格的,反之即是不合格的;同時,還要適當選擇測試內容,合理安排測試人員、測試時間及測試資源等。


  2.測試設計

  將測試計劃階段制訂的測試需求分解、細化為若干個可執行的測試過程,並為每個測試過程選擇適當的測試用例(測試用例選擇的好壞將直接影響到測試結果的有效性)。


  3.測試開發

  建立可重複使用的自動測試過程。


  4.測試執行

  執行測試開發階段建立的自動測試過程,並對所發現的缺陷進行跟蹤管理。測試執行一般由單元測試、組合測試、集成測試、系統聯調及回歸測試等步驟組成,測試人員應本著科學負責的態度,一步一個腳印地進行測試。


  5.測試評估

  結合量化的測試覆蓋域及缺陷跟蹤報告,對於應用軟體的質量和開發團隊的工作進度及工作效率進行綜合評價。


  顯然,黑盒測試只有嚴格按照步驟進行,才可能對應用程式的質量進行把關。然而,如果沒有一種優秀的測試工具的幫助,單純憑藉手工測試,不但將耗費大量的人力、物力和財力,而且有很多測試工作是難以實現甚至是無法實現的。


  三、手工測試與自動測試的比較


  手工測試無法保證黑盒測試的科學性與嚴密性,這是因為:


  ●測試人員要負責大量文檔、報表的制訂和整理工作,會變得力不從心;

  ●受軟體分發日期、開發成本及人員、資源等諸多方面因素的限制,難以進行全面的測試;

  ●如果修正缺陷所花費的時間相當長,回歸測試將變得異常困難;

  ●對測試過程中發現的大量缺陷缺乏科學、有效的管理手段,責任變得含混不清,沒有人能向決策層提供精確的數據以度量當前的工作進度及工作效率;

  ●反覆測試帶來的倦怠情緒及其他人為因素使得測試標準前後不一,測試花費的時間越長,測試的嚴格性也就越低;

  ●難以對不可視對象或對象的不可視屬性進行測試。


  因此,自動測試成為最佳的解決方案。所謂自動測試,實際上是將大量的重複性工作交給計算機去完成,一個優秀的自動測試工具,不但可以滿足科學測試的基本要求,而且可以節約大量的時間、成本、人員和資源,並且測試腳本可以被重複利用(包括被不同的項目所利用)。


  另註:黑盒方面的自動化測試工具:


WinRunner,LoadRunner,Rational Robot,SilkTest,SilkPerformer等等。工具用下來覺得功能測試用Quick Test Pro,性能測試用Load Runner最好.



● 計算機的用途不同,對其部件的性能指標要求也有所不同。以科學計算為主的計算機,對(1) 要求較高,而且應該重點考慮 (2) 。

(1)A.外存儲器的讀寫速度 B.主機的運算速度

C. I/O設備的速度 D.顯示解析度

(2)A. CPU的主頻和字長,以及內存容量

B.硬碟讀寫速度和字長

C. CPU的主頻和顯示解析度

D.硬碟讀寫速度和顯示解析度


●(3是指按內容訪問的存儲器。

(3)A.虛擬存儲器 B.相聯存儲器

C.高速緩存(Cache) D.隨機訪問存儲器


● 處理機主要由處理器、存儲器和總線組成,總線包括 (4) 。

(4)A.數據總線、地址總線、控制總線 B.並行總線、串行總線、邏輯總線

C.單工總線、雙工總線、外部總線 D.邏輯總線、物理總線、內部總線



● 下面關於加密的說法中,錯誤的是 (5) 。

A. 數據加密的目的是保護數據的機密性

B.加密過程是利用密鑰和加密算法將明文轉換成密文的過程

C.選擇密鑰和加密算法的原則是保證密文不可能被破解

D.加密技術通常分為非對稱加密技術和對稱密鑰加密技術


● 下面關於防火牆功能的說法中,不正確的是(6) 。

(6)A.防火牆能有效防範病毒的入侵

B.防火牆能控制對特殊站點的訪問

C.防火牆能對進出的數據包進行過濾

D.防火牆能對部分網絡攻擊行為進行檢測和報警


● 下面關於漏洞掃描系統的敘述,錯誤的是 (7) 。

(7)A.漏洞掃描系統是一種自動檢測目標主機安全弱點的程序

B.黑客利用漏洞掃描系統可以發現目標主機的安全漏洞

C.漏洞掃描系統可以用於發現網絡入侵者

D.漏洞掃描系統的實現依賴於系統漏洞庫的完善


● 軟體工程每一個階段結束前,應該著重對可維護性進行覆審。在系統設計階段的覆審期間,應該從 (8)出發,評價軟體的結構和過程。

(8)A.指出可移植性問題以及可能影響軟體維護的系統界面

B.容易修改、模塊化和功能獨立的目的

C.強調編碼風格和內部說明文檔

D.可測試性


● 計算機感染特洛伊木馬後的典型現象是 (9) 。

(9)A.程序異常退出 B.有未知程序試圖建立網絡連接

C.郵箱被垃圾郵件填滿 D. Windows系統黑屏


● 關於軟體著作權產生的時間,下面表述正確的是 (10) 。

(10)A.自作品首次公開發表時

B.自作者有創作意圖時

C.自作品得到國家著作權行政管理部門認可時

D.自作品完成創作之日


● 程式設計師甲與同事乙在乙家探討甲近期編寫的程序,甲表示對該程序極不滿意,說要棄之重寫,並將程序手稿扔到乙家垃圾筒。後來乙將甲這一程序稍加修改,並署乙名發表。以下說法正確的是(11) 。

(11)A.乙的行為侵犯了甲的軟體著作權

B.乙的行為沒有侵犯甲的軟體著作權,因為甲已將程序手稿丟棄

C.乙的行為沒有侵犯甲的著作權,因為乙已將程序修改

D.甲沒有發表該程序並棄之,而乙將程序修改後發表,故乙應享有著作權


● 零件關係P(零件名,條形碼,供應商,產地,價格)中的 (12) 屬性可以作為該關係的主鍵。查詢產於西安且名稱為「P2」的零件,結果以零件名、供應商及零件價格分列表示,對應的SQL語句為:

SELECT零件名,供應商,價格

FROM P

WHERE零件名='P2' AND (13);

(12)A.零件名 B.條形碼 C.產地 D.供應商

(13)A.條形碼=西安 B.條形碼='西安'

C.產地=西安 D.產地='西安'


● 軟體風險一般包含 (14) 兩個特性。

(14)A.救火和危機管理 B.已知風險和未知風險

C.不確定性和損失 D.員工和預算


● 在採用面向對象技術構建軟體系統時,很多敏捷方法都建議的一種重要的設計活動是 (15),它是一種重新組織的技術,可以簡化構件的設計而無需改變其功能或行為。

(15)A.精化 B.設計類 C.重構 D.抽象


● 一個軟體開發過程描述了「誰做」 、 「做什麼」 、 「怎麼做」和「什麼時候做」 ,RUP用(16) 來表述「誰做」 。

(16)A.角色 B.活動 C.製品 D.工作流


● 瀑布模型表達了一種系統的、順序的軟體開發方法。以下關於瀑布模型的敘述中,正確的是 (17)。

(17)A.瀑布模型能夠非常快速地開發大規模軟體項目

B.只有很大的開發團隊才使用瀑布模型

C.瀑布模型已不再適合於現今的軟體開發環境

D.瀑布模型適用於軟體需求確定,開發過程能夠採用線性方式完成的項目


● 一個軟體系統的生存周期包含可行性分析和項目開發計劃、需求分析、設計(概要設計和詳細設計)、編碼、測試和維護等活動,其中 (18) 是軟體工程的技術核心,其任務是確定如何實現軟體系統。

(18)A.可行性分析和項目開發計劃 B.需求分析

C.設計 D.編碼


● 程序中常採用變量表示數據,變量具有名、地址、值、作用域、生存期等屬性。關於變量的敘述, (19)是錯誤的。

(19)A.根據作用域規則,在函數中定義的變量只能在函數中引用

B.在函數中定義的變量,其生存期為整個程序執行期間

C.在函數中定義的變量不能與其所在函數的形參同名

D.在函數中定義的變量,其存儲單元在內存的棧區


● 函數調用時,基本的參數傳遞方式有傳值與傳地址兩種, (20) 。

(20)A.在傳值方式下,形參將值傳給實參

B.在傳值方式下,實參不能是數組元素

C.在傳地址方式下,形參和實參間可以實現數據的雙向傳遞

D.在傳地址方式下,實參可以是任意的變量和表達式


● 已知某高級語言源程序A經編譯後得到機器C上的目標程序B,則 (21) 。

(21)A.對B進行反編譯,一般不能還原出源程序A

B.對B進行反彙編,不能得到與源程序A等價的彙編程序代碼

C.對B進行反編譯,得到的是源程序A的變量聲明和算法流程

D.對A和B進行交叉編譯,可以產生在機器C上運行的動態連結庫


● 下面關於程序語言的敘述,錯誤的是 (22) 。

(22)A.腳本語言屬於動態語言,其程序結構可以在運行中改變

B.腳本語言一般通過腳本引擎解釋執行,不產生獨立保存的目標程序

C. php、JavaScript屬於靜態語言,其所有成分可在編譯時確定

D. C語言屬於靜態語言,其所有成分可在編譯時確定


感謝每一個認真閱讀我文章的人!!!

如果下面這些資料用得到的話可以直接拿走:

1、自學開發或者測試必備的完整項目源碼與環境

2、測試工作中所有模板(測試計劃、測試用例、測試報告等)

3、軟體測試經典面試題

4、Python/Java自動化測試實戰.pdf

5、Jmeter/postman接口測試全套視頻獲取

我個人整理了我這幾年軟體測試生涯整理的一些技術資料,包含:電子書,簡歷模塊,各種工作模板,面試寶典,自學項目等。如果在學習或工作中遇到問題可以直接進群詢問,群里也會有大神幫忙解答,需要的可以找我謝謝。

關鍵字: