前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的測試項目總結主題范文,僅供參考,歡迎閱讀并收藏。
1 試驗目的
我市是傳統的花生生產大市,每年花生種植面積有10多萬畝,是我市人民解決食用油來源的主要渠道之一。為了建立我市花生生產中施肥的技術指標體系,提高花生的產量和品質,降低施肥成本,減少因盲目施肥對生態環境造成的危害,特進行了本試驗。
2 試驗地點
試驗地為桂平市蒙圩鎮新建村第五村民小組張桂明戶承包的水田,經度109°59′,緯度23°19′,海撥47.9米。
3 試驗材料
3.1 肥料 尿素N:46.5%;過磷酸鈣P2O5:14%;氯化鉀K2O:60%。
3.2 花生種 本地良種82號。
4 試驗地情況
沖積沙壤土,耕層厚度20厘米,排灌方便,前作為水稻。整地前按“五點”取樣采集混合樣本進行分析化驗:PH:5.1;有機質:20.6g/kg;全氮:1.37g/kg;有效磷:38.3mg/kg;緩效鉀:118.7 mg/kg;速效鉀64 mg/kg。
5 試驗設計
5.1 試驗采用 《農業部測土配方施肥技術規程》3414完全實施方案設置田間小區肥效試驗
見表(一)。
“3414”設計方案指氮、磷、鉀3個因素,高、中、低,空白4個水平,14個處理。2水平指當地最佳施肥量的推薦值(本試驗為:N:P2O5:K2O=6:3:9),1水平=2水平×0.5,3水平=2水平×1.5,0水平指不施肥。
5.2 試驗小區形狀 試驗小區長21米、寬2×0.8米=1.6米。面積33.6平方米。
5.3 種植規格 80×16.7厘米,雙行雙粒均勻點播,雙行間距20厘米,畝播花生仁1.8-2.0萬粒。每小區點播花生仁1000粒。試驗小區四周設不少于1.0米的保護行。
5.4 施肥 所有肥料全部用做基肥,在播種時于雙行間開溝施下。
6 試驗過程
3月11日播種,3月18日出苗,3月21日齊苗,4月28日始花,5月10日盛花,7月16日成熟收獲。
7 試驗結果和肥料產量效應回歸分析
7.1 試驗的產量結果和主要經濟性狀見表二
7.2 回歸方程肥料效應擬合結果見表
8 試驗結論:
(1)試驗中氮、磷、鉀各養份單因素或綜合因素對花生產量的影響均達到顯著水平。說明花生栽培中增施N、P、K養份是有顯著增產效果的。
(2)氮、磷、鉀各元素對花生產量的影響遵循著拋物線模型。即。
氮:每畝N的施用量在04.31―5.85公斤之間時,花生產量會隨著N施用量的增加而增加,當每畝N 的施用量大于5.85公斤時,N的產量效應則會隨著N施用量的增加而減少。
磷:每畝P2O5的施用量在O1.35―2.48公斤之間時,花生產量會隨著磷施用量的增加而增加,當磷的施用量大于每畝2.48公斤時,P2O5的產量效應則會隨著磷養份施用量的增加而減少。
鉀:每畝K2O施用量在O4.23―7.68公斤之間時,花生的產量會隨著鉀養份施用量的增加而增加,當鉀的施用量大于每畝7.68公斤時,K2O的產量效應會隨著鉀養份施用量的增加而減少。
關鍵詞:國產化平臺;信息系統;軟件測試
計算機軟硬件實現自主可控是國家重要的發展規劃,近年來國產化軟件平臺取得了長足發展,操作系統、數據庫、辦公軟件、中間件等均已出現不少商用國產化產品,為信息系統能夠采用國產化平臺進行研發奠定了基礎。軟件測試作為軟件研發領域中的重要一環,直接影響軟件產品質量,一直備受重視[1]。軟件測試與軟件開發緊密相連,軟件研發采用國產化平臺實現,這對軟件測試有著重要的影響,決定著軟件測試所需要的技術,因此研究國產化平臺下的軟件測試具有重要意義。相比于非國產化軟件平臺,國產化軟件平臺起步晚,發展時間短,其對應的軟件測試技術也比較欠缺,尤其是在配套的測試軟件方面。本文通過分析軟件測試關鍵活動,根據國產化軟件測試技術現狀,提出一種適應于國產化平臺信息系統軟件測試技術。
1信息系統軟件測試分析
信息系統軟件測試在不同研發模型中所分階段不同,而區別于不同的研發模型,整個軟件測試過程一般都需要經過測試策劃、測試設計、測試執行、測試總結四個基本活動。測試策劃活動主要進行需求分析,識別軟件測試項、測試所需軟硬件、人力資源等;測試設計活動主要根據識別的軟件測試項設計測試用例,包括手工測試用例、自動化測試用例等;測試執行活動通過手工、自動執行測試,發現軟件缺陷,進行軟件缺陷歸零驗證;測試總結活動對測試執行結果進行整理分析,編寫測試報告。同樣的,基于國產化平臺研發的信息系統軟件測試亦需要經過測試策劃、測試設計、測試執行、測試總結四個活動。1)測試策劃活動進行需求分析、識別軟件測試項依賴于軟件自身需求,其與研發平臺具有無關性,識別測試所需的軟硬件則取決于研發平臺。目前國產化平臺的測試工具也面臨著起步晚、發展時間短的問題,應用于國產化平臺的軟件測試工具種類遠沒有豐國產化平臺軟件測試工具豐富[2]。測試策劃過程中需要識別出可用于國產化平臺的測試軟件是其要解決的重要問題,一方面取決于已有的測試軟件,另一方面取決于信息系統的技術實現。2)測試設計活動所編寫的手工測試用例取決于被測信息系統軟件自身,而編寫自動化測試用例則取決于所使用的自動化測試平臺,不同的自動化測試平臺所適用的軟件類別不同。基于國產化的自動化測試平臺選擇范圍小,且成熟度相比于非國產化平臺并不高。因此測試設計階段所面臨的是被測信息系統軟件的可實現自動化測試的用例覆蓋程度問題。3)測試執行活動一方面是執行測試用例,另一方面還需要對軟件缺陷進行分析定位,對被測信息系統的內存、CPU、網絡、磁盤IO等指標進行監控,其對國產化平臺依賴性較高。國產化平臺的操作系統、數據庫、中間件乃至辦公軟件所提供的分析、監控工具直接影響著軟件測試的執行和軟件缺陷的分析定位。目前,國產計算機環境的應用面、規模相對較小,應對復雜環境時,兼容性、綜合性能、可靠性驗證不充分,缺乏有效的診斷分析工具和測試評估環境[1]。測試執行過程中面臨著如何充分利用國產化平臺所提供的分析和監控工具完成測試執行、如何通過第三方輔助軟件解決國產化平臺自身不具備的功能完成測試執行的問題。4)測試總結活動為測試過程的最后一個活動,對測試執行的結果進行整理分析。對于國產化平臺研發的信息系統,測試總結需要分析前幾項測試活動的結果形成測試報告,還需要對測試技術形成積累,為基于國產化平臺信息系統的軟件測試持續發展提供經驗。圖1為信息系統軟件測試活動圖以及基于國產化平臺進行軟件測試活動的所要解決的關鍵問題。
2軟件測試技術應用
2.1測試策劃
國產化平臺信息系統軟件測試策劃活動所面臨的主要問題是識別測試所需軟件項,應用于項目,需要結合項目自身特點。每個項目的系統架構、軟件開發語言、運行環境等各不一樣,因此在識別時結合被測軟件,從三個方面解決測用所需軟件:開源軟件[3]、商用軟件、自研軟件。圖2所示在項目測試過程中開源軟件、商用軟件、自研軟件選擇比重,其中開源軟件選擇優先,其次可通過自研軟件、商用軟件覆蓋測試所需。1)開源軟件具有成本低、靈活性高、自由的優勢,國產化平臺信息系統識別測試所需軟件項可以優先從開源軟件中選擇,獲取滿足項目軟件功能測試、性能測試、接口測試、安全測試、可靠性測試等測試類型的開源軟件。2)開源軟件在支持方面、文檔方面、穩定性方面不如商業軟件,對于測試軟件要求高的項目可選擇商用軟件進行支撐。商用軟件具有支持度高、日常更新、技術難度低的優勢,采用商用軟件可以避免測試過程中的一些無法解決問題。3)商用軟件所提供的是適用于大多數用戶需求的接口,對于被測軟件,在不同的測試階段、不同測試類型中,存在商用軟件無法實現測試內容的場景,需要項目通過研發專用測試工具以實現測試覆蓋,解決測試軟件問題。
2.2測試設計
測試設計過程中可以通過編寫自動化測試用例代替手工測試的反復操作,自動化測試用例覆蓋率高可以有效地提高測試用例復用率和執行效率。基于國產化平臺信息系統軟件自動化測試在采用的自動化測試平臺上,可以通過不同維度的測試用例設計增加自動化測試用例覆蓋率,即分別從單元測試、接口測試、GUI測試分別設計自動化測試用例[4]。自動化軟件測試用例設計一般遵循圖3所示的三角形用例覆蓋率比例,單元測試與代碼直接相關,軟件代碼改動對單元自動化用例的影響較小,單元測試自動化用例覆蓋率最高,其次是接口測試自動化用例。GUI自動化測試用例實現難度高,且受代碼改動影響大,因此其自動化測試用例覆蓋率最低。國產化平臺信息系統軟件自動化測試平臺缺少QTP、Loadrunner等工具,目前只有少數自動化平臺支持國產化操作系統,如kylinTOP自動化測試工具,除此之外,還可以采用Selenium、Python等實現自動化測試。此類軟件對于GUI自動化測試與非國產化軟件類似,因此國產化平臺信息系統自動化測試用例亦需要遵循圖3的測試用例覆蓋率。
2.3測試執行
在測試執行過程中需要對信息系統軟件缺陷進行分析定位、對信息系統的指標進行監控。信息系統的缺陷分析和指標監控包括兩部分,一部分與依賴的國產化平臺相關,另一部分與信息系統軟件自身相關。與國產化平臺相關的缺陷分析和指標監控可以采用國產化平臺自持軟件,目前國產操作系統、國產數據庫軟件、國產中間件軟件等均具備滿足監控平臺自身指標的工具[5]。基于國產化平臺的第三方測試工具如WGCLOUD、PIGOSS、SugarNMS等可以實現多平臺、分布式監控。表1為這三款工具軟件可支持的國產化平臺以及可用于信息系統軟件測試的監控項。
2.4測試總結
測試總結活動是對之前幾項測試活動的總結,在測試執行完成后對各項測試活動進行整理分析,形成測試報告。基于國產化平臺的信息系統軟件研發還未廣泛開展,對應的軟件測試技術也需要不斷的探索與研究,相比于非國產化平臺的軟件測試,國產化平臺信息系統的軟件測試不再僅限于單一項目,還需要與其他項目的測試策劃相關聯。因此測試總結活動還需要以資源池的形式進行技術積累,將整個測試過程中的軟件測試方法、測試工具、測試分析等進行技術儲備與傳播,為其他國產化平臺的軟件測試提供借鑒。同樣的,在其他項目的軟件測試策劃活動中,可以從資源池中的技術儲備選取用于支撐整個項目測試的技術。
以下對我在xxxx年所做的工作進行全面總結:
1、團隊管理
我的團隊,以現在的表現和對我的關懷與安慰而讓我感動。
測試人員是一個比較特殊的群體,以發現缺陷和保障質量為根本目標。這就要求我們在公司并不規范的項目管理與工作流程背景下,測試既要服從于現狀、又不能安于現狀。自xxxx年x月被正式提升為測試團隊負責人之后,我將絕大部分時間和精力傾注在團隊建設上,主要體現為團隊成員的技術提升與培養、部門制度建設和文檔標準建設、測試與開發的工作交互流程等。
在團隊管理上逐漸嘗試,本著先理后管的原則,將原本人心渙散的團隊建設為一支相互關心、相互幫助的高凝聚力團隊。坦白的講,因為自身管理經驗的欠缺,這個摸索過程中我走了許多彎路,但結果卻使我受益良多。是我的團隊教會了我這些,讓我初步懂得了什么是管理,讓我明白管的是理而并非是人。如果事情難以理通,那么在此之上的管只能是強制的,僅僅在表象上完成事情而已。所以一定要先理清楚然后再管,這時其實已經不需要管了,因為已經理順,大家都會去積極主動的執行。有理的同時,還要幫助整個團隊去整理,給予團隊每位成員必要的工作幫助,比如工作思路和工作資源。除此之外,還包括適當的日常溝通和思想引導,通過績效考核、部門例會、部門培訓、單人交談和部門聚會等形式,在工作時間和非工作時間進行交流,實現了團隊成員之間的相互信任和相互認可。
在這個過程中,我的性格優勢得以充分體現,我能夠在第一時間發覺團隊成員的狀態異常,并通過及時的交談予以解決,同時也體現出了我的性格劣勢。記得在一次例會結束后,我要求每位團隊成員寫出5條關于我的意見和建議,結果讓我非常欣慰,這說明團隊成員對我的信任,也期望我有所成長。我也會以此為戒,逐漸改進。
2、團隊工作
對工作模式進行改進,在團隊工作的執行模式上完全改變了之前測試人員歸屬項目組的不規范情況。統一測試管理平臺增強了測試人員的溝通頻度,促進了大家的相互交流和相互幫助,并使得測試工作可以根據實際情況執行交互性測試。
綜合xxxx年的測試結果,我至少為整個團隊的表現打90分,可以說這一年的工作結果是令人滿意的,當然主要是指經歷了八月調整之后的測試團隊。最讓人難忘的是xxxx年的八月、九月和十月期間,測試團隊剛剛經歷了八月末的人員調整,以3舊1新的4人陣容承擔了原來7人的工作量,并在高強度的工作壓力下順利的度過了團隊調整期。面對這一充滿壓力的過程,我想,只有兔子在哪里的故事是讓大家難以忘記的。
如今的測試團隊有著完備的內部機制和運作方式,我們已經做好了相應準備,隨時應對公司發展所必須的各種調整。
3、個人工作
xxxx年xx月初,我已向郭總提交一份xxxx年xx月x日到xxxx年3月的工作總結,其中所描述的工作內容均為當時參與的arpt項目的工作進展情況。自xxxx年x月開始,我與項目組全體成員參與了arpt奧運項目的投標文件編寫工作,這也是我第一次參與標書編寫,但從自身來講,我已經傾盡全部所能。
在標書編寫結束后,除繼續負責arpt軟件的測試外,逐漸將工作重心向團隊建設偏移。在合理分配工作任務的前提下,適當從事部分模塊的測試工作。關于團隊管理內容,之前已經有所介紹,在此不再贅述。
4.、總結
年終結束,我的人生觀和價值觀也隨著時間的推移而逐步發生改變,更加清晰的了解了自身優勢與不足,包括職業發展過程中的一些必要能力,我也會在此經驗的基礎上漸漸的總結和調整。
測試管理人員:我與企業共成長
校園回憶如一夢,遇見你仿佛很久。測試工作在中采購和網絡建設中發揮重要作用,2018年5月,我有幸加入測試中心這個大家庭。測試中心,顧名思義承擔著絕大部分測試工作,尤其是采購和網絡建設項目測試,測試工作在網絡建設中發揮重要作用,為現網運營及質量提升提供技術保障。測試中心通過多年的測試經驗積累,持續建設測試管理體系并逐步推廣到全院。2016年歸口全院測試質量管理,建立獨立測試質量監督團隊,測試工作管理辦法進一步規范測試工作,明確了十三項管理措施,通過三項創新管理方式,做到行為有依據、監督有抓手、提升有建議。
紙上得來終覺淺,絕知此事要躬行。作為研究院測試管理團隊的一員,入職伊始我就參與了《管理辦法》第二次修訂工作,小小的一本《管理辦法》,卻是研究院的重大制度,我的工作也圍繞它展開了。難以忘記萍慧姐親自為我細細解讀難懂的業務用語,難以忘記秦倩帶我去測試現場查看測試項目及文檔檢查,難以忘記新妍與我共同梳理百條測試澄清信息、整理歸檔測試文件,短短幾個月仿佛經歷了很多,讓我對于測試管理工作越來越熟悉,也逐漸體會到測試管理的要旨是為了讓測試工作越來越好,流程質量有保證,工作效率才能真正得到提升,意義非凡。
欲窮千里目,更上一層樓。測試管理發現問題要有處理機制,通過不斷的理論研究和實踐經驗,我們建立“建章立制-有效監督-數據挖掘-階梯上升”四步走的測試澄清閉環模型,深入測試澄清全生命周期,覆蓋率100%。測試管理不能只執行不總結,通過深入分析2017年以來全部121個測試澄清,總結歸納提升建議40余條,規范測試執行,加強測試管理,并通過事后改進,事先預警機制針對性解決項目存在問題,部分測試澄清問題復現率下降70%,測試項目質量大大提升,測試領域也從有投訴到無投訴,測試人員從被動響應到主動實施,得到專業部所領導、研究院院領導和集團采購共享中心等需求部門的一致認可。測試管理也要配合公司IT進程戰略,實現自動化,通過不斷總結修改需求、設計流程,我們的測試管理系統終于初建模型,即將上線了,相信它一定可以發揮不凡的作用。測試管理不能只懂管理更要懂得技術,新一年的工作計劃中,我為自己制定了技術學習路線,感謝移動研究院這個很好的平臺,讓我可以學習和接觸到很多通信領域的知識,深入測試現場,切身體會測試工程師日常工作,才能更好地做好測試管理,而不是讓管理飄在云端。
愛她的人與好風光。我司除了完善的技術平臺更有豐富的文娛活動。精彩的新員工培訓讓我感受到欣欣向榮、朝氣勃發的企業文化;測試中心黨支活動,讓我很快融入,感受到大家庭的溫暖;研究院工會數不清的文藝課程,全方面關照員工訴求,水彩課上我有了人生總第一幅藝術作品。感謝我的組織,我與企業共成長!
關鍵詞:CMM;軟件開發;軟件測試
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2007)17-31397-02
Based on CMM Software Development and Testing
YANG Guang
(Northeastern University College of Software,Shenyang 110004,China)
Abstract:Demand for software development, including design, programming and testing, and software quality assurance testing software is the key steps have been more and more people's attention. Currently, the CMM (Capability Maturity Model, Capability Maturity Model) has become the world's most popular, most practical kind of software production process standards, received international recognition software industry has become in today's enterprise-scale software as an indispensable. In software development and testing process, the characteristics of the enterprise itself, using the CMM software development management processes, to improve software development quality and efficiency.
Key words:CMM;software development;software testing
1 引言
軟件開發包括需求、設計、編程和測試,而軟件測試是軟件質量保證的關鍵步驟,已經得到人們越來越多的重視。目前,CMM (Capability Maturity Model,能力成熟度模型)已經成為國際上最流行、最實用的一種軟件生產過程標準,得到了國際軟件產業界的認可,成為當今企業從事規模軟件生產不可缺少的一項內容。2000年,國務院的《鼓勵軟件產業和集成電路產業發展的若干政策》中第17條中表示,將對軟件出口型企業CMM認證費用予以適當支持。如今,國內企業也越來越重視基于CMM的軟件開發和測試。
2 CMM簡介
20 世紀 80 年代中期,國際軟件產業界對軟件過程的研究十分重視,因為在采用軟件工程方法克服軟件危機的過程中,人們已認識到,軟件過程是否完善是軟件風險大小的決定因素。1986 年 11 月,美國卡內基梅隆大學的軟件工程研究所( Software Engineering Institute , SEI )應美國聯邦政府的要求,針對美國國防部對軟件承包商的能力評價問題,研究 “ 過程成熟度框架 ”。1987 年 9 月, SEI 開發了一套軟件能力成熟度框架和軟件成熟度問卷,用來評估軟件供應商的能力。1991 年, SEI 自己總結了成熟度框架和初版成熟度問卷的實踐經驗,并以此為基礎推出了 “軟件能力成熟度模型( Capability Maturity Model For Software , CMM ) 1.0 版 ”。1993 年, SEI 在廣泛聽取美國政府和各界軟件專家的意見后,推出了目前世界上比較流行的通用的 CMM1.1 版。
CMM是一個用來描述軟件組織的模型,用于評價軟件承包能力并幫助其改善軟件質量的方法。CMM是評估軟件能力與成熟度的一套標準,它側重于軟件開發過程的管理和工程能力的提高與評估。CMM表現了軟件組織能力成熟度的特稱,確切的說,CMM是在軟件流程上的能力成熟度。 CMM將軟件組織抽象為能力成熟度模型。能力成熟度是軟件組織解決“按時,按計劃,高質量”這一問題的關鍵因素,而CMM的目的,就是要幫助軟件組織在進度和預算范圍之內生產出高質量的軟件產品。
CMM標準共分五個等級(5級為最高級別),是一個動態的過程,企業可根據不同級別的要求,循序漸進,不斷改進。從第一級到第五級分別為:初始級、可重復級、定義級、管理級和優化級,從低到高,軟件開發生產的計劃精度越來越高,每單位工程的生產周期越來越短,每單位工程的成本也越來越低。
3 基于CMM的軟件開發與測試
CMM是一種管理方法,是一個軟件過程改進框架,這個框架與軟件生命周期無關,也與采用的技術無關。CMM目前代表著軟件發展的一種思路,一種提高軟件過程能力的途徑。盡管它存在著某些不足。例如,成熟級別、關鍵過程域、公共屬性和關鍵實踐還需要在軟件行業進一步深入地討論和修訂,但它確實為軟件行業的發展提供了一個良好的框架,而且是濃度軟件過程能力提高的有用工具。增強我國軟件企業的競爭力,提高國產軟件的水平是國人的共同愿望,但目前我國軟件水平,尤其是軟件開發能力和軟件生產能力還很差。那么,如何提高我國軟件的開發和生產能力,從而提高軟件整體水平?軟件企業實施基于CMM的軟件開發與測試也許不失為一條有效的途徑。
按照CMM要求將開發分為九個階段:項目規劃、小組啟動、需求分析、概要設計、詳細設計、編碼調試、系統集成與測試、驗收、項目關閉。其中軟件的測試是軟件開發過程的重要組成部分,是用來確認一個程序的品質或性能是否符合開發之前所提出的一些要求。軟件測試就是在軟件投入運行前,對軟件需求分析、設計規格說明和編碼的最終復審。
下面從各個階段主要項目活動、階段交付文檔和評審點出發,詳細描述項目開發的各個階段。
(1)項目規劃
項目規劃要對所要解決的問題進行總體定義,包括了解用戶的要求及現實環境。計劃階段要從技術、經濟和社會等3個方面研究并論證本軟件項目的可行性,編寫可行性研究報告,探討解決問題的方案,并對可供使用的資源(如計算機硬件、系統軟件、人力等)成本,可取得的效益和開發進度做出估計,以制訂完成開發任務的實施計劃。另外,項目的相關人員提出創新性的想法,并對自己的想法進行可行性分析,研究新想法的問題范圍,探索這個問題是否值得去解決,是否有大概的解決辦法,并對需要的資源進行估計。
本階段的交付文檔是立項說明書,立項說明書必須提交工程委員會進行評審。如果評審不通過,項目就此結束。
(2)小組啟動
在項目立項評審后,根據先前的資源估計成立項目開發小組,確立開發小組中各個角色的成員,然后對項目開發需要的軟件和硬件資源進行分配,并搭建好項目開發環境。結合項目最后的期限要求以及分析CMM 歷史度量庫,確立項目開發的一級計劃,確定以下各個開發階段的評審點。本階段的交付文檔主要有項目計劃書和小組啟動說明書。項目計劃書必須經過工程委員會的評審,如果評審通不過,必須參考CMM的歷史度量庫來修改項目計劃直至通過評審。
(3)需求分析
需求分析是一個對用戶的需求進行去粗取精、去偽存真、正確理解,然后把需求用軟件工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程。分析階段的基本任務是和用戶一起確定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明書文檔并最終得到用戶的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。
基于CMM的需求分析階段更注重項目的管理流程。首先項目組要確立在該階段的二級計劃,然后開始需求分析,明確需要開發系統必須具備的功能。并要主動與用戶交流,獲取需求并分析需求。制定相應的系統測試計劃,在這以后的每個階段項目組長都必須提交階段工作報告。
CMM的需求分析階段主要交付的文檔有更新后的項目計劃書、需求跟蹤矩陣、需求分析說明書、系統測試計劃書、項目詞匯表和階段工作報告。需求分析說明書必須提交給工程委員會評審,只有在評審通過后,才能進入下一個開發階段。
(4)概要設計
一般軟件設計可以分為概要設計和詳細設計兩個階段。實際上軟件設計的主要任務就是將軟件分解成模塊。概要設計就是結構設計,其主要目標就是給出軟件的模塊結構,用軟件結構圖表示。
基于CMM的概要設計階段不但要為系統描述系統流程圖、構建系統的可能方案、確立的系統總體方案和進行模塊劃分及設計。而且還有進行一些系統的集成測試計劃和設計評審等工作。該階段主要的交付文檔為更新的項目計劃書、更新的需求跟蹤矩陣、編程規范、概要設計說明書(包含總體方案)、集成測試計劃書、意見反饋單、階段工作報告。各個模塊的概要設計說明書和總體方案必須經過評審。
(5)詳細設計
詳細設計階段是對概要設計的結果的細化,概要設計已經達到函數級的分解,詳細設計是對分解的函數進行實現的描述。一般詳細設計的首先要設計模塊的程序流程、算法和數據結構,其次,要設計數據庫,常用方法還是結構化程序設計方法。
基于CMM的詳細設計階段必須依次補充完善需求跟蹤矩陣,并確立單元測試計劃和進行評審。該階段的交付文檔為更新的項目計劃書、更新的需求跟蹤矩陣、詳細設計說明書、單元測試計劃書、意見反饋單和階段工作報告。各個模塊的詳細設計必須經過評審。
(6)編碼調試
軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的"源程序清單"。充分了解軟件開發語言、工具的特性和編程風格,有助于開發工具的選擇以及保證軟件產品的開發質量。當前軟件開發中除在專用場合,已經很少使用二十世紀80年代的高級語言了,取而代之的是面向對象的開發語言。而且面向對象的開發語言和開發環境大都合為一體,因此大大提高了開發的速度。
基于CMM的編碼調試階段的任務包括:①項目組制定出在本階段的二級計劃;②學習確認編程規范,再開始編碼,同時必須進行同行檢查和走讀檢視;③進行單元測試。一般認為單元測試應緊接在編碼之后,當源程序編制完成并通過復審和編譯檢查,便可開始單元測試。測試用例的設計應與復審工作相結合,根據設計信息選取測試數據,將增大發現上述各類錯誤的可能性。在確定測試用例的同時,應給出期望結果。該階段的交付文檔為更新的項目計劃書、更新的需求跟蹤矩陣、代碼、單元測試報告、意見反饋單和問題跟蹤單。所有代碼必須經過工程委員會的評審,以確認是否符合編程規范要求。
(7)系統集成和測試
軟件測試的目的是以較小的代價發現盡可能多的錯誤。要實現這個目標的關鍵在于設計一套出色的測試用例(測試數據和預期的輸出結果組成了測試用例)。如何才能設計出一套出色的測試用例,關鍵在于理解測試方法。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白盒法和黑盒法。
一般測試分為:單元測試、集成測試和系統測試。單元測試階段通常是屬于開發項目組編碼調試的范疇。單元測試階段后要將系統集成成一個可運行版本。此后,就進入系統集成和測試階段,系統測試應該由若干個不同測試組成,目的是充分運行系統,驗證系統各部件是否都能政黨工作并完成所賦予的任務。該階段主要的交付文檔為集成測試報告和系統測試報告、問題跟蹤單和階段工作報告。在測試階段完成后,必須經過內部驗收的評審才可以提交進入正式的驗收階段。
(8)驗收
在驗收階段,項目組主要是配合客戶進行驗收。首先準備好用戶手冊以及相關文檔,并提交系統驗收檢查單,協助客戶進行驗收測試。本階段的交付文檔為驗收報告,客戶簽署的驗收報告也就是對本階段的評審。
(9)項目關閉
本開發過程最后強調的是項目關閉階段,這個階段是對項目開發的總結。針對CMM 中關鍵過程域的實施執行情況,各個角色必須提交相應的角色總結報告。在項目組長匯總后,總結項目開發中的不足和經驗,提交過程改進意見和CMM度量庫。這個過程有助于項目開發組織改進自己的軟件開發過程。
4 總結
CMM 是國際公認的 “ 事實 ” 標準,是中國軟件業走向國際市場的通行證。CMM的目的是幫助軟件企業對軟件工程過程進行管理和改進,增強開發與改進能力,從而能按時地、不超預算地開發出高質量的軟件。因此在軟件的開發和測試的過程中,針對企業自身的特點,采用CMM軟件開發管理流程,能夠提高軟件開發的質量和效率。
參考文獻:
[1]何新責.軟件能力成熟度模型[M].北京:清華大學出版社,2000.
[2]劉莉,傅英亮,陶強.基于CMM的軟件開發和維護過程的研究[J].信息技術與信息化,2006,(05).
2009年2月25日至4月17日,禮平老師提出將學院大三的“軟件項目管理”和“軟件項目開發實踐”兩項課程相結合,讓學生完成一個網上書城系統。項目歷時52天,在兩位老師的悉心指導下,整個學院的同學組成20多個團隊,開始了開發歷程,在這個過程中,著重培養了學生獲取知識、共享知識、應用知識、總結知識和傳播知識的能力。
作為其中一個團隊的小組長,我深為自己所在的團隊“喜羊羊與灰太狼”感到自豪,它對于我以及我們組員的影響都是“前所未有”,并且是長遠的。說其前所未有,緣于這次開發就如大學前幾年的一次總結,幫助我們匯總學習方法,融會貫通所學知識;說其影響深遠,緣于其對我們后期課程乃至下一屆或下幾屆學弟學妹們的幫助。
“喜羊羊與灰太狼”是一個由5個女生、2個男生組成的團隊。這是一個奇怪而又強大的組合,這7個人沒有任何相關領域的開發經驗,沒有任何組隊共同開發的合作經驗。在團隊中,有的活潑可愛,有的深沉內斂,有的認真細致,有的想法獨特,當組合在一起之后,我們有過爭執,有過失望,但是最終我們卻提交了一份令人滿意的成果,包括7個完整版本的源代碼和32萬字的文檔,還有每一位成員在未來學習中取之不盡的開發經驗。
2 實際開發結果
2.1 產品
產品功能如圖1所示。
2.2工作量
編碼工作完成情況:
?C#代碼:9712行:
?數據庫代碼:299行;
?CSS代碼: 633行;
?存儲過程:1711行。
預計的生產效率:70行/人/日
程序的平均生產效率為:12355/7/14=126行/人/日
實際效率大于預計效率原因:
(1)開發團隊中有技術很好的成員,當遇到問題后,可以通過請教相互溝通,能夠很快地解決問題,不落下進度。
(2)開發人員自學能力好,通過第一、第二階段的開發,積累了一定的經驗,在后期三四階段的開發中將效率提高。
(3)所有成員都十分努力,同時團隊的管理機制很好,項目開發嚴格按照計劃進行,按時完成任務甚至超前完成,工作效率很高。
2.3 對生產效率的評價
經過統計,整個網站系統的代碼數量為:C#代碼9712行,數據庫代碼299行,CSS代碼633行,存儲過程1711行,此部分都是開發人員手動開發的代碼,總共為12355行。前期的開發時間為14天。那么程序的平均生產效率為12355/7/14=126行,人/日,這已經大大超出我們所預計的生產效率70行/A/日。雖然量增多了,但是質量依舊控制在計劃之內。
經過統計,所產生文檔字數大約為:75870字。所統計的文檔包括需求、概要設計、詳細設計、數據庫設計、開發計劃、測試計劃等項目所需文檔。那么文件的平均生產效率為:75870/1000/7/7/=1.5千字數/人/日,這明顯不足于我們所預期的2.5千字數/人/日。這是因為我們還有其他很多文檔并沒有統計進去,例如小組的溝通,小組每周的會議記錄,小組每周的總結,個人總結等。因此,如果包括所有的文檔,估計能有3千字數/人/日左右。
因此我們的生產效率是能達到我們預期的要求的。
3 開發歷程
從以上的開發成果看,這已經是一個完整的開發項目。這不同于課程的開發作業,也不同于科技創新項目,課程初期,禮平老師接受同學們的建議,結合同一學期著重技術講解“軟件開發實踐”課程,提出共同完成同一個項目的觀點,兩門課程從不同的角度,即技術講解和項目管理指導兩個方面指導項目開發。這樣大大減少了課程內容的重復和沖突,集中了同學的時間和精力,讓我們更加具體細致地完成一個項目。
3.1 相關課程的結合,集中學生經歷
隨著學校對于學生動手能力的要求提高,每一門專業課程基本都要求學生開發一個小型項目以增加對于專業知識的了解。然而過多的課程導致了較大的項目壓力,最后學院的同學們都不堪重負。實際上,學生一直在忙于完成各種不同的項目,并沒有達到實際的學習效果。
因此,當我們對禮平老師的教育理念還沒有理解時,我們只是覺得能夠將有關的課程相結合,是多么令人開心的事情。
“軟件項目開發實踐”課程老師由淺入深地對我們所遇到的技術問題進行指導:“軟件項目管理”課程隨著軟件生命周期的進行講述不同階段應該要采用的軟件工程項目管理方法。
然而,這不只是兩門課程的結合。在后期的軟件測試課程中,我們再次將自己完成的系統作為測試對象,對其中重要的功能點采用一套完整的測試方案,對其進行測試評估。因為被測系統是由自己開發,在測試過程中,我們可以很順利地對缺陷進行修復。
3.2 軟件產品的開發生命周期同課程的結合
以軟件開發周期作為課程的大環境,兩位老師由淺入深,從需求分析開始,到設計、實現、測試和維護,一步一步帶領我們進行開發。
這像是對所有課程的總結,其中包括編程的基礎課程、Web開發的相關技術、軟件工程的相關課程、項目管理。在這樣一個短暫的不到兩個月的時間內,我們實現了基礎課程中的理論知識,我們重現各類開發和設計模型。在需求分析中,我們采用“面向對象”課程中的需求分析方法,力求通過標準的需求建模方法,明確系統功能和性能要求:在設計和開發過程中,我們采用迭代的開發方法,運用所學的Web開發課程和C#編程的內容;在測試階段,我們采用軟件測試課程中學到的測試策略,對每一個階段的測試,運用有關的測試工具開展測試過程。
現在課程結束已經快一年了,但在后期的像“軟件開發實習”這樣的課程中,我們卻總是不自覺地會將這次開發的經驗作為我們開發的依據。通過這樣一次完整的項目開發過程,我們了解了整個產品的開發周期,明確每個階段應該完成的任務,熟悉各個階段所可能遇到的問題以及應該采用的方法,甚至對于風險的估計都更加準確了。
3.3 老師的指導,我們前行的指明燈
摒棄了傳統的教授方式,在禮平老師的教育理念指導下,我們開始走上講臺講述自己所遇到的問題、采用的解決方法,老師讓我們開展討論,讓我們團隊內部或者不同團隊之間共同交流來尋求解決方案。另一位“軟件工程實踐”課程教師,他采用問題驅動的教學方式,對我們不同開發階段遇到的技術問題進行匯總統一,提供出可選的技術解決方案,不同的團隊可以依據自己項目的特點采用合適的解決方案,并通過自學的方式了解該解決方案的技術細節,從而順利解決問題。同時我們也了解到了相關其他解決方案適用的情景,讓我們在今后的開發中“有法可依”。
在這場互動式的教學中,老師并沒有因為學生的主動而減輕了工作壓力,他們需要及時調整我們到合適的方向上,這得益于老師自身豐富的開發經驗。禮平老師會在我們停滯不前的時候,建議我們應該先完 成一個靜態Demo來幫助了解需求:在我們對項目計劃感覺茫然的時候,他會拿出自己多年的開發經驗告訴我們,應該如何在計劃和開發上平衡時間;當我們對自身網站的特色定位不清楚的時候,他會讓我們注重細節的完善而不是新穎的功能,讓我們最終以一個穩定而完整的系統獲勝。當初的我們甚至以為一個項目開發就是一次集體編寫代碼,然而老師卻教會我們需要確定需求,將設計工作做得完整,實際的開發時間只需要兩個星期,事實確實是如此,在嚴格的項目進度控制中,組員在兩周之內竟然基本完成了系統功能。
就是這樣,起初懵懂的我們對“項目”的過程完全不知所措,而現在,任何項目到我們手中,無論其采用的技術如何,無論其要求時間是多久,我們總能得心應手地為其制定開發計劃并開展工作來實現它。這些知識在別人看來就像是與生俱來的,然而只有我們知道,正是通過了這樣一次完整的開發過程,讓軟件工程領域的知識成為我們自己的“天賦”,隨手拿來,即人們常說的“經驗”。
在這個成長的過程中,老師并沒有說,如果遇到了這樣的問題,有多少偉大的人發明了多少模型我們可以采用,這種模型的構建過程是這樣,那種模型的適用情況又是如何。若老師僅是這樣用生硬的文字告訴我們,用我們做20年學生的經驗來看,不出一個月這些知識就會模糊,不出半年這些知識又會變成新的知識。而在這一次的開發過程中,老師卻像路標,告訴我們正確的方向,或者可能的路線,而其中探索的過程卻是由我們來實現,前進的道路由我們自己來選擇。我們變得習慣于獨立思考,我們變得善于表達,我們開始熟悉這條成功之道。
3.4 綜合性學習經驗,我們最終的目標
獲取知識(自學)、共享知識(團隊工作)、應用知識(解決問題)、總結知識(創新)和傳播知識(溝通)的能力,這是CDIO要求學生在基于項目的學習過程中需要得到的綜合能力。
我們從不糾結于某一個技術問題,從不局限使用某一種開發模型,項目的內容也不限定,通過一次完整的項目開發過程,著眼于學生綜合能力的提高,培養學生成為能夠與國際接軌的高等工程師。
禮平老師強調我們要不斷總結,并把這個過程運用到其他地方,不僅是軟件產品的開發,從確定需求、制定計劃、設計和實現的過程來看,我們可以將各種模型甚至運用到制定個人規劃,還有那些需要考研的同學的考研計劃中。在項目完成后,老師欣喜地翻閱每一位同學的心得體會。作為小組長我也看過組內每一位成員的總結,每個人的教訓和經驗都不盡相同,也許這就是我們學習的目的,每個人都能有所收獲,從不同的角度,不同的領域培養不同的能力,收獲不同的知識。
3.5課程考核,不僅僅是分數
與往常的課程考試不同,我們采用的考核方式是多樣的,包括平時的討論、組內的互評,答辯的結果和最終的產品質量。
平時討論作為考核的內容之一,增加了平時課堂討論的參與度,使得同學們更加積極地投入到課堂交流,為每一次的成果匯報作好充分的準備,積極主動地思考解決方案。
組內互評是我們的一大特色,我們采用禮平老師號稱的“雷達圖”來評定每一位成員在開發過程中的表現。這種評定方法通過不同方面評定每個人的能力,讓每位成員能夠更加清楚地認識自己,并依據其在組內的貢獻作為評分依據,計算出組內互評的最終得分,“雷達圖”示意圖如圖2所示。
答辯是最后的考驗,我們為此做足了準備,甚至排練了多次。經過之前多次的中期檢查,我們慢慢學著如何更好地展示和表達我們的成就,讓老師和其他項目組在答辯的短暫十分鐘之內看到我們的努力和優秀的產品。終期答辯推動著我們不斷完善系統,因為考慮到老師要進行任何操作,提出各種疑問,所以我們從用戶的角度考慮一切有可能出現的操作,盡可能地保證系統的實用性、便捷性和穩定性,這樣大大提高了產品的質量。在后期的總結中,我們發現這樣的方式運用到實際的產品開發中也是如此的有效,因為時刻從客戶的角度考慮,是保證產品質量的重要因素。
正是這樣的考核方式,不僅讓我們學會如何有效表達、了解自己,更在一定程度上學會考慮如何成就一個成功的項目。
3.6 團隊合作,我們最寶貴的經驗
人際交往技能即團隊協作和交流,是CDIO工程教育模式所提倡的應該培養學生的技能。對我們來說,團隊培養的協作關系是我們寶貴的財富,團隊合作也成為我們最寶貴的經驗。
為了能夠順利完成每個階段的計劃,我們的小組成員常在一起整合到凌晨,為問題開會討論好幾個小時,我們會將設計制定的細致再細致,只為其他隊員能夠減少理解時間。當然,因為我們性格各異,所以也會對他人的行事風格不理解,也會出現推脫責任的時候,也有不能達成一致意見而發生爭執的時候。可是因為大家有共同的目標,抱著對項目負責的態度,我們逐漸建立起默契,漸漸開始為對方考慮。每個小組成員都很細致地對待自己負責開發的模塊,盡量減少出現缺陷,避免其他功能的開發遭到停滯或者增加整合人員的工作量。
很多人都知道,團隊合作會保證項目的順利進行,減少項目風險,構建一種良好的團隊氛圍,而對于我們來說,團隊合作更讓我們關注自己的工作,在很大程度上保證了產品開發的質量。通過團隊開發的方式,讓我們在開發過程發現協作的意義,更讓我們收獲了友誼。
4 CDIO之我見
禮平老師的課堂帶給我們收獲和成果,作為軟件學院的學生,作為CDIO工程教育理念的受益者,我們有自己的理解和感受。
在有限的大學4年教育中,我們希望自己能夠承受一定的壓力并收獲有用的知識,能讓我們在未來的職業領域有所發展。同時我們了解,作為工科學生,工程實踐經驗尤為重要,而從小學到中學,理論為主的教學模式讓我們深感自己經驗不足,動手能力不強,對于實際的公司項目更是束手無策。成為社會肯定的具有良好綜合素質的畢業生,這是我們對自身的要求,也是我們對于學校教育的期望。
1軟件測試過程中的質量管理
軟件測試貫穿于軟件開發流程的各個角落,能夠讓工作人員及時在軟件工程階段中發現漏洞所在,確保最終交付的產品無論是功能還是性能,都能得到客戶對品質的需求,軟件測試需要在軟件開發各個階段進行,工作人員在進行軟件測試的時候需要作出相應的軟件測試文檔。軟件測試中質量管理尤為重要,產品需要滿足驗收交付要求,需要根據軟件開發實際情況,從不同的角度進行度量,軟件測試最主要的問題是軟件質量問題,在保證質量的基礎上從不同角度度量產品最終質量。有的人在軟件測試時可以意識到重要性,但是卻沒有辦法清晰地找到提升質量的有效方式,隨著軟件測試研究的深入,人們開始建立起軟件質量度量模型。通過對模型的分析,得知軟件質量從以下幾方面衡量:(1)開發出來的軟件是否符合用戶的需求,軟件整體結構是否良好,軟件是否容易讀取,修改是否容易;(2)軟件系統有沒有友好用戶界面,用戶在使用該軟件的時候是否方便,需不需要進行其他操作;(3)軟件生存周期內各個階段文檔是否齊全,存儲是否得當,所有文檔是否被規范配置管理,工作人員進行軟件測試需要根據客戶需求,以此作為參考,從對方的角度去看待產品,想象客戶會如何使用產品,使用的時候可能會遇到什么問題。軟件測試質量管理方面還需要進行軟件質量保證,分階段的對開發的軟件進行科學評審,根據評審結果制定相應計劃,將軟件分成幾個階段,根據不同階段呈現出來的特點制定評審要求。隨后,工作人員在審查軟件開發過程時,需要為每一個過程制定規范,不管是文檔還是編程都要達到相應的規范需求,要求軟件測試人員做好質量評估報告,內容豐富詳細,評估軟件測試的整個過程,對存在不足的地方提出有效改進建議。某測試工作人員在進行軟件測試的時候,為了確保質量管理工作到位,特別完成了軟件測試環境的科學搭建,由于不同的軟件對測試環境有著不同角度的需求,如C/S及B/S架構相關的軟件產品,測試人員會有不同操作系統,如Windows系列、Unix、Iinux甚至蘋果OS等,這些測試環境都是必須的。對于一些嵌入式軟件,如手機軟件,如果測試人員想測試一下有關功能模塊的耗電情況,手機待機時間等,可能需要搭建相應的電流測試環境。
2軟件測試過程中的風險應對分析
2.1風險識別與風險量化
對軟件進行項目風險管理,可以在最短時間內得到項目目標,項目風險管理以潛在風險最小化作為目標,軟件測試項目風險管理中包含軟件風險識別、軟件風險量化、軟件風險應對計劃制定以及軟件風險控制。其中,軟件風險識別需要工作人員在軟件測試項目風險管理開始之前進行,并在整個項目執行中不斷完成,軟件風險識別在項目整個生命周期以內屬于連續過程。軟件風險識別包含了風險來源確定、風險產生條件辨別,測試人員要詳細表述風險特征,確定這些風險是否會影響到軟件測試項目的正常運行,對于軟件測試項目風險管理來說,風險識別不是一次就能完成的,而是應該在項目的全過程進行。
2.2風險應對計劃與風險監控
針對風險量化結果,為了降低軟件測試項目的負面效應,測試人員會制定相應的解決措施和技術手段,做好風險管理計劃,完成風險認知,為風險監控提供技術基礎。人們可以使用多種方式作為風險控制方法,利用核對表對項目進行定期評估與凈值分析,風險監控的輸出包含對風險的錯誤糾正和軟件測試項目管理計劃更新,軟件測試項目中發現風險以后對其加以分析,確定相對重要性與影響程度,為來自內部與外部的風險提供標識,對每一種風險進行科學評估,計算出風險發生的可能性與最終結果,對風險進行分類,為風險處理提供可操作信息。在經典風險管理過程中,主要會使用到Boehm、CRM、Leavitt、Boehm等多種模型,使用這種方式很有可能造成人員不足或者成本不夠的問題,測試人員在開始進行軟件項目開發的時候就要對潛在風險進行總結,將所有的風險形成表格形式,并在軟件測試項目生命周期內進行會議討論,更新表格。應當對可能出現的惡劣后果因素進行準確評估,對于當前最緊急的風險進行決定和處理,制定控制風險的基本應對措施,評測和保證風險策略開展的有效性。
3總結
總而言之,人們從第三方軟件測試角度進行軟件測試時,不僅要進行完善的質量管理,還會進行項目風險管理,對風險進行評估與排序,確定不同風險給軟件帶來的影響,探究風險發生概率,進一步保證軟件的質量,降低產品維護費用,提高用戶滿意程度,降低軟件責任風險,提高經濟效益。
參考文獻
[1]徐莉.基于項目管理角度的軟件測試流程及管理[J].網絡安全技術與應用,2018(03):38-39.
關鍵字:軟件;測試過程;管理
軟件開發過程的質量決定軟件的質量,軟件測試過程的質量直接影響測試結果的準確性和有效性。
1 軟件測試過程常用的模型
1、V模型
V模型反映出測試活動與分析設計活動的關系,指出單元測試和集成測試應檢測程序的執行是否滿足軟件設計的要求。系統測試應檢測系統功能、性能的質量特性是否達到系統要求的指標。驗收測試確定軟件的實現是否滿足用戶需求或合同的要求。
2、W模型
W模型指出軟件各開發階段中應同步進行的驗證和確認活動,即測試與開發也應是同步進行的。W模型有利于盡早和全面的發現問題。
3、H模型
V模型與W模型有不妥,即它們都把軟件的開發視為需求、設計和編碼等一系列串行的活動,而事實上,這些活動可以交叉進行的。H模型揭示這一點:軟件測試是一個獨立的流程,貫穿于產品的整個生命周期中,與其他流程并發進行。
除了上面的幾種常見模型外,還有X模型、前置測試模型等。在實踐中,建議以W模型作為框架,及早全面地開展測試,同時靈活運用H模型獨立測試的思想,在達到恰當的就緒點時就應該開展獨立的測試工作,同時將測試工作進行迭代,最終保證完成測試目標。
2 測試階段中的測試活動
軟件測試過程主要包括以下四項基本活動:
1、測試策劃
在測試策劃中的活動有:制定測試計劃,以確定測試范圍、測試策略和測試方法,規劃測試任務日程表,對測試資源進行安排,并提前評估測試風險,制定風險控制策略。
2、測試設計與實現
在測試設計與實現中的活動有:制定測試的技術方案,選擇測試工具,并根據測試技術方案設計測試用例。
3、測試執行
在測試執行中的活動有:建立相關測試環境、配置測試數據、按日程安排執行測試用例并記錄測試執行結果,對發現的軟件缺陷進行報告,并配合開發人員進行軟件缺陷的分析、處理和追蹤。
4、測試總結
在測試總結中的活動有:對測試結果進行綜合分析,以確定軟件產品質量的當前狀態,為產品的改進和提供數據和依據,同時編制測試報告,提交相關的測試文檔。
3 軟件測試過程管理的特點
軟件測試過程管理的基本內容包括計劃、組織和監控;測試過程中存在的問題有:
1.軟件質量標準定義不準確、任務邊界模糊。
2.軟件測試項目的變化控制和預警分析要求高。
3.軟件測試項目具有智力密集,勞動密集的特點,受人力資源的影響最大。
4.測試任務的分配比較困難。
5.測試要求的人力資源十分穩定。
6.軟件測試人員在待遇、地位上可能會受到一些不公平的待遇。
軟件測試項目的過程管理能否成功,通常受到三方面的影響:項目組內的環境,項目所處的組織環境,整個開發流程所控制的全局環境。
4 軟件測試過程管理的原則
1、有關測試需求,應當有一個經各方同意的、完整的、清楚的、詳細的、整體的、可實現的和可測試性的需求并文檔化,盡可能堅持最初的需求。
2、測試計劃先行。軟件項目管理過程從項目的計劃活動開始,軟件測試項目也不例外,也是從測試計劃開始。
3、建立任務優先級。在測試任務較多的情況下,應該為各項任務建立測試優先級,這樣也可以根據優先級來先后處理各項任務。
4、建立客觀的評估標準。這樣使得整個項目過程具有良好的可測性和可跟蹤性,強調以數據說話。
5、盡早測試。這是從W模型中抽象出來的理念。一方面指測試人員盡早參與測試項目,另一方面指盡早開展測試執行任務。
6、全面測試。這也是W模型的重要思想,其含義一方面只要對軟件所有產品進行全面的測試;另一方面指軟件開發人員與測試人員全面參與到測試工作中。
7、全過程測試。這是從W模型中抽象出來的另一理念。其含義一方面指測試人員要充分關注開發過程;另一方面指測試人員要對測試的全過程進行全程的跟蹤。
8、獨立的、迭代的測試。這是H模型的重要思想,強調只要達到測試就緒點,即測試條件成熟,測試準備活動完成,測試執行活動就可以開展。
5 軟件測試過程的人員組織
測試團隊的組織直接關系到測試團隊的工作效率和生產力,其組織方式由測試團隊的規模、具體任務和技術來決定。
一個測試團隊的基本角色有:測試經理、實驗室管理人員、內審員、測試組長、測試設計人員、資深測試工程師、一般測試工程師。
若測試團隊規模較大,則測試工程師分為三個層次:初級測試工程師、測試工程師和資深測試工程師,同時設置自動化測試工程師、系統測試工程師和架構工程師。
測試過程人員組織的一個方面是考慮測試團隊的規模,測試團隊的規模可以考慮在整個開發部門所占的比重,或相對開發人員所占的比例。從經驗看,不同的應用,軟件測試和軟件開發人員的比例也是不同的,大致可分為三類。
1、操作系統類型的產品,對測試要求最高,測試人員和開發人員的比例為2:1。
2、應用平臺、支持系統類型的產品,對測試要求比較高,通常測試人員和開發人員的比例為1:1。
3、對于特定應用系統一類產品,由于以后對象清楚、范圍小,甚至可對應用平臺或應用環境加以限制,所以測試人員可以再減少,但測試人員和開發人員的比例至少保證在1:2的水平以上。
6 結束語
相比之下,目前中國軟件企業在軟件測試方面與國際水準仍存在較大差距。首先,在認識上重開發、輕測試,沒有認識到軟件項目的如期完成不僅取決于開發人員,更取決于測試人員;其次,在管理上隨意、簡單,沒有建立有效、規范的軟件測試管理體系;另外,缺少自動化工具的支持,大多數企業在軟件測試時并沒有采用軟件測試管理系統。所以對國內軟件企業來說,不僅要提高對軟件測試過程管理的認識,同時要建立起完善的軟件測試過程管理體系,確保軟件測試管理在軟件質量保證中發揮應有的關鍵作用。
參考文獻
[1]朱少民. 軟件測試方法和技術 [M].北京:清華大學出版社, 2005年
[2]鄭文強,馬均長. 軟件測試管理[M].北京:電子工業出版社, 2010年
[3]布萊克(美).軟件測試過車管理[M].北京:機械工業出版社,2003年
0引言
如今,軟件產品被廣泛應用于各個領域,如航空、機械、電子產品等,軟件產品質量成為軟件開發中重點關注的方向。在一些對于安全性要求較高的領域,對軟件產品的質量要求更高。例如,在2011年溫州發生的7.23動車追尾事故,導致212人傷亡;1996年阿里亞娜5型火箭發射39秒后爆炸,直接經濟損失3.7億美元;2002年首都機場電腦系統出現故障,導致6000多人滯留機場等。軟件中存在的缺陷是造成這些嚴重后果的根源。因此,軟件測試的重要性不言而喻。
傳統的軟件開發流程越來越無法滿足當下軟件需求的頻繁變動,如傳統的瀑布模型,測試人員在一定的控制點之前不能測試,所以在此之前無法找到缺陷。等到所有開發完成,即過了該控制點后再進行測試,缺陷數量會急劇增加,同時任何缺陷的修復都需要對一連串代碼進行變動,修復時間難以確定,軟件遲遲不能,損失將難以估量。
敏捷軟件開發是基于一種更接近人類活動現實情況的方法論,采用以人為本、迭代、增量的開發過程,逐步滿足軟件不斷變更的需求[1]。敏捷主要提倡個人為團隊所作的貢獻,注重各個職位的權利下發,發揮個人的主觀能動性,保證隨時都有可供交付的軟件產品。敏捷開發更容易在項目早期控制缺陷數目。軟件測試是保證軟件質量與可靠性的重要手段,敏捷開發能充分發揮軟件測試的重要作用。
1敏捷開發思想
敏捷開發是以用戶的需求進化為核心,采用逐步迭代、循序漸進的方式進行軟件開發。在敏捷開發模式中,軟件項目在開發前,先將整體項目切分成多個子項目,迭代過程中根據需要可以對子項目進行拆分或同時進行多個子項目,每一個子項目都要經過測試,保證項目能運行成功。換言之,就是把一個大的軟件項目分成許多小項目,每個項目獨立完成,但相互之間又有聯系,在該過程中軟件始終處于可用狀態。
敏捷開發本身更多的是一種概念,它是一種循序漸進的迭代開發方式,強調團隊成員間的溝通。2001年,敏捷開發創始人了敏捷宣言:個體和交互勝過流程和工具,可用的軟件勝過完備的文檔,客戶協作勝過合同談判,響應變化勝過遵循計劃[2]。也即,雖然后半部分的條目也具有價值,但是更看重前半部分的條目。他們希望這將成為成功的軟件開發的基礎。敏捷開發的方法很多,主要包括快速應用開發(RAD)[3]、極限編程(XP)[4]、動態系統開發方法(DSDM)[5]與Scrum[6]。本文構建的測試模型借鑒敏捷開發過程中的迭代思想,以漸進的方式完成測試工作,不僅可使測試工作具有更好的靈活性,同時也能更好地適用于現有的敏捷開發過程。
軟件是一種非常特殊的產品,開發出的軟件通常會存在一些缺陷,而有些缺陷會造成非常嚴重的損失。軟件測試則成為保障軟件質量的一種重要手段[7]。根據不同標準有多種測試方式,如集成測試、單元測試、系統測試、驗收測試和回歸測試。傳統的V測試模型和W測試模型成為指導人們進行測試的方法,而不同于這兩種測試模型的H模型,則強調測試的獨立性。另外目前很多開發團隊已經開始使用敏捷開發方式,敏捷開發方式非常注重客戶的交互以及團隊中的溝通,同時開發過程中會有許多迭代過程。本文提出的測試模型借鑒敏捷開發中的迭代思想,測試流程是一個漸進的過程。然而,即使有成功的敏捷開發方法,開發人員和測試人員依然要尋求最適合的敏捷方法,并將相關技術融入到自己的敏捷方法中。
2敏捷開發中的軟件測試
2.1敏捷測試
敏捷測試沒有已經確定的唯一定義,原有的測試定義“通過在規定條件下對程序進行操作,發現錯誤,衡量軟件質量”仍然適用,核心思想可以理解為“遵循敏捷開發的宣言,接納敏捷核心價值觀,基于敏捷開發的軟件測試”。敏捷開發宣言中提到敏捷開發的4個核心價值觀:簡明(Simplicity)、溝通(Communication)、反饋(Feedback)、勇氣/決斷(Courage)。符合敏捷核心價值觀的測試實踐活動都可以稱為敏捷測試,敏捷不僅是一種過程,更多的是一種理念[8]。
2.2敏捷測試方法
圖1為敏捷開發測試流程,此流程是一個結合了Scrum和XP方法,并加上一些基于計劃性流程原則后的產物。虛線箭頭兩端是開發過程中與軟件測試相關的部分,敏捷開發的測試人員全程參與完整的迭代開發。
(1)需求分析:測試工程師可以根據測試經驗以及需求的測試難度對需求列表提出問題或意見,以期團隊能共同提供建議或方案,在之后的實際測試過程中有助于提高測試效率。
(2)迭代計劃:包括對需求的詳細分析以及任務表等,軟件工程師和測試工程師對需求進行討論。
(3)迭代啟動會議:項目經理、產品經理、軟件工程師、測試工程師對此代計劃進行討論、完善。
(4)測試計劃:測試工程師根據需求以及測試經驗完成詳細的測試計劃書,團隊對測試計劃進行研討并確認驗收測試。
(5)測試驅動開發:測試工程師相當于軟件的第一批用戶,測試過程中要重視反饋,這也是敏捷開發的原則之一。
(6)驗收測試:測試工程師對此次迭代的所有功能進行演示,測試產品功能是否合格。如果產品合格,則此次驗收通過,可以進入下一環;如果產品不合格,則此次驗收失敗,重新返回開發階段,找出失敗的原因及bug并解決,并確認下一次驗收測試。
(7)提交與驗證:由測試工程師為產品負責人與參與項目的人進行演示,包括此次迭代的主要功能、產生的未解決bug,然后由產品負責人核準迭代成功。
(8)迭代后的研討:對此次迭代過程中產生的問題進行討論,對于亮點可以進行表揚,錯誤要分析原因。
從流程圖和測試人員參與項目的簡單描述中,可以總結出敏捷測試的方法主要有兩種:與傳統軟件測試相似的測試和測試驅動開發(TDD,Test-DrivenDevelopment)。
圖2展示的是測試驅動開發流程,開發人員在編寫產品代碼之前,要先編寫單元測試代碼,在進行單元測試后才能進行產品代碼的編寫,以保證產品代碼能完全符合要求。產品代碼編寫完成后進行單元測試和集成測試,測試代碼和產品代碼都要進行代碼審查,保證代碼的簡潔、統一,方便以后維護。在敏捷測試中,測試驅動開發的重要目的不僅僅是測試軟件,同時在開發過程中幫助客戶和程序員確定需求。測試驅動開發應該運用于每一個迭代中,逐步開發完成所有軟件功能。
傳統軟件測試的種類非常多,在敏捷測試中應當根據當前迭代的需求進行測試[9]。某車削軟件有這樣一個需求,能支持直徑40mm的刀具路徑生成。該需求一定配備了相應的刀具路徑生成方法,然后只需確定刀路生成中的一些參數,然后設計數量足夠的不同表面形態的圓面即可。由于TestPart數量過多,可能會用到自動化測試,也有可能會用到一些特殊的TestPart,如圓面面型變化大,甚至不是圓面等。迭代最后一定有整體的性能測試,在整個項目進行過程中,傳統的軟件測試方法同樣適用于敏捷開發。
2.3敏捷測試特點
在瀑布開發模式中,要求流程規范、文檔齊全,測試進行時再根據軟件需求總結、測試所有功能點,直到軟件中沒有明顯bug。在傳統的軟件測試開始時,軟件的缺陷會達到頂點,同時如果有需求變化,則需要重新編寫文檔,可能必須將之前的工作推翻重來,費時費力。而在敏捷測試中,一切都發生了改變。
敏捷開發模式中測試不是一個單獨階段,它和編碼一樣是軟件開發的重要組成部分。敏捷開發使用一個“完整團隊”的方法來保證軟件產品質量。敏捷團隊中的測試人員從客戶需求中提煉要求,然后與開發團隊合作,把這些要求變成可執行的規范,用于指導代碼編寫。隨著測試和編碼的逐漸進行與交互,將建立一些產品特性,直到提供足夠的產品價值。
敏捷測試包括以下幾個主要特點:①周期性的迭代開發方式。不同于傳統測試的一次性集成或功能測試,敏捷測試在迭代進行過程中要通過及時響應客戶反饋來修正軟件測試策略,以此修正軟件的質量指標;②每日立會,密切溝通。傳統測試提供了大量文檔描述產品需求,并通過文檔進行測試。敏捷測試則需要團隊每天進行交流,測試人員與客戶持續溝通,以保證產品質量符合客戶預期,并與開發人員溝通來確定需求認識的統一;③測試方法多樣,貫穿整個項目開發過程。敏捷測試包括測試人員對軟件的自動化測試、集成測試、功能測試等,還包括開發人員對代碼的單元測試、代碼評審等工作,從最底層和基礎的測試來保證軟件整體質量;④確保客戶需求圓滿實現。客戶需求是敏捷開發中最核心的內容,敏捷測試同樣需圍繞客戶需求實現。
2.4敏捷測試優勢
目前大多數軟件項目的共同特點是用戶需求變化快、風險高,同時還能快速搶占市場,這剛好是敏捷開發能夠解決的。
(1)良好的持續溝通可減少缺陷產生,降低風險。在敏捷開發模式下,測試人員的溝通尤為重要。一個迭代從開始到結束,測試人員都需要參與。迭代開始時,所有人都要對該階段軟件的成型有統一認識,滿足用戶需求的同時還要符合一次迭代的時間要求;迭代進行中,測試對開發人員的反饋非常重要,軟件開發初期,測試工具十分缺乏,對測試工作的進行造成很大阻礙,這時需要和開發人員持續溝通,必要時可共同開發一些輔助測試工具,在此期間要把握好迭代進行的時間;迭代后期,也可以作為bug反饋期,測試人員不但要站在用戶角度考慮需求,同時能和開發人員站在技術角度討論問題,達到溝通的目的。
(2)合理的測試用例。敏捷最直接的特點就是快速,如果涉及的用例粒度太細,很難開展敏捷測試。一個合理的測試用例不僅能包含所有可能產生缺陷的地方,同時還能快速地響應需求變化。
(3)更多人參與測試。敏捷測試中的測試人員不再是一個獨立的測試個體,研發人員、產品負責人、用戶都可以參與測試。研發人員的測試可以減少編程中的bug,產品負責人的測試可以更好、更全面地把握產品現狀,用戶的測試則可以提供來自真正用戶的反饋,以更好地促進軟件開發。
3敏捷開發中的軟件測試實例
本章結合一個具體的軟件項目,詳細介紹項目中的敏捷測試。
3.1項目介紹
針對3軸超精密加工車床,提供針對光學自由曲面進行加工的刀路軌跡計算的CAM(ComputerAidedManufacturing,計算機輔助制造)軟件。該軟件的目標是比UGNX中的相同功能有更快的計算速度和更高的精度。
3.2需求分析和項目規劃階段
項目經理和產品經理根據客戶給定的需求進行分類,包括框架、加工方式、加工質量、刀具選擇、仿真等需求,并對項目可能產生的需求進行判斷和規劃,形成項目計劃書。項目計劃書包括項目背景、、需求以及預期完成時間。項目計劃書完成之后即可開始進行第一個迭代,并以第一個迭代為基礎不斷進行下去,直到完成所有需求。由于整體項目過于龐大,這里只對第一個迭代進行介紹。
項目實例:第一個迭代中有2個需求,同時根據工作量分配任務天數以及每個需求的參與人員,如表1所示。
3.3迭代進行階段
迭代開始時,項目經理制定迭代的具體開發任務和測試任務。在迭代啟動會議中,每個人都要對此次迭代任務有統一認識,并且能夠承載相應的任務量,在需求確定完畢后進行任務分配。
.
開發人員進行編碼時,測試人員的工作重點包括:編寫測試計劃、測試用例、驗收測試以及提交和驗證。測試計劃和測試用例的編寫同時完成,且在迭代初期完成。驗收測試一般是在迭代后期進行集成測試,迭代過程中也可以協助開發人員進行單獨的功能測試。
3.3.1編寫測試計劃和測試用例
測試計劃需要具體的操作步驟以及相對完善的測試用例來涵蓋需求,因此需要測試人員有比較豐富的測試經驗。
項目實例如下:
表2和表3中的TestParts需要填寫測試工件名稱。測試計劃編寫完成后要經過開發人員和項目經理確認,保證開發人員認同并能夠達到計劃的目標。敏捷開發是不斷迭代的過程,對于一些比較簡單的功能,盡量設計簡潔的測試用例。如果TestParts比較多,可以采用自動化測試,而對于一些比較復雜的功能,可以先采用手動測試,在功能更加完善后再考慮自動化測試。
3.3.2驗收測試
驗收測試要嚴格按照迭代前期寫好的測試計劃進行,在開發人員開發完此次迭代所有功能后,測試人員對所有功能進行集成測試、功能測試、自動化測試等,完成所有測試工作后形成測試報告。報告內容包括此次迭代基本功能完成情況、缺陷產生情況以及測試過程中的一些詳細數據。
3.3.3提交和驗證
團隊全體成員參加驗收會議,由測試工程師對迭代成果進行演示,產品經理和項目經理進行驗收,項目需求全部完成則此次迭代成功,然后再對此次迭代中的不足之處進行討論和改進,或者提出創新之處。如果項目需求未達標,或產生了過多缺陷,則此次迭代不予通過,全員討論延后驗收或將缺陷完善延后到下一個迭代。
項目實例:針對需求R1、R2的基本功能測試達到了計劃的標準,框架的視圖操作和顯示功能以及CAD模型輸入功能均正常運行且無缺陷。雖然框架本身存在一些缺陷,仍能滿足迭代的基本需求。經過討論此次迭代成功,產生的bug在下一個迭代進行完善。
3.4迭代后研討和下一次迭代討論
迭代完成后要對迭代過程進行回顧,測試人員需要對bug進行總結,包括測試過程中產生的問題,以及需要改進的地方,然后對下一次迭代的需求進行初步討論,決定下一個周期的工作內容。
4結語
敏捷開發中的軟件測試應當遵循敏捷開發的基本原則,面對不同的開發方法和應用環境,軟件測試方法也不同。敏捷測試作為從敏捷開發中成長起來的測試方法,與敏捷過程密不可分,本文對敏捷開發中的軟件測試特點和方法進行了詳細描述。然而,真正在面對軟件測試時,測試用例的生成與覆蓋標準、測試的充分性和有效性、不同階段的測試關系等,以及如何將傳統測試中的一些方法應用到敏捷測試中,需要探討的問題及方法仍然很多。