• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    測試用例設計中的NP難題

    發布: 2007-4-22 17:35 | 作者: 未知    | 來源: 《軟件測試實踐》     | 查看: 362次 | 進入軟件測試論壇討論

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

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

      假設在測試空間里有n個可測數據組成的集合記為D = {d1,…dn},假設測試空間里有m個可能的缺陷,把m個缺陷個缺陷集合記為B = {b1,…bm}。對于每個可測數據,都可能揭示出缺陷集合B中的若干個可能的錯誤,也就是說對每個可測數據能揭示的缺陷集合是B的一個子集,分別記這些子集為e1,…en ,(ei ∈B, 1≤ i ≤ n)。

      由于測試空間里的任一缺陷都是由可測數據來引起的,因此對于任一缺陷bk∈B(1≤ k ≤ n),必然存在一個可測數據di∈D(1≤ i ≤ n)可以揭示出這個缺陷,也就是說存在集合ei ( 1≤ i ≤ n),使得bk ∈ei。

      最少的測試用例數問題是找出最少個數的測試用例,使用這些測試用例能將缺陷集合中的缺陷全部揭示出來。實際上就是要找出若干個子集ei(1≤ i ≤ n),使得這些子集的成員可以覆蓋集合B的所有成員。

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

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

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

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

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>