黃平鳳 中興通訊股份有限公司
對(duì)于測(cè)試工作,其在軟件建立的整體工作中是不可或缺的一部分。宏觀上來(lái)說(shuō),測(cè)試工作直接關(guān)系到產(chǎn)品功能,形態(tài),質(zhì)量等等。所以,軟件測(cè)試工作的重要性不言而喻,也受到越來(lái)越多的關(guān)注。從根本上來(lái)看待軟件測(cè)試工作,它就是用一個(gè)個(gè)有針對(duì)性的測(cè)試用例,對(duì)軟件的功能以及系統(tǒng)穩(wěn)定性進(jìn)行系統(tǒng)的測(cè)試評(píng)估。它也是軟件測(cè)試質(zhì)量穩(wěn)定的基本保證。因此,用例在整個(gè)測(cè)試工作中極其重要,用例的設(shè)計(jì)要有針對(duì)性,非常有講究。本文詳細(xì)介紹了針對(duì)功能和結(jié)構(gòu)分別設(shè)計(jì)測(cè)試用例的方法和技巧。
對(duì)于具體的軟件我們要有具體的測(cè)試目的,擬定測(cè)試計(jì)劃。而測(cè)試用例簡(jiǎn)單來(lái)說(shuō)就是數(shù)據(jù)的輸入和結(jié)果的預(yù)期。測(cè)試用例設(shè)計(jì)最難的部分是在前者,也就是輸入數(shù)據(jù)的設(shè)計(jì),對(duì)于其設(shè)計(jì)要求是設(shè)計(jì)出能夠試錯(cuò)的測(cè)試數(shù)據(jù)。由于其過(guò)程復(fù)雜,我們可以應(yīng)用一些現(xiàn)有的已經(jīng)開(kāi)發(fā)出的測(cè)試數(shù)據(jù)技術(shù)。這是非??焖倏煽康霓k法。目前,在測(cè)試用例設(shè)計(jì)中大量應(yīng)用的技術(shù)有兩種,其中一種是針對(duì)結(jié)構(gòu)性測(cè)試,叫做白盒測(cè)試;另外一種是針對(duì)功能性測(cè)試,叫做黑盒測(cè)試,這兩種技術(shù)手段的應(yīng)用方法和技巧也很多,下文中會(huì)一一詳述。簡(jiǎn)而言之,白盒測(cè)試如其名,可以看作是一個(gè)透明的盒子,程序中的執(zhí)行狀態(tài)一目了然,邏輯以及結(jié)構(gòu)都能夠直觀的測(cè)試出來(lái),要盡可能多的對(duì)所有路徑進(jìn)行測(cè)試;黑盒測(cè)試如其名,可以看作是一個(gè)黑盒子,不需要去了解程序內(nèi)部的運(yùn)行情況,以及執(zhí)行路徑,而是側(cè)重于程序運(yùn)行的結(jié)果,對(duì)驅(qū)動(dòng)以及功能的形成的測(cè)試。
測(cè)試用例編號(hào)具有特定的規(guī)則,例如系統(tǒng)測(cè)試用例編號(hào):project1-xt-001,命名規(guī)則是項(xiàng)目名稱(chēng)+測(cè)試階段類(lèi)型+編號(hào)。定義測(cè)試用例編號(hào)可以快速查找測(cè)試用例,并可以輕松跟蹤測(cè)試用例的執(zhí)行過(guò)程。
測(cè)試過(guò)程中測(cè)試用例題目的描述應(yīng)該清楚地表達(dá)測(cè)試用例的目的。例如,“當(dāng)用戶(hù)在登錄時(shí)輸入錯(cuò)誤的密碼時(shí),測(cè)試軟件要如何響應(yīng)。”
定義測(cè)試用例的優(yōu)先級(jí),通常可分為“高”和“低”。一般情況下,如果軟件要求的優(yōu)先級(jí)為“高”,則測(cè)試用例優(yōu)先級(jí)為這個(gè)要求也是“高”;反之亦然。
在測(cè)試執(zhí)行期間提供各種輸入條件。基于需求的輸入條件確定測(cè)試用例的輸入。測(cè)試用例的輸入高度依賴(lài)于軟件需求。如果沒(méi)有定義軟件需求所要求的輸入數(shù)據(jù),則會(huì)對(duì)測(cè)試用例設(shè)計(jì)造成障礙。
提供測(cè)試執(zhí)行過(guò)程的步驟。對(duì)于復(fù)雜的測(cè)試用例,測(cè)試用例的輸入必須分為幾個(gè)步驟。這些步驟會(huì)在操作步驟中詳細(xì)描述。
提供測(cè)試執(zhí)行的預(yù)期結(jié)果,應(yīng)根據(jù)軟件要求的輸出。如果實(shí)際測(cè)試中獲得的實(shí)際測(cè)試結(jié)果與預(yù)期結(jié)果不一致,則測(cè)試不通過(guò);反之,測(cè)試通過(guò)。
白盒測(cè)試方法的功能是:對(duì)所有單獨(dú)走過(guò)的路徑進(jìn)行不小于一次的測(cè)試;對(duì)所有可能的邏輯決策運(yùn)行“真”或“假”;并且在有操作邊界的地方做循環(huán)體操作,在有循環(huán)邊界的地方同理;測(cè)試程序中的數(shù)據(jù)結(jié)構(gòu)的有效性。在實(shí)際數(shù)據(jù)測(cè)試中,如果程序中有許多嵌套循環(huán),如果執(zhí)行路徑的數(shù)量不同,則可以使用5×20嵌套循環(huán)小程序和其他對(duì)象編號(hào)。因此,通常需要通過(guò)選擇性地實(shí)施該過(guò)程中的可以應(yīng)用的一些最具代表性的方法來(lái)創(chuàng)造一些替代方法。邏輯覆蓋是很主要的技術(shù)手段,其中包含了幾大塊:語(yǔ)句覆蓋,在程序中運(yùn)行不少于一遍語(yǔ)句。其覆蓋排除邏輯的覆蓋率不考慮,側(cè)重于對(duì)于程序中存在的種種表達(dá)式的運(yùn)行結(jié)果,但是不對(duì)每個(gè)表達(dá)式進(jìn)行一一詳盡的測(cè)試。因此,在圖文和語(yǔ)句中覆蓋相應(yīng)的點(diǎn)使得這種邏輯覆蓋程式相對(duì)較弱;覆蓋決策,也稱(chēng)為覆蓋范圍,由最初滿足的條件陳述語(yǔ)句,對(duì)于每個(gè)可能出現(xiàn)的路徑以及對(duì)應(yīng)的結(jié)果的組合方式都進(jìn)行不少于一遍的測(cè)試。換句話說(shuō),它將針對(duì)每個(gè)分支執(zhí)行至少一次。確定邏輯程序的覆蓋范圍不是很高。在程序中,邊緣路徑是對(duì)應(yīng)于主要路徑來(lái)進(jìn)行決策的;條件覆蓋不單單意味著各個(gè)陳述運(yùn)行不少于一遍,而且會(huì)采取多種可能的方式以得到最后產(chǎn)生的結(jié)果,條件覆蓋范圍可能不包括決策覆蓋范圍;判斷條件覆蓋,其需要有非常多的測(cè)試數(shù)據(jù),這是必備的,有了這些之后對(duì)于判斷條件的數(shù)據(jù)賦值,并且各個(gè)判斷表達(dá)式獲得不同的結(jié)果;在條件組合覆蓋中,有必要擁有盡可能多的數(shù)據(jù)進(jìn)行測(cè)試,以便對(duì)出現(xiàn)的每個(gè)判斷公式的所有可能條件的進(jìn)行至少一遍的組合。條件范圍覆蓋,這是眾多覆蓋中最為強(qiáng)大的;路徑覆蓋有必要擁有盡可能多的數(shù)據(jù)進(jìn)行測(cè)試,以便運(yùn)行時(shí)每個(gè)相關(guān)路徑執(zhí)行的次數(shù)不少于一次。測(cè)試系統(tǒng)的層級(jí)結(jié)構(gòu)包含測(cè)試所需的條件,循環(huán)測(cè)試,基本通過(guò)測(cè)試,至少要確定范圍。這種方法的運(yùn)用,對(duì)復(fù)雜程度要進(jìn)行預(yù)先的計(jì)算,并定義指針的基本執(zhí)行路徑。在實(shí)際用例的測(cè)試中發(fā)現(xiàn),單一應(yīng)用某種用例都不全面,需要結(jié)合多種覆蓋方法進(jìn)行測(cè)試。
通過(guò)黑盒測(cè)試,我們可以測(cè)試功能是否缺失或不正確;主接口是否正確接收正確的輸入和輸出結(jié)果;是否存在外部信息訪問(wèn)錯(cuò)誤或數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤,運(yùn)行時(shí)軟件可以滿足性能要求;軟件初始化或退出時(shí)沒(méi)有錯(cuò)誤;使用黑盒測(cè)試也使得無(wú)法將所有可能的輸入和輸出條件應(yīng)用于測(cè)試,因?yàn)闇y(cè)試用例的組合是天文數(shù)字。顯然,您需要設(shè)計(jì)一個(gè)合理的解決方案來(lái)減少測(cè)試用例的數(shù)量。黑盒測(cè)試的主要測(cè)試用例設(shè)計(jì)方法如下:
等價(jià)劃分是將程序的輸入字段劃分為多個(gè)數(shù)據(jù)類(lèi),然后相應(yīng)地導(dǎo)出測(cè)試用例,因?yàn)橥活?lèi)中的數(shù)據(jù)效果相同。等效性可分為有效等價(jià)和無(wú)效等價(jià)。有效等價(jià)類(lèi)是指滿足程序功能要求并包含有意義數(shù)據(jù)的數(shù)據(jù)類(lèi)。無(wú)效等價(jià)類(lèi)是不滿足程序正確操作或預(yù)期結(jié)果的數(shù)據(jù)類(lèi)集合。設(shè)計(jì)測(cè)試時(shí)在這些情況下,我們應(yīng)該考慮有效等價(jià)類(lèi)和無(wú)效等價(jià)類(lèi)的設(shè)計(jì)。等價(jià)類(lèi)的劃分有其自己的原則。
設(shè)計(jì)一個(gè)新的測(cè)試計(jì)劃,盡可能多地覆蓋有效的等價(jià)類(lèi),重復(fù)這一步,直到它涵蓋所有有效的等價(jià)類(lèi),新的覆蓋未覆蓋的等價(jià)類(lèi)創(chuàng)建測(cè)試計(jì)劃并重復(fù)此步驟,直到所有無(wú)效的等價(jià)類(lèi)都被淹沒(méi)。
通常,等價(jià)類(lèi)邊界的輸入/輸出結(jié)果根據(jù)等價(jià)類(lèi)劃分并確定邊界值選擇,但由于測(cè)試數(shù)據(jù)小于邊界值或大于邊界值,因此需要邊界值分析使用方法。而不是將等價(jià)類(lèi)的內(nèi)部數(shù)據(jù)作為測(cè)試用例。
錯(cuò)誤推測(cè)方法主要依靠直覺(jué)和經(jīng)驗(yàn),需要一些開(kāi)發(fā)大規(guī)模軟件工程的經(jīng)驗(yàn)?;舅枷胧橇信e程序中容易出錯(cuò)的可能錯(cuò)誤和特殊情況,并根據(jù)這些條件選擇測(cè)試方案。
編寫(xiě)測(cè)試用例是測(cè)試人員的必備條件。但有效的設(shè)計(jì)和熟練的操作是一項(xiàng)非常復(fù)雜的技術(shù),要求測(cè)試人員在業(yè)務(wù)和功能方面清楚地掌握整個(gè)軟件。測(cè)試人員總結(jié)實(shí)踐經(jīng)驗(yàn)并將其與測(cè)試?yán)碚摻Y(jié)合,進(jìn)行更有效的測(cè)試用例設(shè)計(jì)。