郭 煦
(上海電機學院 電子信息學院,上海201306)
2010年6月,教育部宣布啟動“卓越工程師教育培養計劃”。“卓越工程師教育培養計劃”是貫徹落實《國家中長期教育改革和發展規劃綱要(2010—2020年)》和《國家中長期人才發展規劃綱要(2010—2020年)》的重大改革項目,旨在培養造就一批創新能力強、適應經濟社會發展需要的高質量各類型工程技術人才[1-2]。這項涉及逾千所高校400萬工科專業學生的重大項目,將聯合行業企業著力培養學生的實踐與創新能力。
軟件測試課程的教學通常是針對測試的基本概念、測試用例設計方法、測試各階段的主要任務為主線展開的,就測試講測試,而沒有置軟件測試的內容于軟件工程的大背景下,與軟件工程其他專業課的銜接也沒有跟進。其結果就是學生知識體系的構建不夠完整,學到的是條條塊塊的知識,而無法建立一個完整的軟件工程知識體系。
軟件測試課程涉及許多基本概念,如樁、驅動、路徑覆蓋、回歸測試、吞吐量等,準確理解這些概念是順利進行軟件測試的基礎。對于教師來講,采用常規教學手段講授清楚這些概念并不困難,而學生學習這些概念靠的是死背硬記,沒有理解和掌握概念的含義。究其原因是理論教學和實踐教學脫節嚴重,理論教學采用滿堂灌的方式,很少與學生交流和互動,學生也沒有機會在實踐中深入理解這些概念。
一方面是由于軟件工程類專業的課程設置多偏重于軟件開發類課程,從程序設計語言到設計模式、架構設計,學生自然認為開發是軟件工程的重中之重。反觀測試類課程,只有一門軟件測試技術課。另一方面,課程的內容在很大程度上引導學生去給現有的程序或軟件找缺陷,學生也會認為只有不會編程的人才會去做測試。因此,學生對軟件測試課程的重視程度不夠,學習動力不足。
作為軟件工程學科的分支,軟件測試技術與軟件工程理論有著密切的聯系。因此,教師在教學過程中首先聯系先修課程軟件工程,重溫軟件生命周期,這樣既可以消除學生對本課程的陌生與敬畏感,又可以為本課程內容的展開做好鋪墊。講授軟件測試的過程和階段時,會重申軟件工程課程的相關內容,同時也可以比較軟件工程中提到的瀑布型模型和當前軟件開發中的V型模型,這樣可以使學生將兩門課程有機地聯系起來進行學習。
在講授缺陷管理和跟蹤時,除了介紹常規的缺陷管理工具等內容外,還兼顧本課程的后續課程——軟件項目管理,對軟件項目管理的內容適當點撥,引領學生的思路從測試管理自然延伸到軟件項目管理。
在授課過程中也注意到與并發課程內容的銜接和整合。如在講授單元測試工具JUNIT時,會結合并發課程Java Web開發中SSH框架開發的內容,講授JUNIT工具如何應用在SSH框架下進行單元測試。
綜上,在本課程的教學過程中,同時兼顧課程的先修課、后續課和并發課的內容整合,使軟件測試過程置于軟件工程學科的背景之下,這樣就打破了各門課程內容之間的壁壘,改善了彼此很少關聯的傳統課程教學模式,能夠建立課程之間的有機聯系。
在理論教學環節,重視采用案例教學手段。讓學生帶著問題去學,通過一個個具體問題的解決,將基本概念和原理的講授置于實踐的背景下,從而幫助學生準確理解重要概念。如,通過幾組案例的介紹,強調軟件測試的重要性,同時激發學生的學習興趣,并由此引出軟件測試的目的。明確軟件測試的目的才能準確地定位測試,并更有效地進行測試,學生學習才有動力和目標。對于各階段的測試方法和測試工具,選擇一個簡單的小程序或小型軟件,邊講邊演示。如在講授單元測試的時候,以類Gcd(求兩個數的最大公約數的類)為測試對象,結合講授單元測試工具JUNIT用法。在講授集成測試的時候,以類Environment(設定系統時間和日期的類,教師自編)為測試對象。在給學生展示類Environment的代碼以后,學生可以通過現有的知識來判斷,直接對這個類做單元測試是不可行的。通過提出對類Environment的測試問題,分析該測試問題,引出樁和驅動的概念,從而給出該問題的解決方案,即集成測試方法的講授。在講授性能測試、驗收測試和測試管理的時候,選擇以往學生的畢業設計項目作為樣本,解析對該項目的測試過程。因為學生對這類項目的需求是十分了解的,而且案例項目來自本校高年級學生之手,自然會激起學生的極大興趣。這樣就可以順利地展開對項目的需求分析、測試計劃制定、測試環境搭建、測試用例設計、測試執行、測試結果分析及發布測試報告等測試環節。這樣,寓重要概念和重要方法的講授于實際問題的解決中,既可以激發學生的學習興趣,又能加深他們對重要概念的理解。
綜上所述,在軟件測試課程的教學實踐中,一方面注重從軟件工程學科的宏觀背景下講授軟件測試的基本流程,另一方面注重結合案例在微觀項目中講授軟件測試概念和方法,從而打通課程間的壁壘,幫助學生快速構建知識體系,在實踐中理解和掌握軟件測試的重要概念。
傳統教學模式中,教師占據主體地位,教師講,學生聽,學生容易產生依賴心理,甚至感到疲勞、枯燥。在教學實踐中,我們的做法是讓教學實施圍繞某問題、任務或項目展開,以項目為載體,由教師引導學生自主學習和研究。如在講授測試用例的設計方法時,以軟件測試領域經典的測試問題(如nextDate問題、買槍問題等)為案例,要求學生以小組為單位討論測試用例的設計方案。由每個小組派代表交流設計思路,最后由教師點評。
同時,針對本課程的重要知識點進行梳理,制作了7套時長10分鐘左右的慕課,充分利用線上手段對這些重要知識點進行集中簡短的講授。
翻轉課堂和慕課等現代化教學手段的實施,使學生從知識的被動接受者轉變為主動建構者,這種方法極大調動了學生學習的積極性,讓學生學會獨立思考,綜合運用所學知識解決實際問題;同時也鍛煉了學生的表達溝通能力。
軟件測試對學生的實踐能力也有很高的要求。有效的實踐教學是促進知識理解、培養動手能力的一個重要的環節。我們在實踐教學環節改革方面也進行了積極探索。
實踐教學分為課內實驗和課程設計兩個部分。課內實驗作為理論課的有力補充,與課堂教學相輔相成,具有啟發學生積極思考,深入理解理論課內容,達到理論聯系實際的作用。內容安排上本著由淺入深、循序漸進的原則交叉安排了認知型、設計型、綜合型3種類型的實驗項目。認知型實驗是基礎實驗,目的是讓學生掌握一些軟件測試工具的使用方法。我們選擇了大多數企業測試部門最常用的測試工具,包括JUNIT、JMeter、QTP、Selenium、Bugzilla 等。對于大多數被測軟件來說,這些測試工具完全能夠支撐整個軟件測試過程。設計型實驗是另一類基礎實驗,讓學生通過設計實驗方案將課堂所學理論知識應用于實踐,進一步鞏固理論基礎,內容有黑盒測試、白盒測試、單元測試等。綜合型實驗是對知識點的綜合應用,使學生理解和掌握軟件測試技術和各種具體的測試方法在項目中的應用,感受軟件測試項目的工作流程和實施細節,為后續的課程設計做好準備。綜合型實驗畢竟屬于常規實踐教學環節,規模和難度都會適當控制。高年級學生的畢業設計作品、軟件測試中的經典問題等都作為綜合實驗的素材。綜合實驗一般包含2~3項軟件測試的重要方法或者重要概念。如針對公交換乘查詢軟件(學生畢業設計作品)做功能測試,驗收測試并利用工具實現缺陷管理和跟蹤。
課程設計是實踐教學中非常重要的環節。理論教學和常規實踐教學給學生打牢理論基礎、奠定基本的操作技能,而課程設計則要求學生綜合運用本課程及相關課程的知識解決實際的工程問題。課程設計安排在理論課程和常規實踐教學結束后進行。學生自由組合為小組,分角色進行。在課程設計教學中,我們應用了當今工程教育的CDIO理念。CDIO 分別代表構思(Conceive)、設計(Design)、實現(Implement)和運作(Operate),它以產品研發到產品運行的生命周期為載體,讓學生以主動的、實踐的、課程之間有機聯系的方式學習工程[3-6]:“構思”側重測試的需求分析和測試策略的制定;“設計”側重測試用例設計和測試過程的設計;“實現”和“運作”側重測試工具的選擇、具體測試方案的實施。在課程設計中,我們選擇軟件企業的實際項目作為測試對象,結合企業提供的項目需求文檔,從需求分析、測試方案設計、測試計劃制定、測試用例設計到缺陷跟蹤等都由學生獨立完成。
在課程設計的教學和考核中,我們采取寬嚴相濟的考核辦法:嚴格要求學生自己動手設計方案并實施,杜絕個別學生拷貝的現象;嚴格驗收和檢查,要求學生編寫規范化文檔,并結合演示,隨機抽取提問等手段,使學生在思考—實現—再思考中真正得到提高。同時營造一個比學趕幫超的學習氛圍,鼓勵學生發表自己的見解,鼓勵學生放開手腳大膽實踐。
卓越工程師不僅要能解決實際工程問題,而且還必須具備相應的社會意識、人文精神、誠信和職業道德[7]。對學生進行專業教育的同時,還要注意培養其職業道德。在課程教學中,讓學生了解作為一名合格工程師所必須具備的素質與規范, 并要求學生在未來的學習與實踐環節中始終以工程師的道德標準與行為準則要求自己。我們教育學生要勤學好問,發現問題不放過,學會充分利用各種資源解決問題。我們提倡理論聯系實際,要想真正學會測試,必須進行實際的測試。我們反對閉門造車,鼓勵學生多了解行業動態,了解行業需求,有針對性地學習。我們教育學生要細心有耐心,軟件測試是對人的技術和意志的考驗,不細心就有可能與缺陷擦肩而過;沒有耐心就無法將枯燥的測試進行到底。我們注重培養學生的團隊精神和溝通能力,工程領域的工作絕非個人能力所及,必須學會匯集眾人的智慧和力量。在團隊中,還要學會與團隊中各種角色的人進行有效、順暢的溝通。
作為軟件工程專業的重要基礎課程,軟件測試課程對傳授軟件測試技術,培養學生的工程實踐能力都有重要作用。我們在軟件測試技術課程教學過程中,探索出“強化基礎,重視實踐,著力提高動手能力”的教學理念,并注重學生職業道德的養成教育,為卓越工程師培養方式進行了積極探索。我們在教學過程中始終秉承這一理念,連續三年學生評教得分94.37(校平均得分90.96),連續三年督導評價得分92.21(校平均得分 90.12)。
我們將在教學實踐中繼續探索,不斷總結經驗教訓,期望能為卓越工程師培養做些實事,為培養符合現代企業要求的工程技術人才做出自己的貢獻。
參考文獻:
[1]新華社. 國家中長期教育改革和發展規劃綱要(2010—2020年)[EB/OL]. [2017-07-29]. http://www.gov.cn/jrzg/2010-07/29/content_1667143.htm.
[2]新華社. 國家中長期人才發展規劃綱要(2010—2020年)[EB/OL]. [2017-08-30]. http://www.gov.cn/jrzg/2010-06/06/content_1621777.htm.
[3]康全禮, 丁飛己.中國CDIO工程教育模式研究的回顧與反思[J]. 高等工程教育研究, 2016(4): 40-46.
[4]謝愛娟, 曹劍瑜, 羅士平, 等. CDIO視域下構建“五位一體”實驗教學新模式[J]. 教學研究, 2015, 38(1): 98-101.
[5]汪軍, 強俊. 基于CDIO理念的軟件工程專業人才培養模式的研究[J]. 重慶工商大學學報(自然科學版), 2015, 32(6): 70-74.
[6]成淑萍. TOPCARES-CDIO模式下軟件測試課程教學改革[J]. 軟件導刊, 2015, 14(5): 187-189.
[7]隋秀凜, 吳秋鳳, 段鐵群, 等. 卓越工程師人才培養管理模式探索與實踐[J]. 大學教育, 2016, (5): 165-167.