軟件測試過程中的測試配置管理與版本控制
隨著計算機軟件技術(shù)的發(fā)展,各種計算機軟件種類繁多,功能各異,加上計算機軟件規(guī)約的約束和發(fā)展,軟件的規(guī)范性變得更加重要。為了開發(fā)合格的軟件,在軟件開發(fā)過程中,離不開軟件測試。為了更好的完成軟件測試工作,在軟件測試過程中進(jìn)行配置管理和版本控制尤為重要。
本文首先介紹了軟件測試過程中的配置管理概念和版本控制概念,然后對軟件測試過程中的配置管理和版本控制做出了詳細(xì)分析,論述了配置管理的流程、方法意 義。接著介紹了版本控制的評價標(biāo)準(zhǔn),軟件測試過程中版本控制方法的應(yīng)用及幾種版本控制軟件,最后闡述了在軟件測試過程中的版本控制的作用,以及怎樣有效的 在軟件測試過程中進(jìn)行軟件測試版本控制。
關(guān)鍵詞:軟件測試;配置管理;版本控制;
1、軟件測試的基本概念
在現(xiàn)代社會,隨著計算機時代的到來,計算機的應(yīng)用已擴(kuò)大深入到社會生活的 方方面面,而隨著計算機技術(shù)和計算機軟件的不斷發(fā)展,軟件的規(guī)模日趨大型化和復(fù)雜化,致使軟件開發(fā)中的軟件測試工作變得越來越繁雜,工作量越來越大。為了 更好的對軟件測試進(jìn)行控制和管理,節(jié)約時間、人員、成本等,軟件測試中的配置管理和版本控制隨之產(chǎn)生。對軟件測試中的資源如何調(diào)配,人員如何配置管理和控 制成為我們更加關(guān)心的問題。
對此,為了理解軟件測試中的配置管理和版本控制,我們先了解軟件測試的概念和意義。當(dāng)我們清楚的認(rèn)識到為軟件測試的作用和意義,我們才能更加清楚的認(rèn)識到軟件測試過程中的配置管理和版本控制的重要性。
1.1 軟件測試的概念
軟件測試作為軟件開發(fā)過程中的重要組成部分,是用來確認(rèn)一個程序的品質(zhì)或者性能是否達(dá)到開發(fā)之前所提出的一些要求。換句話講,軟件測試就是為了發(fā)現(xiàn)程序中的錯誤而不得不進(jìn)行并且不可避免必須要執(zhí)行的過程。
從一個軟件的立項之初,軟件測試工作就將開始,并且將會貫穿整個軟件開發(fā)過程。首先了解下測試人員的任務(wù):尋找bug,避免軟件開發(fā)過程中的缺陷,衡量 軟件的品質(zhì),關(guān)注用戶的需求。通過了解測試人員在測試過程中的任務(wù),我們就會對軟件測試產(chǎn)生一個大概的了解。進(jìn)行軟件測試工作的最終目的是什么呢?目的其 實只有一個就是要確保軟件的質(zhì)量。滿足用戶的需要,使用戶對軟件質(zhì)量產(chǎn)生足夠的信心。
1.2 軟件測試的分類
軟件測試是一項復(fù)雜而又細(xì)致的工作,作為計算機科學(xué)的一門學(xué)科,它自有其獨到的作用和規(guī)則。軟件測試從產(chǎn)生一直發(fā)展到如今,已經(jīng)擁有了很完善的軟件測試?yán)碚擉w系和知識概念體系。如今,軟件測試大致分為功能性測試和性能測試,其中又包括手工測試和自動化測試。 隨著軟件測試工作的日益繁雜和工作量的加大,手工測試不再能夠滿足測試需求,因而自動化測試越加顯得重要。我們之所以做這么多工作,都是為了檢驗程序是否 滿足規(guī)格需求說明書,能否滿足用戶需求,或者預(yù)期結(jié)果與實際結(jié)果之間的差別。通過了解軟件測試的分類,我們知道軟件測試在軟件生命過程中的重要性和不可或 缺性。
1.3 軟件測試的國內(nèi)外現(xiàn)狀
為了了解軟件測試在國內(nèi)外的現(xiàn)狀,我們經(jīng)過 深入調(diào)查了解到,隨著軟件開發(fā)的日趨成熟,國內(nèi)外的軟件企業(yè)逐步認(rèn)識到軟件測試在軟件開發(fā)過程中的重要性。軟件測試受到國內(nèi)外軟件企業(yè)越來越多的重視,紛 紛不約而同的加大了對軟件測試的投入。我們先看兩組數(shù)據(jù),2007年中國軟件企業(yè)對軟件測試的投入為:1%一下:24%;1%-5%:34%;5 %-10%:22%;10%-30%:16%;30%以上:4%。我們再從微軟的 項目人員比例上看:Windows200 Team:程序經(jīng)理 450,開發(fā)人員 900, 測試人員 1800,技術(shù)支持人員 600, 技術(shù)傳播人員 1120, 本地化人員 110,培訓(xùn)人員 115,文檔人員 100,市場人員 100, 內(nèi)部IT 50,合計 5345。仔細(xì)分析對比這兩組數(shù)據(jù),從中我們可以看出,國內(nèi)外軟件企業(yè)對軟件測試的重視程度,他們不惜將大量的資金,人力物力投入其中。國內(nèi)外的軟件企業(yè) 之所以如此重視軟件測試,原因只有一個那就是軟件測試已成為軟件開發(fā)過程中不可或缺的一部分。假如軟件開發(fā)過程中離開了軟件測試,我們可以想象后果將會有 多么的嚴(yán)重。首先我們無法保證軟件的質(zhì)量,也無法保證軟件是否滿足用戶的需求,也無法保證我們程序的可用性。在軟件開發(fā)中如果不進(jìn)行軟件測試,很可能使我 們的程序成為鏡中花水中月,不可實現(xiàn)。唯有充分了解軟件測試在軟件開發(fā)過程中的重要性,我們才能更加重視軟件測試工作。
了解了軟件測試 在軟件開發(fā)過程中的作用和意義,以及國內(nèi)外對軟件測試的重視程度和資源投入對比,為了保證軟件質(zhì)量,使我們的軟件更加符合用戶需求,我們應(yīng)當(dāng)思考如何更好 地進(jìn)行軟件測試,在軟件企業(yè)投入了足夠的人力物力等資源之后,怎樣利用這些資源來更好的進(jìn)行軟件測試工作自然成為了我們應(yīng)該思考的問題。
2、軟件測試的測試配置管理
2.1 進(jìn)行測試配置管理的必要性
在擁有了足夠的資源和人力之后,我們能否認(rèn)為軟件測試工作可以很好的進(jìn)行并且能夠保證軟件測試過程不會出現(xiàn)問題呢?也許我們認(rèn)為只要需要的測試條件滿足 了,我們就可以圓滿的完成測試工作了,其實這樣的觀點是錯誤的。軟件測試工作是由人來進(jìn)行的,因而首先要考慮到人的問題,一項工作只要有人的參與,就必須 要將人的因素考慮進(jìn)去。人無完人,金無足赤,測試人員對軟件測試工作造成的負(fù)面影響在軟件測試中是不能夠忽略的。軟件是由人來編寫實施的,但是軟件開發(fā)又 是一個極其容易產(chǎn)生錯誤的復(fù)雜過程,因其產(chǎn)生就注定了它不會是一個簡單的過程。盡管程序員和軟件工程師等為了完善軟件而做出了巨大的努力和工作,但是軟件 錯誤仍然是不可避免的。世上不存在百分百完美的軟件,因此軟件過程中的軟件錯誤是不可避免的,這是他自身的一種特性。我們所能做的就是盡量減少軟件中的錯 誤,爭取做到使這些錯誤可以忽略不計,或者盡量不影響我們的正常使用。給定了足夠的資源之后,我們再進(jìn)行軟件測試工作,這時仍然不能認(rèn)為沒有問題了,還需 要在軟件測試時進(jìn)行配置管理。在軟件測試中缺少了測試的配置管理我們是做不好測試工作的。我們進(jìn)行軟件測試就是為了以最少的時間,最少的人力物力去盡可能 多的發(fā)現(xiàn)軟件中潛藏著的各種錯誤和缺陷。但是伴隨著軟件測試工作量的加大,軟件企業(yè)僅僅投入更多的人力物力以及其他各種資源是不夠的,他們還需要思考除此 之外怎樣才能更好的進(jìn)行軟件測試。為了更好的進(jìn)行軟件測試,我們應(yīng)該對測試人員、測試環(huán)境、生產(chǎn)環(huán)境進(jìn)行配置管理。只有建立了完整的合理的軟件測試配置管 理體系,軟件測試工作才能更好的進(jìn)行,更加完美的完成測試目標(biāo)。
如果在軟件測試過程中缺少了測試配置管理將會造成及其嚴(yán)重的后果。據(jù)我 們實際調(diào)查了解到,在日常的軟件研發(fā)工作中,很多軟件企業(yè)都會或多或少的在軟件測試時遇到很多的問題,而這些問題的產(chǎn)生都是因為在測試過程中缺乏配置管理 流程和工具。因為人員具有頻繁的流動性,并且在組織的過程中會產(chǎn)生知識和財富的流失,再加上現(xiàn)代社會的激烈競爭,如果一個企業(yè)沒有設(shè)計配置管理流程和使用 必要的配置管理工具,就可能會因此而造成無可估量的損失,甚至導(dǎo)致整個軟件項目的崩潰。因而作為一個軟件企業(yè),必須要做到及時了解項目的進(jìn)展?fàn)顩r,對項目 進(jìn)行管理,遇到突發(fā)狀況的解決。軟件工程思想發(fā)展到現(xiàn)在,認(rèn)為在軟件過程中如果能夠越早的發(fā)現(xiàn)缺陷和風(fēng)險,這時只要采取相應(yīng)的措施,所要付出的代價就越 小。缺乏配置管理流程的一個很明顯之處就是測試過程中缺乏并發(fā)執(zhí)行的手段,沒有了配置管理的支持,軟件過程中的并發(fā)執(zhí)行將會變得十分的困難。這時往往會造 成修改過的bug重復(fù)出現(xiàn),又或者幾個人員進(jìn)行相同的測試工作和進(jìn)程,從而產(chǎn)生不必要的浪費。如果企業(yè)不能很清晰很流暢的對整個軟件測試過程進(jìn)行管理,就 會造成測試工作的不同步,不一致。在測試工作中需要測試人員完成的沒有完成,而暫時不需要或者以后在完成的卻首先完成了,這樣會增加測試工作的復(fù)雜性和難 度,因此我們需要在軟件測試中進(jìn)行配置管理。
既然測試配置管理在軟件測試中如此重要,企業(yè)該如何進(jìn)行測試配置管理呢。我們首先簡單談?wù)勡浖y試的測試配置管理體系。它一般由兩種方法構(gòu)成: 那就是應(yīng)用過程方法和系統(tǒng)方法。意思就是在測試過程中,我們應(yīng)該把測試管理這塊單獨作為一個系統(tǒng)去對待。識別并且管理組成這個系統(tǒng)的每個過程,從而實現(xiàn)在 測試工作開始之初設(shè)定的目標(biāo)。在上面的基礎(chǔ)之上,我們還要做到使這些過程在測試工作中能夠協(xié)同作用,互相促進(jìn),最終使他們的總體作用更大。在軟件測試配置 管理中的主要目標(biāo)是在設(shè)定的條件限制下,企業(yè)應(yīng)當(dāng)盡最大的努力去發(fā)現(xiàn)和排除軟件缺陷。測試配置管理其實是包含在軟件配置管理中的,是軟件配置管理的子集。 測試配置管理作用于軟件測試的各個階段,貫穿于整個測試過程之中。它的管理對象包括以下內(nèi)容:測試方案,測試計劃或者測試用例,測試工具,測試版本,測試 環(huán)境以及測試結(jié)果等。這些就構(gòu)成了軟件測試配置管理的全部內(nèi)容。
2.2.1 測試配置管理的目標(biāo)和階段
現(xiàn)在我們了解軟件測試配置管理的目標(biāo):第一步是在測試過程中控制和審計測試活動的變更,第二步是在測試過程中隨著測試項目的里程碑,同步建立相 應(yīng)的基線;第三步是在測試過程中記錄并且跟蹤,測試活動過程中的變更請求;第四步是在測試過程中針對相應(yīng)的軟件測試活動或者產(chǎn)品,測試人員應(yīng)將他們標(biāo)識為 被標(biāo)識和控制并且是可用的。
軟件測試配置管理的階段:第一階段為需求階段:我們要進(jìn)行客戶需求調(diào)研和軟件需求分析;第二階段為設(shè)計階段:在這個階段我們要進(jìn)行概要設(shè)計和詳 細(xì)設(shè)計工作;第三階段為編碼階段:這時我們主要進(jìn)行的工作是編碼;第四個階段是測試和試運行階段:在這個階段我們要進(jìn)行:單元測試,用戶手冊編寫,集成測 試,系統(tǒng)測試,安裝培訓(xùn),試運行和安裝運行這些工作;第五階段也就是最后一個階段是正式運行及維護(hù)階段:這是要做的是對產(chǎn)品進(jìn)行發(fā)布和不斷的維護(hù)。
圖2.1 配置管理階段示意圖
在軟件測試的過程中會產(chǎn)生很多東西,比如測試的相關(guān)文檔和測試各階段的工作成果,這些包括測試計劃文檔,測試用例,還有自動化測試執(zhí)行腳本和測試缺陷數(shù)據(jù)等。為了以后可能的查閱和修改,我們應(yīng)該將這些工作成果和文檔保存起來。
2.2.2 測試配置管理的過程管理
了解了軟件測試過程中配置管理的目標(biāo)和階段,接下來就應(yīng)該進(jìn)行軟件測試配置過程管理了。他的配置管理過程包括:
(1)建立配置變更控制委員會:配置控制委員會(CCB)應(yīng)該要做到對項目的每個方面都有所了解,并且CCB這個團(tuán)體不應(yīng)該由選舉產(chǎn)生,它的人員構(gòu)成包括主席和顧問,在軟件研發(fā)中每一個項目組都必須建立CCB作為變更權(quán)威。
(2)SCM庫的建立和使用:我們要求在每一個項目過程中都要維護(hù)一個軟件配置管理庫。在項目中通過使用配置管理工 具,簡稱(VSS),企業(yè)通過該工具在配置管理服務(wù)器之上,建立和使用軟件配置管理庫。這些操作有助于在技術(shù)和管理這兩個方面對所有的配置項進(jìn)行控制,并 且對他們的發(fā)布和有效性也能起到控制作用。同時還有很重要的一點就是我們應(yīng)該對SCM庫進(jìn)行備份。這樣做的目的是為了在產(chǎn)生意外或者風(fēng)險時,能夠作為保存 災(zāi)難恢復(fù)備份的副本。
(3)配置狀態(tài)報告:配置狀態(tài)報告是軟件測試配置管理過程中的一項重要的活動,在軟件測試配置管理過程中,配置人員 要管理和控制所有提交的產(chǎn)品,然后在有產(chǎn)品提交或者變更為完成時,配置人員要經(jīng)過相應(yīng)的質(zhì)量檢查,這就是配置人員應(yīng)該進(jìn)行的工作。而在這之后,配置人員不 但要將批準(zhǔn)通過的配置項放入基線庫中。并且還要記錄配置項及其狀態(tài),編寫配置狀態(tài)說明和報告。通過配置人員的這些工作來確保所有應(yīng)該了解情況的組或者個人 能夠及時的知道相關(guān)的信息。
(4)評審、審計和發(fā)布過程:為了保持SCM庫中內(nèi)容的完整性和質(zhì)量,我們應(yīng)該采取適當(dāng)?shù)馁|(zhì)量保證活動來應(yīng)對SCM庫中各項的變化。以此來確保在基線發(fā)布之前能夠執(zhí)行審計活動,該活動包括這幾點:基線審計,基線發(fā)布和產(chǎn)品構(gòu)造。
軟件測試過程中的配置管理就是由這些構(gòu)成的。該過程不但提供給了我們良好的理論知識和清醒的認(rèn)知,還讓我們清楚的了 解到軟件測試過程中應(yīng)該進(jìn)行的工作有哪些。要想研發(fā)出好的軟件需要進(jìn)行好的軟件測試。而要想進(jìn)行好的軟件測試,就需要我們掌握軟件測試過程中的配置管理, 并且了解該怎么樣去運用它。只有對其有了深入的了解之后我們才能更好的進(jìn)行軟件測試工作,運用科學(xué)而且標(biāo)準(zhǔn)的測試配置管理知識為軟件質(zhì)量提供保障。
了解了配置管理的目標(biāo)和階段以及如何進(jìn)行軟件測試配置過程管理,僅僅這些是不夠的。有了這些知識,我們還不能夠?qū)浖y試進(jìn)行完整的配置管理, 不能憑借這些來有效的保障我們的軟件質(zhì)量。在這些基礎(chǔ)之上,我們還需要對軟件測試配置管理中的角色進(jìn)行分配和分工。唯有如此才能確保在軟件的開發(fā)和維護(hù) 中,我們能夠使配置管理活動得到貫徹執(zhí)行。因此在制定測試配置管理計劃和開展測試配置管理之前,我們首先要確定配置管理活動的相關(guān)人員以及他們的職責(zé)和權(quán) 限,下面我們來詳細(xì)的了解配置管理過程中主要的參與人員和他們分職責(zé)分工。
(1)項目經(jīng)理(PM,Project Manager)。項目經(jīng)理作為整個軟件的開發(fā)以及整個軟件的維護(hù)活動的負(fù)責(zé)人,那么他的職責(zé)是什么呢?他的主要職責(zé)包括采納軟件測試配置控制委員會的建 議,對配置管理的各項活動進(jìn)行批準(zhǔn),并且在批準(zhǔn)之后還要控制它們的進(jìn)程。項目經(jīng)理的具體工作職責(zé)如下:首先制定項目的組織結(jié)構(gòu)以及配置管理策略;然后要批 準(zhǔn)和發(fā)布配置管理計劃;再然后要對項目起始基線和軟件開發(fā)工作里程碑進(jìn)行制定;最后要接受并審閱配置控制委員會的報告。
(2)配置控制委員會(CCB,Configuration Control Board)。該委員會的職責(zé)則是對配置管理的各項具體活動進(jìn)行指導(dǎo)和控制,并且為項目經(jīng)理的決策提供建議。該委員會的具體工作職責(zé)如下:首先是要批準(zhǔn)軟 件基線的建立以及配置項的標(biāo)志;然后是制定訪問控制策略;再然后是建立、更改基線的設(shè)置,和審核變更申請;最后是根據(jù)配置管理員的報告從而決定相應(yīng)的對 策。
(3)配置管理員(CMO,Configuration Management Officer)。根據(jù)制定的配置管理計劃執(zhí)行各項管理任務(wù)這就是配置管理員的職責(zé),配置管理員要定期向CCB提交報告,同時還要列席CCB的例會,他的 具體工作職責(zé)如下:第一,對軟件配置管理工具進(jìn)行日常管理與維護(hù);第二,提交配置管理計劃;第三,各配置項的管理與維護(hù);第四,執(zhí)行版本控制和變更控制方 案;第五,完成配置審計并提交報告;第六,對開發(fā)人員進(jìn)行相關(guān)的培訓(xùn);第七,開發(fā)過程中存在的問題加以識別并制定解決方案。
(4)開發(fā)人員(Dev,Developer)。開發(fā)人員的職責(zé)為在了解了項目組織確定的配置管理計劃和相關(guān)規(guī)定之后,按照配置管理工具的使用模型來完成開發(fā)任務(wù)。
只有在清晰的了解了軟件測試配置管理的概念,構(gòu)成,原理和配置管理的人員及其分工之后,企業(yè)才能去靈活的應(yīng)用它,在企業(yè)的軟件測試過程中去嚴(yán)格的執(zhí)行它,我相信一個企業(yè)只要做好這一步,就一定能夠做好軟件測試工作。從而保證軟件的質(zhì)量,滿足用戶的需求。
2.3 測試配置管理的應(yīng)用
下面我們以一個實際項目中的配置管理的例子來介紹項目中的配置管理應(yīng)用。我們用來示例的項目是電信的一個項目,項目人員為16人,項目周期為一 年,前期主要為開發(fā)工測試工作,后期的主要是由維護(hù)人員進(jìn)行系統(tǒng)維護(hù)和調(diào)整。在整個項目正式啟動之前,配置管理工作就可以開始了。首先,應(yīng)該評估團(tuán)隊當(dāng)前 的配置管理現(xiàn)狀:清楚了解測試團(tuán)隊當(dāng)前配置管理的現(xiàn)狀是計劃配置管理實施的基礎(chǔ),評估團(tuán)隊當(dāng)前的配置管理現(xiàn)狀有兩種方法,一種是自己進(jìn)行,另外一種是引入 外部專業(yè)咨詢?nèi)藛T來完成評估活動。有了評估的結(jié)果之后才能進(jìn)行改進(jìn),因此,這項工作一定要做好。然后,定義實施的范圍,在經(jīng)過了評估之后,會找出很多的改 進(jìn)點,對于這些改進(jìn)點,必須要花費大的精力來思考解決。還需要指定一個專門的人員就是配置管理員。在一個建立了配置管理平臺的團(tuán)隊中他負(fù)責(zé)掌控整個團(tuán)隊的 工作流程和成果,要負(fù)責(zé)維護(hù)和管理配置管理系統(tǒng)。有一個合格的配置管理員能夠為整個團(tuán)隊的進(jìn)度帶來極其良好的影響。而在配置管理工作開始后的第一步就是一 份配置管理計劃。一般而言,需要在配置管理計劃中明確的內(nèi)容包括:1、配置管理軟硬件資源;2、配置庫結(jié)構(gòu);3、人員、角色以及配置管理規(guī)范;4、基線計 劃;5、配置庫備份計劃,6執(zhí)行配置審計;下面我們來圍繞其中一些內(nèi)容就行詳細(xì)描述:
配置管理環(huán)境:包括軟硬件環(huán)境。具體的資源需求應(yīng)該根據(jù)項目實際情況來確定,一般需要考慮的包括:網(wǎng)絡(luò)環(huán)境、配置管理服務(wù)器的處理能力、空間需 求,配置管理軟件的選擇等。配置管理環(huán)境的確定需要綜合考慮各個方面的因素,包括我們采用的工具,人員對配置管理工具的熟悉程度等,同時,配置管理軟件和 測試工具的集成程度也是一個必須考慮的因素,根據(jù)我們的經(jīng)驗,選擇一個和測試環(huán)境集成緊密的配置管理工具至少可以減少20%花費在Check In/Check Out和配置管理人員保持配置庫完整上的工作量。
然后是配置管理工具的選擇:從測試人員具有的配置管理工具使用經(jīng)驗和配置管理工具使用的難易度方面來說,VSS是最好的選擇,在現(xiàn)有的基礎(chǔ)上只 需要對測試人員進(jìn)行簡單培訓(xùn);考慮到和測試工具的集成,VSS也是一個不錯的選擇。不過本項目還要求對遠(yuǎn)程接入方式的支持,以及對Solaris平臺的支 持,VSS肯定是不能滿足要求的(VSS通過VPN方式應(yīng)該是可以實現(xiàn)對遠(yuǎn)程訪問的支持,但VSS的完全共享方式實在是不敢在Internet上使用)。 除VSS外,可以選擇的配置管理工具還有CCC Harvest、ClearCase、CVS等,但Harvest和ClearCase使用起來比較復(fù)雜,需要一個專門的配置庫管理員負(fù)責(zé)技術(shù)支持,還需 要對測試人員進(jìn)行較多的培訓(xùn)。
最后是配置庫維護(hù)和備份計劃:配置庫的維護(hù)的備份需要專職的配置庫管理員來負(fù)責(zé)。在整個項目中我們采用的配置庫維護(hù)策略是根據(jù) Microsoft的Best Practice白皮書建議,包括以下要點:1.保持配置數(shù)據(jù)庫的大小不超過5G;Microsoft建議,配置庫的大小在3-5G比較合適,太大的數(shù)據(jù) 庫會極大影響VSS的效率;2.每周進(jìn)行VSS數(shù)據(jù)庫的分析(Analysis),發(fā)現(xiàn)問題及時修正;VSS提供了Analysis和Fix工具,由于不 合理的Delete等操作,VSS數(shù)據(jù)庫有可能會出現(xiàn)一些Interrupt Data之類的問題,通過定期的每周的分析工作,可以極大減少數(shù)據(jù)庫出現(xiàn)問題的風(fēng)險;3.每日進(jìn)行配置庫的增量備份,每周進(jìn)行數(shù)據(jù)庫的完全備份;VSS庫 的備份可以通過VSS自己的Archive功能或者是操作系統(tǒng)的Backup程序來進(jìn)行。VSS的Archive功能對VSS中的文件數(shù)據(jù)進(jìn)行壓縮并保留 VSS的所有狀態(tài),但只能對VSS庫進(jìn)行完全備份,不能實現(xiàn)增量備份功能。Windows2000 Server提供的Backup實用程序可以對文件進(jìn)行備份,由于VSS庫就是以文件形勢存在的,因此針對VSS的data目錄進(jìn)行備份也可以完全達(dá)到備 份的目的,使用系統(tǒng)備份工具的好處是可以實現(xiàn)增量備份。我們在實際中使用的系統(tǒng)的備份工具,每周五生成的完全備份采用刻錄光盤的方式保存,每天的增量備份 數(shù)據(jù)存放在文件服務(wù)器上進(jìn)行備份。
3.1 測試版本控制的必要性
通過上面我們對軟件測試的配置管理有了詳細(xì)的了解,此外我們還需要了解配置管理中的一方面,那就是軟件測試過程中的版本控制,這同樣也是軟件測 試過程中不可缺少的一部分。很多人不了解軟件測試過程中的版本控制,甚至認(rèn)為軟件測試不需要版本控制。這種想法是錯誤的,在軟件測試中也同樣需要版本控 制,這是軟件測試中不能缺少的一部分。如果測試組長或者測試人員不對軟件測試進(jìn)行版本控制,那么這樣帶來的危害也是顯而易見的。軟件測試過程中如果缺乏版 本控制,我們很難保證測試進(jìn)度和測試的一致性。我們知道在進(jìn)行測試工作時,很容易出現(xiàn)的是出現(xiàn)冗余這一問題,這樣很容易導(dǎo)致本地版本和服務(wù)器版本的不一 致,軟件測試過程中缺乏版本控制就會造成上面這些問題。由此可見,軟件測試是離不開版本控制的。在測試過程中適合的版本控制可以有效的提高開發(fā)和測試效 率,消除很多由于版本帶來的問題,并且可以確保在軟件開發(fā)和測試過程中,能夠及時并且正確的更新不同的人員所涉及的同一文檔。
3.1.1 測試版本控制的概念
軟件測試的版本控制簡單的說就是對測試有明確的標(biāo)識、說明、并且測試版本的交付是在項目管理人員的控制之下。用來識別所用版本的狀態(tài)就是對測試 版本的標(biāo)識,對不同的版本進(jìn)行編號,軟件質(zhì)量穩(wěn)定度趨勢的反映也可以由測試的版本控制體現(xiàn)。版本控制是軟件測試的一門十分實用的實踐性技術(shù),將各次的測試 行為以文件的形式進(jìn)行記錄,并且對每次的測試行為進(jìn)行編號,標(biāo)識公布過的每一個測試版本,以此來進(jìn)行測試排序,比如將最初的版本標(biāo)識為1,經(jīng)過測試后,之 后的版本依次標(biāo)識為2,3,4等等。
圖3.1 Linux下的版本控制
圖3.2 Git版本控制
3.1.2 測試版本控制的作用
軟件測試的版本控制有兩個方面的作用:一個方面是標(biāo)記歷史上產(chǎn)生的每個版本的版本號和測試狀態(tài),另一個方面是保證測 試人員得到的測試版本是最新的版本。所謂版本控制其實就是跟蹤標(biāo)記測試過程中的軟件版本,以方便對比的一個過程,通過版本控制來表明各個版本之間的關(guān)系, 和不同的軟件開發(fā)測試階段。從而方便測試工作的進(jìn)行。版本控制是測試人員不可缺少的一種技術(shù)。有了軟件測試的版本控制,測試人員在軟件測試工作可以更加高 效并且有針對性的進(jìn)行。
軟件測試版本控制其實是在軟件測試中為了便于追溯和跟蹤問題而出現(xiàn)的,對測試版本的控制實際上就是對軟件測試過程中的各種測試行為的管理和控 制。軟件測試的版本控制,主要是指對于測試對象的版本控制,也就是指測試小組在軟件測試過程中對開發(fā)部提交給測試部門的產(chǎn)品進(jìn)行版本控制。如果開發(fā)小組不 能夠規(guī)范的管理軟件版本,那么這時候測試小組對于產(chǎn)品進(jìn)行版本控制就將顯得十分重要,這時軟件測試小組要保證測試對象的可控性被限制在我們可以控制的范圍 之內(nèi)。對此,我們建議開發(fā)小組和測試小組要做到如下要求:兩個小組不但分工明確,還要協(xié)商出一個明確的約定,指定專門的測試版本負(fù)責(zé)人來專門負(fù)責(zé)版本控制 這一塊,讓這個負(fù)責(zé)人去制定版本控制的提交原則,在軟件研發(fā)過程中對提交的情況要進(jìn)行詳細(xì)的記錄,通過這些措施,這樣就能在基本上對因為版本失控可能造成 的測試失誤或者無效加以避免。
舉一個軟件測試項目中版本控制的例子,一個公司的員工負(fù)責(zé)了一個軟件測試項目,在項目開展初期,該項目的測試工作進(jìn)行的還算順利。但是在測試后 期工作即將結(jié)束時,卻出現(xiàn)了問題。而這個問題的出現(xiàn)正是由于版本控制不當(dāng),在這個軟件測試項目中,他們將測試過程中發(fā)現(xiàn)的bug提交給開發(fā)人員,開發(fā)人員 在對測試人員提交的bug進(jìn)行修改,在對這些bug修改后開發(fā)人員會將修改后的代碼放入當(dāng)前的軟件版本之中,問題正是出現(xiàn)在這個階段。那么為什么問題會出 現(xiàn)在這個階段呢?其實是因為對于修改過的代碼,我們不能夠保證他們一定是正確的,很可能在開發(fā)人員修改過之后,仍然是錯誤的,或者在修改過之后仍然會給軟 件帶來別的問題,這種情況下就會給軟件測試人員的測試工作帶來新的麻煩。這樣就會造成一個很嚴(yán)重的后果,那就是測試人員對開發(fā)人員提交的新代碼會很緊張, 不能徹底放心,測試人員對新提交的新修正的代碼還要在進(jìn)行驗證,進(jìn)行排錯,來確保不會因此而帶來新的隱患,新的漏洞。在這個時候我們就應(yīng)該思考怎樣去解決 這個問題了,這時我們就可以嘗試一下軟件測試的版本控制了。首先測試人員要測試開發(fā)人員提交的代碼,將測試過程中查找到的bug進(jìn)行提交。而當(dāng)測試人員提 交的bug到了開發(fā)人員手中之后,開發(fā)人員要針對這些bug進(jìn)行修復(fù)工作,并且將修改后的代碼放入程序中,作為新的軟件版本。但是絕對不能將它再放回到現(xiàn) 在正在進(jìn)行的測試版本中。而測試人員在完成這一輪的測試工作后,在對新的版本也就是對經(jīng)過開發(fā)人員修改過得下一個版本展新一輪的測試。而這就是軟件測試過 程中的版本控制。
3.1.4 缺乏測試版本控制的危害
軟件測試缺乏測試版本控制會帶來很多危害:隨著計算機軟件技術(shù)的日趨成熟和日益復(fù)雜。現(xiàn)代的軟件產(chǎn)品規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜。單純的手工 測試不再能夠滿足軟件工程中的測試需要。一兩個人完成一個項目的測試工作的時代不復(fù)存在,一個大型項目的測試工作,現(xiàn)在都是由很多測試人員參與并且有不同 的分工,以團(tuán)隊合作流水線式的方式來開展工作的,他們在測試過程中是協(xié)同完成測試工作的。在進(jìn)行測試的時候,同一個板塊的測試會由很多人共同負(fù)責(zé),他們將 會分配到同樣的任務(wù)。在這么多人完成同一板塊的過程中,企業(yè)怎樣去保證每個人的測試工作對軟件產(chǎn)生的影響能夠綜合到一起產(chǎn)生好的作用。而不是因為人員的差 異而對測試版本造成不一致性呢?運用軟件測試中的版本控制就成為此時有效地解決途徑,有效的版本控制能夠很好的解決這些問題,并對軟件的開發(fā)進(jìn)行產(chǎn)生好的 積極的影響。但是如果版本控制不當(dāng)則會造成很多讓人搞到棘手的問題。
(1)缺乏版本控制,將難以保證測試進(jìn)度
大多數(shù)的測試人員都希望他們進(jìn)行的測試工作是完美的,經(jīng)過他們測試后的軟件更是完美無缺的。這種想法是好的,但是一個軟件在它的整個生命過程中 是不可能完美到?jīng)]有一點錯誤存在的,我們只能盡我們所能去不斷地完善它。這時如果能夠提供有效的版本控制就會極大地提高軟件測試的工作效率。在測試中對測 試版本進(jìn)行版本控制時,我們起碼要做到能夠掌握軟件過程中的每個版本。在每個版本中,我們能夠找到哪些功能不過關(guān),哪些功能沒問題。對于新的測試版本不管 在測試工作中的哪個時間段,都應(yīng)該有一個可以用來比較的對象。并且能夠與之前的版本進(jìn)行對比。
(2)缺乏版本控制,難以保證測試的一致性
軟件測試工作因為十分復(fù)雜并且有很多人員參與其中,在進(jìn)行測試工作時,因為測試人員的分工不同,不同的測試人員要負(fù)責(zé)不同的測試模塊。但是因為 軟件有其整體性,所以測試人員要互相協(xié)作,那么在測試過程中則必然會產(chǎn)生交叉。所以測試工作是一項十分復(fù)雜的工作,它是由很多人一起共同協(xié)作完成的。在整 個測試中為了保證測試過程中的一致性我們必須要找到一個平衡點。而大量的實踐證明如果進(jìn)行有效的版本控制,將有效保證測試過程中的一致性,大大的降低因為 缺乏版本控制或者流程管理可能帶來的諸多問題。
(3)測試版本冗余,易出現(xiàn)誤用風(fēng)險
因為有眾多測試員參與到軟件測試過程中,而進(jìn)行測試工作時每個人都必須使用一臺機器,那么在每個人的機器上都要拷貝一個待測軟件。隨著測試工作 的進(jìn)行,在測試過程中會不斷產(chǎn)生新的軟件版本,為了測試需要,每個人的機器上都要不斷更新軟件版本,那么每個人的電腦上必然會保存不同時期的軟件版本。而 這些不同的測試版本隨著時間的推移和測試工作的復(fù)雜很容易混雜在一起,造成測試人員無法分清每個版本之間的差異,甚至分不清對于當(dāng)前版本應(yīng)該做什么事情, 從而給測試工作帶來極大的困擾,出現(xiàn)版本的冗余。這時,如果缺乏有效的測試版本控制就會增大測試風(fēng)險,給測試工作帶來麻煩。
(4)容易導(dǎo)致本地版本和服務(wù)器版本不一致
因為測試版本的眾多和混亂,測試小組在測試工作上不但要花費更多的時間和精力,還可能造成不必要的重復(fù)性測試和不必要性測試,當(dāng)測試版本不及時 更新時,會造成測試版本和現(xiàn)行版本的不一致,這些就是缺乏版本控制和管理的結(jié)果。因而加強測試過程中的版本控制是一項很重要的工作。
版本控制在提供可追溯性的文件的同時還能夠為各種測試版本提供文檔管理支持。使我們能夠很方便的隨時查閱在軟件測試過程中生成的各種文檔。
3.2 測試版本控制方法及工具解析
3.2.1 測試版本控制的方法
有效的版本控制能夠極大的方便軟件測試工作,提高測試工作的效率,那么我們?nèi)绾尾拍艹晒Φ倪M(jìn)行版本控制呢?為此我們應(yīng)該制定一套標(biāo)準(zhǔn),制定相應(yīng)的版本控制方法規(guī)劃來規(guī)范化軟件測試的版本控制。方法如下:
(1)在軟件測試過程中制定規(guī)范的版本控制管理制度,明確整個測試中的測試需求,選擇合適的版本控制切入點,把版本控制和測試?yán)锍瘫Y(jié)合到一起 來實現(xiàn)階段性成果,從而避免測試規(guī)劃過程混亂的風(fēng)險。(2)通過制定合理版次規(guī)劃和監(jiān)控機制來進(jìn)行版本控制,為了有效的管理測試項目所需的版本次數(shù),應(yīng)該 對測試工作量進(jìn)行合理的評估,以此來做出合理的版次規(guī)劃。(3)我們不能忽略版本控制管理員在版本控制中的重要性,版本控制管理員在測試版本控制中的重要 性是不可估量的,離開了版本控制管理員和缺乏版本控制的情況是等效的。(4)我們還要做好版本控制的文檔管理,對相關(guān)文檔進(jìn)行嚴(yán)格規(guī)范的管理,將測試過程 中版本控制產(chǎn)生的相關(guān)文檔記錄、標(biāo)識是很重要的,有了這些能夠很方便的跟蹤和監(jiān)控測試版本的執(zhí)行。(5)選擇合理的應(yīng)用版本控制的軟件工具,能夠極大的提 高測試工作的效率,大大提高測試活動的優(yōu)質(zhì)性。
3.2.2 版本控制工具解析
工欲善其事,必先利其器。介紹完了版本控制的方法和軟件測試中版本控制的重要性,要想方便的進(jìn)行測試工作就必須進(jìn)行有效的版本控制,選擇一款好 的測試工具這時就顯得尤為重要。下面我就簡單介紹一種版本控制工具,同時它也是一種配置管理的工具。那就是ClearCase。這是由RATIONAL公 司開發(fā)的一款配置管理工具。下面我來講解下ClearCase的四種功能:(1)控制任何文件的版本(Version Control),它能夠維護(hù)和控制軟件版本,有效的管理版本內(nèi)容。(2)在版本樹中組織元件發(fā)展的過程(Workspace Management)。針對目錄結(jié)構(gòu)它可以定制一個版本樹的結(jié)構(gòu),并且其中包含多層分支和子分支。(3)對目錄和子目錄進(jìn)行版本控制(Build Management),比如:在其中建立一個新的文件夾,或者對文件名進(jìn)行修改,又或者新建子目錄或者在不同的目錄間移動文件等。(4)明確項目設(shè)計的 流程(Process Control)。比如:可以通過將不同的權(quán)限授權(quán)給全體人員來阻止某些修改的發(fā)生,立刻通知團(tuán)隊成員任何時刻某一事件的發(fā)生,對開發(fā)的進(jìn)程建立一個永久 記錄并不斷維護(hù)它。
3.3 測試版本控制應(yīng)用
我們以一個實際項目中的例子來介紹項目中的版本控制。在這個項目中,我們已經(jīng)分好了測試小組及組內(nèi)成員的分工,啟動軟件測試的條件已經(jīng)具備,在 開發(fā)人員發(fā)布了測試版本后,有相應(yīng)的文檔支持比如自測報告、軟件版本說明等等,然后啟動測試工作,其中在對其版本進(jìn)行測試的過程中,測試小組對項目進(jìn)行版 本控制分以下幾步:第一,制定規(guī)范的版本控制管理制度,測試小組要了解和明確整個測試的需求,選擇合適的版本控制切入點,對于測試中產(chǎn)生的測試版本要進(jìn)行 嚴(yán)格控制,還要規(guī)范化的控制測試過程中產(chǎn)生的不同時期的測試版本,通過把版本控制與測試?yán)锍瘫慕Y(jié)合來實現(xiàn)階段性成果,以規(guī)避測試過程混亂的風(fēng)險。第二, 應(yīng)該制定合理版次規(guī)劃和監(jiān)控機制,對測試項目所需的版次數(shù)量進(jìn)行有效管理,并且對版次做出合理的規(guī)劃。在整個測試項目的關(guān)鍵位置要設(shè)立檢查點,要能根據(jù)版 次規(guī)劃隨時監(jiān)控版本更新,及時發(fā)現(xiàn)問題,并對出現(xiàn)的異常現(xiàn)象做出快速反應(yīng),這樣才能使得測試過程更加清晰和更有計劃性。第三,測試小組要指定版本控制管理 員。測試版本控制作為一個貫穿整個測試周期的一項活動,測試版本控制會涉及到很多的人員角色,其中最為主要的人力資源就是測試版本控制管理員。在一個建立 了良好版本控制機制的測試團(tuán)隊中測試版本控制管理員是十分重要的。他負(fù)責(zé)掌控整個測試過程的測試版本,要負(fù)責(zé)記錄和監(jiān)控測試中不同測試階段產(chǎn)生的測試版 本。他的地位是不可動搖的。有一個合格的測試版本控制管理員能夠為版本控制工作帶來極其良好的影響。最后是選擇一款合適的版本控制工具,在進(jìn)行版本控制的 過程中測試小組選擇一款合適的測試版本控制軟件是不可缺少的。常見的版本控制工具有CVS,SVN,Clearcase,其中CVS 是一款開放源代碼軟件,其功能強大、跨平臺、支持并發(fā)版本控制而且免費,所以它在中小型軟件企業(yè)中得到廣泛使用。但是它最大的遺憾就是缺少相應(yīng)的技術(shù)支 持,許多問題的解決需要自己尋找資料,甚至是研究源代碼。而SVN是對CVS的缺點進(jìn)行改進(jìn)產(chǎn)生的版本控制工具,相比于CVS而言,SVN更為簡單易用, 且SVN有其特定平臺的客戶端工具。如TortoiseSVN,是為windows外殼程序集成到windows資源管理器和文件管理系統(tǒng)的SVN客戶 端,使用相當(dāng)方便。最后一種版本控制工具Clearcase是Rational公司一款重量級的軟件配置管理工具。與CVS和SVN不同的 是,Clearcase涵蓋的范圍包括版本控制、建立管理、工作空間管理和過程控制。Clearcase貫穿于整個軟件生命周期,支持現(xiàn)有的絕大多數(shù)操作 系統(tǒng),但它的安裝、配置、使用相對較復(fù)雜,需要進(jìn)行團(tuán)隊培訓(xùn)。選擇一款合適的版本控制工具不但能夠提高測試工作效率,而且也會大大提高測試活動的優(yōu)質(zhì)性。
4、小結(jié)與展望
本文從對軟件測試概念的講解,軟件測試工作的重要性講解開始,又通過國內(nèi)外軟件企業(yè)軟件測試的現(xiàn)狀為切入點,對軟件測試過程中必須要進(jìn)行軟件測 試配置管理進(jìn)行了講解和敘述。詳細(xì)介紹了軟件測試配置管理的必要性和不可或缺性,并且詳細(xì)敘述了配置管理的概念,過程和方法,以此來保證軟件產(chǎn)品質(zhì)量。又 通過對軟件測試過程中的版本控制進(jìn)行講解,敘述了版本控制在軟件測試中的重要性。同時對版本控制的概念,意義還有方式方法進(jìn)行了論述。講述了版本控制在軟 件測試以及整個軟件過程中的重要性。本文從軟件測試的配置管理和版本控制兩個方面,講述了如何有效的進(jìn)行軟件測試工作來保證軟件的質(zhì)量。
posted on 2013-06-03 13:27 順其自然EVO 閱讀(2075) 評論(0) 編輯 收藏 所屬分類: 管理方向