王勇+李麗+盧桂馥+劉濤



摘要:提高計算機相關專業學生的軟件測試水平,將有利于保證學生畢業后開展高水平的軟件測試工作,從而進一步提高我國的軟件質量。文章分析軟件測試教學過程中存在的問題,提出以核心概念與案例驅動的軟件測試課程教學改革,闡述其具體方法和實施途徑,最后總結課程評價和效果。
關鍵詞:軟件測試;核心概念;案例驅動
0.引言
隨著軟件日益滲透到人們生活的方方面面,人們對軟件高質量的要求也日漸迫切。然而,通過與軟件企業中的項目經理和測試人員溝通交流,大多企業表示,雖然軟件測試工作是一項重要工作,但與系統開發人員和軟件設計師相比,軟件測試員的工作未能得到應有的重視,這與軟件測試人員的技術水平以及業界的重產出輕質量相關。因此,提高軟件測試水平,將有利于開展高水平的軟件測試工作,保證軟件的高質量,同時,也會為軟件測試職業帶來正面效應。
1.存在的問題
1.1基本概念混淆
目前,大多數高校均開設軟件測試課程,通常以講解理論知識為主,實踐教學環節只占很小的部分,即教師重理論、輕實踐;另一方面,學生普遍對理論不感興趣,重視軟件測試工具的使用。最后結果是學生對測試理論一知半解,對測試工具的掌握粗枝大葉。
通過調研可以看出,學生對軟件測試中的基本概念含糊不清,經常混淆。比如,軟件測試與調試,軟件錯誤(error)與故障(fault),軟件故障(fault)與失效(failure)等混為一談。對軟件測試的基本原理不清,表現為對諸如覆蓋(coverage)、故障傳播模型(RIP模型)、測試充分性等不甚了解。眾所周知,對一門學科的核心概念的精準把握,有利于掌握該學科的基本原理。反之,核心概念的混淆,反映學生對軟件測試原理的理解不夠深入。
1.2案例及測試教學工具缺乏
軟件測試是一門實踐性很強的課程。學生們如果不能親手完成測試活動的各個過程,就很難真正地掌握軟件測試的相關知識,更難勝任軟件公司的軟件測試工程師崗位。目前,大多高校都對軟件測試課程的實踐教學環節高度重視,也采取了案例驅動的教育教學改革。然而,適用于高校教學的實際案例不多見,軟件測試教材中所給出的諸如判斷屬于哪種三角形的案例很難適應軟件測試對象不斷發展的要求。高校在案例及可應用于教學的測試工具選擇上存在困境。如何在給定課時的情況下,既教授學生專門的軟件測試理論知識,又讓學生掌握市場上常見的軟件測試工具,對高校的教師的確是一個很大的挑戰。
1.3師資缺少工程背景
軟件測試是一門藝術,Boris Beizer等將軟件測試劃分為五級,leve10到level4。在最高級(1evel4)中,測試看作是一種智力訓練,能夠幫助所有的IT專業人員開發出更高質量的軟件產品。由此可見,軟件測試雖然感覺起點要求比較低,但是到第三級以后,軟件測試工程師不但要有軟件測試的相關理論知識,還要有大量的與軟件產品質量相關的知識。大多高校都缺少專門從事軟件測試領域研究并具有豐富工程背景的教師。近年來,不少本科高校引進了大量的計算機相關的博士,軟件相關的博士依然較少,而博士偏重于某一狹小領域的研究方向,對整個軟件相關的本科專業教學幫助并不大。因此,解決軟件測試的師資及其工程化背景,是提高軟件測試教學質量的關鍵之一。
2.方法
2.1以學生反饋為抓手,重點灌輸核心概念和測試思想
核心概念的清楚把握是理解某一門技術的關鍵。例如,在整個軟件測試過程中,軟件規格說明書起著至關重要的作用,是衡量軟件是否失效的關鍵。表1是軟件測試中所涉及的核心概念。基于這些核心概念,我們通過隨機測驗的方式及時了解學生的掌握情況。
通常的測試結果顯示,學生對有些概念的理解令人驚訝。我們需要對這些概念進行重點標注,并調整部分教學內容的講授。
軟件測試本質是一種抽樣技術。正如Beizer所說,測試很簡單,測試人員只需要找到一個圖然后覆蓋它。然而,覆蓋的原則是什么?關注點在哪里?我們需要結合故障傳播的過程,并進行多次強化。故障傳播模型有利于學生理解軟件失效產生的過程,而能理解軟件工作即為發現軟件失效的過程,而軟件調試即為已知軟件失效去找到bug并進行修復的過程。通過學生的多次反饋,積極灌輸測試基本概念與測試思想,有利于學生理解軟件測試的本質思想,更有利于后期的測試實踐。
2.2以案例驅動打通軟件測試工作流程
軟件測試是一門藝術,更是一項工程實踐活動。學生在教學活動中工程實踐能力的提高是判斷教學質量的關鍵。因此,很多高校都試圖探索出符合本校學生實際的項目驅動教學方案。自2012年,我們也進行了案例驅動教學改革的嘗試。我們認為,單元測試是集成測試、系統測試等方法的基礎,通過案例驅動,打通軟件測試的整個工作流程比講授更多的測試技術更重要。因此,在整個案例驅動過程中,我們側重于精講單元測試過程中各個測試準則的應用。
軟件測試是發現軟件錯誤的過程,該過程不僅僅包括測試用例的設計與測試諭言的使用,還包括大量的文檔撰寫。規范化的文檔是進行規范化測試的基礎與保證,IEEE829 Standard給出的測試文檔如圖1所示。
我們對標準的測試文檔進行簡化,主要強調軟件規格說明書、測試設計規格說明、測試用例與測試數據規格說明、測試結果報告等主要測試文檔的撰寫。在案例驅動中主要應用一個簡單程序——飛機座位預訂程序作為課堂教學案例講解,使用一個較為復雜的程序——車輛保險程序作為學生課后練習使用。其內容主要分以下幾個部分(見表2)。
2.3借助開源項目,增強學生的學習興趣
面向教學的案例選擇程序規模通常較小,無法滿足學生對較復雜軟件測試學習的實際需求。因此,為了增強學生的學習興趣,提高學生的實踐能力,可以通過引入軟件測試領域廣泛使用的SIR庫(The Software Infrastructure Repository,htto://sir.unl.edu/portal/index.html)中開源軟件作為學生的軟件測試對象。表3選取SIR庫中規模適中的8個程序作為開源項目。SIR庫已包含了一個用于正確版本和多個錯誤版本,以及應用各種測試研究的測試用例集合。通過研讀開源軟件的幫助文件,學生能夠掌握測試用例的規范編寫,以及測試腳本的編寫。表3為開源軟件信息表。
3.課程評價及效果
軟件測試課程不同于一般的理論課程,它不但需要學生的個人能力,同時需要團隊的協作精神。我們將課程成績劃分為兩塊,理論考試占70%,實踐考核為30%。我們在實踐過程中將學生每4個人分為一組,作為實踐部分的最終得分。在考核中,教師對每一個小組進行考核,組長對小組成員進行考核。我們將每個小組規定為100分,55分交給組長分配給每個組員,比如25分、10分、10分、10分,總計55分,其他組員每個人有15分的分配權利。
我們分別對教學改革前的2010級計算機科學與技術專業的81名學生、教學改革后的2011級計算機科學與技術的79名學生、2012級計算機科學與技術專業的84名學生進行了滿意度調查,主要包括課程滿意度、組長滿意度、組員滿意度。為了避免直接對教師進行評價,我們讓每名學生對課程之間進行效果評價,分為很滿意、比較滿意、滿意、不滿意四個等級。小組內也進行滿意度評價,分別是組長對組員,組員對組長及其他組員。圖2顯示學生對課程的滿意度有了顯著的改善。圖3顯示學生之間的滿意度也逐年增長。總之,采用核心概念和案例驅動的教學改革有效果顯著。
4.結語
高校在軟件測試課程的教學與實踐中還存在諸多問題。我們針對這些問題采用以核心概念和案例驅動的教學方法改革,并取得了一定的教學效果。但是,培養滿足社會需求的軟件測試人才,不僅僅要改革軟件測試課程的方式方法,還需要課程群之間的相互滲透。下一步,我們將基于核心概念與案例驅動的教學改革實踐應用于軟件方向的課程中。