余久久
(安徽三聯(lián)學(xué)院計算機工程學(xué)院,合肥 230601)
近年來,隨著軟件行業(yè)的高速發(fā)展和軟件市場的日漸成熟,軟件企業(yè)對于軟件測試人才的需求飛速增長[1]。軟件測試也已發(fā)展為高校軟件類專業(yè)的一門主干課程,并受到教育界、產(chǎn)業(yè)界及學(xué)術(shù)界的高度重視。軟件測試也成為一門重要的職業(yè)。關(guān)于軟件測試課程的實踐教學(xué),近幾年很多高校一直在積極探索新的教學(xué)經(jīng)驗與方法。由于不同高校的辦學(xué)定位及人才培養(yǎng)目標(biāo)有所不同,加之軟件測試自身的內(nèi)容又比較抽象,因此很難在教學(xué)內(nèi)容及教學(xué)手段上形成有效共識[2]。盡管目前國內(nèi)有很多高校積極開展各種教學(xué)改革活動,但主要還是以腳本化測試流程來安排實踐教學(xué)環(huán)節(jié),這與當(dāng)前IT行業(yè)中、?。ㄎⅲ┸浖椖康拿艚轀y試方法所脫節(jié)。測試工具(開源的或付費使用的)也具有復(fù)雜性與多樣性,市面上很多軟件測試教材大都缺乏對某一種或幾種測試工具的綜合應(yīng)用案例作詳細(xì)講解,而僅僅是從文字性的理論層面籠統(tǒng)介紹這些測試工具的使用方法,使得學(xué)生理解起來困難與抽象,無法與企業(yè)實際需求相銜接。此外,有些高校盡管會出資購買(通常由第三方軟件企業(yè)研發(fā))一些現(xiàn)成的軟件測試實驗(實訓(xùn))平臺輔助實踐教學(xué),以適應(yīng)學(xué)生數(shù)量多和軟件測試實踐教學(xué)的“測試多樣性”特點。然而在實驗初期,無論是教師還是學(xué)生都要花費大量的時間和精力去熟悉這些平臺的操作方法,工作量較大。然而,很多測試實驗平臺中包含的測試案例資源沒有任何針對性,內(nèi)容也不完整,這對提升學(xué)生的軟件測試水平幫助不大[3]。
基于此,本文針對應(yīng)用型本科軟件測試課程的教學(xué)目標(biāo)、內(nèi)容與學(xué)生認(rèn)知特點,以軟件企業(yè)中、?。ㄎⅲ嶋H敏捷測試項目的運作流程為導(dǎo)向,探索軟件敏捷測試實踐教學(xué)方法,強調(diào)對輕量級軟件項目的快速迭代測試與持續(xù)集成、相應(yīng)測試工具的熟練應(yīng)用,并把該方法充分應(yīng)用于作者所在高校《軟件測試》課程的實踐教學(xué)中,取得良好的教學(xué)效果。
敏捷測試強調(diào)從用戶角度測試系統(tǒng),重點關(guān)注迭代測試新開發(fā)的功能[4]。敏捷測試強調(diào)測試速度與適應(yīng)性,通過不斷修正測試指標(biāo),實現(xiàn)用戶的有效需求,達到及時發(fā)布最終產(chǎn)品的目的。其克服了傳統(tǒng)測試流程中存在的問題,比如不適應(yīng)需求的頻繁變更,軟件周期縮短及繁雜流程制約等關(guān)鍵問題[5]。近年來,隨著國內(nèi)外軟件行業(yè)的蓬勃發(fā)展,敏捷測試已廣泛應(yīng)用于各類輕量級軟件項目的測試實踐中。
軟件測試課程具有較強的綜合性與實踐性,以純理論的形式全面介紹各種過程化的測試方法與軟件測試質(zhì)量保證體系則不適宜。針對應(yīng)用型本科層次學(xué)生,需要掌握一門面向?qū)ο蟾呒壋绦蛟O(shè)計語言(Java/C++/C#等)作為學(xué)習(xí)前提,在理論層面上需了解現(xiàn)代軟件測試的重要性、原理、方法、規(guī)范及管理過程,熟悉軟件測試的基本工作流程[6-7]。應(yīng)用型本科計算機類專業(yè)核心課程大都以專業(yè)應(yīng)用為主,對一些深厚的理論知識不做過多要求。劉強[8]等人進一步提出了應(yīng)用型本科高校軟件測試課程的教學(xué)應(yīng)引導(dǎo)學(xué)生樹立快速迭代的測試思想,了解用戶的測試需求,具備閱讀與撰寫測試文檔的能力。在實踐環(huán)節(jié),要求學(xué)生能夠在特定的測試環(huán)境下熟練使用相應(yīng)的測試工具,完成對中、?。ㄎⅲy試項目快速開展敏捷測試活動,并對每日新增代碼完成持續(xù)集成測試,使得新增代碼組件具有可測試性,能撰寫出規(guī)范化的各類階段性測試文檔。當(dāng)然,良好的團隊協(xié)作能力與溝通能力也不可或缺。結(jié)合教學(xué)實際,本文在文獻[7]的基礎(chǔ)上,由應(yīng)用型本科軟件測試課程的教學(xué)目標(biāo)所制定出的課程實踐教學(xué)內(nèi)容,如表1所示。
教師要能以一個完整的輕量級軟件測試項目來組織實踐教學(xué)內(nèi)容。應(yīng)用背景為學(xué)生所熟知,不宜過難,規(guī)模不宜過大,必須以用戶需求為測試目標(biāo),每一輪測試周期不能過長,要符合敏捷測試項目特點[9]。學(xué)生能運用敏捷思想和最佳測試實踐技術(shù)解決用戶需求。
表1 軟件測試實踐教學(xué)內(nèi)容
敏捷測試在較短的迭代周期內(nèi),代碼的提交量相對于傳統(tǒng)測試大得多[10]。其測試核心是“快速迭代,持續(xù)集成,構(gòu)建驗證”。敏捷測試目前已成為業(yè)內(nèi)輕量級軟件項目測試的主流方法。為了適應(yīng)這種新的變化,培養(yǎng)滿足企業(yè)實際需要的人才,有必要在軟件測試課程實踐教學(xué)中引入敏捷測試方法[9-11]。
敏捷測試的持續(xù)性迫切要求測試的高度自動化,即自動化測試是敏捷測試的基礎(chǔ)[12]。所以自動化測試工具的學(xué)習(xí)與應(yīng)用是學(xué)生自始至終是測試實踐的內(nèi)容。此外,敏捷測試的迭代周期不能過長,通常不超過一周。本文所構(gòu)建的軟件敏捷測試實踐教學(xué)框架如表2所示。作者結(jié)合教學(xué)實際及測試項目難易度等特點,在框架中制定出了四輪測試周期,每一輪測試周期為一周,整個敏捷項目測試完成時間一般不超過一個月。
表2 軟件敏捷測試實踐教學(xué)框架
軟件測試考核形式要求多樣化,旨在提升學(xué)生對實際測試項目的運作能力。結(jié)合教學(xué)實際,在充分借鑒文獻[6]的基礎(chǔ)上,制定了一套完整的多元化的軟件測試課程實踐教學(xué)過程考核體系,如表3所示。當(dāng)然,教師可以根據(jù)測試項目的最終完成情況增設(shè)相應(yīng)幅度(1~5分)的額外獎勵分?jǐn)?shù),例如,測試組能否提出測試新思路,能否撰寫出高水平科技論文等。建議適當(dāng)聘請一些企業(yè)測試人員參與考核中,保證考核的公正性。
表3 敏捷測試過程考核體系
作者及其教學(xué)團隊自2014年起對所在高校計算機與軟件技術(shù)類本科專業(yè)的軟件測試課程開展敏捷測試實踐教學(xué)活動。當(dāng)然,學(xué)校環(huán)境與軟件企業(yè)有所不同,在校學(xué)生的經(jīng)驗、能力等方面也遠(yuǎn)不如企業(yè)員工,因此應(yīng)結(jié)合實際教學(xué)環(huán)境采取敏捷測試實踐教學(xué)方法指導(dǎo)實踐教學(xué)活動。由于我院軟件測試課程實踐環(huán)節(jié)僅安排4周時間,所以劃分為四個敏捷測試周期(每個周期1周左右),這里主要介紹關(guān)鍵環(huán)節(jié)的實施情況。
教師緊密圍繞表1中的實踐教學(xué)內(nèi)容并通過對軟件企業(yè)實際調(diào)研,精心設(shè)計出若干個行業(yè)背景為學(xué)生所熟知、能與校園生活密切相關(guān)的敏捷測試項目,同時充當(dāng)用戶代表,并給出了用戶主要的測試需求,如表4所示。學(xué)生以分組形式(每組不超過4人)參與敏捷測試實踐活動。在第一個敏捷測試周期中,測試組需要了解項目特點,制定出敏捷測試計劃,確定團隊人員分工與職責(zé),從用戶角度定義與分解出項目最主要的測試需求,明確每一條測試任務(wù)的驗收標(biāo)準(zhǔn),完成測試工作量的基本估算。在第二個及第三個敏捷測試周期中,逐步明確一些用戶次要功能特性的測試任務(wù)與驗收標(biāo)準(zhǔn),在主要功能模塊測試的基礎(chǔ)上,使用測試工具不斷完成相應(yīng)模塊的測試驅(qū)動程序的開發(fā)及模塊單元測試,并進行持續(xù)集成測試,提交階段性項目測試版本。在第四個敏捷測試周期中,不斷完善之前的單元測試及集成測試(框架),完成項目的驗收測試。開發(fā)驗收測試腳本,嘗試對一些新增功能進行探索性測試,通過自動化測試手段完成最終的驗收測試,統(tǒng)一提交最終測試版本與相關(guān)測試文檔。實踐結(jié)束后,指導(dǎo)教師借鑒表3中的實踐過程考核體系,與來自企業(yè)的測試工程師一起參照考核條目對每個測試組綜合評定成績。
表4 敏捷測試項目及用戶主要測試需求
作者在近3 a的軟件測試課程實踐教學(xué)中,充分運用了軟件敏捷測試實踐教學(xué)框架,以激發(fā)學(xué)生學(xué)習(xí)軟件測試興趣,教學(xué)效果良好。80%以上的學(xué)生認(rèn)為在以下幾個方面體現(xiàn)出學(xué)習(xí)效果:(1)增強了軟件測試的職業(yè)素養(yǎng),充分了解現(xiàn)代敏捷軟件測試項目的實踐方法,與企業(yè)需求形成無縫銜接,畢業(yè)后愿意從事軟件測試崗位相關(guān)工作。(2)學(xué)習(xí)主動性與應(yīng)用創(chuàng)造性在實踐中得到提升。小組實踐使.自己更愿意積極而主動地參與項目活動。(3)編碼與測試能力顯著增強,尤其對相應(yīng)的自動化測試工具的應(yīng)用水平。
軟件敏捷測試實踐教學(xué)方法的實施對任課教師和學(xué)生均提出了新的挑戰(zhàn)。任課教師需要轉(zhuǎn)變傳統(tǒng)測試思想,即現(xiàn)代軟件測試不是軟件開發(fā)完畢之后的一個“附帶檢測”活動,也不是圍繞軟件缺陷所展開的一系列活動,而是關(guān)注測試對象的本身,關(guān)注用戶不斷變化的需求及快速交付用戶的產(chǎn)品價值。此外,教師還要熟悉敏捷測試中所用到的自動化測試工具的使用方法,能夠指導(dǎo)學(xué)生快速搭建敏捷測試環(huán)境,關(guān)注持續(xù)迭代的新功能。學(xué)生在實驗前不僅需要了解測試?yán)碚撝R之外,也要花費額外的時間去熟悉相關(guān)軟件白盒及黑盒自動化測試工具的使用方法,能夠熟練安裝與配置自動化測試測試平臺,了解敏捷測試項目功能特性的設(shè)計與代碼實現(xiàn)的驗收標(biāo)準(zhǔn),需要具備一定的代碼編寫及文檔寫作能力。所以在實施軟件敏捷測試實踐教學(xué)環(huán)節(jié)的初期,無論是教師還是學(xué)生,工作量都是比較大的。
未來工作主要有:(1)任課教師需要深入軟件企業(yè)一線,參與到實際敏捷測試實踐中,多了解敏捷測試的最新應(yīng)用成果,多搜集敏捷測試在實際項目中的綜合案例資源。能夠結(jié)合本地化教學(xué)環(huán)境對一些來自企業(yè)的案例進行適當(dāng)?shù)恼?、加工、?yōu)化以及再設(shè)計,能夠模擬出符合應(yīng)用型本科學(xué)生認(rèn)知特點、難易度適中、服務(wù)于教學(xué)的實踐教學(xué)案例(包含有用戶需求、測試目標(biāo)、測試驅(qū)動開發(fā)環(huán)境、組件源代碼、項目文檔等)。在此基礎(chǔ)上編寫出相關(guān)教材(講義)作為開展敏捷測試實踐教學(xué)的指導(dǎo)書。(2)自行開發(fā)并熟悉使用基于云架構(gòu)的軟件測試實驗(實訓(xùn))平臺,以適應(yīng)學(xué)生數(shù)量多、測試實驗結(jié)果多樣化的需要。平臺要能夠服務(wù)于教學(xué)需要,具備團隊管理功能,使教師了解開發(fā)小組的分工,實時監(jiān)視團隊的運行情況[13]。平臺要能夠承載教師所設(shè)計的各類敏捷測試項目案例,并具有動態(tài)更新與維護功能。允許學(xué)生隨時隨地學(xué)習(xí)和選擇軟件敏捷測試實驗任務(wù),使用測試工具,提交測試代碼和測試數(shù)據(jù),由平臺動態(tài)地調(diào)用軟件測試資源和執(zhí)行云測試,完成敏捷自動化測試[14]。當(dāng)然,平臺也還要具備完善的實踐效果評估功能。通過所制定的過程考核體系,能夠全方位的從專業(yè)技能、綜合能力和職業(yè)素養(yǎng)三個維度完成團隊評估與個人實踐評估[13]。(3)開展敏捷測試實踐教學(xué)初期,需要學(xué)生系統(tǒng)了解一些諸如單元測試、自動化測試等相關(guān)技術(shù),這些前期預(yù)備知識又是需要學(xué)生以課外自主學(xué)習(xí)方式所完成的。所以,在當(dāng)前“后MOOC”時代下如何把敏捷測試實踐教學(xué)環(huán)節(jié)有效的融入到學(xué)生對軟件測試課程的SPOC(小規(guī)模限制性在線課程)混合學(xué)習(xí)中,能充分體現(xiàn)出SPOC混合學(xué)習(xí)效果的優(yōu)越性,提高學(xué)生學(xué)習(xí)興趣,這也將是今后要做的工作。
圍繞敏捷測試實踐教學(xué)框架組織應(yīng)用型本科學(xué)生開展軟件測試實踐活動,培養(yǎng)學(xué)生的軟件測試職業(yè)素養(yǎng)及敏捷測試能力,成效明顯。我院每年都有大量計算機及軟件類專業(yè)畢業(yè)生即將從事軟件測試及管理崗位??梢?,軟件敏捷測試實踐教學(xué)框架的構(gòu)建是科學(xué)合理的,亦是可行的[9]。