CraftGS中應(yīng)用的軟件確認(rèn)技術(shù)包括單元測試技術(shù)、集成測試技術(shù)、系統(tǒng)測試技術(shù)和交付測試技術(shù)。
其中單元測試的主要任務(wù)是驗(yàn)證詳細(xì)設(shè)計(jì)規(guī)格說明中所劃分出來的軟件單元是否被程序編制人員用代碼形式正確地實(shí)現(xiàn)了。這里軟件單元可能是某個(gè)函數(shù)(或稱方法)也可能是某個(gè)抽象數(shù)據(jù)類型(如類、數(shù)據(jù)結(jié)構(gòu)或者模板)。單元測試在實(shí)際測試當(dāng)中也常常被稱為類測試(在面向?qū)ο蟮脑O(shè)計(jì)中)或白盒測試(白盒的意思是面向代碼)。單元測試的工作原理是建構(gòu)樁模塊和驅(qū)動(dòng)模塊以驅(qū)動(dòng)被測單元運(yùn)行,然后,測試人員輸入設(shè)計(jì)好的測試用例,測試被測單元能否按照設(shè)計(jì)要求處理這些測試用例,對(duì)出現(xiàn)異常的測試用例,測試人員應(yīng)做記載并反饋給軟件開發(fā)團(tuán)隊(duì)。
做完單元測試以后,下一步的工作是對(duì)照軟件概要設(shè)計(jì)規(guī)格說明,驗(yàn)證各軟件單元組裝后形成模塊能否達(dá)到概要設(shè)計(jì)規(guī)格說明中模塊的設(shè)計(jì)目標(biāo);在模塊級(jí)集成工作完成之后,測試人員還應(yīng)測試各模塊組裝后形成的用戶系統(tǒng)內(nèi)部存在沖突,各模塊能否正常工作。這里,模塊可能是指某個(gè)軟件部件,也可能是指某個(gè)或某幾個(gè)分系統(tǒng)。通常在做集成測試時(shí)先是從分系統(tǒng)內(nèi)部的集成測試開始做起,做完以后再測試各分系統(tǒng)是否能集成為最終要實(shí)現(xiàn)的大系統(tǒng)。也有其他做法(如自頂向下集成測試方法、核心系統(tǒng)先做集成測試或每日集成測試等等)??傊f變不離其宗。集成測試要保證模塊的內(nèi)部正確性以及保證模塊能最終集成為大系統(tǒng)。集成測試有時(shí)也被稱為組裝測試(在型號(hào)軟件中)或灰盒測試(有人認(rèn)為集成測試介于白盒與黑盒之間)。
做完集成測試以后,下一步工作就是做系統(tǒng)測試。系統(tǒng)測試的主要任務(wù)是驗(yàn)證經(jīng)集成測試后形成的軟件系統(tǒng)是否滿足軟件需求規(guī)格說明中的各需求項(xiàng)。這些需求項(xiàng)包括:業(yè)務(wù)需求、功能需求、非功能性需求(如:性能、可靠性、安全性、系統(tǒng)維護(hù)等方面的要求)以及一些約束性需求(如開發(fā)標(biāo)準(zhǔn)、編程語言、通訊協(xié)議)等等。由于需求項(xiàng)涉及的領(lǐng)域很廣泛,這就導(dǎo)致了系統(tǒng)測試中對(duì)應(yīng)的測試門類相當(dāng)龐雜。如:功能測試、執(zhí)行路徑測試、可靠性測試、壓力測試、可恢復(fù)性測試、可移植性測試等等。這些測試最顯著的特征是在一定環(huán)境條件下(如:模擬現(xiàn)場或極端條件),設(shè)計(jì)各種測試用例,輸入并運(yùn)行完整的軟件系統(tǒng),根據(jù)軟件系統(tǒng)運(yùn)行過程中的實(shí)際表現(xiàn),評(píng)估軟件系統(tǒng)是否符合軟件需求項(xiàng)的各類要求。由于這類測試一般不涉及內(nèi)部代碼,因此,也有人把系統(tǒng)測試稱做是黑盒測試。
在做完系統(tǒng)測試以后,軟件產(chǎn)品就到了交付用戶使用這個(gè)階段了。交付過程中的重要一環(huán)就是交付測試,交付測試的目標(biāo)是保證用戶對(duì)所交付的系統(tǒng)的滿意。與前面所討論的測試不同,交付測試主要的參與者應(yīng)該是目標(biāo)客戶??蛻魠⑴c越多越好。交付測試的內(nèi)容一般包括安裝測試、可用性測試、alpha測試、beta測試等。其中安裝測試的主要任務(wù)是測試軟件系統(tǒng)能否在模擬環(huán)境下或?qū)嶋H現(xiàn)場由目標(biāo)用戶順利完成在目標(biāo)機(jī)器上的安裝;可用性測試的主要任務(wù)是測試軟件系統(tǒng)在完成安裝以后能否完成用戶的模擬任務(wù)或現(xiàn)場任務(wù);alpha測試采用的形式一般是由一個(gè)用戶在開發(fā)環(huán)境下對(duì)軟件系統(tǒng)進(jìn)行類似于黑盒的測試,測試的目的是從用戶的角度評(píng)價(jià)軟件產(chǎn)品的功能、可使用性、可靠性、性能和支持,尤其注重產(chǎn)品的界面和特色;beta測試采用的形式一般是先由軟件的多個(gè)用戶在實(shí)際使用環(huán)境下使用beta版軟件系統(tǒng)一段時(shí)間,然后把使用中出現(xiàn)的各類故障或缺陷反饋給beta測試負(fù)責(zé)人員,再由測試負(fù)責(zé)人員移交給軟件開發(fā)者,由開發(fā)人員負(fù)責(zé)修正并完善軟件系統(tǒng)。Beta測試的目的是確保軟件產(chǎn)品交付給全體用戶之前能部分或全面地修正其在實(shí)際應(yīng)用中可能出現(xiàn)的各類BUG或不足。
4.3 在CraftGS項(xiàng)目中應(yīng)用軟件測試管理技術(shù)
一如前文所述,測試技術(shù)解決了測試采用的方法和技術(shù)問題,然而,對(duì)于一個(gè)工程而言,還需要相應(yīng)的測試管理才能保證各項(xiàng)測試活動(dòng)的有序開展。因此,在CraftGS項(xiàng)目中,軟件測試管理技術(shù)要解決的問題是如何確保軟件測試技術(shù)(包括軟件驗(yàn)證技術(shù)和軟件確認(rèn)技術(shù))能在軟件項(xiàng)目在軟件生命內(nèi)得到順利實(shí)施,并產(chǎn)生預(yù)期的效果。
按照軟件測試管理面對(duì)的管理對(duì)象的差異,軟件測試管理技術(shù)大致分為軟件測試團(tuán)隊(duì)組織管理、軟件測試計(jì)劃管理、軟件缺陷(錯(cuò)誤)跟蹤管理以及軟件測試件管理四大部分。以下一一詮釋:
軟件測試團(tuán)隊(duì)組織管理通俗地講就是測試團(tuán)隊(duì)?wèi)?yīng)該如何組建。在實(shí)際項(xiàng)目開發(fā)中,我們常??吹接行﹩挝缓鲆暅y試團(tuán)隊(duì)存在的意義,當(dāng)要實(shí)施測試時(shí),往往臨時(shí)找?guī)讉€(gè)程序員充當(dāng)測試人員;也有些單位盡管認(rèn)識(shí)到了組建測試團(tuán)隊(duì)的重要性,但在具體落實(shí)的時(shí)候往往安排一些毫無開發(fā)經(jīng)驗(yàn)的行業(yè)新手去做測試工作,這常常導(dǎo)致測試效率的低下,測試人員對(duì)測試工作索然無味。CraftGS項(xiàng)目的測試團(tuán)隊(duì)首先聘有一名資深的測試領(lǐng)域?qū)<?,他具有極為豐富的航天項(xiàng)目軟件測試經(jīng)驗(yàn),對(duì)軟件開發(fā)過程中常見的缺陷或錯(cuò)誤了然于胸,此外,他還具有較好的親和力和人格魅力。其次,CraftGS項(xiàng)目測試團(tuán)隊(duì)還具有很多具備一技之長的成員,如對(duì)某些自動(dòng)化測試工具運(yùn)用嫻熟或能輕而易舉地編寫自動(dòng)化測試腳本。另外,測試團(tuán)隊(duì)還聘有兼職成員。如驗(yàn)證測試實(shí)施過程中,同行評(píng)審是最常使用的一種形式,這些同行專家就屬于兼職測試團(tuán)隊(duì)成員的范疇。至于測試團(tuán)隊(duì)里里的測試新手,這部分人可以安排去從事交付驗(yàn)證或黑盒測試之類的工作。
軟件測試計(jì)劃管理通俗地講就是安排好測試流程。這部分內(nèi)容具體涵蓋軟件測試策劃、軟件測試技術(shù)剪裁、測試進(jìn)度管理、成本管理等幾個(gè)部分。其中測試策劃工作主要是指具體測試活動(dòng)實(shí)施之前做好策劃工作,如起草測試大綱以及測試計(jì)劃;軟件測試技術(shù)剪裁工作主要是指測試團(tuán)隊(duì)?wèi)?yīng)根據(jù)軟件項(xiàng)目的具體實(shí)際剪裁出所要實(shí)施的測試技術(shù);測試進(jìn)度管理工作主要是指排出各項(xiàng)測試的時(shí)間進(jìn)度及人員安排,如有變動(dòng)時(shí)應(yīng)做相應(yīng)調(diào)整;測試成本管理工作的內(nèi)容即開列出測試活動(dòng)中會(huì)涉及到的資源需求。CraftGS項(xiàng)目測試團(tuán)隊(duì)較好地按照上述要求,完成了軟件測試計(jì)劃管理。
軟件缺陷(錯(cuò)誤)跟蹤管理通俗地講就是確保發(fā)現(xiàn)的缺陷(錯(cuò)誤)已經(jīng)被開發(fā)團(tuán)隊(duì)糾正或處理過并且沒有引入新的缺陷(錯(cuò)誤)。具體來講,當(dāng)測試團(tuán)隊(duì)通過各種途徑發(fā)現(xiàn)了文檔或代碼中的缺陷或錯(cuò)誤以后,并不是交一份測試報(bào)告就草草了事,而是在遞交報(bào)告以后繼續(xù)督促開發(fā)團(tuán)隊(duì)及時(shí)關(guān)閉已知缺陷或錯(cuò)誤(當(dāng)然,如有必要應(yīng)對(duì)這些缺陷、錯(cuò)誤做嚴(yán)重程度排序,以便開發(fā)團(tuán)隊(duì)能視輕重緩急安排處理順序)。當(dāng)開發(fā)團(tuán)隊(duì)關(guān)閉了測試報(bào)告中的缺陷(錯(cuò)誤)以后,測試團(tuán)隊(duì)還需驗(yàn)證開發(fā)團(tuán)隊(duì)在關(guān)閉過程中有沒有引入新的錯(cuò)誤。通常,這個(gè)過程稱為回歸測試?;貧w測試如發(fā)現(xiàn)問題,繼續(xù)報(bào)開發(fā)團(tuán)組,按上述流程循環(huán),直至回歸測試最終通過。這部分工作在CraftGS項(xiàng)目中是使用自動(dòng)化的測試管理工具完成的,(市面上可選擇的工具有華創(chuàng)缺陷管理系統(tǒng)(BMS) 和Rational ClearQuest等等),這么做非常有效率。
軟件測試件管理通俗地講就是指努力建設(shè)好測試團(tuán)隊(duì)的財(cái)富庫并對(duì)測試團(tuán)隊(duì)成員進(jìn)行技能培訓(xùn)以幫助他們能使用好這個(gè)財(cái)富庫。這里,財(cái)富庫是指軟件測試件。測試件(Testware,指測試工作形成的產(chǎn)品)是一個(gè)不常見到的詞匯,它包括是測試團(tuán)隊(duì)在長期實(shí)踐過程中逐步積累起來的經(jīng)驗(yàn)教訓(xùn)、測試技巧、測試工具、規(guī)格文檔以及一些經(jīng)過少量修改能推廣至通用的測試腳本程序。測試件管理工作做得越好,測試團(tuán)隊(duì)在實(shí)際測試過程中就能越少走彎路,測試團(tuán)隊(duì)內(nèi)部的知識(shí)交流和傳遞就越充分,測試腳本或規(guī)格文檔的重復(fù)開發(fā)工作也就能被有效地避免。軟件測試件管理工作包括兩部分,一是建設(shè),另一個(gè)是培訓(xùn)。建設(shè)工作大抵是收集各類測試外文檔、測試工具、測試腳本,也包括收集整理測試人員的會(huì)議發(fā)言、總結(jié)報(bào)告、技術(shù)心得等等。培訓(xùn)工作大抵是通過技術(shù)講座、正式或非正式團(tuán)隊(duì)會(huì)議、印發(fā)學(xué)習(xí)資料等形式進(jìn)行。CraftGS項(xiàng)目組考慮到測試團(tuán)隊(duì)的長久發(fā)展,較好地完成了測試件管理,測試團(tuán)隊(duì)成員的技能水平在較短的時(shí)間內(nèi)都有了非常迅速的進(jìn)步。
5 結(jié)語:高可靠性軟件測試技術(shù)需要更多關(guān)注
以上筆者結(jié)合CraftGS項(xiàng)目對(duì)從測試技術(shù)和測試管理的角度對(duì)高可靠性軟件測試方案一個(gè)略粗淺的探討。筆者希望此文的發(fā)表能對(duì)相關(guān)軟件企業(yè)和軟件項(xiàng)目實(shí)施軟件測試技術(shù)起一定的參考和指導(dǎo)作用。需要說明的是目前對(duì)高可靠性軟件如何實(shí)施軟件測試技術(shù)仍是一個(gè)頗不成熟的領(lǐng)域,缺少一種體系化的方法。各個(gè)企業(yè)可能都有一定的經(jīng)驗(yàn)積累,不妨整理出來,相互借鑒。
電子發(fā)燒友App

















評(píng)論