任榮
北方民族大學計算機科學與工程學院 銀川 750021
隨著我國軟件產業的蓬勃發展,人們對軟件的質量意識逐漸增強,軟件測試逐漸成為非常具有生命力的行業。據統計,在歐美的軟件項目中,軟件測試的工作量要占到項目總工作量的40%左右,測試費用占到總項目費用的約30%,而中國的很多軟件企業還遠遠達不到這個比例。近幾年,我國軟件測試行業的發展也在逐步趨于成熟,測試工程師的需求數量和待遇都在逐步提高。基于這樣的背景,軟件質量保證與測試課程組教師對該課程的教學模式不斷地進行改革與創新,目的是縮小教學內容與企業需求之間的差距,提高學生的實踐技能和就業水平。
軟件質量保證與測試是軟件工程專業的主干課程,作為軟件工程專業就業的一個重要分支,為學生參與專業資格考試、進入企業實習、規劃畢業設計以及就業提供一個可供使用的軟件測試專業知識體系,因此,要不斷創新教學模式,更新教學內容,改革教學方法。通過本課程的學習,學生要能理解軟件測試的理念與發展,能夠利用軟件測試的基本原理、方法和技術,進行軟件測試的分析、設計與執行,積累、養成軟件工程專業素質,提高學生的就業能力。
軟件質量保證與測試課程教學改革的目的是要讓教師在教學過程中采用合適的教學方法,激發學生的主觀能動性,促進學生成為學習的主體,使學生主動完成學習任務。在教學初期,教師是教學的主體,學生是客體。教師教學的一個十分重要的目的是設法促進學生角色的轉變,即逐漸使學生具有學習主動性,承擔起學習的主體責任。
通過本課程的學習,學生能深刻理解軟件測試的基本思想和理論,熟悉不同類型的軟件測試方法和測試過程,具備編寫測試計劃、設計測試用例、生成測試報告的能力,了解行業中廣泛使用的白盒測試和黑盒測試工具,尤其是功能測試、性能測試的自動化工具,并能熟悉使用典型工具完成常規測試任務。本課程從工程化的角度培養學生從事軟件測試的技術和能力,為學生將來從事軟件開發及軟件測試工作奠定扎實的理論和實踐基礎。
本課程目標設計如下:通過對軟件測試重要性的認識,以及對軟件測試基礎知識、測試方法的掌握,學生能夠熟練應用軟件測試中的各種方法技術,并能針對軟件系統完成測試用例設計和編寫;通過對軟件質量定義、軟件質量管理體系、軟件質量模型以及軟件質量保證活動等內容的理解,學生能夠針對軟件系統的不同開發周期開展相應的軟件測試活動;面向不同系統和不同階段的測試需求,學生能夠選擇合適的軟件測試技術及工具,較好地完成軟件質量保證工作;通過對測試團隊的構成、地位、責任,測試團隊的管理,優秀測試工程師的必備素質等知識的理解,學生能夠在開展軟件測試活動時有效地與客戶、團隊成員進行溝通交流。
軟件測試的目的是檢驗軟件系統是否滿足規定需求,找到實際執行結果與預期結果之間的差別,驗證并提高軟件質量[1]。軟件測試的內容很豐富,不僅要測試軟件是否滿足用戶的功能需求,還要測試系統的性能需求,如系統的安全性、可靠性、并發性、易用性、效率等。軟件測試領域比較廣泛,比如金融、通信、電子商務、游戲、工業控制、辦公軟件、通用軟件等。不同的軟件業務領域,軟件測試的底層邏輯都是相通的,軟件測試階段和測試方法也是類似的,只是各軟件的業務應用和流程不同,測試工具有所差異,因此測試工程師的應用領域跨度比較大,發展空間比較廣闊。
軟件測試階段包括單元測試、集成測試、系統測試、驗收測試;軟件測試常用的方法包括白盒測試、黑盒測試、靜態測試、動態測試、回歸測試、冒煙測試、隨機測試等[2]。在某一階段或類型的測試中,多種測試方法一般會被綜合運用,以達到全面測試的目的。
從很多軟件質量缺陷案例中能看到,軟件質量缺陷對用戶的影響小至損失些信息、金錢,大至危及安全,甚至生命。因此,在教學過程中,教師應通過現實案例的講解,讓學生意識到測試工程師是保證軟件質量的最后一道關卡的捍衛者,如果疏忽大意或責任缺失,就可能造成不可想象的后果。使學生認識到合格的測試人員需要具備的能力,如利用合適的測試方法設計測試用例,熟悉業務知識、程序、文檔等,能使用主流的測試工具,既從開發者專業的角度進行測試設計,又從用戶的角度執行測試。
本課程的教學內容包括:軟件測試概述和基礎、從測試的角度看軟件質量保證、軟件缺陷管理、測試用例的設計、靜態測試與動態測試、白盒測試、黑盒測試、單元測試、集成測試、系統測試、驗收測試、測試管理、軟件測試環境及自動化測試[3]。實驗內容包括:測試用例寫作、白盒測試—邏輯覆蓋法、黑盒測試—等價類、邊界值法、黑盒測試—因果圖法、單元測試、自動化測試[4]。
從以上描述看,軟件測試的概念和方法很多,要求學生正確理解并關注專業術語,要從系統化的概念出發學習軟件測試的方法,在積累了許多概念定義后嘗試建立一些關系,自己設計一個概念知識結構。軟件測試的實踐性也很強,因此要求學生認真完成討論、作業、實驗和課程設計,在實踐中加深對知識的理解,作業中的概念定義必須準確完整、實驗和課程設計中采用的設計方法、描述方式要有根據。軟件測試,設計為先,即學習軟件測試要從軟件需求和測試方法出發,設計測試模型(測試用例),為測試執行提供依據。
軟件質量保證與測試課程的教學模式設計如下。
1)多維度教學。提供多媒體課堂教學、提問、討論、作業練習、實驗、課程設計、期末考試、線下、線上等多維度教學環節,在扎實講述傳統軟件測試理論的基礎上,不斷增加現代軟件的測試理念和技術,并努力將教師的“教”與學生的“學”相結合,啟發學生、挖掘來自學生的切實的感悟。
2)工程案例式教學[5]。工程原則的首要原則是用戶原則。盡管軟件質量的好壞在很大程度上取決于有效的測試,但用戶群體特征和用戶群體規模會直接影響軟件測試的目標選擇。要使學生立足當下,更新觀念,開拓視野,注重實用。烘托課堂工程氛圍、培養學生的IT心態。
3)線上線下混合式教學。利用MOOC平臺建設豐富的線上教學內容,作為線下教學的重要補充。學生可以學習線上教學視頻,預習和鞏固所學內容,通過自學MOOC平臺上教師精心挑選的各種測試案例(包括文檔和視頻),加深對所學知識的理解,教師主持線上討論,為學生提供一個充分發表評論和想法的平臺。
4)融合國家優質MOOC資源。在中國大學MOOC平臺上參考借鑒適合該課程的優質資源,并與本課程內容有效對接,充實本課程內容,使學生開闊視野和拓展知識面。
在平時課堂教學中,積極探索適合學生的教學方法,嚴格要求學生,調動其學習積極性,提高學習效率。課程內容理論聯系實際,融入適當的教學案例。
講課過程中,為了吸引學生的注意力,考量學生對知識點的掌握程度,教師有針對性地設置一些問題,并向學生提問,將學生回答問題的情況計入其平時成績,這也是隨機點名的好辦法。
在線上補充優質學習內容,如教學視頻、案例視頻或文檔等,并發布針對線上學習內容的討論,要求學生發表評論或觀點,督促學生利用課余時間多學多看多想,使學生多了解課堂以外的世界。
針對需要重點掌握的知識點,除了線上線下結合的教學環節,教師還在MOOC平臺上布置設計性較強的作業題目,學生在網上提交作業后,教師要認真批改,對作業問題較多的學生進行單獨輔導。
在每次實驗中,合理地安排實驗題目,設置設計性實驗,充分調動學生的探索興趣。布置的實驗要求學生自主完成,每次實驗課,對每個學生的每次實驗都進行一次“小答辯”,每個學生都要講解實驗內容,之后教師進行提問,通過學生的講解和回答,給出該學生本次實驗的綜合成績。最后,平均學生的六次實驗成績,得到該學生最終的實驗成績。
在平時課堂教學中,運用啟發式、工程案例式原則,在課堂上通過各種教學方法(如講解、示范、提示等)教授課程內容,使學生接受并內化所學知識。講課過程中,為了吸引學生的注意力,考核學生對知識點的掌握程度,有針對性地設置一些問題提問學生,根據學生的回答情況,計入其平時成績。實施共同解決問題的教學形式,通過師生的平等對話與討論來共同思考、探究和解決問題,由此使師生教學相長,共同獲得知識技能和發展能力。
補充新穎實用的線上教學材料,使學生充分利用課余時間學習,注重線上線下教學的有機結合,這都有助于學生注重平時學習的積累,而不是考試時臨陣磨槍。
合理安排實驗內容,使用成熟的測試工具完成設計性實驗,充分調動學生的主觀能動性和實踐積極性。重視每次實驗的完成和考核,除了提交實驗報告以外,還要進行現場提問和考查,讓學生在實驗課上既動手又動腦。
本課程的考核采用多元評價體系,強調對學生專業能力的考核和綜合素質的評價[5]。不僅僅用期末一張試卷來考核評價學生的學習效果,最終的成績由過程性考核和期末考試構成,其中過程性考核占40%,期末考試占60%。平時的過程性評價主要是考核學生的學習態度、實踐能力、團隊協作能力以及對階段性知識的掌握情況,依據課程進度,要求學生完成作業、實驗、課程設計以及其他教學環節。期末考試的試題設計主要考核學生對知識綜合運用的水平,以及針對具體問題設計解決方案的能力。在引入課程思政元素方面,本課程的教學內容中,介紹國際國內軟件測試行業的發展及前景,并且重點強調我國信息化產業的發展,以及對信息化人才尤其是軟件測試工程師的需求。
本課程還講解了軟件測試團隊的構成、地位、責任、測試團隊的管理,以及優秀測試工程師的必備素質,增強學生的團隊和責任意識。
教學改革不是一蹴而就的,新的軟件測試方技術在不斷涌現,這就要求教師要與時俱進,教學內容和教學方法的改進要滿足社會和企業的需求[6]。
軟件質量保證與測試是一門實踐性較強的課程,涉及的概念和方法較多,重點難點突出,學生掌握該門課程需要將所學知識應用到實踐中。該門課程也是針對提升學生就業能力的一門改革課程,后續還需教師不斷投入更多精力,完善課程建設,提升該門課程的教學水平。
本課程在持續不斷改進,后續教學過程中應注意學生的接受和吸收能力,注重學生學習的差異性,提升其對知識的應用能力。
在以后的教學中將繼續完善MOOC教學平臺資源,進一步引導和提升學生自主學習的能力。后續的教學中要不斷探討如何落地工程教育認證的核心理念,即如何體現以學生學習為中心,以及OBE(Outcome Based Education)教育理念在本課程中如何實施,進一步提升教學效果,為提高學生專業素養、實踐水平和就業能力打下堅實的基礎,為建設本科一流課程邁出堅實的一步。