鞠小林+陳翔+文萬志+張艷梅



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