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