摘 要: 軟件測試是軟件工程專業(yè)開設(shè)的一門專業(yè)必修課程,針對(duì)軟件測試課程教學(xué)中存在的問題,提出采用項(xiàng)目驅(qū)動(dòng)的教學(xué)模式。該模式基于真實(shí)的項(xiàng)目,以學(xué)生為主體,以項(xiàng)目驅(qū)動(dòng)進(jìn)行教學(xué),通過教學(xué)流、測試流兩種活動(dòng)流并行,將軟件測試?yán)碚撝R(shí)融入到實(shí)踐活動(dòng)中。該模式在軟件測試教學(xué)中取得了良好的效果。
關(guān)鍵詞: 軟件測試; 項(xiàng)目驅(qū)動(dòng); 教學(xué)模式; 測試流
中圖分類號(hào):G642 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2013)03-62-02
0 引言
軟件測試形成了一個(gè)新興的行業(yè)。軟件測試的工作貫穿于整個(gè)軟件產(chǎn)品生產(chǎn)過程的始終,是保證軟件質(zhì)量的有效手段。軟件測試課程是軟件工程專業(yè)的必修課程之一,是一門理論性和實(shí)踐性都很強(qiáng)的專業(yè)課。該課程對(duì)于人才的培養(yǎng)目標(biāo)是:掌握軟件測試和軟件質(zhì)量的基本理論、常用的測試方法和自動(dòng)化測試工具,能夠編寫測試計(jì)劃、設(shè)計(jì)測試用例、完成軟件初步測試。
目前軟件測試行業(yè)人才嚴(yán)重不足。據(jù)企業(yè)專職軟件測試人員分布調(diào)查,27.5%的企業(yè)目前沒有專業(yè)的軟件測試人員,43.5%的企業(yè)軟件測試人員的數(shù)量在1~10人之間。為了適應(yīng)行業(yè)人才需求,國內(nèi)高校紛紛開設(shè)軟件測試課程。但軟件測試在國內(nèi)高校中尚屬一門新興的課程,缺少對(duì)不同開發(fā)方式和應(yīng)用場景的軟件測試方法介紹,學(xué)生對(duì)軟件測試過程缺乏完整的認(rèn)識(shí),學(xué)習(xí)主動(dòng)性不高,甚至認(rèn)為軟件測試是一門文字性課程。如何進(jìn)行軟件測試教學(xué)方法調(diào)整以適應(yīng)業(yè)界需求已成為一個(gè)亟待解決的問題。
1 軟件測試課程教學(xué)存在的主要問題
1.1 學(xué)生學(xué)情分析
軟件測試是對(duì)軟件形成過程中的文檔、數(shù)據(jù)和程序等內(nèi)容進(jìn)行測試,而不僅僅是對(duì)程序進(jìn)行測試,這需要學(xué)生對(duì)軟件工程的基礎(chǔ)理論,系統(tǒng)的分析設(shè)計(jì),軟件的開發(fā)技術(shù)等有一定的了解。
在還沒有完全理解軟件工程相關(guān)理論時(shí),就開始進(jìn)行軟件測試課程的學(xué)習(xí),會(huì)導(dǎo)致學(xué)生對(duì)軟件測試?yán)斫獾钠?。例如,認(rèn)為軟件測試就是找出軟件項(xiàng)目中的錯(cuò)誤,是簡單而枯燥的工作,因而只重視開發(fā)技術(shù)的培養(yǎng),不重視甚至忽略測試技術(shù)的掌握。
1.2 教學(xué)材料分析
軟件測試方面的書籍大多是翻譯的,而且多是培訓(xùn)用書或介紹軟件測試工具的書,而能夠滿足高校軟件測試課程的教材較少。在當(dāng)前市面上的軟件測試教材中,大部分也只是闡述空洞的理論,附加簡單而又陳舊的工具介紹,這些理念和工具很多已經(jīng)被業(yè)界淘汰,這樣的教材難以適應(yīng)當(dāng)前市場對(duì)軟件測試人才的需求。
軟件測試工具較多、范圍廣、不易把握重點(diǎn),而大部分測試工具如:LoadRunner、WinRunner、JUnit、C++Test等都是英文版本,工具書較難讀懂。教學(xué)過程中沒有相關(guān)的軟件產(chǎn)品供學(xué)生測試,以驗(yàn)證所學(xué)的理論,達(dá)不到理想的教學(xué)效果。
1.3 教學(xué)方法分析
傳統(tǒng)教學(xué)手段是以課堂教授為主的“灌輸式”教學(xué)。教師授課時(shí)主要是在分析一門課程知識(shí)結(jié)構(gòu)的基礎(chǔ)上,循序漸進(jìn)地講授一門課程的知識(shí)點(diǎn),學(xué)生按部就班地學(xué)習(xí)知識(shí)點(diǎn)。傳統(tǒng)教學(xué)法過于理論,學(xué)生往往在學(xué)了一堆理論知識(shí)后對(duì)如何測試實(shí)際項(xiàng)目還是很茫然。雖然傳統(tǒng)教學(xué)法在某些教學(xué)環(huán)節(jié)也會(huì)給出一些實(shí)例或小項(xiàng)目,但是對(duì)于整個(gè)課程來說,這些實(shí)例或小項(xiàng)目是孤立的、彼此沒有聯(lián)系的,以至學(xué)生掌握的知識(shí)也是零散的,不系統(tǒng)的,缺乏對(duì)課程的整體把握。
1.4 考核方式分析
課程考核是課程教學(xué)過程中的重要一環(huán),是檢測和促進(jìn)學(xué)生學(xué)習(xí)效果的重要手段。目前學(xué)生考核體系基本以閉卷形式的終結(jié)性考核成績?yōu)橹?,以考勤、課堂表現(xiàn)、作業(yè)等組成的平時(shí)成績?yōu)檩o的考核方式。這種方式存在的問題主要是:以期末考試成績?yōu)橹?,考核?nèi)容相對(duì)片面,注重的是軟件測試基礎(chǔ)理論知識(shí),對(duì)軟件測試應(yīng)用知識(shí)的能力考查不夠,過分注重書本知識(shí)而忽略了軟件測試綜合應(yīng)用能力的整體考查。
2 基于項(xiàng)目驅(qū)動(dòng)的軟件測試教學(xué)法探索
欲改善上述局面,就應(yīng)結(jié)合學(xué)生的專業(yè)特色,在教學(xué)過程中以實(shí)際工程項(xiàng)目為主線,把軟件項(xiàng)目的整體思想納入到本課程中來,讓學(xué)生在學(xué)習(xí)過程中積累項(xiàng)目測試經(jīng)驗(yàn),掌握項(xiàng)目測試的流程,增加學(xué)生對(duì)課程目的性的認(rèn)識(shí),提高學(xué)生的積極性。
項(xiàng)目驅(qū)動(dòng)式教學(xué)法是一種建立在建構(gòu)主義學(xué)習(xí)理論基礎(chǔ)上的、有別于傳統(tǒng)教學(xué)的新型教學(xué)方法。建構(gòu)既是對(duì)新知識(shí)的理解與掌握,同時(shí)又包含對(duì)原有經(jīng)驗(yàn)和知識(shí)的改造和重組,綜合形成新的知識(shí)建構(gòu)。該方法提倡以學(xué)生為中心的學(xué)習(xí)。在整個(gè)教學(xué)過程中教師起組織者、指導(dǎo)者、幫助者和促進(jìn)者的作用,教師利用情境、協(xié)作、會(huì)話等學(xué)習(xí)環(huán)境要素充分發(fā)揮學(xué)生的主動(dòng)性、積極性和創(chuàng)造性,最終使學(xué)生有效地掌握當(dāng)前所學(xué)知識(shí)。
2.1 軟件項(xiàng)目前期準(zhǔn)備階段
項(xiàng)目是項(xiàng)目驅(qū)動(dòng)教學(xué)的核心,整個(gè)教學(xué)過程都始終圍繞項(xiàng)目展開。項(xiàng)目設(shè)置的好壞將直接影響到教學(xué)效果,因此在設(shè)計(jì)項(xiàng)目上應(yīng)注意以下幾點(diǎn)。
2.1.1 項(xiàng)目具有典型性
項(xiàng)目教學(xué)法中應(yīng)選擇以解決身邊的現(xiàn)實(shí)問題為背景材料,從熟悉項(xiàng)目著手能充分激發(fā)學(xué)生的學(xué)習(xí)熱情。項(xiàng)目能覆蓋學(xué)生已經(jīng)學(xué)習(xí)過的知識(shí)點(diǎn),如:軟件工程的基礎(chǔ)理論,系統(tǒng)的分析設(shè)計(jì),軟件的開發(fā)技術(shù),從源頭上保證知識(shí)的完整性。
2.1.2 項(xiàng)目規(guī)模、難度適中
項(xiàng)目教學(xué)法中選擇的項(xiàng)目規(guī)模和難度都應(yīng)適中。如果項(xiàng)目規(guī)模和難度過大,軟件測試用例的設(shè)計(jì)難度大,學(xué)生不容易完成。項(xiàng)目規(guī)模和難度過小,則涉及的知識(shí)點(diǎn)少,不能反映學(xué)生對(duì)軟件測試用例設(shè)計(jì)的理解程度。因此,設(shè)計(jì)的項(xiàng)目應(yīng)保證學(xué)生通過努力能夠完成,這樣可以樹立學(xué)生完成任務(wù)的信心,充分調(diào)動(dòng)學(xué)生的積極性和主觀能動(dòng)性。
2.1.3 項(xiàng)目規(guī)范
由于軟件測試是對(duì)軟件形成過程中的文檔、數(shù)據(jù)、程序,以及所有相關(guān)文檔進(jìn)行測試,所以被測軟件應(yīng)該是按照軟件工程思想設(shè)計(jì)開發(fā)的,每個(gè)階段的工作都應(yīng)當(dāng)在文檔中體現(xiàn)出來,文檔撰寫有嚴(yán)格的標(biāo)準(zhǔn)和規(guī)范。
項(xiàng)目來源:
途徑1:所在學(xué)院的每門課程都有多名教師建立的課程群,測試案例可以由教授面向?qū)ο蟪绦蛟O(shè)計(jì)、綜合課程設(shè)計(jì)、系統(tǒng)分析與設(shè)計(jì)等課程的教師提出要求,選擇典型的作品充實(shí)案例庫。
途徑2:從畢業(yè)設(shè)計(jì)中選擇,大四的學(xué)生都要作畢業(yè)設(shè)計(jì),教師可以從其提取一些典型系統(tǒng),充實(shí)案例庫。
途徑3:來自學(xué)生科研項(xiàng)目,每年都有大量的學(xué)生申報(bào)科研項(xiàng)目,教師可以收集其優(yōu)秀作品,充實(shí)案例庫。
途徑4:來自校企合作項(xiàng)目,教師在和企業(yè)合作開發(fā)項(xiàng)目時(shí),在合同允許的情況下,將開發(fā)系統(tǒng)作為實(shí)際案例,充實(shí)案例庫。
2.2 基于項(xiàng)目驅(qū)動(dòng)的軟件測試教學(xué)法實(shí)施
基于項(xiàng)目驅(qū)動(dòng)的軟件測試教學(xué)法實(shí)施是在學(xué)生已完成軟件系統(tǒng)分析與設(shè)計(jì)的實(shí)踐,并有一定的編程能力的基礎(chǔ)上設(shè)計(jì)的,涉及兩種活動(dòng)流:教學(xué)流和測試流。
⑴ 教學(xué)流
由于軟件測試課程的知識(shí)點(diǎn)前后關(guān)聯(lián)關(guān)系不大,教師在教學(xué)流過程中,不必在講清楚課程的基礎(chǔ)知識(shí)和基本技能后再進(jìn)行項(xiàng)目的教學(xué),可直接面對(duì)具體任務(wù)進(jìn)行教學(xué)。在教師帶領(lǐng)學(xué)生分析解決具體項(xiàng)目的方法時(shí),將相關(guān)聯(lián)的知識(shí)點(diǎn)串聯(lián)起來,讓學(xué)生在學(xué)習(xí)各階段的理論知識(shí)同時(shí),完成軟件相應(yīng)的測試活動(dòng)。
基于項(xiàng)目驅(qū)動(dòng)的教學(xué)流按照項(xiàng)目測試流程大體可分為三個(gè)階段:軟件測試基礎(chǔ)、軟件測試技術(shù)和軟件測試管理。
第一階段,學(xué)生主要進(jìn)行部分軟件開發(fā)和相應(yīng)產(chǎn)品的靜態(tài)測試。在開發(fā)的過程中通過規(guī)范的開發(fā)文檔和測試文檔,給學(xué)生展示單元測試、集成測試和系統(tǒng)測試的密切關(guān)系,讓學(xué)生深刻認(rèn)識(shí)到軟件測試是緊密伴隨軟件開發(fā)過程而進(jìn)行的活動(dòng)。
第二階段,主要進(jìn)行測試設(shè)計(jì)和實(shí)現(xiàn)。軟件測試中對(duì)具體項(xiàng)目常常有多種測試方法,教師可只講解其中最實(shí)用的方法。其他方法的應(yīng)用作為討論、實(shí)驗(yàn)、課外作業(yè)的形式由學(xué)生完成,讓學(xué)生在完成項(xiàng)目實(shí)踐的過程中學(xué)習(xí)知識(shí)、解決問題、提高技能。本階段的教學(xué)應(yīng)只包括對(duì)重點(diǎn)教學(xué)內(nèi)容的講解,其過程應(yīng)該精練,以便為學(xué)生學(xué)習(xí)提供廣泛的空間,為學(xué)生順利完成項(xiàng)目打下良好的基礎(chǔ)。
第三階段,主要進(jìn)行測試管理和報(bào)告。通過測試用例管理工具、案例以及規(guī)范的軟件測試報(bào)告的介紹和展示,讓學(xué)生深刻認(rèn)識(shí)軟件測試需要規(guī)范的測試管理過程,軟件測試中測試需求、測試用例、測試業(yè)務(wù)組件、測試計(jì)劃、測試執(zhí)行、測試結(jié)果、缺陷都需要進(jìn)行合理的規(guī)劃和管理。
⑵ 測試流
基于項(xiàng)目驅(qū)動(dòng)的測試流是由教師給定多個(gè)項(xiàng)目,并提出測試要求,教學(xué)過程中將團(tuán)隊(duì)測試的思想貫穿始終,將學(xué)生分成若干小組,以小組為單位完成項(xiàng)目測試。每個(gè)小組由1個(gè)項(xiàng)目組長、1個(gè)測試組長和3個(gè)測試組員構(gòu)成。小組內(nèi)部責(zé)任明確,選擇有較強(qiáng)實(shí)踐能力和溝通能力學(xué)生擔(dān)任項(xiàng)目組長,負(fù)責(zé)制定測試方案、任務(wù)分配和人員協(xié)調(diào)工作。選擇有較強(qiáng)學(xué)習(xí)能力和技術(shù)能力學(xué)生擔(dān)任測試組長,負(fù)責(zé)分析軟件需求、獲得測試需求、制定測試策略方案、確定測試方法。小組內(nèi)每個(gè)學(xué)生必須完成最基本的任務(wù),即測試用例的設(shè)計(jì)、編寫、執(zhí)行和維護(hù)等各項(xiàng)任務(wù)。
測試流執(zhí)行過程中,學(xué)生探究性地學(xué)習(xí)相關(guān)的知識(shí)和技能,在知識(shí)運(yùn)用中掌握實(shí)踐技能。通過任務(wù)的實(shí)施和完成,讓學(xué)生體驗(yàn)到知識(shí)應(yīng)用的成就感,增強(qiáng)學(xué)習(xí)的積極性,促使學(xué)生更加主動(dòng)地、探索性地學(xué)習(xí)相關(guān)的知識(shí)和技能,使知識(shí)技能的掌握更加牢固。測試流執(zhí)行過程中,教師為項(xiàng)目組提供相關(guān)的學(xué)習(xí)資料資源,引導(dǎo)學(xué)生有目的性、有針對(duì)性地學(xué)習(xí),同時(shí)關(guān)注學(xué)生開展項(xiàng)目的全過程,嚴(yán)格要求按照項(xiàng)目的具體實(shí)施流程進(jìn)行,比如軟件測試項(xiàng)目必須按照測試計(jì)劃、測試設(shè)計(jì)、測試執(zhí)行和測試結(jié)果分析來進(jìn)行,每個(gè)階段的工作必須撰寫規(guī)范的技術(shù)報(bào)告。
測試流的最后階段,教師組織各測試小組進(jìn)行課程設(shè)計(jì)答辯。答辯時(shí),組間相互評(píng)價(jià),從文檔規(guī)范性、測試方法的正確性和有效性、測試技術(shù)應(yīng)用的廣泛性等方面選出最優(yōu)測試小組。最終經(jīng)過教師對(duì)學(xué)生單人考核,結(jié)束本次測試流教學(xué)。
3 結(jié)束語
本文針對(duì)軟件測試課程教學(xué)中存在的問題,提出采用項(xiàng)目驅(qū)動(dòng)的教學(xué)模式,通過教學(xué)流、測試流兩種活動(dòng)流,將軟件測試?yán)碚撝R(shí)融入到實(shí)踐活動(dòng)中。該教學(xué)模式打破了傳統(tǒng),激發(fā)了學(xué)生的學(xué)習(xí)興趣,有利于學(xué)生對(duì)測試過程形成一個(gè)整體認(rèn)識(shí),符合軟件工程系統(tǒng)化思想。由于軟件測試相關(guān)理論還在不斷完善,實(shí)驗(yàn)理論、實(shí)驗(yàn)方法手段、實(shí)驗(yàn)技術(shù)正在飛速發(fā)展,這就需要我們在教學(xué)過程中不斷地探索、總結(jié)、完善軟件測試教學(xué)的內(nèi)容和方法,進(jìn)一步提高課程的教學(xué)效果和質(zhì)量。
參考文獻(xiàn):
[1] 龔宇輝.軟件測試課程教學(xué)改革研究[J].教育與職業(yè),2010.24:
130-131
[2] 張向宏.軟件測試?yán)碚撆c實(shí)踐教程[M].人民郵電出版社,2009.
[3] 聶長海.關(guān)于軟件測試的幾點(diǎn)思考[J].計(jì)算機(jī)科學(xué),2011.38(2):1-3
[4] 程茂,溫靜,吳玉潔.軟件測試課程的教學(xué)研究[J].河北師范大學(xué)學(xué)報(bào)
(教育科學(xué)版),2010.12(4):117-120
[5] 于秀山,于洪敏.軟件測試新技術(shù)與實(shí)踐[M].電子工業(yè)出版社,2006.