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



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