楊彬 呂剛 陳圣兵
摘 要:針對應用型大學學生軟件測試能力難以滿足企業(yè)實際需求這一情況,分析當前國內軟件測試人才需求現(xiàn)狀,指出導致高校人才培養(yǎng)與企業(yè)需求脫節(jié)的原因。以軟件測試課程為例,從教學內容、教學方法、課程實踐安排等層面,闡述軟件測試課程教學改革思路,給出具體方法和實施途徑,探討能力導向的軟件測試應用型人才培養(yǎng)模式。
關鍵詞:應用型大學;軟件測試;教學改革;能力導向
0 引 言
軟件測試作為軟件質量保證的一種重要手段,受到學術界、企業(yè)和教育界的高度重視[1]。作為當前計算機領域的一個熱點研究方向,軟件測試理論不斷豐富和發(fā)展;作為一門課程,國內外眾多高校都將軟件測試作為計算機專業(yè)的一門專業(yè)核心課程;作為一種職業(yè),軟件測試工程師的需求缺口巨大。各大IT公司都設立了軟件測試與質量保證部門,并設置專門的職業(yè)晉升通道。據(jù)國內各大人才招聘網(wǎng)站數(shù)據(jù)顯示,目前國內軟件測試人才的需求缺口在30萬人以上。軟件測試工程師的職業(yè)價值、發(fā)展前景得到了前所未有的提升。
盡管各大高校都開設了軟件測試及質量保證相關課程,但培養(yǎng)出的學生普遍難以適應企業(yè)對軟件測試崗位的能力需求[2-4],高校人才培養(yǎng)與企業(yè)實際需求脫節(jié)嚴重。究其原因,傳統(tǒng)的軟件測試課程重理論知識講授,輕測試實踐和能力培養(yǎng),導致學生動手能力較弱,軟件測試能力素養(yǎng)不足;而軟件企業(yè)要求測試人員除了具備軟件測試基本理論外,還要具備一定的軟件開發(fā)、測試用例設計、測試管理和測試文檔撰寫等能力,熟悉軟件開發(fā)和軟件測試流程,具有快速學習、快速掌握新技術和應用新工具的能力。
1 軟件測試課程教學存在的問題
1)存在認識誤區(qū)。
受傳統(tǒng)觀念影響,學生存在“重開發(fā),輕測試”的認識誤區(qū),認為只有學習成績差或編程能力差的人才會選擇軟件測試,甚至部分計算機專業(yè)的教師也持有同樣觀點,在教學過程中未能正確引導學生認識軟件測試課程,導致學生未能正確對待本課程的學習。
2)教師教學重理論講授,輕實踐能力培養(yǎng),理論與實踐的最后一公里尚未打通。
理論課程教學側重軟件測試理論、方法、技術和體系的講授,貪圖理論體系的完整性,實踐教學占比較少。由于理論與實踐無法有效銜接,學生的測試能力存在嚴重欠缺。
3)實驗環(huán)境欠缺。
軟件測試能力的培養(yǎng)需要學生熟練掌握常見的自動化測試工具,否則很難勝任軟件企業(yè)的測試工程師工作。目前,高校在自動化測試工具的選擇上存在困境,如何購買和選擇當前的主流自動化測試工具,使用實際工程項目,培養(yǎng)學生的實踐動手能力,對高校而言是一個很大的挑戰(zhàn)。此外,隨著Web技術的飛速發(fā)展,重要的業(yè)務系統(tǒng)需要進行壓力測試、容量測試、負載測試等性能測試,對測試環(huán)境提出了更高的要求。
4)實際工程案例缺乏。
課程講授的理論知識只有經過實際工程項目的應用才能實現(xiàn)理論與實踐的融會貫通。盡管公開出版的有關軟件測試的教材很多,但翔實的、適用于課程教學的實際工程項目案例還未多見。僅僅使用教材上的實驗案例無法讓學生掌握軟件測試的基本技術和技能,傳統(tǒng)的基礎性和驗證性實驗項目,難以培養(yǎng)學生的分析問題能力與解決問題能力,無法適應學生實踐能力培養(yǎng)的需要。
5)缺乏具有工程實踐背景的師資。
具有較強理論知識和豐富項目經驗的師資隊伍,是保障軟件測試課程教學質量的前提。盡管高校教師大部分都具有博士學位,具有較深的理論知識,但由于缺乏企業(yè)工作經歷和實際工程背景,導致軟件測試課程教學質量無法得到保證,學生的動手實踐能力無法得到有效提高。
2 能力導向的軟件測試課程教學改革
針對傳統(tǒng)軟件測試課程教學存在的問題,軟件測試課程教學改革應該理論與實踐并重。傳統(tǒng)的軟件測試課程通常側重測試理論內容的講授,注重測試理論體系的完整性,強調基礎寬泛、覆蓋知識面廣。這種課程內容組織比較適合學術型和研究型人才的培養(yǎng),不能滿足應用型人才培養(yǎng)的需要。為了提高學生的測試能力,軟件測試課程內容重組的基本思路應該是以企業(yè)實際需求為導向,結合學校辦學定位和專業(yè)人才培養(yǎng)目標,注重測試技術、自動化測試工具、測試流程、測試文檔撰寫和測試管理等內容的講授,使用實際企業(yè)工程項目,讓學生在實踐過程中貫通理論知識,培養(yǎng)軟件測試能力。
下面以合肥學院為例,從教學內容重組、教學方法改革、實踐教學設計等方面,闡述軟件測試課程教學改革舉措。
2.1 教學內容重組
合肥學院自成立以來,堅持“地方性、應用型、國際化”的辦學定位,借鑒德國應用科學大學辦學經驗,構建了具有鮮明特色的應用型人才培養(yǎng)體系,從傳統(tǒng)的知識輸入為導向的課程體系轉變?yōu)橐阅芰敵鰹閷虻哪K化教學體系[5]。
軟件測試作為軟件工程專業(yè)的一門專業(yè)核心課程,自2010年起開展了模塊化教學改革,圍繞應用型人才培養(yǎng)的關鍵要素,重組課程教學內容,由“以知識為本位”過渡到“以能力為導向” 的課程教學,變“知識輸入”為“知識輸出”。軟件測試課程教學內容重組基本思路見圖1。
學校軟件測試模塊課程構建的指導思想是“以企業(yè)崗位能力需求為導向,以專業(yè)工程認證標準為綱,基本覆蓋教指委標準”,注重學生軟件測試工程實踐能力的培養(yǎng),實現(xiàn)高校人才培養(yǎng)與企業(yè)需求的無縫銜接。通過走訪科大訊飛、科大國創(chuàng)、文思海輝等80余家軟件企業(yè),了解企業(yè)實際需求,明確了測試工程師、高級測試工程師、測試經理等相關崗位的能力要求;通過實地參觀和深入座談,了解測試執(zhí)行、測試設計、測試分析等不同崗位職責要求;通過調研走訪國內外兄弟院校,并與德、英、美等國合作院校及專家進行交流,最終確定了軟件測試各崗位需要的專業(yè)能力,包括設計測試用例的能力、自動化測試工具能力、靜態(tài)代碼分析能力、實施軟件測試能力、測試文檔撰寫能力、測試管理和測試改進能力以及質量分析和軟件過程改進能力等九大一級能力;在此基礎上,依據(jù)專業(yè)人才培養(yǎng)標準和畢業(yè)要求,確定了本模塊課程對畢業(yè)要求各指標點的支撐,根據(jù)能力要求和課程的前后關系,結合軟件工程專業(yè)教指委標準的SE-VAV、SE-QUA和SE-MGT等知識領域要求,對每個專業(yè)能力進行要素分解,最終落實到具體的知識點,實現(xiàn)課程教學知識的重組,確定本模塊課程對畢業(yè)要求有所支撐。重組后的教學內容知識點及其與專業(yè)能力、畢業(yè)要求達成度指標點的對應關系見圖2。endprint
2.2 教學方法改革
應改變傳統(tǒng)的教學方法,綜合運用項目驅動式、任務驅動式和翻轉課堂式多種教學方法,使學生掌握軟件測試的整個過程,將理論與實際密切結合,加深學生對知識的理解。在教學過程中,注重與學生的交流、溝通和互動,激發(fā)學生的學習興趣。教學使用的項目均來自教師親自參與的企業(yè)生產實踐、教師產學研課題以及我校歷年來校內企業(yè)工程實訓使用的工程項目。項目規(guī)模包括小、中、大各種類型,每個項目都有從需求分析、系統(tǒng)設計、編碼實現(xiàn)和系統(tǒng)測試等各個階段的過程文檔及源代碼,以及最終部署的軟件系統(tǒng)。教師在教學過程中,針對具體的理論知識,選擇規(guī)模和難度適宜的項目,采用項目驅動式教學方法,引出具體知識點的介紹。例如,在講授動態(tài)白盒測試技術時,教師選用“學生成績管理系統(tǒng)”這一學生易理解的項目作為切入點,介紹項目需求和系統(tǒng)設計,展示該系統(tǒng)V1.0版本的源代碼,引導學生思考如何設計測試用例進行充分測試,隨后講授不同的白盒測試用例技術,并逐一在課堂上操作演示。在講授靜態(tài)白盒測試方法時,教師提供源代碼和評審規(guī)程,模擬非正式代碼評審會議,讓學生依據(jù)評審指南和核對表,有針對性地發(fā)現(xiàn)代碼中存在的數(shù)據(jù)聲明、計算、引用、參數(shù)等錯誤,加深對評審方法的理解。通過“項目引入—誘發(fā)思考—知識點講授—教師現(xiàn)場演示”的方式,極大地激發(fā)了學生的學習興趣。
此外,在教學過程中,適當引入任務驅動式教學方法,以任務為主線,以學生為主體,教師提供有缺陷的程序代碼,要求學生依據(jù)需求和設計文檔,設計測試用例,使用自動化測試工具對提供的代碼進行測試,發(fā)現(xiàn)其中存在的缺陷,并提交測試報告。教師對學生提交的測試報告進行點評,結合學生發(fā)現(xiàn)的缺陷數(shù)量、類型、測試時間耗費等引入測試成本管理概念,實現(xiàn)理論與實踐的平滑過渡。
除了普遍使用的項目驅動式和任務驅動式教學方法外,在本模塊教學過程中也穿插采用翻轉課堂式教學方法。例如,教師要求學生課后自主學習測試驅動的軟件開發(fā)方法,課堂上教師列舉使用測試驅動開發(fā)方法求解斐波那契數(shù)列的例子,與學生展開充分討論,解答學生的疑惑,對學生遇到的學習困難,給予有效的指導,幫助學生促進知識的消化吸收。
2.3 實踐教學設計
軟件測試是一門實踐性非常強的課程,實踐教學是培養(yǎng)學生測試能力的核心環(huán)節(jié)。因此,在實驗項目設置上,盡可能使用設計型、綜合型和創(chuàng)新型實驗,減少驗證性實驗項目。軟件測試課程所有的實驗項目均選自實際工程項目,由教師從項目庫中選取。教師提供項目需求規(guī)格說明、需求跟蹤矩陣、概要設計、詳細設計文檔及多版本的程序源代碼,依據(jù)理論課程進度和學生自主學習進度情況進行合理安排,采取循序漸進的方式,讓學生理解問題、思考問題,綜合運用所學知識解決問題,完成從測試計劃制定、測試用例設計、自動化測試工具使用、測試缺陷管理和測試報告撰寫等全過程,將所學知識貫穿整個項目過程中,培養(yǎng)學生的實踐動手能力、自主學習能力和創(chuàng)新能力。
學校軟件測試模塊課程的實驗環(huán)節(jié)為32學時,其中課內實驗16學時,課外自主學習16學時。實驗設置學生成績管理系統(tǒng)、員工信息管理系統(tǒng)、網(wǎng)上花店電子商務系統(tǒng)等5個實驗項目,依據(jù)項目規(guī)模和任務要求合理分配實驗學時。針對實驗項目具體情況,允許學生采用分組的形式完成實驗任務,每組1~3人,明確項目小組長,要求分工明確,任務分配合理,杜絕濫竽充數(shù)的情況發(fā)生。對學生提交的實驗報告及各種過程文檔,教師會進行集中點評,指出其中存在的問題。
為提高學生的測試能力,學校購買了IMB Rational Quality Manager、IMB Rational Functional Tester、IMB Rational Performance Tester、IMB Rational AppScan等自動化測試工具。本模塊課程使用的自動化測試工具見表1。
3 對軟件測試課程教學改革的幾點思考
3.1 加強師資隊伍建設
能力導向的應用型軟件測試人才培養(yǎng)對高校師資隊伍提出了更高的要求。高校教師只有具備工程實踐背景,理解企業(yè)需求和軟件測試工程師的崗位能力要求,才能更好地培養(yǎng)學生的軟件測試能力,指導學生做好測試工作。因此,高校教師既要具備軟件測試的理論知識,又要具備軟件測試及質量保證的工程化背景。近年來,學校大力加強雙能型教師隊伍建設,采用“引進來”——從企業(yè)引進具備工程化實戰(zhàn)背景的高素質人才和“走出去”——鼓勵教師去軟件企業(yè)掛職,深入軟件開發(fā)、軟件測試和質量保證的一線,培養(yǎng)教師的工程素養(yǎng);同時,學校與合作企業(yè),如科大訊飛、文思海輝、科大國創(chuàng)等軟件企業(yè)密切合作,聘請企業(yè)的資深工程師走入課堂,指導學生做好項目測試工作。
3.2 教學過程評價方式改革
借鑒德國FH模塊化教學改革理念,學校軟件測試課程打破了傳統(tǒng)的課程評價體系,采取“N+2”考核方式。軟件測試模塊課程的“N”指考核次數(shù),具體為1次過程考核(測驗)、1次學習報告和1次項目實驗考核;“2”指學習筆記和期末考試。學生的模塊課程成績由課程實驗成績(20%)、學習筆記(5%)、過程考核(25%)和期末考試(50%)組成。對于學生提交的學習報告,采用一對一答辯的方式,由學生介紹學習內容,教師提問,督促學生高質量完成自主學習,避免學習報告流于形式、學習效果不佳的現(xiàn)象。通過采用綜合評價的方式,注重學生平時的學習過程和動手操作,有助于更加全面地評價學生的學習效果和能力培養(yǎng)。
3.3 課程持續(xù)改進
為最終實現(xiàn)應用型人才培養(yǎng)的目的,學校軟件工程專業(yè)借鑒卡內基·梅隆大學軟件工程研究所的軟件過程能力成熟度模型集成CMMI的思想,構建了各模塊課程的持續(xù)教學改革評價機制。通過跟蹤評價教學過程、教學效果考核、實踐能力培養(yǎng)以及用人單位反饋等全過程,分析本模塊課程對畢業(yè)要求達成度各指標點的支持情況,發(fā)現(xiàn)教學中存在的不足,形成“自評價、自改進、自成長”螺旋形改進機制,最終實現(xiàn)課程的持續(xù)優(yōu)化改進,為應用型軟件測試人才培養(yǎng)提供支撐。endprint
4 效果及評價
通過近幾年的課程模塊化教學改革實踐,學生的學習興趣和動手能力得到了顯著提高,教學效果良好。學生普遍意識到軟件測試工作的重要性,對軟件測試作為一門職業(yè)也有著更深刻的認識。
表2列舉了近幾年軟件工程專業(yè)學生對軟件測試課程的教學評價情況,表中的數(shù)據(jù)來自于我校教務處教學質量管理系統(tǒng)。課程結束后,學生登錄教務系統(tǒng),依據(jù)教務處制定的各項評價指標,對授課教師的教學進行評價打分。評價階段結束后,系統(tǒng)依據(jù)學生的各項打分情況自動進行加權計算得出。
從學校近幾年軟件工程專業(yè)畢業(yè)生就業(yè)統(tǒng)計及跟蹤回訪情況來看,軟件工程專業(yè)每年有20%左右的學生在相關軟件企業(yè)從事軟件測試工作,絕大部分從事軟件測試崗位的學生,經過短暫的業(yè)務熟悉之后,能夠快速進入崗位角色,表現(xiàn)出良好的職業(yè)素養(yǎng),勝任測試工程師崗位,深受用人單位的好評。
5 結 語
經過近幾年的模塊化教學改革,學校軟件測試模塊化課程以能力培養(yǎng)為導向,對課程教學內容進行了重組,綜合運用項目驅動式、任務驅動式和翻轉課堂式教學方法,重視實踐課程教學,改革課程評價體系,注重學生的實踐能力培養(yǎng),取得了良好的教學效果。今后,擬進一步收集教學反饋,對本模塊課程進行持續(xù)改進。
參考文獻:
[1] 聶長海. 關于軟件測試的幾點思考[J]. 計算機科學, 2011, 38(2): 1-3.
[2] 向軍, 王曉芳, 李超. 應用型高校計算機類專業(yè)軟件測試課程教學改革[J]. 計算機教育, 2016(6): 147-150.
[3] 郭曉梅. 以就業(yè)為導向的軟件測試教學改革研究[J]. 湖南科技學院學報, 2016, 37(10): 116-117.
[4] 劉敬勇, 黃雪夏, 廖朝輝, 等. 基于“卓越計劃”的軟件測試課程教學改革研究[J]. 教育教學論壇, 2016 (28): 115-116.
[5] 王曉峰, 許強, 陳圣兵. 基于模塊化的軟件工程專業(yè)教學改革與實踐[J]. 電腦與電信, 2015(1): 29-32.
[6] 陳圣兵, 許強, 吳曉琴. 計算機應用型人才培養(yǎng)過程中的模塊化教學[J]. 計算機教育, 2012 (9): 52-54.
(編輯:孫怡銘)endprint