蘇春芳 李娜
[摘 要] 針對軟件測試課程知識覆蓋面廣、操作實用性強、行業(yè)面向性強的特點,在深入調研了軟件行業(yè)對軟件測試人員要求的前提下,提出基于敏捷開發(fā)模型的軟件測試教學改革方案,目的在于讓學生熟悉軟件企業(yè)普通應用的開發(fā)模型以及軟件測試的流程與方法,在提高學生專業(yè)學習能力的同時,重點培養(yǎng)學生綜合應用知識、提出問題、解決問題的能力,從而提升學生在職場中的競爭能力。
[關 鍵 詞] 瀑布模型;敏捷開發(fā)模型;Scrum;用戶故事
[中圖分類號] G712 [文獻標志碼] A [文章編號] 2096-0603(2016)27-0104-02
軟件質量問題一直是IT(Information Technology)行業(yè)關注的重要問題,不斷提升軟件產品的質量,成為軟件企業(yè)研究的重要課題。瀑布模型(watefall)曾經是軟件行業(yè)普遍采用的一種開發(fā)模型,在整個開發(fā)過程中雖然也要求測試人員和開發(fā)人員相互合作,但存在一定的階段性。軟件測試一般發(fā)生在需求分析、設計、編碼階段之后,當開發(fā)人員完成大部分的工作任務以后,測試人員才正式參與項目,軟件測試人員在項目前期僅僅是做一些測試前的準備工作而已。即便軟件公司擁有一支強大軟件測試團隊,也沒有辦法維持一個較低的、比較理想的bug率。近年來,軟件行業(yè)開始認同一種新的開發(fā)模式——敏捷開發(fā)模式(Agile software development),隨之而來的是軟件測試行業(yè)也正在經歷一場巨大的變革。敏捷開發(fā)模型將軟件開發(fā)與測試融為一體,從而改變了軟件測試人員與開發(fā)人員之間時間、空間上的界限。敏捷開發(fā)更強調“項目中的每一天都不例外”,每一次軟件迭代,不僅包含開發(fā)的任務,也包含測試的任務,每一次成功的迭代都是團隊共同合作的產物。為了適應軟件行業(yè)的這種變化,本文深入研究了敏捷開發(fā)模型scrum,探索了軟件測試課程的設計與教學模式。
一、課程總體設計
敏捷軟件開發(fā)是一個逐步迭代的過程,將整個軟件產品分為若干個迭代(Iteration),持續(xù)不斷地向客戶提交有價值的軟件,當所有的迭代結束時,整個產品的開發(fā)任務就完成了。產品開發(fā)的每一輪迭代,都要向客戶提交可以使用的產品,從某種意義上來說,每一輪迭代過程都是一個完整的軟件開發(fā)過程,包括設計、編碼、測試等過程。
鑒于敏捷開發(fā)的特點,軟件測試的總體設計不僅要體現(xiàn)迭代的過程,還要兼顧軟件測試的知識結構,主要從教學單元的劃分、教學內容的設計、教學方法等幾個方面對軟件測試課程進行總體設計。
(一)模塊任務設計
敏捷開發(fā)模型scrum將軟件產品的開發(fā)過程定義為一個不斷迭代的過程,因此,教學的項目應該具有可拆分、模塊化的特點,本課程選取學生較為熟悉的“教學管理系統(tǒng)”作為教學項目,貫穿于整個教學中。該項目由本校師生共同開發(fā),目前正在使用過程中,教學項目選擇對“教務管理系統(tǒng)”進行測試,不僅具有實際應用價值,而且還能夠增加學生的成就感,從而激發(fā)學生的學習興趣。
教學單元的任務設計充分體現(xiàn)scrum迭代的特點,通常情況下,一個教學單元對應一個scrum的一輪迭代,每個教學單元都是一個完整的任務模塊,而各個教學單元之間又是一個相對獨立的、可延續(xù)的整體。遵循由簡單到復雜、可迭代化、可拆分化的特點,將“教務管理系統(tǒng)”劃分為用戶認證、組織管理、學生管理、課程管理、成績管理五大教學單元,教學單元之間是一種高內聚、低耦合的關系。
由于敏捷開發(fā)的每一輪迭代都包含若干個用戶故事,通常在迭代會議結束之后,每個項目小組都會領取任務,因此在本門課程的設計中,借鑒軟件企業(yè)的這種做法,將所有的特性分解成多個用戶故事卡(Story Card),每一個用戶故事就是教學單元中的子任務,下面以成績管理為例,說明本門課程的教學任務設計。在以往教學中,存在教學任務劃分粒度較大、任務描述不清晰的特點,本文借鑒scrum用戶故事撰寫的原則,在任務的命名中就明確了誰是用戶、能做什么,這樣使得任務的描述更準確化、清晰化,考慮到本門課程的連續(xù)性、完整性,本文將用戶故事名作為任務名。
(二)教學環(huán)節(jié)設計
軟件測試這門課程的理論知識主要是指軟件測試方法、技巧,在以前的課程教學中,我們以工作任務為導向來組織教學,將各個知識點融入各個教學任務,取得了良好的教學效果,本門課程繼續(xù)延用這種方法。同時由于scrum的每一輪迭代都會使軟件測試的任務成倍的增加,給軟件測試也帶來了前所未有的壓力,也正由于這一特點,才能保證測試的完備性,為了解決這個問題,本文在教學環(huán)節(jié)中增加了自動化測試的環(huán)節(jié),加大自動化測試的比重。增加自動化測試的原因在于測試人員不僅要對上一輪的測試進行回歸測試,還要對新的任務進行測試,如果沒有自動化測試技術作為保障,測試人員是無法完成相應測試任務的,因此,在教學環(huán)節(jié)中,增加回歸測試環(huán)節(jié)是必需的。
本門課程的教學環(huán)節(jié),不僅增加了回歸測試環(huán)節(jié),而且還增加了團隊互動環(huán)節(jié)。以往軟件企業(yè)中的測試人員與開發(fā)人員雖然同屬于某一個項目組,實際上他們的工作是相對獨立的,他們之間的合作也僅僅發(fā)生在項目開發(fā)后期。由于在scrum中,項目組的劃分是以用戶故事為依據,以功能模塊為基礎,因此項目組就變成了開發(fā)人員與測試人員的結隊,為了讓學生適應軟件行業(yè)的這種變化,在教學中增加了團隊討論環(huán)節(jié),創(chuàng)造團隊合作的機會,從而培養(yǎng)團隊成員溝通、交流的能力。
二、課程單元設計
軟件企業(yè)不僅要求測試人員具備測試知識、掌握一定的測試技巧,而且更看重軟件測試人員的團隊協(xié)作能力,為了培養(yǎng)學生以上的能力,本文深入探索了單元設計的思路與方案。在教學單元中不僅要講解軟件測試的理論知識,還要搭建測試人員與開發(fā)人員緊密合作的環(huán)境,從而培養(yǎng)團隊成員之間的溝通與合作能力。單元設計包括對情景任務的設計、團隊組成與合作形式的設計以及教學方法的設計。
(一)情景任務設計
在以往的教學中,引入任務部分常常以描述一個測試任務的形式提出,通過老師的講解,由學生自己來提煉,往往有些學生在任務不明確、技術要求不清楚的情況下開始學習,從而導致學生不能全身心地投入課堂學習。為了能夠在引入任務環(huán)節(jié)給學生一個清晰、明確、直觀的認識,本課程采用用戶故事(Scrum User Stories)方式來引入任務。用戶故事往往包含三個部分,清晰明確地提出“終端用戶是誰,用戶想要什么,結果是什么”,常常使用簡明、精確的語言描述一個具體的功能,例如,引入“學生查詢成績”這個任務可采用如下表所示的形式,這樣的任務描述不僅明確告訴學生本次課的任務,而且還能夠避免歧義的發(fā)生,以嚴謹、科學的方式傳達信息。
(二)團隊組成與合作形式
為了增加教師與學生、學生之間的互動,座位的排列通常按照教學內容的特點,分別可以采用全班、內外圈、小組、角色扮演、意見軸等形式排列,目的在于增加學生在做中學、教別人的機會。
團隊討論形式主要采用角色扮演的形式,讓學生通過扮演開發(fā)人員和測試人員,分別完成各自的設計與測試的任務,在此基礎上,采用辯論或交叉提問的形式,增加開發(fā)與測試人員的互動,讓學生自己發(fā)現(xiàn)設計不合理的部分。經過2分鐘各自的修正后,項目組提交一份完整的任務書,經過以上的討論環(huán)節(jié),使得整個任務的設計、開發(fā)、測試都是集團隊成員的智慧于一體,從而改變了瀑布模型中設計由開發(fā)人員獨立完成的現(xiàn)象,減少了設計階段產生bug的幾率,同時潛移默化地培養(yǎng)了學生團隊合作的能力。團隊討論環(huán)節(jié)總時間一般控制在10分鐘之內。
(三)知識點組織設計
緊緊圍繞用戶故事,設計所要講解的知識點,以“查詢不及格的課程成績”為例來說明知識點的組織。用戶想要看到的是自己成績低于60分的課程成績,而不是所有的成績,60分、59分是兩個比較重要的邊界值。測試“查詢不及格課程成績”這一功能最有效的方法是邊界值分析法,因此本節(jié)的理論知識主要包括邊界值方法、等價類劃分方法、回歸測試,除此之外,還要增加自動化測試。在敏捷開發(fā)中自動化測試是測試人員必不可少的一項技能,每輪迭代都在增加新的功能,而迭代周期的時間相對固定,隨著時間的推移,已實現(xiàn)的功能越來越多,這就要求越來越多的回歸測試在時間相對固定的周期內完成。如果沒有自動化測試,這是不可能完成的任務。如何培養(yǎng)學生在有效的時間內,完成比以往多幾倍的測試任務,是本門課程考慮的另一個重點,鑒于以上原因,在知識點設置中增加自動化測試部分,對學生進行遞進式強化訓練。
總之,軟件測試課程是計算機軟件專業(yè)的必修課程,重在培養(yǎng)學生的軟件測試能力,滿足軟件行業(yè)對測試人員的需求。為了適應當前軟件行業(yè)開發(fā)模式的變化,基于敏捷開發(fā)模式scrum,本文提出針對軟件測試課程的教學改革方案,對課程的總體設計、單元教學內容與教學方法進行了深入探索與研究,尤其在團隊合作內容、形式方面進行了深層的探索,通過一年多的實施情況,達到了預期的目標,畢業(yè)生深受用人單位歡迎,接下來我們將再接再厲努力探索互動教學技巧,優(yōu)化翻轉課堂教案的設計。
參考文獻:
[1]王敏.基于Scrum敏捷開發(fā)的軟件過程管理研究[D].昆明理工大學,2010:20-22.
[2]任波.基于敏捷開發(fā)的游戲項目集成管理系統(tǒng)的迭代開發(fā)[D].上海交通大學,2006:23-24.
[3]王愛景.敏捷開發(fā)中軟件架構的設計與實踐[D].河南大學,2015:30-34.