黑盒測(cè)試
首選來看一下缺陷與錯(cuò)誤的分布情況

黑盒測(cè)試注重于測(cè)試軟件的功能需求,主要視圖發(fā)現(xiàn)下列幾類錯(cuò)誤
+.功能不正確或遺漏
+.界面錯(cuò)誤
+.數(shù)據(jù)庫訪問錯(cuò)誤
+.性能錯(cuò)誤
+.初始化和終止錯(cuò)誤等
功能測(cè)試用例設(shè)計(jì)的原則
-.盡量用80%測(cè)試用例覆蓋20%的核心業(yè)務(wù)模塊
-.功能測(cè)試用例中包括業(yè)務(wù)流,也包括測(cè)試數(shù)據(jù)
-.功能測(cè)試用例的設(shè)計(jì)應(yīng)注意缺陷群集現(xiàn)象
-.功能測(cè)試用例中包括功能的依從性測(cè)試用例
測(cè)試方法選擇的綜合策略
1.首選進(jìn)行等價(jià)類劃分,包含輸入條件和輸出條件的等價(jià)劃分,將無限測(cè)試變成有限測(cè)試,這是減少工作量和提高測(cè)試效率最有效的方法
2.在任何情況下都必須使用邊界值分析方法。經(jīng)驗(yàn)表明,用這種方法設(shè)計(jì)出的測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。
3.可以用錯(cuò)誤推測(cè)法追加一些測(cè)試用例,這需要依靠測(cè)試工程師的智慧和經(jīng)驗(yàn)。
4.對(duì)照程序邏輯,檢查已設(shè)計(jì)出的測(cè)試用例的邏輯覆蓋程度。如果沒有達(dá)到要求的覆蓋標(biāo)準(zhǔn),應(yīng)當(dāng)再補(bǔ)充足夠的測(cè)試用例。
5.如果程序的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法和判定表驅(qū)動(dòng)法。
6.對(duì)于參數(shù)配置類的軟件,要用正交實(shí)驗(yàn)法選擇較少的組合方式達(dá)到最佳效果
7.功能圖法也是很好的測(cè)試用例設(shè)計(jì)方法,我們可以通過不同時(shí)期條件的有效性設(shè)計(jì)不同的測(cè)試數(shù)據(jù)
8.對(duì)于業(yè)務(wù)流清晰的系統(tǒng),可以利用場景法貫穿整個(gè)測(cè)試案例過程,在案例中綜合使用各種測(cè)試方法。
那下面簡單介紹一下每種測(cè)試方法的方法&&&&&&&&&&&&&&&
等價(jià)類劃分法
1.在輸入條件規(guī)定了取值范圍或者值的個(gè)數(shù)的情況下,可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類
2.在輸入條件規(guī)定了輸入值的集合或者規(guī)定了‘必須如何’的條件的情況下,可以確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類
3.在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類
4.在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類
5.在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則)
6.在確知已劃分的等價(jià)類中,各元素在程序處理中的方式不同的情況下,則應(yīng)再將等價(jià)類進(jìn)步一地劃分為更小的等價(jià)類
邊界值
是產(chǎn)品說明書中有定義或者在使用軟件的過程中確定
邊界值是等價(jià)類的補(bǔ)充,需要尋找邊界和次邊界
邊界條件
1.如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)。
2.如果輸入條件規(guī)定了值的個(gè)數(shù),則應(yīng)用最大個(gè)數(shù),最小個(gè)數(shù),比最小個(gè)數(shù)少1,比最大個(gè)數(shù)多1的數(shù)作為測(cè)試數(shù)據(jù)
3.根據(jù)規(guī)格說明的每個(gè)輸出條件,使用前面的規(guī)則1
4.根據(jù)規(guī)格說明的每個(gè)輸出條件,使用前面的規(guī)則2
5.如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測(cè)試用例
6.如果程序中使用了內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)邊界上的值作為測(cè)試用例
7.分析規(guī)格說明,找出其他可能的邊界條件
次邊界條件
是最終用戶幾乎看不到,但是軟件測(cè)試仍有必要檢查。
例如一下ascii值的表格等
錯(cuò)誤推測(cè)
錯(cuò)誤推測(cè)法的基本思想就是列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)他們選擇測(cè)試用例。例如,設(shè)計(jì)一些非法,錯(cuò)誤,不正確和垃圾數(shù)據(jù)進(jìn)行輸入測(cè)試。輸入和輸出數(shù)據(jù)為0的情況或者輸入表格為空格或者輸入表格只有一行等
因果圖
1.分析程序規(guī)格說明的描述中,那些是原因,那些是結(jié)果。原因常常是輸入條件或是輸入條件的等價(jià)類,而結(jié)果是輸出條件
2.分析程序規(guī)格說明的描述中語義的內(nèi)容,并將其表示成連接各個(gè)原因與各個(gè)結(jié)果的‘因果圖’
3.標(biāo)明約束條件。由于語法或者環(huán)境的限制,有些原因和結(jié)果的組合情況是不可能出現(xiàn)的。為表明這些特定的情況,在因果圖上使用若干個(gè)標(biāo)準(zhǔn)的符號(hào)標(biāo)明約束條件。
4.把因果圖轉(zhuǎn)換成判定表
5.為判定表中的每一列表示的情況設(shè)計(jì)測(cè)試用例
判定表驅(qū)動(dòng)
判定表的組成

條件樁(condition stub):列出了問題的所有條件。通常任務(wù)列出的條件的次序無關(guān)緊要
動(dòng)作樁(action stub):列出了問題規(guī)定可能采取的操作。這些操作的排序順序沒有約束。
條件項(xiàng)(condition entry):列出針對(duì)它所列出條件的取值,在所有可能情況下的真假值。
動(dòng)作項(xiàng)(action entry):列出在條件項(xiàng)的各種取值情況下應(yīng)采取的動(dòng)作。
規(guī)則:任何一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的操作。在判定表中貫穿條件項(xiàng)和動(dòng)作項(xiàng)的一列就是一條規(guī)則,顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,條件項(xiàng)和動(dòng)作項(xiàng)就有多少列。
判定表建立規(guī)格
1.確定規(guī)則的個(gè)數(shù)。加入有n個(gè)條件,每個(gè)條件有兩個(gè)取值(0,1),故有2的n次方中規(guī)則
2.列出所有的條件樁和動(dòng)作樁
3.填入條件項(xiàng)
4.填入動(dòng)作項(xiàng)。制作初始判定表
5.簡化。合并相似規(guī)則或者相同動(dòng)作。
正交試驗(yàn)法
定義
依據(jù)Galois理論,正交實(shí)驗(yàn)設(shè)計(jì)方法是從大量的實(shí)驗(yàn)數(shù)據(jù)中挑選適量的,有代表性的點(diǎn),從而合理地安排測(cè)試的一種科學(xué)的實(shí)驗(yàn)設(shè)計(jì)方法。
測(cè)試用例設(shè)計(jì)步驟
1.提取功能說明,構(gòu)造因子‘---’狀態(tài)表
2.加權(quán)篩選,生成因素分析表。
3.利用正交表構(gòu)造測(cè)試數(shù)據(jù)集。
功能圖法
1.生成局部測(cè)試用例:在每個(gè)狀態(tài)中,從因果圖生成局部測(cè)試用例。局部測(cè)試庫由原因值(輸入數(shù)據(jù))組合與對(duì)應(yīng)的結(jié)果值(輸出數(shù)據(jù)或狀態(tài))構(gòu)成。
2.測(cè)試路徑生成:利用上面的規(guī)則生成從初始狀態(tài)到最后狀態(tài)的測(cè)試路徑。
3.測(cè)試用例合成:合成測(cè)試路徑與功能圖中每個(gè)狀態(tài)的局部測(cè)試用例,結(jié)果是視狀態(tài)到最后狀態(tài)的一個(gè)狀態(tài)序列,以及每個(gè)狀態(tài)中輸入數(shù)據(jù)與對(duì)應(yīng)輸出數(shù)據(jù)組合。
4.測(cè)試用例的合成算法:采用條件構(gòu)造樹。
場景法
<ul>
<li>1.確認(rèn)好基本流和備選流</li>
<li>2.采用矩陣或者決策表來確定和管理測(cè)試用例</li>
<li>3.挑選用例</li>
</ul>
<p>最后來看一下軟件測(cè)試的過程</p>

測(cè)試費(fèi)用質(zhì)量曲線

來來繼續(xù)看一下白盒測(cè)試的方法和技能呀!
白盒測(cè)試
用例設(shè)計(jì)方法
白盒測(cè)試用例設(shè)計(jì)技術(shù)可分為邏輯覆蓋和路徑覆蓋,邏輯覆蓋又可分為以下幾種,從弱到強(qiáng):
語句覆蓋(SC):設(shè)計(jì)足夠多的測(cè)試用例,確保每條語句都被執(zhí)行過。
判定覆蓋(DC):設(shè)計(jì)足夠多的測(cè)試用例,確保每個(gè)判定都分別取真值與假值。
條件覆蓋(CC):設(shè)計(jì)足夠多的測(cè)試用例,確保每個(gè)條件都分別取真值與假值。(一個(gè)判定里可能包含多個(gè)條件)
判定/條件覆蓋(DCC):設(shè)計(jì)足夠多的測(cè)試用例,確保每個(gè)判定和條件分別取真值和假值。
條件組合覆蓋(CMC):設(shè)計(jì)足夠多的測(cè)試用例,確保覆蓋每個(gè)判定中的各個(gè)條件的所有組合情況。(只考慮同一個(gè)判定內(nèi)的各條件組合情況)
路徑覆蓋:設(shè)計(jì)足夠多的測(cè)試用例,確保每條路徑都被執(zhí)行。如果程序復(fù)雜,比如包含循環(huán)的情況,路徑覆蓋的測(cè)試用例數(shù)將會(huì)是個(gè)天文數(shù)字,無法實(shí)現(xiàn)。可以采用簡化了的路徑覆蓋,即將循環(huán)看成是一個(gè)判定,只考慮循環(huán)被執(zhí)行和未執(zhí)行兩種情況。
靜態(tài)測(cè)試
詞法分析與語法分析
1.標(biāo)號(hào)交叉引用表。列出在各模塊中出現(xiàn)的全部標(biāo)號(hào),在列表中標(biāo)出標(biāo)號(hào)的屬性,包括已說明,未說明,已使用,未使用,表中還包括在模塊以外的全局標(biāo)號(hào)。計(jì)算標(biāo)號(hào)等
2.變量交叉引用表,即變量定義與引用表
3.字程序、宏和函數(shù)表
4.等價(jià)表。表中列出在等價(jià)語句或值語句中出現(xiàn)的全部變量和標(biāo)號(hào)。
5.常數(shù)表。表中列出全部數(shù)字常熟和字符常熟,并指出他們?cè)谀切┱Z句中首先被定義
靜態(tài)錯(cuò)誤分析
1.類型和單位分析
數(shù)據(jù)類型
2.引用分析
3.表達(dá)式分析
1)在表達(dá)式中不正確地使用了括號(hào)造成錯(cuò)誤
2)數(shù)組下標(biāo)越界造成錯(cuò)誤
3)除數(shù)為零造成錯(cuò)誤
4)對(duì)負(fù)數(shù)開平方,或?qū)Ζ星笳性斐慑e(cuò)誤
4.接口分析
形參與實(shí)參在類型,數(shù)量,維數(shù),順序,使用上的一致性,檢查全局變量和公共數(shù)據(jù)區(qū)在使用上的一致性
代碼走查
1.代碼走查方式
1)桌面檢查
2)代碼審查
通用代碼審查錯(cuò)誤
*1.數(shù)據(jù)引用錯(cuò)誤
*2.數(shù)據(jù)聲明錯(cuò)誤
*3.計(jì)算錯(cuò)誤
*4.比較錯(cuò)誤
*5.控制流程錯(cuò)誤
*6.子程序參數(shù)錯(cuò)誤
*7.輸入/輸出錯(cuò)誤
*8.其他檢查錯(cuò)誤
3)走查
2.代碼檢查項(xiàng)目
1)檢查變量的交叉引用表
2)檢查標(biāo)號(hào)的交叉引用表
3)檢查子程序、宏、函數(shù)
4)等價(jià)性檢查
5)常量檢查
6)標(biāo)準(zhǔn)檢查
7)風(fēng)格檢查
8)比較控制流
9)選擇、激活路徑
10)對(duì)照程序的規(guī)格說明
11)補(bǔ)充文檔
3.編碼規(guī)范
- 自行查閱資料太多*
4.缺陷表檢查
靜態(tài)結(jié)構(gòu)分析法
動(dòng)態(tài)測(cè)試
測(cè)試方法
5.邏輯覆蓋法
6.域測(cè)試
7.符號(hào)測(cè)試
8.z路徑覆蓋
畫基本路徑測(cè)試方法
1.畫控制流程圖
2.計(jì)算環(huán)路復(fù)雜度V(G)
*1.區(qū)域數(shù)
*2.變數(shù)-節(jié)點(diǎn)數(shù)+2
*3.判定節(jié)點(diǎn)數(shù)+1
3.導(dǎo)出基本路徑集
4.設(shè)計(jì)測(cè)試用例
白盒測(cè)試錯(cuò)誤的定義
a.語法錯(cuò)誤:通常由語言編譯程序給出‘出錯(cuò)信息’,并且告訴你在那一行出錯(cuò),程序設(shè)計(jì)者只要細(xì)心,會(huì)很快發(fā)現(xiàn)并排除這種錯(cuò)誤
b.運(yùn)行時(shí)異常:運(yùn)行時(shí)的錯(cuò)誤不容易修改,因?yàn)槠渲械腻e(cuò)誤是不可預(yù)料的,或者可以預(yù)料但是無法避免的,比如內(nèi)存空間不夠,或者調(diào)用函數(shù)會(huì)出現(xiàn)死機(jī)現(xiàn)象,我們吧程序運(yùn)行時(shí)錯(cuò)誤統(tǒng)稱為異常,對(duì)異常處理稱為異常處理
c.靜態(tài)語義分析:語義審查,包括上下文相關(guān)性,類型匹配,類型轉(zhuǎn)換。如果有語法錯(cuò)誤,靜態(tài)的語義錯(cuò)誤或者詞法錯(cuò)誤,那么程序編譯是不能通過的
d.動(dòng)態(tài)語義分析:動(dòng)態(tài)的語義錯(cuò)誤是具體的語句的組合與他們的關(guān)系不當(dāng),但不會(huì)造成程序運(yùn)行不下去
接口測(cè)試
單元測(cè)試的內(nèi)容包括:模塊接口;局部數(shù)據(jù)庫結(jié)構(gòu);模塊內(nèi)路徑;邊界條件;錯(cuò)誤處理。
模塊內(nèi)聚由低到高分別為:巧合內(nèi)聚,邏輯內(nèi)聚,時(shí)間內(nèi)聚,過程內(nèi)聚,通信內(nèi)聚,信息內(nèi)聚和功能內(nèi)聚七種類型
邏輯內(nèi)聚:一個(gè)模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能
順序內(nèi)聚:一個(gè)模塊中各個(gè)處理元素都密切相關(guān)于同一功能,且必須順序執(zhí)行,前一個(gè)功能元素的輸出就是下一個(gè)功能元素的輸入
功能內(nèi)聚:一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分
通信內(nèi)聚:一個(gè)模塊內(nèi)所有處理元素都在同一個(gè)數(shù)據(jù)結(jié)構(gòu)上操作,或者指各種處理使相同的輸入結(jié)構(gòu),或者產(chǎn)生相同的輸出數(shù)據(jù)
模塊之間的耦合由低到高分為:非直接耦合、數(shù)據(jù)耦合、標(biāo)記耦合、控制耦合、外部耦合、公共耦合、內(nèi)容耦合
非直接耦合:兩個(gè)模塊之間沒有直接聯(lián)系,它們的聯(lián)系完全是通過主模塊的控制和調(diào)用來實(shí)現(xiàn)的
數(shù)據(jù)耦合:兩個(gè)模塊彼此間通過數(shù)據(jù)參數(shù)交換信息
標(biāo)記耦合:一組模塊通過參數(shù)表傳遞記錄信息,這個(gè)記錄是某一個(gè)數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量
控制耦合:兩個(gè)模塊彼此間傳遞的信息有控制信息,例如
高級(jí)語言的數(shù)組名、記錄名,文件名等傳遞的數(shù)據(jù)結(jié)構(gòu)的地址
外部耦合:一組模塊都訪問同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息(外部耦合不存在依賴)
公共耦合:兩個(gè)模塊之間通過一個(gè)公共的數(shù)據(jù)區(qū)域傳遞信息,情況如下:
全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)域、內(nèi)存的公共覆蓋區(qū)
內(nèi)容耦合:一個(gè)模塊需要涉及到另一個(gè)模塊的內(nèi)部信息,情況如下:
1.一個(gè)模塊直接訪問另外一個(gè)模塊的內(nèi)部數(shù)據(jù)
2.一個(gè)模塊不通過正常入口轉(zhuǎn)到另一個(gè)模塊內(nèi)部
3.兩個(gè)模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編語言中)
4.一個(gè)模塊有多個(gè)入口
數(shù)據(jù)庫測(cè)試
數(shù)據(jù)庫安全
用戶授權(quán)
系統(tǒng)角色
審計(jì)
視圖
鏈接測(cè)試
目的
鏈接測(cè)試的主要目的是確保web應(yīng)用功能能夠?qū)崿F(xiàn)。
主要內(nèi)容:
1.鏈接是否正確跳轉(zhuǎn)
2.鏈接頁面是否存在
3.不存在孤立頁面
界面
界面測(cè)試
1.各元素布局:每個(gè)頁面上是否設(shè)計(jì)友好
2.界面操作的便利性:用戶界面有直觀的導(dǎo)航系統(tǒng)
3.動(dòng)態(tài)操作
4.是否考慮多種瀏覽器的需要
5.是否建立了頁面文件的命名體系
6.是否充分考慮了合適的頁面布局技術(shù),如層疊樣式,表格和幀結(jié)構(gòu)
界面整體測(cè)試
規(guī)范性測(cè)試、合理性測(cè)試、一致性測(cè)試和界面定制性測(cè)試
界面元素測(cè)試
窗口測(cè)試、菜單測(cè)試、圖標(biāo)測(cè)試、鼠標(biāo)測(cè)試和文字測(cè)試
界面中幫助的測(cè)試要點(diǎn)
1.文本的準(zhǔn)確性
2.與程序的接口
3.幫助索引的檢查
4.超鏈接的正確性
5.鏈接的意義
6.風(fēng)格應(yīng)簡潔
cook測(cè)試
1.是否預(yù)定時(shí)間保存
2.刷新對(duì)cook的影響
框架測(cè)試
1.是否可以隨時(shí)瀏覽窗口變化自動(dòng)調(diào)整大小
2.不能完全顯示內(nèi)容是否提供滾動(dòng)條
3.能否在正確的目標(biāo)框架中打開新頁面
表格測(cè)試
1.表格能否隨窗體變化
2.頁面變化自動(dòng)調(diào)整大小
圖形測(cè)試
1.顏色飽和度對(duì)比度是否合適
2.需要突出的鏈接的顏色是否容易識(shí)別
3.是否正確加載所有的圖形
客戶端配置與兼容測(cè)試
瀏覽器的配置測(cè)試
1.緩存
2.cookie
3.顯示
平臺(tái)兼容測(cè)試
1.Windows
2.linux
3.手機(jī)
瀏覽器兼容測(cè)試
1.兼容矩陣
瀏覽器/平臺(tái)
安全測(cè)試
安全測(cè)試應(yīng)考慮哪些方面

安裝測(cè)試
安裝測(cè)試包含的方面
1.評(píng)估安裝手冊(cè)
2.安裝的自動(dòng)化測(cè)試
3.安裝的選項(xiàng)和設(shè)置的測(cè)試
4.安裝過程的中斷測(cè)試
5.安裝順序的測(cè)試
6.多環(huán)境安裝測(cè)試
7.安裝正確性測(cè)試
8.修復(fù)安裝與卸載測(cè)試