摘 要:本文根據(jù)作者多年軟件測試的教學(xué)經(jīng)驗(yàn)和體會(huì),結(jié)合企業(yè)對軟件測試人員的實(shí)際需求,針對軟件測試課程中的核心內(nèi)容—軟件測試方法的教學(xué)進(jìn)行了研究和探討。
關(guān)鍵詞:黑盒測試 白盒測試 案例 分組
中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1674-098X(2012)04(b)-0164-01
軟件測試課程是高職院校軟件技術(shù)類專業(yè)和軟件測試專業(yè)的一門核心技能課程,通過該課程的教學(xué),為學(xué)生以后走向軟件測試崗位奠定知識(shí)、能力和素質(zhì)基礎(chǔ)。而軟件測試的兩大方法-黑盒測試法和白盒測試法又是軟件測試課程的核心內(nèi)容,教師在對軟件測試方法的教學(xué)中不僅要教授學(xué)生主要的測試方法,還要培養(yǎng)學(xué)生的應(yīng)用能力。能夠根據(jù)實(shí)際案例,靈活選取適當(dāng)?shù)臏y試方法,開展全面、有效地測試工作。
1 測試方法教學(xué)探討
軟件測試的職業(yè)特征決定了軟件測試課程的教學(xué)必須實(shí)現(xiàn)知識(shí)培養(yǎng)和技能訓(xùn)練并重。對于軟件測試方法的教學(xué)將從教學(xué)內(nèi)容、教學(xué)對象、教學(xué)方法和教學(xué)手段等幾個(gè)方面來探討。
1.1 教學(xué)內(nèi)容
軟件測試方法是軟件測試課程的核心內(nèi)容之一,主要介紹了軟件測試的兩大類方法:黑盒測試法和白盒測試法。這兩種方法從不同的角度對軟件進(jìn)行測試。黑盒測試法是把程序封裝在一個(gè)黑匣子里,看不到程序的內(nèi)部,僅能夠從輸入和輸出來判斷程序的正誤。黑盒測試又分為功能測試和非功能測試。功能測試主要包括:等價(jià)類劃分、邊界值分析、因果圖、判定表、場景法、狀態(tài)圖、錯(cuò)誤推測法等;非功能測試主要包括:強(qiáng)度測試、壓力測試、可靠性測試、安全性測試、兼容性測試等。白盒測試法又被稱為結(jié)構(gòu)測試。它好比把程序放在一個(gè)透明的盒子里,已知程序的內(nèi)部過程,按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗(yàn)程序中的各條通路是否能都按照預(yù)定的要求工作。但由于程序的路徑數(shù)可能是一個(gè)非常龐大的數(shù)字,要達(dá)到100%的窮盡測試是不可能的。所以根據(jù)覆蓋率由弱到強(qiáng),有語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋,條件組合覆蓋和路徑覆蓋法。
此部分的教學(xué)重點(diǎn)是黑盒測試和白盒測試的區(qū)別與聯(lián)系;黑盒測試中等價(jià)類劃分、邊界值分析和因果圖法;白盒測試中的邏輯覆蓋法及基本路徑測試法。教學(xué)難點(diǎn)是測試方法的選取是否得當(dāng);測試是否是充分、有效的。也就是說,當(dāng)選取了一種或者幾種測試方法而達(dá)不到覆蓋率要求時(shí),會(huì)不會(huì)選取其他的方法進(jìn)行補(bǔ)充或者說并不是對于任何案例我們都去套用所有的方法,這樣反而是“過猶不及”,影響測試的效率。要想取得良好的教學(xué)效果,必須突出重點(diǎn)、攻破難點(diǎn)。我們采取的方法是:選取合適的案例,由淺入深、循序漸進(jìn);理論講解和實(shí)踐體驗(yàn)雙管齊下。我們選取的案例可以分為:小型案例、中型案例和大型案例。所謂小型案例就是進(jìn)行知識(shí)點(diǎn)講解的典型的小個(gè)體案例。例如,等價(jià)類劃分有經(jīng)典的三角形問題;邊界值分析有NextDate函數(shù);因果圖有自動(dòng)售貨機(jī);場景法有ATM機(jī)等。進(jìn)而再過渡到中型案例,我們截取同期學(xué)生正在進(jìn)行的實(shí)訓(xùn)項(xiàng)目的子模塊來測試,不如說我班同學(xué)正在用C#設(shè)計(jì)一個(gè)考務(wù)系統(tǒng),我們就截取其中的一個(gè)試卷管理模塊,從程序到界面到功能再到性能進(jìn)行一個(gè)全面的測試。最后還要選取大型綜合案例模擬實(shí)際項(xiàng)目的測試流程實(shí)施規(guī)范性的測試。我系與微軟合作創(chuàng)辦了軟件測試專業(yè),建立了校企合作實(shí)訓(xùn)平臺(tái),其中有不少企業(yè)的程序案例都可作為很好的測試素材。
1.2 教學(xué)對象
我們的教學(xué)對象是高職院校二年級(jí)的學(xué)生。這些學(xué)生已經(jīng)具備了較為全面的軟件專業(yè)基礎(chǔ)知識(shí)和一定的編程能力為測試課程的開展奠定了良好的基礎(chǔ)。但是學(xué)生對測試還存在一些認(rèn)識(shí)上的誤區(qū)和學(xué)習(xí)中的盲點(diǎn)。第一,重開發(fā)而輕測試。尤其是開發(fā)方向的學(xué)生,更注重寫代碼,認(rèn)為測試過程可有可無或者說測試就是調(diào)程序;第二,經(jīng)驗(yàn)不足,達(dá)不到測試要求。比如說學(xué)生測試一個(gè)用戶登錄界面,大部分同學(xué)知道要對用戶名和密碼的各種正確的或錯(cuò)誤的組合進(jìn)行一些測試,但往往忽略了當(dāng)用戶名和密碼未輸入,直接點(diǎn)擊“登錄”這種情況。這就反映出了學(xué)生的經(jīng)驗(yàn)不足而測試不夠充分;第三,缺乏細(xì)心很耐心。測試工作不像開發(fā),能夠很直觀的看到一個(gè)成果,比如展示幾個(gè)很美觀的頁面或者實(shí)現(xiàn)了某個(gè)系統(tǒng)功能。測試是為程序找錯(cuò)誤,這個(gè)工作本身就是比較枯燥的。
我們根據(jù)以上學(xué)情,因材施教:第一,先動(dòng)腦、再動(dòng)手、會(huì)總結(jié)。學(xué)生拿到一個(gè)案例執(zhí)行測試之前應(yīng)該先動(dòng)腦,做好計(jì)劃和設(shè)計(jì)工作,思考一個(gè)最優(yōu)最有效的測試方案,然后在動(dòng)手實(shí)施。完成一項(xiàng)測試工作后還要會(huì)總結(jié),歸納分析,總結(jié)經(jīng)驗(yàn)教訓(xùn),為將來更好的測試奠定基礎(chǔ);第二,以項(xiàng)目小組為單位,分角色模擬。我們會(huì)以企業(yè)構(gòu)建真實(shí)測試小組為模板,給學(xué)生分成幾個(gè)測試小組,并分配不同的角色。這樣做一來可以激發(fā)學(xué)生的學(xué)習(xí)興趣,二來學(xué)生將來走向工作崗位,能夠更快更好地適應(yīng)這種規(guī)范化的測試流程。
1.3 教學(xué)方法
軟件測試是一門技能型課程。所以對于測試方法的教學(xué)也分為兩個(gè)部分:理論教學(xué)和實(shí)驗(yàn)教學(xué)。理論教學(xué)采取的方法是“問題導(dǎo)入、任務(wù)驅(qū)動(dòng)、案例深化”。首先,教師引入問題,學(xué)生進(jìn)行討論,提出思路,嘗試解決問題。然后,教師講授課程的知識(shí)點(diǎn)并且以任務(wù)驅(qū)動(dòng),現(xiàn)場演示,通過正例和反例展示結(jié)果,讓學(xué)生比較分析得出結(jié)論,“邊講、邊練、邊演示”。實(shí)驗(yàn)教學(xué)是“以學(xué)生為主體,適當(dāng)引導(dǎo);以項(xiàng)目實(shí)踐為主線,分小組、分角色模擬”。實(shí)驗(yàn)前,教師布置實(shí)驗(yàn)任務(wù)后,通過對項(xiàng)目的細(xì)化分析,讓學(xué)生進(jìn)一步掌握課程的知識(shí)點(diǎn)。實(shí)驗(yàn)中,學(xué)生以四個(gè)人為一個(gè)測試小組(其中一人作為測試組長,三人作為測試成員。小組成員間進(jìn)行討論,組長記錄討論過程并陳述討論結(jié)果,然后共同完成測試)。教師在實(shí)驗(yàn)過程中進(jìn)行巡視,檢查進(jìn)度,當(dāng)學(xué)生遇到問題時(shí),以思路引導(dǎo)的方式,讓學(xué)生自己去探索,而不一味強(qiáng)調(diào)結(jié)果的正確性。實(shí)驗(yàn)后,小組間進(jìn)行互評(píng),以一定的“獎(jiǎng)懲機(jī)制”激發(fā)學(xué)生的競爭性和學(xué)習(xí)興趣,從中培養(yǎng)學(xué)生的團(tuán)隊(duì)意識(shí)和合作精神。
1.4 教學(xué)手段
現(xiàn)代課堂已經(jīng)逐步采用多媒體教學(xué)取代了傳統(tǒng)的板書,這樣做可以提高教學(xué)效率,豐富課堂內(nèi)容。軟件測試方法的教學(xué)也是以多媒體教學(xué)為主,僅對于比較重要的問題,采用板書分解,加深學(xué)生印象。另外,軟件教研室老師開發(fā)了基于軟件測試的課程平臺(tái),實(shí)現(xiàn)課程相關(guān)資料的共享、作業(yè)布置和反饋、在線考試和問題討論版等功能,它可以作為學(xué)生輔助學(xué)習(xí)的一個(gè)平臺(tái),也有利于軟件測試課程的課程建設(shè),建立測試課程自己的資料庫和題庫。最后,還要充分的利用網(wǎng)絡(luò)資源。教師提供給學(xué)生一些優(yōu)秀的測試網(wǎng)站和教學(xué)資料,讓學(xué)生自主學(xué)習(xí),了解行業(yè)的最新動(dòng)態(tài)和就業(yè)的良好前景,增加其學(xué)習(xí)的動(dòng)力。
2 結(jié)語
軟件測試方法是軟件測試課程的核心內(nèi)容,是軟件測試人員或者軟件開發(fā)人員必須掌握的知識(shí)和技能。我們從培養(yǎng)學(xué)生的知識(shí)、能力、素質(zhì)三方面開展教學(xué),為能夠向企業(yè)輸送合格的軟件測試人才不斷地努力中。
參考文獻(xiàn)
[1] 佟偉光.軟件測試技術(shù)(第二版)[M].人民郵電出版社,2010,8.
[2] 賀平.軟件測試課程開發(fā)[J].計(jì)算機(jī)教育,2006.