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