黑盒測試用例設計方法

黑盒測試用例設計方法:

是把所有可能的輸入數據,即程序的輸入域劃分成若干部分(子集),然後從每一個子集中選取少數具有代表性的數據作爲測試用例.該方法是一種重要的,常用的黑盒測試用例設計方法.

   1) 劃分等價類: 等價類是指某個輸入域的子集合.在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的.併合理地假定:測試某等價類的代表值就等於對這一類其它值的測試.因此,可以把全部輸入數據合理劃分爲若干等價類,在每一個等價類中取一個數據作爲測試的輸入條件,就可以用少量代表性的測試數據.取得較好的測試結果.等價類劃分可有兩種不同的情況:有效等價類和無效等價類.

  有效等價類:是指對於程序的規格說明來說是合理的,有意義的輸入數據構成的集合.利用有效等價類可檢驗程序是否實現了規格說明中所規定的功能和性能.

  無效等價類:與有效等價類的定義恰巧相反.

  設計測試用例時,要同時考慮這兩種等價類.因爲,軟件不僅要能接收合理的數據,也要能經受意外的考驗.這樣的測試才能確保軟件具有更高的可靠性.

  2)劃分等價類的方法:下面給出六條確定等價類的原則.

  ①在輸入條件規定了取值範圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類.

  ②在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可確立一個有效等價類和一個無效等價類.

  ③在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類.

  ④在規定了輸入數據的一組值(假定n個),並且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類.

  ⑤在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則).

  ⑥在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步的劃分爲更小的等價類.

  3)設計測試用例:在確立了等價類後,可建立等價類表,列出所有劃分出的等價類:

   輸入條件 有效等價類 無效等價類
  ... ... ...
  ... ... ...

   然後從劃分出的等價類中按以下三個原則設計測試用例:

  ①爲每一個等價類規定一個唯一的編號.

  ②設計一個新的測試用例,使其儘可能多地覆蓋尚未被覆蓋地有效等價類,重複這一步.直到所有的有效等價類都被覆蓋爲止.

  ③設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重複這一步.直到所有的無效等價類都被覆蓋爲止.

邊界值分析法

  邊界值分析方法是對等價類劃分方法的補充.

(1)邊界值分析方法的考慮:

  長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部.因此針對各種邊界情況設計測試用例,可以查出更多的錯誤.

  使用邊界值分析方法設計測試用例,首先應確定邊界情況.通常輸入和輸出等價類的邊界,就是應着重測試的邊界情況.應當選取正好等於,剛剛大於或剛剛小於邊界的值作爲測試數據,而不是選取等價類中的典型值或任意值作爲測試數據.

(2)基於邊界值分析方法選擇測試用例的原則:

  1)如果輸入條件規定了值的範圍,則應取剛達到這個範圍的邊界的值,以及剛剛超越這個範圍邊界的值作爲測試輸入數據.

  2)如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作爲測試數據.

  3)根據規格說明的每個輸出條件,使用前面的原則1).

  4)根據規格說明的每個輸出條件,應用前面的原則2).

  5)如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素作爲測試用例.

  6)如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值作爲測試用例.




  7)分析規格說明,找出其它可能的邊界條件.

錯誤推測法

  基於經驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法.

  錯誤推測方法的基本思想: 列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們選擇測試用例. 例如, 在單元測試時曾列出的許多在模塊中常見的錯誤. 以前產品測試中曾經發現的錯誤等, 這些就是經驗的總結. 還有, 輸入數據和輸出數據爲0的情況. 輸入表格爲空格或輸入表格只有一行. 這些都是容易發生錯誤的情況. 可選擇這些情況下的例子作爲測試用例.

因果圖方法

  前面介紹的等價類劃分方法和邊界值分析方法,都是着重考慮輸入條件,但未考慮輸入條件之間的聯繫, 相互組合等. 考慮輸入條件之間的相互組合,可能會產生一些新的情況. 但要檢查輸入條件的組合不是一件容易的事情, 即使把所有輸入條件劃分成等價類,他們之間的組合情況也相當多. 因此必須考慮採用一種適合於描述對於多種條件的組合,相應產生多個動作的形式來考慮設計測試用例. 這就需要利用因果圖(邏輯模型).
  因果圖方法最終生成的就是判定表. 它適合於檢查程序輸入條件的各種組合情況.

  利用因果圖生成測試用例的基本步驟:

  (1) 分析軟件規格說明描述中, 那些是原因(即輸入條件或輸入條件的等價類),那些是結果(即輸出條件), 並給每個原因和結果賦予一個標識符.

  (2) 分析軟件規格說明描述中的語義.找出原因與結果之間, 原因與原因之間對應的關係. 根據這些關係,畫出因果圖.

  (3) 由於語法或環境限制, 有些原因與原因之間,原因與結果之間的組合情況不不可能出現. 爲表明這些特殊情況, 在因果圖上用一些記號表明約束或限制條件.

  (4) 把因果圖轉換爲判定表.

  (5) 把判定表的每一列拿出來作爲依據,設計測試用例.

  從因果圖生成的測試用例(局部,組合關係下的)包括了所有輸入數據的取TRUE與取FALSE的情況,構成的測試用例數目達到最少,且測試用例數目隨輸入數據數目的增加而線性地增加.

  前面因果圖方法中已經用到了判定表.判定表(Decision Table)是分析和表達多邏輯條件下執行不同操作的情況下的工具.在程序設計發展的初期,判定表就已被當作編寫程序的輔助工具了.由於它可以把複雜的邏輯關係和多種條件組合的情況表達得既具體又明確.

  判定表通常由四個部分組成.

  條件樁(Condition Stub):列出了問題得所有條件.通常認爲列出得條件的次序無關緊要.

  動作樁(Action Stub):列出了問題規定可能採取的操作.這些操作的排列順序沒有約束.

  條件項(Condition Entry):列出針對它左列條件的取值.在所有可能情況下的真假值.

  動作項(Action Entry):列出在條件項的各種取值情況下應該採取的動作.

  規則:任何一個條件組合的特定取值及其相應要執行的操作.在判定表中貫穿條件項和動作項的一列就是一條規則.顯然,判定表中列出多少組條件取值,也就有多少條規則,既條件項和動作項有多少列.

  判定表的建立步驟:(根據軟件規格說明)

  ①確定規則的個數.假如有n個條件.每個條件有兩個取值(0,1),故有 種規則.

  ②列出所有的條件樁和動作樁.

  ③填入條件項.

  ④填入動作項.等到初始判定表.

  ⑤簡化.合併相似規則(相同動作).

  B. Beizer 指出了適合使用判定表設計測試用例的條件:

  ①規格說明以判定表形式給出,或很容易轉換成判定表.

  ②條件的排列順序不會也不影響執行哪些操作.

  ③規則的排列順序不會也不影響執行哪些操作.

  ④每當某一規則的條件已經滿足,並確定要執行的操作後,不必檢驗別的規則.

  ⑤如果某一規則得到滿足要執行多個操作,這些操作的執行順序無關緊要.
>>>---------我想分頁!--這麼長的文章,在這裏來個分頁多好啊!哈哈----------<<<

引用內容

軟件測試的14種類型
作者:啄木鳥(Sawin網站)

軟件測試是指使用人工或者自動的手段來運行或測定某個軟件產品系統的過程,其目的是在於檢驗是否滿足規定的需求或者弄清預期的結果與實際結果的區別。本文主要描述軟件測試的類型。



1 數據和數據庫完整性測試

數據與數據庫完整測試是指測試關係型數據庫完整性原則以及數據合理性測試。
數據庫完整性原即:
主碼完整性:主碼不能爲空;
外碼完整性:外碼必須等於對應的主碼或者爲空。
數據合理性指數據在數據庫中的類型,長度,索引等是否建的比較合理。
在項目名稱中,數據庫和數據庫進程應作爲一個子系統來進行測試。在測試這些子系統時,不應將測試對象的用戶界面用作數據的接口。對於數據庫管理系統 (DBMS),還需要進行深入的研究,以確定可以支1持測試的工具和技術。

比如,有兩張表:部門和員工。部門中有部門編號,部門名稱,部門經理等字段,主碼爲部門編號;員工表中有員工編號,員工所屬部門編號,員工名稱,員工類型等字段,主碼爲員工編號,外碼爲員工所屬部門編號,對應部門表。如果在某條部門記錄中部門編號或員工記錄員工編號爲空,他就違反主碼完整性原則。如果某個員工所屬部門的編號爲##,但是##在部門編號中確找不到,這就違反外碼完整性原則。
員工類型如下定義:0:職工,1:職員,2:實習生。但數據類型爲Int,我們都知道Int佔有4個字節,如果定義成char(1).就比原來節約空間。

2 白盒測試

白盒測試是基於代碼的測試,測試人員通過閱讀程序代碼或者通過使用開發工具中的單步調試來判斷軟件的質量,一般黑盒測試由項目經理在程序員開發中來實現。白盒測試分爲動態白盒測試和靜態白盒測試
2.1 靜態白盒測試
利用眼睛,瀏覽代碼,憑藉經驗,找出代碼中的錯誤或者代碼中不符合書寫規範的地方。比如,代碼規範中規定,函數必須爲動賓結構。而黑盒測試發現一個函數定義如下:
Function NameGet(){
….
}
這是屬於不符合開發規範的錯誤。
有這樣一段代碼:
if (i<0) & (i>=0)

這段代碼交集爲整個數軸,IF語句沒有必要
I=0;
while(I>100){
J=J+100;
T=J*PI;
}
在循環體內沒有I的增加,bug產生。

2.2 動態白盒測試
利用開發工具中的調式工具進行測試。比如一段代碼有4個分支,輸入4組不同的測試數據使4組分支都可以走通而且結果必須正確。
看一段代碼
if(I<0){
P1
}else{
P2
}
在調試中輸入I=-1,P1程序段通過, P2程序段未通過,屬於動態黑盒測試的缺陷

3.功能測試

功能測試指測試軟件各個功能模塊是否正確,邏輯是否正確。
對測試對象的功能測試應側重於所有可直接追蹤到用例或業務功能和業務規則的測試需求。這種測試的目標是覈實數據的接受、處理和檢索是否正確,以及業務規則的實施是否恰當。此類測試基於黑盒技術,該技術通過圖形用戶界面 (GUI) 與應用程序進行交互,並對交互的輸出或結果進行分析,以此來覈實應用程序及其內部進程。功能測試的主要參考爲類似於功能說明書之類的文檔。
比如一個對電子商務系統,前臺用戶瀏覽商品-放入購物車-進入結賬臺,後臺處理訂單,配貨,付款,發貨,這一系列流程必須正確無誤的走通,不能存在任何的錯誤。

4.UI測試

UI測試指測試用戶界面的風格是否滿足客戶要求,文字是否正確,頁面美工是否好看,文字,圖片組合是否完美,背景是否美觀,操作是否友好等等
用戶界面 (UI) 測試用於覈實用戶與軟件之間的交互。UI 測試的目標是確保用戶界面會通過測試對象的功能來爲用戶提供相應的訪問或瀏覽功能。另外,UI 測試還可確保 UI 中的對象按照預期的方式運行,並符合公司或行業的標準。包括用戶友好性,人性化,易操作性測試。UI測試比較主觀,與測試人員的喜好有關
比如:頁面基調顏色刺眼;用戶登入頁面比較難於找到,文字中出現錯別字,頁面圖片範圍太廣等都屬於UI測試中的缺陷,但是這些缺陷都不太嚴重。



2 軟件測試的14種類型

5.
性能測試

性能測試主要測試軟件測試的性能,包括負載測試,強度測試,數據庫容量測試,基準測試以及基準測試
5.1負載測試
負載測試是一種性能測試指數據在超負荷環境中運行,程序是否能夠承擔。
在這種測試中,將使測試對象承擔不同的工作量,以評測和評估測試對象在不同工作量條件下的性能行爲,以及持續正常運行的能力。負載測試的目標是確定並確保系統在超出最大預期工作量的情況下仍能正常運行。此外,負載測試還要評估性能特徵,例如,響應時間、事務處理速率和其他與時間相關的方面。
比如,在B/S結構中用戶併發量測試就是屬於負載測試的用戶,可以使用webload工具,模擬上百人客戶同時訪問網站,看系統響應時間,處理速度如何?
5.2強度測試
強度測試是一種性能測試,他在系統資源特別低的情況下軟件系統運行情況。這類測試往往可以書寫系統要求的軟硬件水平要求。
實施和執行此類測試的目的是找出因資源不足或資源爭用而導致的錯誤。如果內存或磁盤空間不足,測試對象就可能會表現出一些在正常條件下並不明顯的缺陷。而其他缺陷則可能由於爭用共享資源(如數據庫鎖或網絡帶寬)而造成的。強度測試還可用於確定測試對象能夠處理的最大工作量。
比如:一個系統在內存366M下可以正常運行,但是降低到258M下不可以運行,告訴內存不足,這個系統對內存的要求就是366M。
5.3數據庫容量測試
數據庫容量測試指通過存儲過程往數據庫表中插入一定數量的數據,看看相關頁面是否能夠及時顯示數據。
數據庫容量測試使測試對象處理大量的數據,以確定是否達到了將使軟件發生故障的極限。容量測試還將確定測試對象在給定時間內能夠持續處理的最大負載或工作量。例如,如果測試對象正在爲生成一份報表而處理一組數據庫記錄,那麼容量測試就會使用一個大型的測試數據庫,檢驗該軟件是否正常運行並生成了正確的報表。做這種測試通常通過書寫存儲過程向數據庫某個表中插入一定數量的記錄,計算相關頁面的調用時間。
比如,在電子商務系統中,通過insert customer 往user表中插入10 000數據,看其是否可以正常顯示顧客信息列表頁面,如果要求達到最多可以處理100 000個客戶,但是顧客信息列表頁面不能夠在規定的時間內顯示出來,就需要調整程序中的SQL查詢語句;如果在規定的時間內顯示出來,可以將用戶數分別提高到20 000 , 50 000, 100 000進行測試。
5.4基準測試
基準測試與已知現有的系統進行比較,主要檢驗是否與類似的產品具有競爭性的一種測試。
如果你要開發一套財務系統軟件並且你已經獲得用友財務系統的性能等數據,你可以測試你這套系統,看看哪些地方比用友財務系統好,哪些地方差?以便改進自己的系統,也可爲產品廣告提供數據。
5.5競爭測試
軟件競爭使用各種資源(數據紀錄,內存等),看他與其他相關係統對資源的爭奪能力。比如:一臺機器上即安裝您的財務系統,又安裝用友財務系統。當CPU佔有率下降後,看看是否能夠強過用友財務系統,而是自己的系統能夠正常運行?

6. 安全性和訪問控制測試

安全性和訪問控制測試側重於安全性的兩個關鍵方面:
應用程序級別的安全性,包括對數據或業務功能的訪問
系統級別的安全性,包括對系統的登錄或遠程訪問。
6.1應用程序級別的安全性
可確保:在預期的安全性情況下,主角只能訪問特定的功能或用例,或者只能訪問有限的數據。例如,可能會允許所有人輸入數據,創建新賬戶,但只有管理員才能刪除這些數據或賬戶。如果具有數據級別的安全性,測試就可確保“用戶類型一”能夠看到所有客戶消息(包括財務數據),而“用戶二”只能看見同一客戶的統計數據。
比如B/S系統,不通過登入頁面,直接輸入URL,看其是否能夠進入系統?
6.2系統級別的安全性
可確保只有具備系統訪問權限的用戶才能訪問應用程序,而且只能通過相應的網關來訪問。



3 軟件測試的14種類型
比如輸入管理員賬戶,檢查其密碼是否容易猜取,或者可以從數據庫中獲得?

7.故障轉移和恢復測試

故障轉移和恢復測試指當主機軟硬件發生災難時候,備份機器是否能夠正常啓動,使系統是否可以正常運行,這對於電信,銀行等領域的軟件是十分重要的。
故障轉移和恢復測試可確保測試對象能成功完成故障轉移,並能從導致意外數據損失或數據完整性破壞的各種硬件、軟件或網絡故障中恢復。
故障轉移測試可確保:對於必須持續運行的系統,一旦發生故障,備用系統就將不失時機地“頂替”發生故障的系統,以避免丟失任何數據或事務。
恢復測試是一種對抗性的測試過程。在這種測試中,將把應用程序或系統置於極端的條件下(或者是模擬的極端條件下),以產生故障(例如設備輸入/輸出 (I/O) 故障或無效的數據庫指針和關健字)。然後調用恢復進程並監測和檢查應用程序和系統,覈實應用程序或系統和數據已得到了正確的恢復。一定要注意主備定時備份
比如電信系統,突然主機程序發生死機,備份機器是否能夠啓動,使系統能夠正常運行,從而不影響用戶打電話?
8.配置測試

又叫兼容性測試。配置測試覈實測試對象在不同的軟件和硬件配置中的運行情況。在大多數生產環境中,客戶機工作站、網絡連接和數據庫服務器的具體硬件規格會有所不同。客戶機工作站可能會安裝不同的軟件例如,應用程序、驅動程序等而且在任何時候,都可能運行許多不同的軟件組合,從而佔用不同的資源。(如瀏覽器版本,操作系統版本等)
下面列出主要配置測試
8.1瀏覽器兼容性
測試軟件在不同產商的瀏覽器下是否能夠正確顯示與運行;
比如測試IE,Natscape瀏覽器下是否可以運行這套軟件?
8.2操作系統兼容性
測試軟件在不同操作系統下是否能夠正確顯示與運行;
比如測試WINDOWS98,WINDOWS 2000,WINDOWS XP,LINU, UNIX下是否可以運行這套軟件?
8.3硬件兼容性
測試與硬件密切相關的軟件產品與其他硬件產品的兼容性,比如該軟件是少在並口設備中的,測試同時使用其他並口設備,系統是否可以正確使用.
比如在INTER,舒龍CPU芯片下系統是否能夠正常運行?
這樣的測試必須建立測試實驗室,在各種環境下進行測試。

9.安裝測試

安裝測試有兩個目的。第一個目的是確保該軟件在正常情況和異常情況的不同條件下: 例如,進行首次安裝、升級、完整的或自定義的安裝_都能進行安裝。異常情況包括磁盤空間不足、缺少目錄創建權限等。第二個目的是覈實軟件在安裝後可立即正常運行。這通常是指運行大量爲功能測試製定的測試。
安裝測試包括測試安裝代碼以及安裝手冊。安裝手冊提供如何進行安裝,安裝代碼提供安裝一些程序能夠運行的基礎數據。

10.多語種測試

又稱本地化測試,是指爲各個地方開發產品的測試,如英文版,中文版等等,包括程序是否能夠正常運行,界面是否符合當地習俗,快捷鍵是否正常起作用等等,特別測試在A語言環境下運行B語言軟件(比如在英文win98下試圖運行中文版的程序),出現現象是否正常。
本地化測試還要考慮:
l 當語言從A翻譯到B,字符長度變化是否影響頁面效果。比如中文軟件中有個按鍵叫“看廣告”,翻譯到英文版本中爲 “View advertisement”可能影響頁面的美觀程度
l 要考慮同一單詞在各個國家的不同意思,比如football在英文中爲足球,而美國人使用中可能理解爲美式橄欖球。
l 要考慮各個國家的民族習慣,比如龍個美國中被理解邪惡的象徵,但翻譯到中國,中國人認爲爲吉祥的象徵。

11.文字測試

文字測試測試軟件中是否拼寫正確,是否易懂,不存在二義性,沒有語法錯誤;文字與內容是否有出入等等,包括圖片文字。
比如:“比如,請輸入正確的證件號碼!”何謂正確的證件號碼,證件可以爲×××,駕駛證,也可爲軍官證,如果改爲“請輸入正確的×××號碼!”用戶就比較容易理解了。

12.分辨率測試

測試在不同分辨率下,界面的美觀程度,分爲800*600,1024*768,1152*864,1280*768,1280*1024,1200*1600大小字體下測試。一個好的軟件要有一個極佳的分辨率,而在其他分辨率下也都能可以運行。

13發佈測試

主要在產品發佈前對一些附帶產品,比如說明書,廣告稿等進行測試

13.1說明書測試
主要爲語言檢查,功能檢查,圖片檢查
語言檢查:檢查說明書語言是否正確,用詞是否易於理解;
功能檢查:功能是否描述完全,或者描述了並沒有的功能等;
圖片檢查::檢查圖片是否正確
13.2宣傳材料測試
主要測試產品中的附帶的宣傳材料中的語言,描述功能,圖片
13.3幫助文件測試
幫助文件是否正確,易懂,是否人性化。最好能夠提供檢索功能。
13.4廣告用語
產品出公司前的廣告材料文字,功能,圖片,人性化的檢查

14 文檔審覈測試

文檔審覈測試目前越來越引起人們的重視,軟件質量不是檢查出來的,而是融進軟件開發中來。前置軟件測試發越來越受到重視。請看一個資料:

文檔審覈測試主要包括需求文檔測試,設計文檔測試,爲前置軟件測試測試中的一部分。

14.1需求文檔測試

主要測試需求中是否存在邏輯矛盾以及需求在技術上是否可以實現;

14.2設計文檔測試

測試設計是否符合全部需求以及設計是否合理。

總結

據美國軟件質量安全中心2000年對美國一百家知名的軟件廠商統計,得出這樣一個結論:軟件缺陷在開發前期發現比在開發後期發現資金,人力上節約90%;軟件缺陷在推向市場前發現比在推出後發現資金,人力上節約90%。所以說軟件的缺陷應該儘早發現。不是所有的軟件都要進行任何類型的軟件測試的,可以根據產品的具體情況進行組裝測試不同的類型。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章