Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
數(shù)據(jù)流測試 1、數(shù)據(jù)流分析
從數(shù)據(jù)流視角:程序是一個程序元素對數(shù)據(jù)訪問的過程;
數(shù)據(jù)流關(guān)系:數(shù)據(jù)的【定義——使用】對;
出發(fā)點:對數(shù)據(jù)的不正確處理;
使用程序圖來描述數(shù)據(jù)【定義——使用】對。
數(shù)據(jù)流測試:指關(guān)注變量接受值的點 和使用(或引用)這些值的點 的 結(jié)構(gòu)性測試形式。
2、數(shù)據(jù)流測試
數(shù)據(jù)流測試按照程序中的變量定義和使用的位置來選擇程序的測試路徑;
數(shù)據(jù)流測試關(guān)注變量接收值的點和使用這些值的點;
一種簡單的數(shù)據(jù)流測試策略是要求覆蓋每個定義-使用路徑一次;
數(shù)據(jù)流測試用做路徑測試的“真實性檢查”。
數(shù)據(jù)流分析—程序控制流圖
G(P ) :程序圖
構(gòu)造方式同前,語句片段代表節(jié)點,邊代表節(jié)點序列
單入口,單出口,且不允許從某個節(jié)點到其自身的邊
P:程序
V:一組程序變量
DD-路徑
DD路徑:決策對決策路徑(Miller)。從決策語句的“出路”開始,到下一個決策語句的“入路”結(jié)束。
DD鏈:有向圖中一條起始和終止節(jié)點不同點路徑。
由一個節(jié)點組成,內(nèi)度=0;
由一個節(jié)點組成,外度=0;
由一個節(jié)點組成,內(nèi)度〉=2或外度〉=2;
由一個節(jié)點組成,內(nèi)度=1并且外度=1;
長度〉=1的最大練
DD-路徑圖
DD-Path graph是一張帶有標(biāo)簽的有向圖,圖中的節(jié)點表示程序圖的DD路徑,而邊表示路徑的控制流。
對于給定的程序,可以構(gòu)造多種不同的程序圖,所有這些程序圖,都可以簡化為唯一的DD-路徑圖。
對100行以內(nèi)的程序生成DD路徑是可行的,如果超過這個規(guī)模,一般需要有分析工具的支持。
控制流圖最簡化也就是DD路徑了??梢岳斫鉃?DD屬于控制流圖。
3、定義/使用測試 定義節(jié)點
節(jié)點n∈G(P)是變量v ∈V的定義節(jié)點,記做DEF(v,n),當(dāng)且僅當(dāng)變量的值由對應(yīng)節(jié)點n的語句片斷處定義。
定義節(jié)點語句:
使用節(jié)點
節(jié)點n∈G(P)是變量v ∈V的使用節(jié)點,記做USE(v,n),當(dāng)且僅當(dāng)變量v的值在對應(yīng)節(jié)點n的語句片斷處使用。
使用節(jié)點語句:
謂詞使用、計算使用
使用節(jié)點USE(v,n)是一個謂詞使用(記做P-use),當(dāng)且僅當(dāng)語句n是謂詞語句;否則,USE(v,n)是計算使用(記做C-use)
定義-使用路徑
定義-使用路徑(記做du-path):是PATHS(P)中的路徑,使得對某個v ∈V,存在定義和使用節(jié)點DEF(v,m)和USE(v,n),使得m和n是該路徑的最初和最終節(jié)點。
就是以定義節(jié)點開頭,使用節(jié)點結(jié)尾。
定義清除路徑
定義清除路徑(記做dc-path):是具有最初和最終節(jié)點DEF(v,m)和USE(v,n)的PATHS(P)中的路徑,使得該路徑中沒有其他節(jié)點是v的定義節(jié)點。
以定義節(jié)點開頭,使用節(jié)點結(jié)尾,且路徑途中沒有其他(該變量的)定義節(jié)點。
4、覆蓋指標(biāo) 定義-使用路徑測試覆蓋指標(biāo)
數(shù)據(jù)流指標(biāo)假設(shè)所有程序變量都標(biāo)識了定義節(jié)點和使用節(jié)點,且關(guān)于各變量都表示了定義-使用路徑
T:擁有變量集合V的程序P的程序圖G§中的一個路徑集合
全定義準(zhǔn)則
集合T滿足程序P的全定義準(zhǔn)則,當(dāng)且僅當(dāng)所有變量 ,T包含從v的每個定義節(jié)點到v的一個使用的定義清除路徑。(這ppt里定義的是真的拗口。)
可以理解為:T是一個路徑集合,包含了(所有變量)變量v的所有定義節(jié)點到任意一個使用節(jié)點的dc-path。
有一說一,我思索了半天還是懵的。百度相關(guān)內(nèi)容又太少!
【這里先放下】
圖中標(biāo)亮部分。
def(U,3),use(x,3),use(y,3);
use(U,5),use(U,14),use(U,15);
按照當(dāng)時老師講的:n3分別到n5、n14、n15的路徑集合就是U的全覆蓋。
我:???
全使用準(zhǔn)則
集合T滿足程序P的全使用準(zhǔn)則,當(dāng)且僅當(dāng)所有變量 ,T包含從v的每個定義節(jié)點到v的所有使用以及到所有USE(v,n)后續(xù)節(jié)點的定義清除路徑。
全謂詞使用/部分計算使用準(zhǔn)則
集合T滿足程序P的全謂詞使用/部分計算使用準(zhǔn)則,當(dāng)且僅當(dāng)所有變量,T包含從v的每個定義節(jié)點到v的所有謂詞使用的定義清除路徑,且若v的一個定義沒有謂詞使用,則定義清除路徑導(dǎo)致至少一個計算使用。
全計算使用/部分謂詞使用準(zhǔn)則
集合T滿足程序P的全計算使用/部分謂詞使用準(zhǔn)則,當(dāng)且僅當(dāng)所有變量,T包含從v的每個定義節(jié)點到v的所有計算使用的定義清除路徑,且若v的一個定義沒有計算使用,則定義清除路徑導(dǎo)致至少一個謂詞使用。
全定義-使用路徑準(zhǔn)則
集合T滿足程序P的全定義-使用路徑準(zhǔn)則,當(dāng)且僅當(dāng)所有變量 ,T包含從v的每個定義節(jié)點到v的所有使用,以及到所有USE(v,n)后續(xù)節(jié)點的定義清除路徑,且這些路徑要么有一次的環(huán)經(jīng)過,要么沒有環(huán)路。
這定義看的我是真的腦殼子暈。
其他白盒測試方法 黑盒白盒比較:
黑盒測試:漏洞和冗余,而且不能被發(fā)現(xiàn)。
白盒測試的基路徑測試方法:用有向圖表示代碼和程序路徑公式化,掩蓋了代碼中的重要信息,即可行路徑和不可行路徑的區(qū)別。
5、測試的效率 什么時候測試可以停止?多少是足夠的測試?
當(dāng)時間用完時——缺少標(biāo)準(zhǔn)
當(dāng)繼續(xù)測試沒有產(chǎn)生新失效時
當(dāng)繼續(xù)測試沒有發(fā)現(xiàn)新缺陷時
當(dāng)無法考慮新測試用例時—原因?
當(dāng)回報很小時—基于分析的方法
當(dāng)達到所要求的覆蓋時—結(jié)構(gòu)化測試的指標(biāo)
當(dāng)所有缺陷都已經(jīng)清除時—難以實現(xiàn)
相關(guān)內(nèi)容可以參考這位大佬的博客。很清楚。
另外,學(xué)了這么多,感覺脈絡(luò)有點雜亂,最后會整理一下。
THE END
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。