劉小飛,李美滿
(廣東理工職業(yè)學(xué)院 計(jì)算機(jī)系,廣東 中山 528458)
隨著現(xiàn)代信息技術(shù)的快速發(fā)展,計(jì)算機(jī)軟件已經(jīng)深入國民生活的方方面面。人們對計(jì)算機(jī)軟件的質(zhì)量提出了更高要求,要求軟件系統(tǒng)提供7×24小時(shí)不間斷服務(wù)。軟件測試作為軟件質(zhì)量保障的一種重要的方法,近年來已經(jīng)得到產(chǎn)業(yè)界、學(xué)術(shù)界和軟件工程師的普遍重視[1]。隨著軟件產(chǎn)業(yè)的迅速發(fā)展,對軟件測試人才的需求量越來越大,同時(shí)對軟件測試人才素質(zhì)也提出了更高的要求,因此,加強(qiáng)對軟件測試人才的培養(yǎng)成為高校的當(dāng)務(wù)之急。當(dāng)前,高校軟件測試人才的培養(yǎng)與企業(yè)的人才需求存在著一定差距,高校應(yīng)屆畢業(yè)生的項(xiàng)目實(shí)踐能力不足,導(dǎo)致其找不到相應(yīng)軟件測試工作,而企業(yè)又招不到合適的軟件測試人才。如何提高學(xué)生的項(xiàng)目實(shí)踐能力,實(shí)現(xiàn)與企業(yè)需求的無縫對接,成為軟件測試課程教學(xué)的重點(diǎn)。
軟件測試貫穿軟件工程的整個(gè)生命周期,覆蓋軟件各種應(yīng)用領(lǐng)域,需要具備較強(qiáng)的專業(yè)技能和職業(yè)素養(yǎng),對從業(yè)人員工程實(shí)踐能力要求比較高[2]。目前,高校的軟件測試課程實(shí)踐教學(xué)中存在一些問題,學(xué)生通過課程的學(xué)習(xí),雖然能掌握軟件測試的基本概念和基本理論、基本測試技術(shù)和方法,但真正運(yùn)用軟件測試技術(shù)分析和解決實(shí)際問題的能力還不夠[3]。
教學(xué)形式單一化,以理論為主、實(shí)踐為輔。教學(xué)內(nèi)容充滿了軟件測試的理論、方法和技術(shù)規(guī)范,講授了一大堆軟件測試?yán)碚摗W(xué)生由于缺乏軟件項(xiàng)目實(shí)踐經(jīng)驗(yàn),導(dǎo)致不知道如何去使用這些理論,無法激起對課程的興趣。
在傳統(tǒng)的教學(xué)中,軟件測試?yán)碚擉w系往往被分割成許多知識片段,如軟件測試的基本理論、白盒測試技術(shù)、黑盒測試技術(shù)、缺陷管理技術(shù)、軟件測試工具的使用等。知識的講授僅僅是單純羅列軟件測試的技術(shù)和方法,理論知識缺乏針對性和連貫性,導(dǎo)致學(xué)生難以形成一個(gè)統(tǒng)一的測試?yán)碚擉w系,難以將所學(xué)的理論、方法運(yùn)用到項(xiàng)目實(shí)踐中。
知識碎片化導(dǎo)致每個(gè)知識點(diǎn)案例的選取簡單化。簡單案例雖然有助于學(xué)生對單個(gè)方法或知識點(diǎn)的掌握,但沒有貫穿整個(gè)測試過程的案例,學(xué)生很難體會(huì)各種技術(shù)的使用場景。面對一個(gè)完整項(xiàng)目時(shí),學(xué)生難以形成一個(gè)完整的測試思路[5]。
軟件測試是一門實(shí)踐性比較強(qiáng)的課程,需要有企業(yè)實(shí)際軟件測試經(jīng)驗(yàn)的支撐,而大部分教師沒有軟件測試的實(shí)際經(jīng)驗(yàn),影響實(shí)踐教學(xué)的效果。在實(shí)踐教學(xué)中,項(xiàng)目選取過于簡單,軟件測試過程混亂,學(xué)生的軟件測試技能無法得到提升。畢業(yè)生反饋過來的信息是在學(xué)校學(xué)的一大堆理論不知道怎么樣用,但企業(yè)項(xiàng)目測試中真正需要的知識反而沒學(xué)到[6]。
針對傳統(tǒng)教學(xué)存在的問題,以企業(yè)軟件測試崗位需求為導(dǎo)向、以企業(yè)真實(shí)項(xiàng)目為驅(qū)動(dòng),著眼于學(xué)生項(xiàng)目實(shí)踐能力的培養(yǎng)。在課程內(nèi)容上直接采取企業(yè)真實(shí)項(xiàng)目,在教學(xué)的組織上更貼近企業(yè)實(shí)際,使學(xué)生盡快地熟悉軟件測試工作過程,能夠?qū)ν暾捻?xiàng)目進(jìn)行測試,從而實(shí)現(xiàn)與企業(yè)軟件測試技能要求的無縫對接。
根據(jù)筆者多年的軟件測試工作經(jīng)驗(yàn)和對多家軟件企業(yè)的調(diào)研,總結(jié)出典型的軟件測試工作過程(如圖1所示)。

圖1 軟件測試工作過程
1)測試需求分析。
測試需求分析是測試工作的第一步,經(jīng)過需求分析,對原始需求列表中的每一個(gè)需求點(diǎn)進(jìn)行分析,進(jìn)而得到我們需要測試的測試要點(diǎn)。針對確定的測試要點(diǎn),分析測試執(zhí)行時(shí)對應(yīng)的測試方案和方法。
2)制定測試方案。
主要是明確測試目的和測試范圍,確定測試人員和測試環(huán)境,確定測試工具的設(shè)計(jì)和選擇、測試用例的設(shè)計(jì)方法、測試代碼的設(shè)計(jì)方案、測試人員進(jìn)度安排與模塊劃分等。
3)設(shè)計(jì)測試用例。
根據(jù)測試需求分析的結(jié)果,利用測試用例設(shè)計(jì)的各種方法來設(shè)計(jì)測試用例,為測試執(zhí)行提供參考與依據(jù)。
4)執(zhí)行測試。
根據(jù)需求文檔和設(shè)計(jì)好的測試用例,對軟件進(jìn)行測試,在測試過程中如果發(fā)現(xiàn)缺陷,則需要在缺陷管理平臺上登記缺陷,并對登記好的缺陷進(jìn)行缺陷跟蹤。
5)測試總結(jié)。
根據(jù)測試的情況,編寫測試報(bào)告,對測試的進(jìn)度和質(zhì)量進(jìn)行總結(jié),測試報(bào)告應(yīng)包括測試目的、測試環(huán)境、測試人員、測試進(jìn)度情況、Bug匯總、重要問題總結(jié)、遺留問題列表等。
以上各環(huán)節(jié)并不是獨(dú)立沒有聯(lián)系的,實(shí)際工作千變?nèi)f化,各環(huán)節(jié)有可能交織、重疊,比如編寫測試用例的同時(shí)就可以進(jìn)行測試環(huán)境的搭建工作,也可能由于一些需求不清楚而重新進(jìn)行需求分析等。一般而言,測試需求分析、測試用例編寫、測試環(huán)境搭建、測試執(zhí)行等環(huán)節(jié)由高級測試人員完成;測試執(zhí)行以及缺陷提交等由普通測試人員完成;測試負(fù)責(zé)人負(fù)責(zé)測試各個(gè)環(huán)節(jié)的跟蹤、實(shí)施、管理等。以上流程各環(huán)節(jié)并未包含軟件測試過程的全部,如根據(jù)實(shí)際情況還可以實(shí)施一些測試計(jì)劃評審、測試培訓(xùn)等。
以典型軟件測試工作過程所需的各種技能和知識為導(dǎo)向,將實(shí)踐能力的培養(yǎng)貫穿于整個(gè)教學(xué)活動(dòng)過程中,對教學(xué)內(nèi)容進(jìn)行重新組織,實(shí)現(xiàn)理論與實(shí)踐教學(xué)高度融合,得出軟件測試課程實(shí)踐教學(xué)模式,如圖2所示。

圖2 軟件測試課程實(shí)踐教學(xué)模式
在教學(xué)模式中,最左邊的部分是企業(yè)軟件測試中需要掌握的測試技能,中間部分為每一種測試技能所對應(yīng)的知識領(lǐng)域,右邊部分為學(xué)生通過技能訓(xùn)練和知識融合所提升的職業(yè)能力和素養(yǎng),企業(yè)真實(shí)項(xiàng)目貫穿整個(gè)教學(xué)過程。如針對具體的企業(yè)項(xiàng)目,首先,進(jìn)行測試需求分析,熟悉系統(tǒng)及明確系統(tǒng)的測試要點(diǎn),測試需求分析主要的工作包括原始需求整理、繼承性分析、測試規(guī)格分析、測試類型分析、功能交互分析等內(nèi)容。為了能夠進(jìn)行軟件測試需求分析,教師需要講授相關(guān)的理論知識,主要包括軟件工程的相關(guān)知識、軟件測試的相關(guān)理論知識、測試需求分析的方法以及被測試系統(tǒng)的業(yè)務(wù)知識;之后,學(xué)生針對真實(shí)項(xiàng)目進(jìn)行測試需求分析。通過對測試需求分析技能的訓(xùn)練和相關(guān)理論知識的補(bǔ)強(qiáng),可以提升學(xué)生在實(shí)際項(xiàng)目中的分析問題和需求理解的能力。在教學(xué)模型中,學(xué)生針對項(xiàng)目實(shí)踐中所面對的問題,通過分析問題,補(bǔ)強(qiáng)所需要的相關(guān)理論知識,從而為解決問題提供方案,使學(xué)生真正從面對真實(shí)問題入手,實(shí)現(xiàn)到實(shí)踐中學(xué)習(xí)理論知識,并將所學(xué)的理論知識又運(yùn)用到實(shí)踐中,真正實(shí)現(xiàn)項(xiàng)目實(shí)踐與理論知識學(xué)習(xí)的高度融合、在實(shí)踐中提升自身的職業(yè)能力和素養(yǎng)的目的。
1)教學(xué)內(nèi)容的選取。
以企業(yè)真實(shí)項(xiàng)目為教學(xué)載體,將理論教學(xué)與項(xiàng)目實(shí)踐融為一體,在項(xiàng)目實(shí)踐中學(xué)理論知識,通過理論知識的學(xué)習(xí)促進(jìn)項(xiàng)目實(shí)踐技能的提升,并在學(xué)習(xí)的過程中培養(yǎng)職業(yè)能力,提升職業(yè)素養(yǎng)。如選用CloudOA項(xiàng)目,該項(xiàng)目具有行政管理、個(gè)人助理、公共信息、人事管理、績效考核、銷售管理、超級管理等功能模塊,該項(xiàng)目在企業(yè)屬于中型項(xiàng)目,難度適中,符合實(shí)際教學(xué)需求,滿足學(xué)生知識及能力的提升,同時(shí)也利于學(xué)生知識的遷移,在本項(xiàng)目中學(xué)生所涉及的測試?yán)碚撝R和技能可以在不同的項(xiàng)目中進(jìn)行應(yīng)用,具有普適性。
2)教學(xué)的組織。
根據(jù)企業(yè)軟件測試的角色劃分,將教師定位為企業(yè)項(xiàng)目經(jīng)理的角色,全班學(xué)生定位成軟件測試員,同時(shí)將全班學(xué)生分成若干個(gè)測試小組,每個(gè)小組人數(shù)控制在5~6人左右,每個(gè)測試小組任命1名測試組長,測試組長全權(quán)負(fù)責(zé)本小組的測試任務(wù)的分配與測試管理,其余學(xué)生作為測試員,負(fù)責(zé)系統(tǒng)的測試工作。全班劃分為7~8個(gè)獨(dú)立的小組,每一個(gè)小組負(fù)責(zé)整個(gè)CloudOA系統(tǒng)的測試,每位同學(xué)至少負(fù)責(zé)1個(gè)功能模塊的測試工作,這樣劃分有利于縱向、橫向的對比。
3)教學(xué)的實(shí)施。
項(xiàng)目載體確定和角色劃分完成后,設(shè)計(jì)基于工作過程的教學(xué)場景。教學(xué)場景的設(shè)計(jì)采用由易到難、由簡到繁重復(fù)的工作流程,變化的是工作內(nèi)容。根據(jù)企業(yè)的實(shí)際情況,測試人員由普通測試人員和高級測試人員組成。普通測試人員需要掌握測試的基本技能主要包括測試需求分析、測試用例設(shè)計(jì)、黑盒測試、缺陷登記,高級測試人員除了掌握普通測試人員所需的測試技能外,還需要掌握白盒測試、自動(dòng)化測試、測試管理的相關(guān)知識(如制訂測試計(jì)劃、進(jìn)行測試總結(jié)等高級測試技能)。在教學(xué)實(shí)施過程中,采取循序漸進(jìn)方式的進(jìn)行,先開展基本技能的訓(xùn)練,等學(xué)生掌握基本技能訓(xùn)練后再進(jìn)行高級技能的鍛煉。根據(jù)企業(yè)項(xiàng)目測試的情況,將基本技能提升劃分為兩個(gè)連續(xù)的階段:第一階段為測試準(zhǔn)備階段,主要完成測試需求分析、測試用例設(shè)計(jì)、執(zhí)行測試和登記缺陷;第二階段為測試執(zhí)行階段,主要執(zhí)行制訂測試計(jì)劃、測試總結(jié)。
在教學(xué)實(shí)施的過程中,采取“任務(wù)與任務(wù)評估”模式,以測試項(xiàng)目為載體,根據(jù)企業(yè)工作的實(shí)際情況,先下達(dá)工作任務(wù),再針對工作任務(wù)的要求進(jìn)行相關(guān)知識的補(bǔ)強(qiáng);然后執(zhí)行任務(wù),根據(jù)任務(wù)執(zhí)行過程中碰到的問題,再一次進(jìn)行知識補(bǔ)強(qiáng);任務(wù)完成后,最后對任務(wù)的完成情況進(jìn)行評估與反饋;完成該任務(wù)后,再進(jìn)入到下一個(gè)任務(wù)。以Cload OA項(xiàng)目的人事管理模塊測試用例設(shè)計(jì)為例:首先,任務(wù)布置,任務(wù)是完成人事管理各模塊的測試用例設(shè)計(jì);其次,再進(jìn)行知識補(bǔ)強(qiáng),講授測試用例的概念、測試用例的設(shè)計(jì)方法、測試用例的設(shè)計(jì)規(guī)范等;然后,再根據(jù)相關(guān)的方法和規(guī)范設(shè)計(jì)該模塊的所有測試用例,在測試用例設(shè)計(jì)的過程中如果對某些知識明確,再一次進(jìn)行知識補(bǔ)強(qiáng);最后,從測試用例的覆蓋度、設(shè)計(jì)的規(guī)范、正確性等方面對各組測試用例設(shè)計(jì)進(jìn)行評審,并將評審的結(jié)果反饋給各個(gè)小組,各小組根據(jù)評審的意見對本小組的測試用例進(jìn)行修正。
廣東理工職業(yè)學(xué)院從2014年開始進(jìn)行該課程的教學(xué)改革,不斷完善以上教學(xué)模式。為了能夠準(zhǔn)確地反應(yīng)教學(xué)改革的效果,連續(xù)對5屆學(xué)生進(jìn)行考查,學(xué)生都采用Cload OA項(xiàng)目同一版本進(jìn)行檢驗(yàn)。筆者主要從測試用例設(shè)計(jì)覆蓋度、發(fā)現(xiàn)有效缺陷數(shù)、企業(yè)反饋等指標(biāo)進(jìn)行考察教學(xué)改革的效果。經(jīng)過近4年的教學(xué)積累,從各個(gè)考察指標(biāo)來看,學(xué)生實(shí)踐能力有了提升(見表1)。從表1可知,2016年進(jìn)行改革的反饋情況與2013未進(jìn)行改革進(jìn)行比較,教學(xué)效果有明顯的改觀,隨著教學(xué)模式的改革深入,后續(xù)幾年教學(xué)效果更為明顯,充分說明了教學(xué)模式的改革取得了一定的成效。
筆者針對企業(yè)軟件測試工作過程所需的技能,對軟件測試課程的實(shí)踐教學(xué)進(jìn)行了改革;根據(jù)工作技能的需要,對教學(xué)內(nèi)容進(jìn)行重新組織,著重強(qiáng)調(diào)實(shí)踐能力的培養(yǎng),將企業(yè)的真實(shí)項(xiàng)目貫穿于課堂教學(xué)的整個(gè)過程。學(xué)生在實(shí)踐中完成理論知識的學(xué)習(xí),同時(shí)將所學(xué)的理論知識運(yùn)用到實(shí)踐中,真正實(shí)現(xiàn)理論知識與實(shí)踐融合,有助于學(xué)生專業(yè)技能與職業(yè)素養(yǎng)的提升。在此教學(xué)模式下,學(xué)生的實(shí)踐能力得到了較大的提高,學(xué)生對測試?yán)碚撝R的掌握得到進(jìn)一步加強(qiáng),有助于實(shí)現(xiàn)學(xué)校與企業(yè)的無縫對接。當(dāng)然,該教學(xué)模式也存在一些不足的地方,需要在實(shí)踐中不斷地完善與改進(jìn)。

表1 教學(xué)效果對比情況
[1]聶長海. 關(guān)于軟件測試的幾點(diǎn)思考[J]. 計(jì)算機(jī)科學(xué), 2011(2): 1-4.
[2]趙翀, 高鵬. 軟件測試課程工程實(shí)踐教學(xué)模式的探索與實(shí)施[J]. 計(jì)算機(jī)工程與科學(xué), 2014(4): 51-55.
[3]楊鵬. 高職軟件測試課程的教學(xué)探索與實(shí)踐[J]. 番禺職業(yè)技術(shù)學(xué)院學(xué)報(bào), 2005(4): 47-49.
[4]穆海倫, 李萬清.面向企業(yè)的高校軟件測試教學(xué)改革探索[J]. 計(jì)算機(jī)教育, 2013(10): 36-40.
[5]張冬玲, 黃偉, 王辰尹. 軟件測試教學(xué)中的計(jì)算思維能力培養(yǎng)[J]. 計(jì)算機(jī)教育, 2014(9): 98-100.
[6]楊秋輝, 洪玫. 軟件測試課程實(shí)踐教學(xué)改革研究[J]. 計(jì)算機(jī)教育, 2016(2): 106-109.