測試用例設計中的NP難題

2021-04-16 15:02:37 字數 1180 閱讀 4110

3.1.1測試用例設計中的np測試用例設計中的np難題

如何劃分測試空間才能以盡量少的子集來覆蓋整個測試空間屬於測試用例設計的優化問題。從數學上來講,這實際上是乙個np完全性問題。下面就來講解為什麼最少測試用例數問題是乙個np完全性問題。

要說明這個問題,首先需要建立求解最小測試用例數的數學模型。

假設在測試空間裡有n個可測資料組成的集合記為d = ,假設測試空間裡有m個可能的缺陷,把m個缺陷個缺陷集合記為b = 。對於每個可測資料,都可能揭示出缺陷集合b中的若干個可能的錯誤,也就是說對每個可測資料能揭示的缺陷集合是b的乙個子集,分別記這些子集為e

1,…e

n ,(e

i ∈b, 1≤

i ≤ n)。

由於測試空間裡的任一缺陷都是由可測資料來引起的,因此對於任一缺陷b

k∈b(1≤

k ≤ n),必然存在乙個可測資料d

i∈d(1≤

i ≤ n)可以揭示出這個缺陷,也就是說存在集合e

i ( 1≤

i ≤ n),使得b

k ∈e

i。最少的測試用例數問題是找出最少個數的測試用例,使用這些測試用例能將缺陷集合中的缺陷全部揭示出來。實際上就是要找出若干個子集e

i(1≤

i ≤ n),使得這些子集的成員可以覆蓋集合b的所有成員。

這樣就建立起了最少測試用例數的數學模型,它屬於數學中的集合覆蓋問題,是乙個典型的np完全性問題。目前還找不到精確的多項式演算法來解決這個問題,只能設計一些近似演算法來對這個問題進行求解,後面講的測試用例設計方法其實都是對這個問題的一種近似求解演算法。

如果要了解集合覆蓋問題的近似求解數學演算法,可以參考thomas h. cormen等著的《演算法導論》一書的35.3節,裡面有詳細的講解。

《演算法導論》一書裡也舉了乙個集合覆蓋問題的另外乙個實際例子:假設x表示解決某一問題所需要的各種技巧的集合,另外有乙個給定的可用來解決該問題的人的集合,也就是說對於技巧集合種的每種技巧,至少有一人掌握該種技巧。現在的問題是如何選取最少數量的人組成乙個委員會,使得技巧集合中的任一技巧,委員會裡至少有一位委員掌握該種技巧。將這個例子對比最少測試用例數問題的數學模型,會發現這是同乙個問題。

雖然最少測試用例數是乙個np完全性問題,但在實際情況中,大多數情況下測試用例數並不是太多,得到精確解的可能性還是很大的,只有那些比較複雜的有組合關係的情況下,用例數可能會存在一定的冗餘。

測試用例設計

1.測試用力的概念 測試用例是為特定的目的而設計的一組的測試輸入。執行條件和預期的結果,體現在測試方案 方法 技術和策略。2.測試用例具備的特點 1 正確性 2 完整性 3 準確 4 清晰 簡潔 5 可維護性 6 適應性 7 可重用性 8 其他 3.測試用例基本原則 個人認為比較重要的加黑了。1 基...

測試用例設計

1.名稱與標識 2.測試追蹤 3.用例說明 4.測試的初始化要求 5.測試的輸入 6.期望的測試結果 7.評價測試結果的準則 8.操作過程 9.前提和約束 10.測試終止條件 編寫用例規範 1 系統性 對系統業務流程要完整說明整個系統的業務需求 系統由幾個子系統組成以及它們之間的關係 對模組業務流程...

測試用例設計

測試用例格式 用例編號 a b c d a 產品或專案名稱 b 用例屬性 st,it,ut c 客戶管理 新增客戶,什麼型別的客戶 d編號 例 crm st 客戶管理 新增客戶 001 測試項 針對於某種物件的測試用例 客戶管理 新增客戶 20個字元的客戶資訊 新增名稱包含單引號的客戶資訊 用例屬性...