李小榮,疏志年
(1.合肥工業(yè)大學(xué) 計算機(jī)與信息學(xué)院,安徽 合肥 230009;2.巢湖學(xué)院 計算機(jī)與信息工程學(xué)院 安徽 巢湖 238000)
軟件黑盒測試用例設(shè)計方法的研究
李小榮1,2,疏志年2
(1.合肥工業(yè)大學(xué) 計算機(jī)與信息學(xué)院,安徽 合肥 230009;2.巢湖學(xué)院 計算機(jī)與信息工程學(xué)院 安徽 巢湖 238000)
在經(jīng)濟(jì)全球化、社會信息化的時代,軟件產(chǎn)業(yè)有效促進(jìn)所有領(lǐng)域和行業(yè)的信息化建設(shè)進(jìn)程.在信息時代,國家、企業(yè)和個人對軟件質(zhì)量的要求在不斷提高,軟件測試作為軟件質(zhì)量保障的重要手段之一越來越受重視.本文對黑盒測試技術(shù)進(jìn)行了介紹和分析,筆者運(yùn)用相關(guān)方法對軟件進(jìn)行了黑盒測試并取得初步成效.
軟件測試;測試用例;黑盒測試;等類劃分;邊界值分析
目前,社會信息化進(jìn)程深入我們生活中的所有領(lǐng)域,軟件虛擬化信息,高度集中資源和服務(wù),是信息技術(shù)產(chǎn)業(yè)當(dāng)之無愧的核心.好的軟件能為用戶節(jié)省資源、提高工作效率、提高市場競爭力,而差的軟件運(yùn)行可能不符合用戶的要求或難以正式運(yùn)營,存在巨大的安全隱患,泄露公司重要機(jī)密,甚至導(dǎo)致用戶方破產(chǎn),所以國家、企業(yè)和個人對軟件質(zhì)量的要求在不斷提高,作為軟件質(zhì)量保障的重要手段之一的軟件測試的重要性和必要性越來越明顯[1].
一個特定軟件由多個子系統(tǒng)組成,如高校教務(wù)管理軟件一般包括有教學(xué)計劃管理子系統(tǒng)、師資管理子系統(tǒng)、學(xué)生信息管理子系統(tǒng)、教材管理子系統(tǒng)、排課子系統(tǒng)、成績管理子系統(tǒng)和其他多個子系統(tǒng);每個子系統(tǒng)下包含若干個功能模塊,如教材管理子系統(tǒng)下包括有教材基本信息管理模塊、教師教材計劃模塊、教材訂購模塊、教材入庫模塊、教材出庫模塊、教材回庫模塊、數(shù)據(jù)統(tǒng)計/打印模塊等.正如蓋房后建筑方需要初步檢驗、購房者需要驗房一樣,軟件編碼后開發(fā)方需要進(jìn)行一系列測試以初步檢查其是否能如預(yù)設(shè)正常工作,是否能滿足用戶的需要,是否存在安全隱患,此后用戶方進(jìn)行驗收,這些操作在軟件產(chǎn)業(yè)內(nèi)被稱作軟件測試.
軟件測試無法做到窮盡測試,因為軟件測試時即要輸入合理的數(shù)據(jù)檢驗其是否能實現(xiàn)所要求的功能和性能、也要考慮輸入不合理的數(shù)據(jù)檢驗其容錯能力和是否能正確拒絕不應(yīng)該做的事情.就常用的用戶登陸模塊而言,所有合理、不合理的數(shù)據(jù)是無窮盡的,無法列舉和記錄,且窮盡測試就時間而言顯然用戶就無法接受.由于窮盡測試既費時又無意義且不可能實現(xiàn),為在最短時間、最小代價、最高效率的達(dá)到最佳測試效果,開發(fā)方就必須在測試之初精心設(shè)計測試用例[3].
測試用例是為特定的目標(biāo)而準(zhǔn)備的一組執(zhí)行前提條件、輸入數(shù)據(jù)以及預(yù)期結(jié)果,用以測試某個程序執(zhí)行路徑是否如設(shè)想那樣進(jìn)行或核實其是否滿足某個特定功能或性能上的需求.在測試用例的構(gòu)成和目的中可見測試用例設(shè)計效果將會影響軟件測試的質(zhì)量和成敗,是軟件測試工作的重心[4].設(shè)計測試用例時須同時考慮的因素有完整性、正確性、一致性、可理解性、可執(zhí)行性、可復(fù)用性等.
本文所研究的黑盒測試又稱功能測試,是站在用戶視角進(jìn)行的測試,一般用于測試較晚期;此時,程序的內(nèi)部邏輯結(jié)構(gòu)和實現(xiàn)處理過程不可見,外界只知道它應(yīng)提供的功能或此程序輸入與對應(yīng)的預(yù)期的輸出結(jié)果,測試員依據(jù)需求規(guī)格說明書和軟件設(shè)計說明書設(shè)計測試用例,通過測試來檢測每個功能和性能是否符合用戶方需求[2].
在開始具體測試之前設(shè)計好測試用例有以下優(yōu)點:不同階段不同類型的測試用例可以規(guī)范測試計劃、成為測試工作的依據(jù);有針對性的測試用例相當(dāng)于“有的放矢”、使測試重點突出,可避免測試的盲目性;測試用例的執(zhí)行進(jìn)程記錄有助于測試員的工作量的核算和跟蹤;測試用例和測試結(jié)果的妥善保存有助于交叉測試、回歸測試,可提高軟件的測試效率進(jìn)并促進(jìn)軟件構(gòu)件的可重用性;用戶方可進(jìn)行測試用例和測試結(jié)果記錄的查閱,從側(cè)面了解軟件產(chǎn)品的質(zhì)量,從中選擇用戶關(guān)注重點進(jìn)行驗收測試.
3.1 等價類劃分
等價類劃分法是依據(jù)軟件開發(fā)文檔和產(chǎn)品文檔把被測程序的所有可能性輸入數(shù)據(jù)劃分成若干個數(shù)據(jù)等價類(包含有效等價類和無效等價類),假定類中每個數(shù)據(jù)對揭露程序錯誤來說是等效的,故可選用一個數(shù)據(jù)可以代表一類數(shù)據(jù),據(jù)此設(shè)計測試用例.使用等價類劃分法設(shè)計測試用例的步驟:(1)按軟件開發(fā)文檔和產(chǎn)品文檔劃分等價類,并為每一個等價類編號(注意:每個等價類的編號唯一);(2)選取測試用例:設(shè)計一個新的測試用例使其盡可能多地覆蓋尚未被覆蓋的有效等價類(如某測試用例同時滿足數(shù)據(jù)類型、數(shù)據(jù)長度、數(shù)據(jù)范圍等的要求),重復(fù)這一步驟直到所有有效等價類都被覆蓋為止;設(shè)計一個新的測試用例,使其覆蓋一個而且只覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步驟直到所有無效等價類都被覆蓋為止[2].
以高校教務(wù)管理系統(tǒng)中成績管理子系統(tǒng)下的成績錄入模塊內(nèi)的正常成績錄入功能為例,由任課教師在期末時登陸web子系統(tǒng),可錄入所帶班級對應(yīng)科目的成績.最終總評成績由平時成績、實驗成績、期中成績、期末成績按教學(xué)大綱制定的比例(四項比例的總和為100%)共同自動生成;成績保存前要設(shè)置好各部分成績及總評成績的類型:百分制、等級制(優(yōu)秀、良好、中等、合格、不合格),錄入部分成績后可選擇“保存”,全部成績錄入完成并檢查無誤后點擊“提交”按鈕,提交確認(rèn)過后的學(xué)生成績?nèi)握n教師無權(quán)修改.若以百分制錄入平時成績,則有效等價類為[0,100],無效等價類有兩個,(-∞,0)、(100,+∞),可取75、-5、1000作為測試用例;若以等級制錄入平時成績,則有五個與等級制規(guī)定所對應(yīng)的有效等價類,此外所有數(shù)據(jù)均屬無效等價類.
3.2 邊界值分析法
此法是對等價類劃分方法的補(bǔ)充,大量測試和應(yīng)用實踐證明,開發(fā)員容易在信息域的邊界處理上出現(xiàn)差錯(如:“>=0”誤寫為“>0”),且輸出數(shù)據(jù)的邊界也有可能處理錯誤需要測試檢查,針對邊界附近而非等價類內(nèi)部的單個值設(shè)計測試用例,可以排查出更多的錯誤,測試效率更高[2].等價類劃分法主要針對輸入數(shù)據(jù)劃分等價類,在選取測試用例時,是在數(shù)據(jù)類內(nèi)部任選一個數(shù)據(jù)或一個典型值作為測試數(shù)據(jù);邊界值分析法既考慮輸入數(shù)據(jù),又綜合考慮輸出數(shù)據(jù)的情況并對其劃分有效、無效等價類,并在等價類的邊界上選擇至少三個數(shù)據(jù)作為測試數(shù)據(jù):正好等于邊界值、稍小于或稍大于邊界值,若再完備一些,可再在邊界上往外擴(kuò)展一個數(shù)據(jù)進(jìn)行測試.
延用成績錄入模塊中以百分制錄入平時成績?yōu)槔容^兩者的區(qū)別:有效等價類為[0,100],等類劃分法選用一個典型值如“60”作為測試數(shù)據(jù);而邊界值分析法在此區(qū)域內(nèi)選擇“0、1,50、99、100”作為測試用例.
3.3 因果圖法
前兩種方法著重于單一條件的考慮,但軟件處理的實際問題的結(jié)果經(jīng)常與多個條件的取值相關(guān)(如高校借書處理結(jié)果與借閱者身份、借閱者是否有書超期、已借書籍的數(shù)量、書籍是否被他人預(yù)約、書籍類型等相關(guān);游客去旅行社享受的折扣與游客的身份、年齡、預(yù)定的線路、旅游的季節(jié)等相關(guān)),因果圖法是對等價類的擴(kuò)展,又被形象地稱為“等價類組合判定表”,適用于處理結(jié)果與多種條件取值相關(guān)時的測試用例的設(shè)計[2].
因果圖是分析程序規(guī)格說明中的相關(guān)描述,將輸入條件視為“因”,把程序狀態(tài)的改變或輸出稱為“果”,根據(jù)描述和相關(guān)定義畫從因到果的網(wǎng)絡(luò)圖,然后轉(zhuǎn)換為判定表,并為判定表中每一列設(shè)計一個測試用例.
判定表又叫決策表,可用于詳細(xì)設(shè)計階段的算法描述,也可用于輔助測試,它能把與結(jié)果相關(guān)的多個條件各種可能的取值組合有序列舉,較其他方法簡易,且可避免遺漏.在詳細(xì)設(shè)計階段描述程序處理算法時判定表分為四個部分:左上角列出問題相關(guān)的所有條件,左下角列出可能采取的行動;右上角是相關(guān)條件所有取值組合構(gòu)成的矩陣,右下角列出各種取值組合下應(yīng)采取的動作;測試階段所用判定表相對于設(shè)計階段而言在最底下多下一行“測試用例”,即針對每一列條例取值組合設(shè)計一個典型值進(jìn)行測試.
3.4 錯誤推測法
錯誤推測法是基于以往經(jīng)驗和測試員的和直覺,列舉出被測程序中可能出現(xiàn)的錯誤和容易產(chǎn)生錯誤所在,有針對性的設(shè)計測試用例[2].
以成績錄入模塊設(shè)計測試用例為例,成績錄入時要設(shè)置好的各部分成績的比例設(shè)置可能就許多,再加上部分成績類型與總評成績類型,輸入的各總部分具體成績,輸出的總評結(jié)果,就此單個功能的測試,有效輸入的組合數(shù)非常巨大.我們以經(jīng)驗判斷,在成績等級的邊緣處理容易出錯.由于成績輸入可限定有效數(shù)據(jù)范圍,一般不會出錯,而總評等級結(jié)果是由分?jǐn)?shù)轉(zhuǎn)換而來,結(jié)果未知,因此我們側(cè)重在等級評定的邊緣處設(shè)計測試用例.如:設(shè)置輸入數(shù)據(jù)平時成績、實驗成績、期中成績、期末成績四者錄入均為百分制,輸出結(jié)果總評成績?yōu)榈燃壷疲仪八牟糠殖煽冊跇?gòu)成總評時的比例為“30%:20%:0%,50%”.測試結(jié)果表明,成績輸入正常,但總評結(jié)果為等級邊界時,總評顯示為百分制,如89,而非預(yù)期結(jié)果“良好”.
由在軟件本身的復(fù)雜性、軟件應(yīng)用環(huán)境的復(fù)雜性、時代軟硬件技術(shù)限制、無法完全擺脫手工開發(fā)及等原因,軟件出錯無法杜絕.為在軟件正式交付用戶投入使用之前和在軟件造成的事故發(fā)生之前盡可能多的發(fā)現(xiàn)和改正潛在錯誤,有效提高軟件的質(zhì)量和可靠性,支持企業(yè)和國家的信息化建設(shè),軟件測試必不可少,信息時代對軟件測試用例設(shè)計方法的研究沒有終點[5].
〔1〕趙子軍.新一代信息技術(shù)產(chǎn)業(yè)標(biāo)準(zhǔn)化明確“新風(fēng)向”[J].中國標(biāo)準(zhǔn)化,2013(08):14-18.
〔2〕吳潔明.軟件工程實例教程[M].北京:清華大學(xué)出版社,2010.284-332.
〔3〕王立新.軟件測試數(shù)據(jù)的高效生成及測試方法研究[D].東華大學(xué),2011.
〔4〕芮素娟.可復(fù)用測試用例研究[J].電腦知識與技術(shù),2013:3308-3310.
〔5〕蔡建平.軟件測試實驗指導(dǎo)教程[M].北京:清華大學(xué)出版社,2009.1-44.
TP311.5
A
1673-260X(2014)03-0026-02