鞠小林+陳翔+文萬志+張艷梅
摘 要:針對軟件測試課程在教學(xué)知識體系、教學(xué)內(nèi)容、課程教學(xué)組織方面存在的問題,分析問題產(chǎn)生的歷史原因,探討融合理論、方法、實踐3個維度構(gòu)建教學(xué)知識體系的思路,闡述在線構(gòu)建測試工具習(xí)得案例庫的要素及綜合實訓(xùn)平臺設(shè)計方法,最后提出“互聯(lián)網(wǎng)+”背景下的教學(xué)反饋和持續(xù)改進(jìn)策略。
關(guān)鍵詞:軟件測試技術(shù);教學(xué)體系;教學(xué)改革
文章編號:1672-5913(2017)05-0112-05
中圖分類號:G642
0 引 言
隨著計算機(jī)軟件在各行各業(yè)應(yīng)用的不斷普及與深入,軟件開發(fā)行業(yè)已成為推動社會信息化轉(zhuǎn)型的支柱產(chǎn)業(yè)。軟件質(zhì)量逐漸成為行業(yè)競爭的核心力量之一,保障軟件質(zhì)量的重要手段是軟件測試,因此我國急需大量高素質(zhì)的從事軟件測試的專業(yè)人才。
目前,國內(nèi)高校已將軟件測試作為計算機(jī)專業(yè)的一門重要專業(yè)基礎(chǔ)課程,面向廣大研究生、本科生及??粕炔煌瑢哟蔚膶W(xué)生開設(shè)與軟件測試相關(guān)的課程(如軟件測試基礎(chǔ)、軟件測試方法與實踐、實用軟件測試技術(shù)等)。區(qū)別于軟件工程課程,軟件測試課程在高校的開設(shè)大多起步較晚,早期一般是作為軟件工程課程的一部分內(nèi)容合并講解[1]。無論在課程理論教學(xué)內(nèi)容安排還是學(xué)生實訓(xùn)環(huán)節(jié)組織上均存在著系統(tǒng)性、針對性、實用性方面的不足,課程講授的知識點來自對原有軟件工程知識體系的延伸,常常與軟件企業(yè)的實際測試需求脫節(jié)。
教育的本質(zhì)是傳授知識、培養(yǎng)能力的過程。互聯(lián)網(wǎng)技術(shù)的快速發(fā)展給傳統(tǒng)的教育帶來了變革的新機(jī)遇。2014年11月,李克強(qiáng)總理在出席首屆世界互聯(lián)網(wǎng)大會時指出,互聯(lián)網(wǎng)是大眾創(chuàng)業(yè)、萬眾創(chuàng)新的新工具[2]。在“互聯(lián)網(wǎng)+”背景下,高校是發(fā)揮其創(chuàng)新優(yōu)勢的絕佳場所,利用信息通信技術(shù)及互聯(lián)網(wǎng)平臺,使互聯(lián)網(wǎng)與傳統(tǒng)教育深度融合,創(chuàng)造新的教育形態(tài)。
1 教學(xué)過程中存在的問題及改革思路
1.1 對存在問題的分析
通過調(diào)研國內(nèi)多所高校軟件測試課程的教學(xué)情況,結(jié)合南通大學(xué)近3年來的教學(xué)改革經(jīng)歷,我們發(fā)現(xiàn)國內(nèi)的軟件測試課程教學(xué)普遍存在以下3點問題。
(1)講授的知識點分散、繁雜,缺乏系統(tǒng)性。在課程講授過程中,有必要構(gòu)建統(tǒng)一的知識框架。國內(nèi)高校開設(shè)軟件測試課程起步較晚,所講授內(nèi)容一般源于對軟件工程課程中軟件驗證環(huán)節(jié)知識點的細(xì)化和擴(kuò)充。這種方法盡管介紹了很多知識點,但由于這些知識點之間的聯(lián)系普遍較松散,學(xué)生對這些知識的認(rèn)識只是停留在“是什么”的層面。在軟件測試課程的教學(xué)過程中,教師和學(xué)生缺乏一個簡單明了的指導(dǎo)框架,只能分散地講解各部分知識點。這種教學(xué)方式不利于學(xué)生系統(tǒng)地掌握軟件測試的核心要點,也不利于學(xué)生將所學(xué)的軟件測試知識建構(gòu)為一個有機(jī)體系。
(2)教學(xué)內(nèi)容與企業(yè)實際需求脫節(jié)。多數(shù)高校的教師經(jīng)過本科、研究生、博士階段的學(xué)習(xí),畢業(yè)后直接到高校工作。這一現(xiàn)實的直接反映是,教師普遍缺乏在企業(yè)工作的背景,他們在授課時經(jīng)常有意無意地側(cè)重于理論講授而弱化學(xué)生的實踐訓(xùn)練[3]。在軟件測試課程的教學(xué)上集中表現(xiàn)為兩點:一是側(cè)重講授軟件測試的基礎(chǔ)理論、經(jīng)典的軟件測試技術(shù)及工具;二是在學(xué)生實訓(xùn)環(huán)節(jié),側(cè)重安排學(xué)生基于已有的代碼案例開展測試訓(xùn)練,但這些案例被年復(fù)一年地使用,多數(shù)案例已與現(xiàn)階段的企業(yè)實際軟件項目大不相同,而且教學(xué)用的測試工具與企業(yè)正在使用的工具也存在很大的差別。
(3)課程教學(xué)組織模式需要改革。課程教學(xué)組織通常采用“課堂教學(xué)+機(jī)房實驗+課后作業(yè)”線性模式。這種模式下的教學(xué)互動表現(xiàn)為課堂教學(xué)互動、實驗教學(xué)互動、點評學(xué)生作業(yè)互動3個環(huán)節(jié),但3個環(huán)節(jié)之間沒有或很少有互動。眾所周知,理工科課程的學(xué)習(xí)過程是一個持續(xù)、迭代訓(xùn)練的過程,需要師生全方位地開展教學(xué)互動、深入交流,以達(dá)到持續(xù)學(xué)習(xí)、螺旋式提升知識和能力的目標(biāo)?,F(xiàn)有的互聯(lián)網(wǎng)技術(shù)為實現(xiàn)上述目標(biāo)提供了便利,有必要將這些技術(shù)廣泛應(yīng)用于教學(xué)組織過程。
1.2 教學(xué)改革思路
在教學(xué)過程中強(qiáng)調(diào)學(xué)生“做中學(xué)”的基本原則,融合“互聯(lián)網(wǎng)+”技術(shù)背景,組合運(yùn)用課堂教學(xué)、專題討論、上機(jī)實驗、老師點評、助教推進(jìn)、課后持續(xù)改進(jìn)、項目小組競賽以及個人和團(tuán)隊得分排位賽等多種教學(xué)方法。學(xué)生通過教師、助教、團(tuán)隊成員持續(xù)推動,迭代改進(jìn)這種團(tuán)隊和個人的項目實踐,能夠深刻領(lǐng)會軟件測試的方法、技術(shù),同時提升個人技能和團(tuán)隊協(xié)作能力。
首先,篩選眾多軟件測試的相關(guān)知識,提煉軟件測試課程的核心知識域,構(gòu)建測試技術(shù)教學(xué)知識體系;其次,針對知識體系中對應(yīng)的知識點,選擇在企業(yè)中廣泛使用的測試工具,并盡可能地從企業(yè)獲取實際項目來構(gòu)建測試教學(xué)的案例庫;再次,構(gòu)建課程綜合實訓(xùn)平臺,供學(xué)生鞏固所學(xué)的測試方法和技術(shù),并通過系統(tǒng)性訓(xùn)練掌握軟件測試基本原理;最后,在促進(jìn)教學(xué)效果方面,不斷優(yōu)化教學(xué)評價體系,探索教與學(xué)的持續(xù)改進(jìn)方法。
此外,鼓勵學(xué)生參與與軟件開發(fā)測試相關(guān)的各種競賽活動,搭建創(chuàng)新型大學(xué)計算機(jī)教學(xué)實踐平臺[4]。如參加全國大學(xué)生軟件測試大賽,比賽內(nèi)容有開發(fā)者測試大賽、移動應(yīng)用測試大賽和嵌入式測試大賽。借助比賽建立軟件產(chǎn)業(yè)和高等教育的資源對接,探索產(chǎn)教研融合的軟件測試專業(yè)培養(yǎng)體系,進(jìn)一步推進(jìn)高校軟件測試課程的專業(yè)建設(shè)。
2 課程教學(xué)知識域構(gòu)建
2014年發(fā)布的《軟件工程知識體系指南(SWEBOK V3.0)》搜集了33個國家近150位軟件工程領(lǐng)域?qū)<业囊庖姡瑢④浖こ萄芯績?nèi)容劃分為15個知識域[5],其中與軟件測試緊密相關(guān)的知識域是軟件測試和軟件質(zhì)量保證。它們從不同角度涵蓋了與軟件測試研究相關(guān)的海量知識,由于時間有限不可能完全納入軟件測試課程的教學(xué)。我們的教學(xué)改革以這兩個知識域的內(nèi)容為基礎(chǔ),考慮面向本科生的卓越工程師培養(yǎng)要求,篩選其中一部分內(nèi)容構(gòu)建教學(xué)知識域。
目前可以分為兩步:第一步是建構(gòu)軟件測試的理論知識體系,目的是提煉軟件測試?yán)碚摻虒W(xué)知識域,注重各知識域之間的關(guān)聯(lián),力求知識域的系統(tǒng)性;第二步是測試工具習(xí)得案例庫的構(gòu)建,目的是基于已有的軟件工具,開展一系列簡單的項目實踐,讓學(xué)生掌握課堂講授的理論知識點。endprint
2.1 軟件測試教學(xué)知識體系
同濟(jì)大學(xué)朱少民教授發(fā)布的“軟件測試”思維導(dǎo)圖,意圖描繪軟件測試技術(shù)的全景圖,在學(xué)術(shù)界和工業(yè)界引起了廣泛的討論[6]。 這張“軟件測試”思維導(dǎo)圖包含9個模塊,分別是測試定義、測試層次和類型、測試的流派、測試方法、測試方式、自動化測試、測試技術(shù)、測試過程、測試管理。雖然對模塊內(nèi)容的劃分依據(jù)還存在一些爭議,但是該思維導(dǎo)圖覆蓋了軟件測試的理論、方法、技術(shù)和實踐等諸多方面,9大模塊之間也用連線表達(dá)模塊間千絲萬縷的聯(lián)系。我們借鑒該思維導(dǎo)圖覆蓋的知識要點,結(jié)合卓越工程師培養(yǎng)的教學(xué)需要,融合理論、方法、實踐3個維度,構(gòu)建軟件測試課程教學(xué)的知識體系,如圖1所示。
圖1展示了軟件測試課程教學(xué)涉及的知識模塊以及各模塊之間的關(guān)聯(lián)。如前所述,我們篩選了SWEBOK V3.0中對應(yīng)的知識點作為各模塊的教學(xué)內(nèi)容。此外,結(jié)合普通本科院校(如南通大學(xué))學(xué)生的實際情況,對各知識模塊的學(xué)習(xí)要求適當(dāng)調(diào)整,各模塊對應(yīng)的知識域見表1。
在課堂理論教學(xué)中講述上述內(nèi)容時,側(cè)重闡述這些知識點的產(chǎn)生背景、基本原理、目標(biāo)及相互聯(lián)系等,在教學(xué)實踐環(huán)節(jié)精心組織實踐項目,強(qiáng)化所學(xué)知識要點。
2.2 測試工具習(xí)得案例設(shè)計
軟件測試的目的是發(fā)現(xiàn)缺陷,人工測試與利用工具自動測試有各自的適用場景。一般而言,自動測試可以大幅度降低軟件測試代價。目前有大量的測試工具可供教學(xué)使用。我們對照圖1中的知識體系及表1中的知識點,選擇一些有代表性的測試工具構(gòu)造相應(yīng)的案例組織學(xué)生實訓(xùn)學(xué)習(xí),通過工具的學(xué)習(xí)掌握相應(yīng)的知識點?,F(xiàn)有的軟件測試工具使用情況如下。
(1)在學(xué)習(xí)組合測試時,我們設(shè)計了軟件安裝過程的兼容性測試,設(shè)計了一組需要檢測兼容性的環(huán)境要素(如網(wǎng)絡(luò)、操作系統(tǒng)、CPU等),用微軟的開源軟件PICT求解不同組合。
(2)單元測試環(huán)節(jié)分兩組開展教學(xué)。一組是從開源網(wǎng)站(Github、SIR等)下載一組Java源程序及與程序?qū)?yīng)的Bug版本,練習(xí)使用Junit工具或利用集成在Eclipse上的開源插件EclEmma開展單元測試;第二組是從開源網(wǎng)站下載一組C++源程序及與程序?qū)?yīng)的Bug版本,利用微軟Visual Studio單元測試框架開展單元測試。在測試用例方面,可以直接使用SIR提供的測試用例,也可以應(yīng)用所學(xué)的用例設(shè)計方法來構(gòu)造測試用例。
(3)在性能測試教學(xué)環(huán)節(jié),選擇兩組工具(JMeter工具、Visual Studio的性能分析工具),案例選擇的是南通大學(xué)Email服務(wù)性能測試。
(4)代碼覆蓋測試?yán)玫氖羌稍贓clipse上的開源插件EclEmma。實訓(xùn)案例與單元測試相同。
(5)移動應(yīng)用測試應(yīng)用慕測(mooctest.net)提供的移動應(yīng)用測試工具(Kikbug),案例采用了來自工業(yè)企業(yè)的真實案例。
上述案例庫構(gòu)建策略的一個顯著好處是:可以從開源網(wǎng)站下載或與企業(yè)合作的方式獲得工業(yè)企業(yè)最新的軟件開發(fā)項目,這使得學(xué)生不僅能掌握軟件測試基礎(chǔ)知識,而且能接觸到工業(yè)企業(yè)最新的軟件開發(fā)實踐,增加學(xué)生身臨其境的感覺,從而更直觀地認(rèn)識到在現(xiàn)階段軟件測試中需要解決的問題。
3 課程教學(xué)實訓(xùn)平臺構(gòu)建
盡管有豐富的測試工具可用于軟件測試課程教學(xué),但配置這些工具通常比較復(fù)雜,需要耗費(fèi)師生及員工大量時間和精力。其表現(xiàn)在:①運(yùn)行環(huán)境差異。不同測試工具對運(yùn)行操作系統(tǒng)、網(wǎng)絡(luò)配置、運(yùn)行庫等要求往往不同。②支持的編程語言差異。不同的測試工具可能支持不同的編程語言,有的支持Java語言,有的支持C++語言。③支持項目差異。不同的測試工具往往支持不同特征的項目測試,有些僅支持對傳統(tǒng)軟件項目的測試,有的支持對C/S 或B/S 架構(gòu)的項目測試,還有的工具用于測試移動應(yīng)用。
因此,很有必要構(gòu)建一個用于軟件測試課程教學(xué)的綜合實訓(xùn)平臺,將軟件工具配置的工作對 師生透明化。如此,教師的工作重心可以集中于構(gòu)建學(xué)生實訓(xùn)的題庫,學(xué)生則集中精力考慮測試策略、測試用例設(shè)計,通過系統(tǒng)內(nèi)嵌的測試工具驗證測試策略和測試用例,進(jìn)而掌握相應(yīng)的理論知識點和提升實際動手能力。我們基于慕測科技提供的系統(tǒng)架構(gòu),構(gòu)建軟件測試課程教學(xué)實訓(xùn)平臺[7],其結(jié)構(gòu)如圖2所示。
圖2這種架構(gòu)的好處是顯而易見的。從開源網(wǎng)站、學(xué)術(shù)界及軟件企業(yè)獲取項目實踐素材,經(jīng)過篩選轉(zhuǎn)換之后構(gòu)建測試題庫,這種方式保證了教學(xué)內(nèi)容緊貼實際需求,并且在測試項目的構(gòu)建上有很強(qiáng)的擴(kuò)展性。學(xué)生通過網(wǎng)站提供的統(tǒng)一用戶訪問接口實現(xiàn)測試環(huán)境的構(gòu)建,測試環(huán)境可以跟蹤學(xué)生的軟件使用、開發(fā)行為。系統(tǒng)實現(xiàn)了自動化評分、自動化提示、編程行為跟蹤等網(wǎng)絡(luò)服務(wù)。此外,系統(tǒng)還提供了微信和博客接口,可以實現(xiàn)基于互聯(lián)網(wǎng)的課堂測試、課堂調(diào)研及課后作業(yè),該功能已被廣泛用于教學(xué)互動環(huán)節(jié)。
4 “互聯(lián)網(wǎng)+”背景下的教學(xué)反饋與持續(xù)改進(jìn)
4.1 教學(xué)評價體系構(gòu)建
傳統(tǒng)的教學(xué)反饋形式有課堂教學(xué)互動(提問及點評)、課后答疑、期中調(diào)研、期末測驗等。其中,課堂教學(xué)互動效果好但特別耗時,使得課堂教學(xué)內(nèi)容不夠濃縮,并且這種收益是一次性的(下一輪教學(xué)仍需重復(fù)同樣的動作)。教學(xué)中及時反饋十分重要,但課后答疑、期中調(diào)研、期末測驗等形式很難保證實時性,從而降低了這類反饋的效果。
我們基于互聯(lián)網(wǎng)技術(shù)優(yōu)化教學(xué)評價體系,具體做法如下:①在課堂上以講授理論知識為主,穿插討論、翻轉(zhuǎn)課堂等形式。此外,可以基于綜合實訓(xùn)平臺開展微信小測、微信投票等形式的教學(xué)活動。②基于教學(xué)實訓(xùn)平臺組織實驗教學(xué)。學(xué)生在提交實驗結(jié)果后可以從自動評分模塊得到本次實驗得分。這在一定程度上降低了教師的工作量,學(xué)生還可以根據(jù)結(jié)果迭代改進(jìn)。此外,在平臺FAQ模塊列出學(xué)生學(xué)習(xí)過程中可能會遇到的常見問題,教師和助教負(fù)責(zé)更新自己課程的FAQ。③實驗報告、課后作業(yè)以博客的形式提交,教師和助教直接在博客中進(jìn)行點評。采用內(nèi)容訂閱和推送服務(wù)(RSS、Email),方便教師在學(xué)生完成博客后收到RSS和Email通知。學(xué)生的博客被點評后也會收到RSS和Email通知,這在一定程度上提高了師生交互的效率。endprint
4.2 持續(xù)改進(jìn)
雖然我們基于互聯(lián)網(wǎng)信息技術(shù)初步構(gòu)建了較為高效的教學(xué)評價機(jī)制,但是整個系統(tǒng)的整合度還不是很高,教學(xué)反饋過程目前依賴于利用一些已有的工具,這些工具需要進(jìn)一步與教學(xué)實訓(xùn)系統(tǒng)整合。目前,我們已完成微信與教學(xué)實訓(xùn)系統(tǒng)的整合,下一步需要整合QQ這種在學(xué)生中廣泛使用的即時通信工具。我們的目標(biāo)是實現(xiàn)微信、QQ、Email、RSS等互聯(lián)網(wǎng)工具或服務(wù)與整個教學(xué)實訓(xùn)系統(tǒng)的融合,不斷優(yōu)化它們之間的接口,以提高師生交流的效率,從而方便學(xué)生和教師的使用。
5 結(jié) 語
軟件測試課程是計算機(jī)專業(yè)的核心課程,我們在構(gòu)建教學(xué)知識體系上注重系統(tǒng)性;在實驗教學(xué)組織上注重實踐性,加強(qiáng)實驗平臺建設(shè),選擇緊跟企業(yè)需求的實踐素材;在教學(xué)反饋機(jī)制建設(shè)上注重互聯(lián)網(wǎng)信息技術(shù)的應(yīng)用和整合。我們下一步工作是優(yōu)化課程理論教學(xué)體系,對課程教學(xué)實訓(xùn)平臺進(jìn)行升級,增加新的測試功能,進(jìn)一步縮短教學(xué)反饋傳播途徑。通過持續(xù)改進(jìn)教學(xué)內(nèi)容和過程,提高對軟件測試人才培養(yǎng)的效率。
參考文獻(xiàn):
[1] 陳翔, 鞠小林. 卓越計劃驅(qū)動下的軟件測試技術(shù)課程教學(xué)改革[J]. 計算機(jī)教育, 2013(13): 14-17.
[2] 新華網(wǎng). 李克強(qiáng)同世界互聯(lián)網(wǎng)大會中外代表座談[EB/OL]. [2016-11-11]. http://news.xinhuanet.com/politics/2014-11/20/c_1113340416.htm.
[3] 鞠小林, 文萬志, 陳翔, 等. 卓越計劃驅(qū)動的軟件工程課程教學(xué)方案設(shè)計[J]. 計算機(jī)教育, 2014(23): 57-60.
[4] 盧湘鴻. 搭建創(chuàng)新型大學(xué)計算機(jī)教學(xué)實踐平臺[J]. 計算機(jī)教育, 2014(23): 1.
[5] SWEBOK. Guide to Software the Software Engineering Body of Knowledge [EB/OL]. [2016-11-11]. http://www.swebok.org/.
[6] 朱少民. 世上最全的“軟件測試”思維導(dǎo)圖[EB/OL]. [2016-11-11]. http://www.testwo.com/article/691.
[7] 慕測科技[EB/OL]. [2016-11-11]. http://mooctest.net .
(見習(xí)編輯:張 勛)endprint