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