劉桂玲
(北京信息職業(yè)技術(shù)學(xué)院軟件與信息學(xué)院,北京 100018)
在等價類劃分法和邊界值分析法中,都是著重考慮輸入條件,并沒有考慮到輸入情況的各種組合,也沒考慮到各個輸入情況之間的相互制約關(guān)系。如果在測試時必須考慮輸入條件的各種組合,可能的組合數(shù)將是天文數(shù)字。因此必須考慮描述多種條件的組合,相應(yīng)地產(chǎn)生多個動作的形式來設(shè)計測試用例,這就需要利用因果圖。因果圖方法適合于檢查程序輸入條件的各種組合情況,因果圖方法是一種有效的軟件測試方法。
因果圖是一種形式語言,用自然語言描述的規(guī)格說明可以轉(zhuǎn)化為因果圖。因果圖實(shí)際上是一種數(shù)字邏輯電路(一個組合的邏輯網(wǎng)絡(luò)),但沒有使用標(biāo)準(zhǔn)的電子學(xué)符號,而是使用了稍微簡單點(diǎn)的符號,它有助于用一個系統(tǒng)的方法選擇出高效的測試用例集,它還有一個額外的好處就是可以指出規(guī)格說明的不完整和不明確之處。
因果圖法是從用自然語言書寫的程序規(guī)格說明的描述中找出因(輸入條件)和果(輸出或程序狀態(tài)的改變),因果圖中使用的是簡單的邏輯符號,以直線連接左右結(jié)點(diǎn)。左結(jié)點(diǎn)表示輸入狀態(tài)(或稱做原因),右結(jié)點(diǎn)表示輸出狀態(tài)(或稱做結(jié)果),在因果圖中用4種符號分別表示規(guī)格說明中的4種因果關(guān)系,通常在因果圖中,用c表示原因,e表示結(jié)果。各結(jié)點(diǎn)表示狀態(tài),可取“0”或“1”值?!?”表示某狀態(tài)不出現(xiàn),“1”表示某狀態(tài)出現(xiàn)。
使用因果圖法的優(yōu)點(diǎn):
(1)考慮到了輸入情況的各種組合以及各個輸入情況之間的相互制約關(guān)系。(2)能夠幫助測試人員按照一定步驟,高效率的開發(fā)測試用例。(3)因果圖法是將自然語言規(guī)格說明轉(zhuǎn)化成形式語言規(guī)格說明的一種嚴(yán)格的方法,可以指出規(guī)格說明存在的不完整性。
(1)分析程序規(guī)格說明的描述中,哪些是原因,哪些是結(jié)果。并給每個原因和結(jié)果賦予一個標(biāo)識符。原因常常是輸入條件或是輸入條件的等價類,而結(jié)果是輸出條件。(2)分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間,原因與原因之間對應(yīng)的關(guān)系,根據(jù)這些關(guān)系,畫出因果圖。(3)由于語法或環(huán)境限制,有些原因與原因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn),為表明這些特殊情況,在因果圖上用一些記號表明約束或限制條件。(4)把因果圖轉(zhuǎn)換成判定表。(5)把判定表的每一列拿出來作為依據(jù),設(shè)計測試用例。
因果圖生成的測試用例包括了所有輸入數(shù)據(jù)取TRUE與FALSE的情況,構(gòu)成的測試用例數(shù)目達(dá)到最少,且測試用例數(shù)目隨輸入數(shù)據(jù)數(shù)目的增加而增加。
事實(shí)上,在較為復(fù)雜的問題中,這種方法常常是十分有效的,它能有效地幫助確定測試用例。當(dāng)然,如果哪個開發(fā)項目在設(shè)計階段就采用了判定表,也就不必再畫因果圖了,而是可以直接利用判定表設(shè)計測試用例了。
圖1 原因與結(jié)果主要關(guān)系
圖2 排異約束
圖3 包容約束
圖4 唯一約束
圖5 要求約束
因果圖基本符號包括原因,用C表示,例如C1、C2……Ci;結(jié)果,用E表示,例如E1、E2……Ei;狀態(tài),用0或1表示,當(dāng)一個原因為假或真時,稱其處于“0狀態(tài)”或“1狀態(tài)”、當(dāng)一個結(jié)果發(fā)生(或不發(fā)生)時,稱其處于“1狀態(tài)”或“0狀態(tài)”,也就是說0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。
(1)原因與結(jié)果之間的關(guān)系。因果圖中用來表示4種因果關(guān)系的基本符號,它們分別是恒等、非、或、與,如圖1所示。
(2)原因之間的約束關(guān)系。在因果圖中,原因之間的約束關(guān)系包括排異約束、包容約束、唯一約束和要求約束,這四種約束關(guān)系用特定的符號標(biāo)明。排異約束用符號E表示,如圖2所示;包容約束用符號I表示,如圖3所示;唯一約束用符號O表示,如圖4所示;要求約束用符號R表示,如圖5所示。
針對高職院校軟件技術(shù)專業(yè)學(xué)生,結(jié)合《軟件測試技術(shù)》課程教學(xué)大綱,下面將從教學(xué)分析、設(shè)計思路、實(shí)施過程、學(xué)習(xí)成果、教學(xué)評價五個方面進(jìn)行論述。
3.1.1 教學(xué)內(nèi)容選定
授課內(nèi)容選自軟件技術(shù)專業(yè)的一門核心課程《軟件測試技術(shù)》課程,根據(jù)專業(yè)標(biāo)準(zhǔn)、人才培養(yǎng)方案、課程標(biāo)準(zhǔn),立足軟件測試行業(yè)人才需求,參考校企合作編寫教材,將課程以一個項目“某某 web 網(wǎng)站的測試”為框架,以下分別設(shè)置講述了4個任務(wù):
(1)制定軟件測試策略和根據(jù)具體測試項目確定測試方法;(2)根據(jù)測試計劃采用黑盒測試方法進(jìn)行測試用例的設(shè)計;(3)正確根據(jù)測試計劃采用白盒測試方法進(jìn)行測試用例的設(shè)計;(4)進(jìn)行測試實(shí)施以及撰寫測試報告。本單元授課內(nèi)容為任務(wù)二中的 2.4 黑盒測試的因果圖測試法,所需學(xué)時4學(xué)時。
3.1.2 學(xué)情分析
授課對象為高職軟件技術(shù)專業(yè)學(xué)生,通過前期調(diào)研分析可知,學(xué)生已經(jīng)具備文檔撰寫技巧、涉及相關(guān)的基礎(chǔ)知識和基本技能;學(xué)生還需在如下方面繼續(xù)努力,提高成績。如軟件測試方法、測試用例設(shè)計、撰寫測試報告等方面需要深入學(xué)習(xí),團(tuán)隊合作等職業(yè)素養(yǎng)方面有待進(jìn)一步加強(qiáng)。
3.1.3 教學(xué)目標(biāo)
根據(jù)課程標(biāo)準(zhǔn)和崗位要求,確定本單元的知識目標(biāo)、能力目標(biāo);并把培養(yǎng)學(xué)生規(guī)范操作職業(yè)素養(yǎng)、培養(yǎng)精益求精的職業(yè)精神和團(tuán)隊合作精神貫穿于整個教學(xué)過程中。
3.1.4 教學(xué)重難點(diǎn)
根據(jù)課程標(biāo)準(zhǔn)及學(xué)生已有的知識與能力,確定單元的教學(xué)重點(diǎn)是:通過需求規(guī)格說明,確定原因和結(jié)果;確定原因和結(jié)果之間的關(guān)系;能夠繪制因果圖。教學(xué)難點(diǎn)是:繪制因果圖過程中,中間節(jié)點(diǎn)的抽取。
依據(jù)職業(yè)教育教學(xué)改革要求,基于翻轉(zhuǎn)課堂教學(xué)理念,采用任務(wù)驅(qū)動教學(xué)法,以“某某web網(wǎng)站的測試”為載體進(jìn)行教學(xué)設(shè)計,完成從因果圖基礎(chǔ)知識(基本符號、主要關(guān)系)到繪制因果圖、設(shè)計測試用例的完整工作過程。充分利用教學(xué)資源和網(wǎng)絡(luò)課程平臺的教學(xué)資源,開展課前預(yù)習(xí)、課上學(xué)習(xí)和課后拓展的教學(xué)活動。
根據(jù)課程標(biāo)準(zhǔn),“黑盒測試的因果圖測試法”教學(xué)項目安排4課時,在教學(xué)實(shí)施過程中分為課前準(zhǔn)備、課程教學(xué)環(huán)節(jié)(課堂引入、知識點(diǎn)講解、實(shí)例講解)、評價總結(jié)和課后拓展提高等4個環(huán)節(jié)。
3.3.1 課前準(zhǔn)備
教師提前將問題、學(xué)習(xí)資料上傳到課程平臺,發(fā)布課前預(yù)習(xí)通知。學(xué)生接到預(yù)習(xí)通知后,下載問題,并通過查找學(xué)習(xí)資源進(jìn)行自主學(xué)習(xí),拓展了學(xué)習(xí)的時間與空間。
3.3.2 課程教學(xué)環(huán)節(jié)
通過小組代表演示、闡述預(yù)習(xí)問題,檢驗學(xué)生預(yù)習(xí)效果。教師播放FLASH動畫引入本次課程的授課內(nèi)容,一方面幫助學(xué)生梳理之前所學(xué)的等價類劃分法、邊界值著重考慮的是單個輸入條件;另一方面引入本次課程學(xué)習(xí)內(nèi)容“因果圖測試法”,用因果圖可以體現(xiàn)多個輸入條件之間的組合關(guān)系。在教學(xué)環(huán)節(jié)中,采用的教學(xué)手段包括廣播管理軟件進(jìn)行電子點(diǎn)名、課堂引入(信息化教學(xué)手段、學(xué)生動手畫圖、團(tuán)隊合作)、知識點(diǎn)講解(學(xué)生自主學(xué)習(xí)、學(xué)生代表發(fā)言、小組PK、師生互動)、采用學(xué)生自主學(xué)習(xí)、小組交流、團(tuán)隊PK的形式進(jìn)行因果圖基本知識點(diǎn)講解。通過小組代表發(fā)言交流,同學(xué)們對因果圖部分內(nèi)容知識點(diǎn)都基本掌握,個別同學(xué)對符號的表示有時會混淆。針對這一問題,通過對實(shí)例進(jìn)一步講解和小組之間完成互動游戲,進(jìn)行PK,加深同學(xué)們對符號的記憶。在實(shí)例講解環(huán)節(jié)中,由于因果圖法的主要思想較難直觀地達(dá)到理解的效果,所以采用引入實(shí)例的教學(xué)方法,幫助學(xué)生理清邏輯思路,通過7步法,完成實(shí)例同時也掌握了因果圖法的主要思想。
圖6 實(shí)物圖
實(shí)例1:
某軟件的需求規(guī)格說明書中規(guī)定:
第一個字符必須是A或B,第二個字符必須是一個數(shù)字字符,在此情況下進(jìn)行文件的修改;如果第一個字符不是A或B,則給出信息L;如果第二個字符不正確,則給出信息M。確定原因和結(jié)果,繪制正確的因果圖,并設(shè)計合理的測試用例。
解析:實(shí)例1題目較簡單,教師通過動畫演示,分析實(shí)例說明,幫助學(xué)生理清邏輯思路,逐步確定原因和結(jié)果;確定因果關(guān)系;確定原因之間的約束;確定中間節(jié)點(diǎn)。在繪制因果圖過程中,因為因果圖的設(shè)計方法不唯一,為了集思廣益,采用分組討論,將小組所繪因果圖上傳平臺并展示。大家共同討論修改后,學(xué)生二次提交。最后,通過學(xué)生上交的結(jié)果,評選小組最佳因果圖。通過“騰訊投票助手”投票,票數(shù)最高的小組作業(yè)為最優(yōu)。
實(shí)例2:有一個自動售貨機(jī)軟件(只接收5元或者10元紙幣),其規(guī)格說明如下,見圖6。
(1)若投入5元紙幣,按下可樂、雪碧或紅茶按鈕,則送出相應(yīng)的飲料;
(2)若售貨機(jī)沒有零錢找,則一個顯示“零錢找完”的紅燈亮,此時投入10元紙幣并按下某種飲料按鈕后,則退還10元紙幣;
(3)若售貨機(jī)有零錢找,此時投入10元紙幣并按下某種飲料按鈕后,在送出相應(yīng)飲料的同時退還5元?!?/p>
請根據(jù)上述描述確定原因和結(jié)果,并繪制因果圖。
解析:實(shí)例2題目較難,教師先通過白板畫圖,幫助同學(xué)們分析實(shí)例說明,確定原因個數(shù)和結(jié)果個數(shù);確定因果關(guān)系以及他們之間的約束。教師在電腦上進(jìn)行操作。學(xué)生一邊聽講,一邊跟著教師操作。小組作業(yè)上傳課程平臺,教師點(diǎn)評、學(xué)生修改,小組進(jìn)行二次提交。
學(xué)生總結(jié)任務(wù)實(shí)施過程中的得失。總結(jié)內(nèi)容包含知識掌握情況和綜合素質(zhì)情況兩個方面。教師總結(jié)本次課的重點(diǎn)與課堂上發(fā)現(xiàn)的問題,總結(jié)學(xué)生上交作業(yè)情況。
課后學(xué)生完成任務(wù)單,包括企業(yè)真實(shí)案例。學(xué)生根據(jù)自身技能水平,合理選擇拓展任務(wù),學(xué)生課后遇到問題,可以與教師交流。
(1)學(xué)生課堂滿意度、課堂紀(jì)律、團(tuán)隊合作、任務(wù)單完成率均有明顯提升;期中、期末考試成績成上升趨勢。(2)學(xué)習(xí)和小組PK貫穿整個教學(xué)環(huán)節(jié),學(xué)生團(tuán)隊意識顯著增強(qiáng)。(3)真實(shí)企業(yè)案例提升學(xué)生學(xué)習(xí)興趣。
根據(jù)學(xué)生課堂及完成活動任務(wù)的表現(xiàn),以教師點(diǎn)評和學(xué)生互評的形式相結(jié)合,對所學(xué)知識在任務(wù)單中進(jìn)行小結(jié)。