楊秀紅

摘? 要:“軟件測試技術(shù)”課程是計(jì)算機(jī)科學(xué)與技術(shù)(本科)專業(yè)的核心專業(yè)課程,對學(xué)生的理論及實(shí)際測試能力均有較高要求。課程需要系統(tǒng)講授軟件測試的基本原則和方法技巧、軟件測試過程的計(jì)劃和實(shí)施、軟件工具的選擇和使用方法以及缺陷管理方法等。本文分析了當(dāng)前軟件測試課程在教學(xué)及實(shí)驗(yàn)環(huán)節(jié)中存在的一系列問題,從培養(yǎng)學(xué)生行業(yè)協(xié)作精神、豐富課堂授課形式、合理設(shè)置課程內(nèi)容、增加綜合實(shí)驗(yàn)以提高學(xué)生實(shí)際測試能力等方面對軟件測試課程實(shí)踐教學(xué)改革相關(guān)問題進(jìn)行了探討。
關(guān)鍵詞:軟件工程;軟件測試技術(shù);教學(xué)改革
中圖分類號:G642.0? ? 文獻(xiàn)標(biāo)識碼:A? ? 文章編號:1673-7164(2022)05-0149-04
一、背景
近幾年,軟件產(chǎn)業(yè)迅速發(fā)展,軟件系統(tǒng)的規(guī)模也越來越大,軟件交付后經(jīng)常伴隨著軟件質(zhì)量問題。為了保證交付產(chǎn)品的質(zhì)量,提高軟件的可靠性,避免因軟件質(zhì)量問題導(dǎo)致經(jīng)濟(jì)損失,軟件測試越來越受到軟件企業(yè)的重視。
軟件測試是軟件開發(fā)過程中的一個重要組成部分,是貫穿整個軟件開發(fā)生命周期、對軟件產(chǎn)品(包括階段性產(chǎn)品)進(jìn)行驗(yàn)證和確認(rèn)的活動過程。軟件測試技術(shù)是一門講授軟件測試的基礎(chǔ)理論、測試用例設(shè)計(jì)方法、測試工具使用方法、軟件測試管理等知識的課程,通過對用戶需求以及開發(fā)代碼的分析,根據(jù)測試策略,自主設(shè)計(jì)測試用例,利用測試工具和測試技術(shù)進(jìn)行靜態(tài)測試、單元測試、功能測試和性能測試,以培養(yǎng)學(xué)生獨(dú)立進(jìn)行軟件測試設(shè)計(jì)、測試代碼開發(fā)和缺陷分析的能力[1-2]。
軟件測試課程的目的是培養(yǎng)學(xué)生盡快盡早地發(fā)現(xiàn)軟件產(chǎn)品中存在的問題,避免后期因軟件缺陷導(dǎo)致的巨大經(jīng)濟(jì)損失,包括檢查軟件產(chǎn)品與用戶需求、預(yù)先定義的不一致性、檢查軟件產(chǎn)品的bug、撰寫測試報(bào)告并交于開發(fā)人員進(jìn)行修改等。
軟件測試行業(yè)日漸規(guī)模化和規(guī)范化,軟件企業(yè)對軟件測試人員的需求量與日俱增。大量軟件教育和培訓(xùn)行業(yè)將培養(yǎng)軟件測試人才作為一個重要部分,與此同時(shí),高校也積極開設(shè)軟件測試專業(yè)課程以滿足企業(yè)招聘需求。一般來說,高校的軟件測試課程一般分為課堂教學(xué)和實(shí)驗(yàn)教學(xué)兩大部分。
(一)課堂教學(xué)
通過課堂教學(xué),使學(xué)生掌握軟件測試原理、靜態(tài)測試技術(shù)、單元測試技術(shù)、功能測試技術(shù)、性能測試技術(shù)、自動化測試技術(shù)、軟件測試管理和軟件缺陷管理方法,培養(yǎng)學(xué)生根據(jù)需求制訂測試策略,編寫測試代碼,撰寫測試文檔的能力。
(二)實(shí)驗(yàn)教學(xué)
通過實(shí)驗(yàn)環(huán)節(jié),讓學(xué)生獨(dú)立設(shè)計(jì)測試用例,選擇單元測試工具、功能測試工具、性能測試工具編寫測試代碼,運(yùn)行測試并記錄缺陷,根據(jù)缺陷的類型分析問題出現(xiàn)的原因,培養(yǎng)其理論聯(lián)系實(shí)踐、獨(dú)立發(fā)現(xiàn)問題和解決問題的能力。
教學(xué)目標(biāo)具體要求。(1)要求學(xué)生掌握軟件測試的基本理論、測試缺陷和測試過程的管理、測試文檔的編寫。(2)要求學(xué)生掌握常用測試技術(shù)的適用范圍、用例設(shè)計(jì)、測試開發(fā)和執(zhí)行、測試工具的使用。(3)要求學(xué)生掌握基于測試的代碼重構(gòu)和系統(tǒng)的性能優(yōu)化方法。
軟件測試課程將課堂教學(xué)和實(shí)驗(yàn)教學(xué)相結(jié)合,能夠很好地實(shí)現(xiàn)教學(xué)目標(biāo),使學(xué)生理解軟件測試的理論知識,培養(yǎng)學(xué)生的軟件測試能力和系統(tǒng)性優(yōu)化能力。但是,由于傳統(tǒng)課程教學(xué)模式存在一定的局限性,高校的軟件測試課程對測試人才的培養(yǎng)水平與軟件企業(yè)的實(shí)際需求還存在一定差距。本文針對目前高校軟件測試課程教學(xué)中存在的一系列問題,結(jié)合課堂教學(xué)和實(shí)驗(yàn)教學(xué)中的實(shí)際情況,提出相應(yīng)的軟件測試課程教學(xué)改革措施,提高該專業(yè)課程的教學(xué)質(zhì)量,以適應(yīng)軟件測試行業(yè)的發(fā)展和需求。
二、軟件測試技術(shù)課程教學(xué)中存在的問題
(一)缺乏行業(yè)協(xié)作精神的培養(yǎng)
在全球化背景下,軟件工程技術(shù)迅速發(fā)展,多數(shù)軟件企業(yè)依賴于開發(fā)和測試兩個部門,這兩個部門屬于企業(yè)價(jià)值鏈中有交互但又獨(dú)立的節(jié)點(diǎn)。一方面,軟件測試人員發(fā)現(xiàn)軟件缺陷的數(shù)量和嚴(yán)重程度與其績效有著緊密關(guān)聯(lián);另一方面,缺陷數(shù)量同樣可以作為開發(fā)工程師的考核指標(biāo)以衡量其開發(fā)水平的高低。軟件工程專業(yè)大學(xué)生在畢業(yè)后大多投身于軟件工程行業(yè),軟件測試技術(shù)作為一門測試方向的專業(yè)課,課堂教學(xué)內(nèi)容更加側(cè)重于講授測試技術(shù)及測試工具的使用,較少提及對學(xué)生畢業(yè)后協(xié)作精神的培養(yǎng)[3],包括是從事開發(fā)崗位還是測試崗位,如何看待今后工作中的團(tuán)隊(duì)合作和競爭問題、如何正確看待部門之間的考核評價(jià)矛盾、如何發(fā)揮團(tuán)隊(duì)意識和互相協(xié)作精神獲得質(zhì)量更高的軟件成果,學(xué)生在今后行業(yè)工作中的愛國熱情、敬業(yè)奉獻(xiàn)精神以及法治觀念的思想建設(shè)等。
(二)授課形式單一
以往的軟件測試技術(shù)課程教學(xué)主要采用的是教師結(jié)合PPT展示進(jìn)行講解以及課堂實(shí)際操作演示的傳統(tǒng)教學(xué)形式,更多的時(shí)間是教師在講臺上講,學(xué)生在下面聽,師生之間缺少必要的互動。軟件測試是軟件工程知識體系中理論性較強(qiáng)的一個知識領(lǐng)域,教師課堂講解的理論知識具有一定抽象性,如白盒測試中的邏輯覆蓋準(zhǔn)則、測試成熟度模型等,這些抽象內(nèi)容增加了學(xué)生對課程內(nèi)容的理解難度。因此,單一的教學(xué)形式很難激起學(xué)生的學(xué)習(xí)興趣,尤其在講解抽象內(nèi)容時(shí),甚至?xí)寣W(xué)生感到枯燥、乏味,教學(xué)效果有待提高。
(三)教學(xué)內(nèi)容碎片化、隨意化
按照軟件開發(fā)的要求,軟件測試應(yīng)貫穿整個開發(fā)過程的始末。為了保證軟件質(zhì)量,軟件測試應(yīng)當(dāng)是一個綜合考慮各個方面的整體性活動。在教學(xué)過程中,為了合理安排教學(xué)內(nèi)容、按課時(shí)組織教學(xué)活動,只能將不同的測試?yán)碚摵头椒ǚ指睿@就必然造成教學(xué)內(nèi)容的碎片化問題,導(dǎo)致學(xué)生難以形成一個統(tǒng)一的測試?yán)碚摽蚣埽趯?shí)際開發(fā)與測試過程中難以靈活運(yùn)用所學(xué)到的理論與方法。由于軟件測試技術(shù)課程的教學(xué)時(shí)數(shù)較少,所以很難找到完全合適的教材,以至于授課教師對授課內(nèi)容的選擇較為隨意[4],有的側(cè)重于軟件用例的設(shè)計(jì)及實(shí)施,有的側(cè)重于軟件測試方向畢業(yè)生的就業(yè)選擇和職業(yè)生涯規(guī)劃的介紹。教學(xué)內(nèi)容的不固定容易導(dǎo)致教學(xué)重難點(diǎn)不突出,使學(xué)生對專業(yè)課程產(chǎn)生懷疑,認(rèn)為畢業(yè)后實(shí)用性不強(qiáng),進(jìn)而導(dǎo)致學(xué)習(xí)興趣不高。
(四)實(shí)驗(yàn)課程內(nèi)容單一
相比于介紹軟件測試?yán)碚撝R和測試方法的課堂教學(xué),大多數(shù)高校分配給實(shí)驗(yàn)課程的課時(shí)數(shù)一般較少,在實(shí)驗(yàn)內(nèi)容的安排上大多比較緊湊。軟件測試是一門新興的專業(yè)課程,實(shí)驗(yàn)教學(xué)材料非常有限,一般傾向于對各種測試工具的單獨(dú)介紹,這就導(dǎo)致實(shí)驗(yàn)教學(xué)的重點(diǎn)比較分散,從而忽略學(xué)生實(shí)踐動手能力的綜合培養(yǎng)。如單元測試、自動化功能測試和性能測試的測試工具的使用,較少涉及一個實(shí)際大型項(xiàng)目的綜合測試操作,無法將測試?yán)碚摗y試進(jìn)度安排、測試用例的自主設(shè)計(jì)、測試小組協(xié)作以及測試管理的整個流程完成,這就導(dǎo)致學(xué)生懷疑課程的實(shí)踐意義,降低了學(xué)生實(shí)際動手操作的積極性。
三、軟件測試技術(shù)課程教學(xué)改革措施
(一)培養(yǎng)學(xué)生行業(yè)協(xié)作精神
作為軟件開發(fā)行業(yè)中最為活躍的年輕群體,軟件工程專業(yè)的學(xué)生畢業(yè)后大多進(jìn)入軟件企業(yè)工作,而開發(fā)和測試是軟件生產(chǎn)過程中兩個主要的部門,這兩個部門要互相協(xié)作才能產(chǎn)出有質(zhì)量有保證的軟件產(chǎn)品。軟件測試不僅是專業(yè)課程體系中的一個重要環(huán)節(jié),而且直接對口軟件企業(yè)中的“測試”部門。教師在課堂上不僅應(yīng)該向?qū)W生傳授專業(yè)的測試技能,還應(yīng)向?qū)W生具體闡述企業(yè)開發(fā)崗和測試崗的分工,讓學(xué)生有明確的行業(yè)規(guī)劃。使其切實(shí)理解開發(fā)和測試之間相輔相成的關(guān)系。明白代碼是開發(fā)人員的產(chǎn)出,而bug是測試人員的產(chǎn)出。測試人員就是世界的驗(yàn)證者,要以挑剔的眼光審視眼前需要驗(yàn)證的對象;而開發(fā)人員則應(yīng)該合理看待測試人員在專業(yè)上的挑剔,秉持包容之心和平淡之心。使學(xué)生明白不管以后從事開發(fā)還是測試行業(yè),都要明確軟件開發(fā)和軟件測試都是軟件生命周期中的重要組成部分,在以后的工作中應(yīng)互相協(xié)作、有效配合,以保證軟件出產(chǎn)的質(zhì)量。
(二)改變傳統(tǒng)授課形式
為了克服單一授課形式的缺點(diǎn),吸引學(xué)生真正參與到課堂教學(xué)中來,可以采用線上線下相結(jié)合的授課方法[5]。比如授課教師可以利用現(xiàn)代教育技術(shù),將混合式教學(xué)理念引入軟件測試課程的教學(xué)過程中。以西安理工大學(xué)為例,學(xué)校已經(jīng)建成了先進(jìn)的錄播教室,引進(jìn)了“MOOC(慕課)在線教學(xué)平臺”以及“云課堂”教學(xué)平臺。授課教師除了可以在課前通過錄播教室錄制教學(xué)視頻,提供給學(xué)生進(jìn)行線上自主學(xué)習(xí);學(xué)生還可以在MOOC平臺上自主觀看其他相關(guān)的課程視頻、參與課堂討論、在線提交作業(yè)等,使學(xué)生能夠?qū)W習(xí)到更加感興趣的內(nèi)容;在云課堂上,教師還可以發(fā)布一些測試習(xí)題,方便學(xué)生在課后進(jìn)行課程內(nèi)容的回顧,查漏補(bǔ)缺。在線下教學(xué)環(huán)節(jié),授課教師可以準(zhǔn)備一些學(xué)生感興趣的話題進(jìn)行分組討論,比如“你通過哪些途徑了解軟件測試行業(yè)的相關(guān)就業(yè)信息?”“你認(rèn)為從事軟件測試行業(yè)的工作前景和待遇如何”等,再將討論的結(jié)果以小組為單位進(jìn)行統(tǒng)一匯報(bào)。授課教師可以根據(jù)學(xué)生的討論結(jié)果進(jìn)行針對性地講授、引導(dǎo),從而使學(xué)生真正喜愛這門課程,自發(fā)地掌握這門非常實(shí)用的技術(shù)。這種線上線下相結(jié)合的混合式教學(xué)模式,克服了傳統(tǒng)授課形式枯燥、單一的弊端,激發(fā)了學(xué)生的自主學(xué)習(xí)興趣,讓學(xué)生由過去的被動接受知識轉(zhuǎn)變?yōu)橹鲃蛹橙≈R。
多樣化的授課形式必然需要多樣化的考核形式加以支撐,單靠期末考試的試卷成績必然無法客觀評估多樣化授課模式的教學(xué)效果。最終考核成績一般以平時(shí)成績、實(shí)驗(yàn)成績和卷面成績組成,各個方面的效果測評則應(yīng)根據(jù)具體的教學(xué)模式來確定,如因?yàn)樵黾恿苏n堂討論和小組匯報(bào)的授課形式,在最終考核的平時(shí)成績部分可增加課堂討論表現(xiàn)情況和小組討論完成度的測評;由于增加了授課平臺的相關(guān)習(xí)題內(nèi)容,在最終考核成績里可增加在線作業(yè)情況和測試習(xí)題分?jǐn)?shù)的成績。還可以考慮增加一個期末大作業(yè),考查學(xué)生對測試過程以及測試方法的掌握程度、是否建立了正確的測試思維以及是否可以從各個角度對交付軟件的性能進(jìn)行全面測試。這樣,多種考核方式相結(jié)合配合課堂上多樣化授課形式,能夠及時(shí)跟蹤學(xué)生的學(xué)習(xí)動態(tài),全面了解學(xué)生對測試內(nèi)容的掌握情況,及時(shí)、靈活地調(diào)整授課內(nèi)容及課程重難點(diǎn),最終取得更好的教學(xué)效果。
(三)合理設(shè)置課程教學(xué)內(nèi)容
就軟件工程專業(yè)而言,軟件測試課程應(yīng)包含以下內(nèi)容。
1. 理論知識體系與行業(yè)發(fā)展前景
在理論知識體系方面,首先劃分軟件測試的知識區(qū)塊,為不同的知識區(qū)塊合理分配基礎(chǔ)理論知識,形成一個區(qū)塊關(guān)聯(lián)式的軟件測試?yán)碚撝R體系。課堂講授以“區(qū)塊關(guān)聯(lián)式理論知識體系—測試代碼開發(fā)—測試過程管理”為主線,先指出軟件測試的重要性,再通過實(shí)例講述白盒和黑盒測試用例的設(shè)計(jì)方法,比較優(yōu)缺點(diǎn),根據(jù)測試需求選擇不同的測試策略,學(xué)生根據(jù)測試用例學(xué)習(xí)各個知識區(qū)塊內(nèi)容,包括單元測試、自動化功能測試、自動化性能測試等的測試代碼開發(fā)和運(yùn)行,記錄軟件缺陷,最后從整體上講述軟件測試的管理方式,完成整體教學(xué)目標(biāo)[6]。在行業(yè)發(fā)展前景方面,授課教師可以搜集近幾年測試行業(yè)的就業(yè)前景等相關(guān)資料,向?qū)W生介紹軟件測試技術(shù)在軟件開發(fā)行業(yè)的地位與作用,軟件測試發(fā)展情況及就業(yè)前景,相關(guān)崗位職責(zé)要求和任職條件、薪資待遇、上升途徑等,如圖1所示,筆者總結(jié)了軟件測試行業(yè)近幾年的薪資占比情況。從圖1可以看出軟件測試人員近幾年的薪資變化情況,教師可以在課堂上根據(jù)這些實(shí)際情況向?qū)W生大致介紹測試崗位的相關(guān)情況,使學(xué)生對測試崗位更加感興趣,從而激發(fā)學(xué)生對軟件測試課程的學(xué)習(xí)熱情和主動性。
2. 專業(yè)人才培養(yǎng)方案
專業(yè)人才培養(yǎng)方案是進(jìn)行專業(yè)人才培養(yǎng)的依據(jù)和大綱。授課教師應(yīng)以專業(yè)人才培養(yǎng)方案為基準(zhǔn),向?qū)W生詳細(xì)介紹本專業(yè)的人才培養(yǎng)目標(biāo)以及專業(yè)課程體系等內(nèi)容,尤其是專業(yè)基礎(chǔ)課與專業(yè)核心課、專業(yè)選修課之間的關(guān)系,引導(dǎo)學(xué)生制定大學(xué)階段的學(xué)習(xí)目標(biāo),避免學(xué)生盲目地學(xué)習(xí)。
3. 大學(xué)階段有效的學(xué)習(xí)方法和正確的行業(yè)追求
授課教師應(yīng)向?qū)W生闡述軟件工程專業(yè)的課程體系,為了達(dá)到本專業(yè)教學(xué)目標(biāo),對本課程所采取的課堂教學(xué)以及學(xué)生管理方式向?qū)W生進(jìn)行剖析,讓學(xué)生認(rèn)識到自己要找到更有針對性的學(xué)習(xí)方法,樹立正確的行業(yè)追求,具備自主追求和獨(dú)立思考的能力,始終保有對行業(yè)的批判性思維。
(四)增加更合理的綜合實(shí)驗(yàn)
企業(yè)招聘測試人員時(shí)通常希望畢業(yè)生能夠掌握盡可能多的測試工具,但軟件測試的課程目的不能只是簡單掌握一些測試工具,軟件測試實(shí)驗(yàn)課的安排不能簡單落實(shí)到測試工具的培訓(xùn)上,而應(yīng)該讓學(xué)生了解測試工具所體現(xiàn)的測試?yán)碚摗R虼耍浖y試實(shí)驗(yàn)課程不僅應(yīng)該增加實(shí)際動手操作的部分,更應(yīng)該增加實(shí)際大型項(xiàng)目的綜合測試內(nèi)容,讓學(xué)生從自主設(shè)計(jì)測試用例、選擇合適的測試方法、測試代碼自主開發(fā)、測試代碼運(yùn)行,最終記錄軟件缺陷。要求學(xué)生能夠自主選擇測試模式,針對不同測試要求和測試場景熟練操作各種測試工具,自主組織測試團(tuán)隊(duì),合理分工、團(tuán)結(jié)協(xié)作,自主安排測試進(jìn)度,最終交付實(shí)際軟件項(xiàng)目的測試報(bào)告[7]。這就需要適當(dāng)增加軟件測試技術(shù)的實(shí)驗(yàn)課時(shí)量,對評價(jià)學(xué)生能力的達(dá)成效果提出了更高的要求。這樣才能增加學(xué)生的團(tuán)隊(duì)意識,使其對該課程的實(shí)際動手測試能力的提高有切實(shí)的體會,對學(xué)生在畢業(yè)后直接進(jìn)入測試崗位有巨大的現(xiàn)實(shí)意義。
四、結(jié)語
軟件測試課程作為軟件工程專業(yè)學(xué)生非常重要的一門專業(yè)課,在增強(qiáng)學(xué)生的專業(yè)意識、提高學(xué)生專業(yè)認(rèn)同感、引導(dǎo)學(xué)生確立正確的學(xué)習(xí)目標(biāo)并制定專業(yè)學(xué)習(xí)規(guī)劃方面起著非常重要的作用。針對軟件測試課程課堂教學(xué)和實(shí)驗(yàn)過程中存在的問題,筆者認(rèn)為可以通過培養(yǎng)學(xué)生行業(yè)協(xié)作精神、采用多樣化授課方式、合理設(shè)置課程教學(xué)內(nèi)容以及將綜合實(shí)驗(yàn)融入到軟件測試課的實(shí)驗(yàn)教學(xué)中等手段對軟件測試技術(shù)課程教學(xué)進(jìn)行改革。
參考文獻(xiàn):
[1] Patton,R.. 軟件測試[M]. 北京:機(jī)械工業(yè)出版社,2006.
[2] Myers,G.J.,Badgett,T.. 軟件測試的藝術(shù)[M]. 北京:機(jī)械工業(yè)出版社,2012.
[3] 朱鄭州,鐘將. 融合理論和實(shí)踐的軟件工程課程思政建設(shè)[J]. 計(jì)算機(jī)教育,2021(09):23-26.
[4] 劉婷. 軟件測試課程教學(xué)建設(shè)初探[J]. 信息與電腦,2021,33(02):244-246.
[5] 王坤昊. 慕課背景下軟件測試課程教學(xué)改革探索[J]. 考試周刊,2017(78):35.
[6] 朱少民. 軟件測試方法和技術(shù)[M]. 北京:清華大學(xué)出版社,2014.
[7] 臧艷輝. 基于項(xiàng)目導(dǎo)向、任務(wù)驅(qū)動的軟件測試課程開發(fā)研究[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2014,17(10):238.
(薦稿人:石程,西安理工大學(xué)副教授)
(責(zé)任編輯:汪旦旦)