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

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

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

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

    模糊測試學習

    發布: 2009-2-26 10:17 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 158次 | 進入軟件測試論壇討論

    領測軟件測試網


        即是說: 隨機序列 = F(算法, 種子)
     
        說到隨機數的產生不得不提的是我們的隨機數發生器往往是可以預測的。例如我們常用的隨機rand 函數就是一個可以預測的。 [Page]
      int   __cdecl   rand   (void )  
      {  
      return(((holdrand   =   holdrand   *   214013L   +   2531011L)   >>   16)   &   0x7fff);  
      }  
        在這個的背后其實是用的是Knuth pseudo-random number-generating 技術。Knuth 在這本書中\"Seminumerical Algorithms,\" Vol. 2 of The Art of Computer Programming (Addison-Wesley, 1981)發表了這個算法。在實際的應用中我們如何產生適合應用的隨機數是根據實際情況定的。比如我們在輸入參數的安全性方面沒有任何先驗知識的情況下,均勻分布是比較好的。在有先驗知識或者是白盒測試的情況下正態分布可能是比較好的隨機數分布。
        這些分布的產生一般都是先產生一個平均分布然后求對應分布的逆。網上能找到一堆偽隨機數生成器的代碼。下面就隨便給一個。如何產生一個更好的偽隨機數,以后再說吧。
     
     1double AverageRandom(double min,double max)
     2{
     3    
     4    int minInteger = (int)(min*10000);
     5    int maxInteger = (int)(max*10000);
     6    int randInteger = rand()*rand();
     7    int diffInteger = maxInteger - minInteger;
     8    int resultInteger = randInteger % diffInteger + minInteger;
     9    return resultInteger/10000.0;
    10}
    11double Normal(double x,double miu,double sigma)   
    12{
    13    return  1.0/sqrt(2*PI*sigma) * exp(-1*(x-miu)*(x-miu)/(2*sigma*sigma));
    14}
    15double NormalRandom(double miu,double sigma,double min,double max)
    16{
    17    double dResult;
    18    double dScope;
    19    double dNormal;
    20    do
    21    { 22        dResult = AverageRandom(min,max);
    23        dScope = AverageRandom(0,Normal(miu, miu, sigma));
    24        dNormal = Normal(dResult, miu, sigma); [Page]
    25    }while( dScope > dNormal);
    26    return dResult;
    27    
    28}
    29
        產生了隨機數以后,參數進行適當的組合對對應的API函數進行測試,這樣就能在數學上保證盡可能得覆蓋到對應得參數空間。最大可能的找到bug。 
        對于白盒測試來講這種測試方法就更加適合,因為可以找一些比較合適的值作為初始值然后再產生隨機的參數,就可以更有針對性的找到bug。
        其實這是一種測試-FUZZ testing 的基本思想.
        a,b,c所組成的參數空間中的 一個 特殊的 取值范圍內即當0<a<100 ,b=0,c=255這個特殊 空間的時候會觸發一個特殊的bug.當然實際的情況要比這種情況復雜的多。但是總會隱藏著類似的bug.

    延伸閱讀

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

    TAG: 學習

    22/2<12

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