高洪皓 高玨 吳亞馨 嚴穎敏
摘要:介紹面向測試問題驅(qū)動的競賽能力培養(yǎng)模式,以激發(fā)學(xué)生對軟件開發(fā)的興趣和潛能,提高運用信息技術(shù)解決實際問題的綜合能力和團隊合作意識。
關(guān)鍵詞:計算機設(shè)計大賽;測試問題管理;現(xiàn)場演示與評估;問題分析與調(diào)試
0.引言
中國大學(xué)生計算機設(shè)計大賽是教育部計算機教指委認定的大學(xué)生系列競賽之一,其舉辦目的是提高大學(xué)生綜合素質(zhì),引導(dǎo)學(xué)生踴躍參與課外科技競賽活動。大賽每年3月份啟動,7-8月份決賽,分校賽、省賽、國賽3個級別。軟件服務(wù)外包與動漫大賽的評委由高校教師和企業(yè)項目經(jīng)理等混合組成,以企業(yè)需求為衡量,以實現(xiàn)技術(shù)和應(yīng)用實效作為評審標準。上海大學(xué)非常重視培養(yǎng)學(xué)生軟件服務(wù)外包開發(fā)能力,參與了兩屆中國大學(xué)生計算機設(shè)計大賽軟件服務(wù)外包分賽,兩次獲得二等獎。
面向測試問題驅(qū)動是一種有效的競賽能力培養(yǎng)模式,強調(diào)在軟件開發(fā)周期中測試問題修復(fù)過程。問題情境具有情感上的吸引力,容易使學(xué)生產(chǎn)生學(xué)習(xí)的興趣,形成問題答案的欲望,促使學(xué)生自覺、主動地尋求解決問題的方法,這也是大學(xué)生計算思維能力培養(yǎng)的重要途徑和方法。
1.頭腦風(fēng)暴界定服務(wù)外包任務(wù)
對于失敗的服務(wù)外包軟件而言,實現(xiàn)的功能與預(yù)期的需求不一致是最大障礙。復(fù)雜軟件的開發(fā)首要問題就是弄清楚目標軟件具有怎樣的功能或特性。
1.1了解服務(wù)外包軟件需求描述
軟件服務(wù)外包是指企業(yè)通過購買第三方提供的軟件服務(wù),來完成原來由企業(yè)內(nèi)部完成的工作,從而提高企業(yè)的核心競爭力。軟件服務(wù)外包是對環(huán)境應(yīng)變能力的一種管理模式。企業(yè)可以更專注核心業(yè)務(wù),達到降低成本、提高效率、增強企業(yè)核心競爭力的目的。服務(wù)外包強調(diào)的是軟件開發(fā)方的技術(shù)優(yōu)勢,參加服務(wù)外包分賽是產(chǎn)學(xué)研實踐教學(xué)的有效手段。在軟件開發(fā)前,召集團隊成員對服務(wù)外包需求進行分析,讓團隊成員充分理解需求,并以功能點的形式描述出來。同時,在項目會議上,團隊成員報告自己所理解的軟件功能。其他成員也可以隨時打斷并提出自己的疑問,以供大家一起討論。頭腦風(fēng)暴、團隊協(xié)作的方法,可將集體智慧最大化。最后,爭論問題則由指導(dǎo)教師拍板決定。
1.2明確服務(wù)外包軟件目標任務(wù)
明確需求后,將任務(wù)進行總結(jié)并形成電子文檔。經(jīng)過1~2輪小組評審,將其確定為服務(wù)外包軟件開發(fā)的任務(wù)基線。一般而言,評審確認工作需要用戶方參與。由于參賽小組選擇的自主企業(yè)命題,因此在參賽過程中,比較容易讓客戶方參與其中,討論目標軟件功能。其次,根據(jù)開發(fā)任務(wù)召集團隊成員,討論軟件系統(tǒng)架構(gòu)、功能模塊的劃分。如果客戶方要求使用某種技術(shù),先安排團隊成員熟悉開發(fā)語言和開發(fā)平臺。最后,根據(jù)競賽時間的周期安排,基于Projlect工具繪制甘特圖,安排軟件開發(fā)進度,細分任務(wù)和任務(wù)完成時間節(jié)點,并落實每項進度任務(wù)的負責(zé)人。我們通過各種渠道尋求解決方案,允許團隊成員采用合適技術(shù)手段加以解決。
2.以測試問題管理為中心
測試是確保開發(fā)的軟件程序是否滿足客戶需求的重要保證。對團隊成員完成的任務(wù)模塊進行測試,可以檢驗任務(wù)是否按質(zhì)量,是否按進度完成。在服務(wù)外包軟件開發(fā)過程中,對于測試發(fā)現(xiàn)的問題,如果開發(fā)人員不及時修改,部分功能發(fā)生嚴重問題,將導(dǎo)致系統(tǒng)功能無法正確執(zhí)行。因此,不僅需要好的測試用例以及執(zhí)行情況,而且還需要將測試發(fā)現(xiàn)的問題和功能修改情況進行統(tǒng)一管理。
2.1設(shè)計合理的測試用例
軟件服務(wù)外包需要詳細設(shè)計軟件測試用例。測試用例不僅包括輸入和預(yù)期的輸出,而且包括執(zhí)行輸出和結(jié)果。我們根據(jù)執(zhí)行結(jié)果的正確與否,測試相關(guān)人員提交的軟件缺陷情況。實行邊測試邊開發(fā)的策略,局部測試和全局測試,在回歸測試中需要考慮測試用例版本管理情況,即測試用例的版本需要根據(jù)當(dāng)前服務(wù)外包軟件的開發(fā)情況制定。
2.2功能演示和測試
現(xiàn)場演示功能模塊是最能發(fā)現(xiàn)軟件問題的一個環(huán)節(jié)。一方面,現(xiàn)場演示可以鍛煉團隊成員的語言表達能力和人際交流能力,又可以提高成員對于軟件模塊中錯誤設(shè)計的認知能力。實踐表明,現(xiàn)場演示更加容易發(fā)現(xiàn)軟件模塊中的問題。另一方面,現(xiàn)場測試具有特殊性,需要提前認真準備,只要有一個環(huán)節(jié)出現(xiàn)問題,就很有可能導(dǎo)致整個測試失敗。由于分工合作開發(fā),如果現(xiàn)場演示中出現(xiàn)問題,就需要將有關(guān)模塊一起連調(diào),有助于發(fā)現(xiàn)軟件設(shè)計和開發(fā)所隱藏的問題。對于現(xiàn)場出現(xiàn)的測試問題,我們要及時做好相關(guān)的記錄工作,以便后續(xù)跟蹤。
2.3測試問題提交
提交的測試問題如有缺陷,容易引起相關(guān)模塊開發(fā)人員的爭議,因此,在提交測試問題時,需至少清楚地給出概要描述、詳細描述、重現(xiàn)步驟等3方面內(nèi)容。我們選擇Bugzilla工具作為競賽小組的測試問題管理平臺,分配項目測試人員和開發(fā)人員相關(guān)賬號,其中測試人員提交和刪除測試問題,開發(fā)人員則只能查看測試問題。我們搭建TortoiseSVN作為軟件開發(fā)版本管理工具,實現(xiàn)分工開發(fā)和代碼集成,以推進軟件項目和保證項目質(zhì)量。開發(fā)人員提交的修復(fù)程序,必須經(jīng)過測試人員測試后才能刪除問題,主要目的是防止將來模塊開發(fā)人員在修改測試問題后,直接刪除測試問題。
2.4重視回歸測試
開發(fā)人員在修改問題缺陷時,往往會引入新的缺陷。在傳統(tǒng)的軟件開發(fā)過程中,一旦整體進度不能向后延遲,習(xí)慣的做法就是縮減測試時間。尤其在功能還沒有開發(fā)完成的情況下,有人認為回歸測試沒有必要,只驗證一些以前發(fā)現(xiàn)的缺陷是否修改完成就可以了。這是錯誤的觀點,在服務(wù)外包軟件開發(fā)過程中,回歸測試是檢驗測試問題是否消除的最直接手段,因此必須重視。要記錄和跟蹤關(guān)鍵缺陷的測試問題變更歷史,尤其是在現(xiàn)場功能演示時,要求團隊成員回歸測試時執(zhí)行一次全部的測試用例。同時,吸引一些低年級學(xué)生參與測試軟件,提高發(fā)現(xiàn)問題缺陷的概率,保障團隊后續(xù)穩(wěn)定發(fā)展。
3.團隊管理與文化
軟件服務(wù)外包開發(fā)是多任務(wù)并發(fā)和協(xié)作完成的,因此學(xué)生能力的培養(yǎng)需要重視技術(shù)方面的培養(yǎng),需要重視培養(yǎng)團隊的合作精神,以避免開發(fā)過程中的個人英雄主義。在面向測試問題驅(qū)動的模式下,信任和溝通尤為重要。
3.1培養(yǎng)相互信任
信任是團隊合作的基礎(chǔ)。信任需長時間才能建立起來,卻又很容易被破壞。在服務(wù)外包軟件開發(fā)初期,為了讓團隊成員之間相互熟悉,我們通過反恐精英游戲和魔獸等團隊游戲培養(yǎng)合作意識。在軟件開發(fā)過程中,對于現(xiàn)場功能演示和測試發(fā)現(xiàn)的測試問題,允許團隊成員參與分析與討論,進一步加強合作和互助。
3.2測試問題溝通
溝通在團隊管理中扮演著相當(dāng)重要的角色。除了通過郵件、短信、QQ群等不定期的聯(lián)系之外,書面材料匯報測試發(fā)現(xiàn)的問題也十分重要。因此,按照書面材料匯報機制,我們要求團隊每周開一次例會,各成員匯報自己本周內(nèi)的工作進展及接下來的工作計劃,并集體討論階段性遇到的開發(fā)問題和技術(shù)困難。將技術(shù)難題集中放到小組會議上討論交流,可以加強團隊成員之間的溝通。
3.3競賽經(jīng)驗分享
在兩屆軟件服務(wù)外包大賽的備賽過程中,為了更好地幫助團隊成員,我們邀請歷年曾參加過大賽的高年級學(xué)生傳授經(jīng)驗與方法,從而使參賽學(xué)生更快更真實地了解比賽信息,包括軟件開發(fā)技巧和決賽答辯經(jīng)驗。同時,我們不定期地組織技術(shù)講座和討論會,讓參賽學(xué)生在技術(shù)層面獲得幫助。在賽前我們還進行模擬答辯,加強現(xiàn)場應(yīng)變能力。
4.結(jié)語
中國大學(xué)生計算機設(shè)計大賽具有賽事時間長、參賽人數(shù)廣、多層次競賽等特征,不僅鍛煉了參賽學(xué)生的計算機軟件開發(fā)能力,而且培養(yǎng)了他們的團隊合作意識。面向測試問題驅(qū)動的競賽能力培養(yǎng)模式,提升了團隊成員的實踐技能和創(chuàng)新思維,尤其是尋找技術(shù)解決方案的能力?,F(xiàn)場決賽答辯模式加強了參賽學(xué)生的語言表達與溝通能力,為拓展綜合素質(zhì)提供了良好的機會。
(編輯:郭田珍)