軟件測試
1.什么是軟件測試
軟件測試指的是軟件產(chǎn)品在投放市場前,對于軟件產(chǎn)品所進(jìn)行的需求的分析,設(shè)計的規(guī)格和編碼等內(nèi)容的復(fù)審,是確保軟件產(chǎn)品質(zhì)量的關(guān)鍵性步驟。
2.軟件測試的特點[1]
在實際的操作過程當(dāng)中軟件測試難度比較大,而且環(huán)節(jié)也比較復(fù)雜。同時它還具有比較可觀的經(jīng)濟性。隨著軟件的大規(guī)?;瘯胁粩嘣鲩L的復(fù)雜的測試要求等待測試工程師去完成。
它是一個微妙的、高技術(shù)含量的測試工作。測試過程中出現(xiàn)差錯就會考慮不周到產(chǎn)生不必要的誤差。這種誤差可能造成軟件徹底的崩潰。常見的問題根源可以有以下兩種分析。
1.完全測試是不現(xiàn)實的
測試軟件的過程中。不可能完完全全的檢測到所有的漏洞和不足,在實際工作中,往往不能做到全面而且徹底的檢測。我們采取相應(yīng)的手段和方法來完成盡可能多的測試數(shù)據(jù)和軟件結(jié)構(gòu)。
在人們考慮的所有情況下,為了保證其穩(wěn)定性,就會讓所有執(zhí)行的代碼全部進(jìn)行測試,但是這種方式也存在一定的問題,比如大量的輸入,大量的輸出以及執(zhí)行的路程比較復(fù)雜,都會引起最終的測試效果。
2.軟件測試的風(fēng)險性
軟件測試的具體目的合理的軟件測試可以節(jié)省大量的時間人員和資源,但是軟件測試過程中存在著很大的困難和風(fēng)險。盡人皆知,軟件測試有很多種風(fēng)險。可以分為環(huán)境不達(dá)標(biāo)、人員技術(shù)不夠和管理時間混亂。風(fēng)險表現(xiàn)為測試環(huán)境不到位和測試時間和人員冗余太多。在控制軟件測試的風(fēng)險時候,開發(fā)人員采取以下方法:與用戶相互協(xié)商,降低對優(yōu)先級不高的特性和功能,將以后的冗余的功能去除,增加測試人員和測試工具;控制軟件發(fā)布的時間,時間允許的情況下,推遲軟件發(fā)布的時間,刪除影響風(fēng)險發(fā)生的不必要的功能和環(huán)境;增加測試資源,通過事先準(zhǔn)備好的所有條目,設(shè)置好測試環(huán)境,按照列出的條目逐個逐個的進(jìn)行檢查和測試。要想真正的回避風(fēng)險是不能的,必須制定一個合理的測試項目的管理方案,針對常見的風(fēng)險進(jìn)行分類匯總,建立防患于未然和預(yù)防為主的管理意識。
3.軟件測試的目的
軟件測試的具體目的決定著如何來組織進(jìn)行測試工作。通常情況下軟件測試工作的目的主要有:
一是為發(fā)現(xiàn)程序的錯誤從而進(jìn)行測試,
二是測試用以證明軟件的程序存在錯誤,并非證明該程序不存在錯誤;
三是好測試其功能在于可以發(fā)現(xiàn)以前沒有發(fā)現(xiàn)的一些錯誤等等。因此,必須關(guān)注測試的具體目的,進(jìn)行測試用例的選擇時要遵循經(jīng)濟性原則。
4.軟件測試的分類
軟件測試通??梢苑譃?a href="/wiki/%E9%BB%91%E7%9B%92%E5%BC%8F%E6%B5%8B%E8%AF%95" title="黑盒式測試">黑盒式測試與白盒式測試兩種類型。黑盒式測試就是將軟件系統(tǒng)當(dāng)作黑盒子而不去考慮相關(guān)程序內(nèi)在的邏輯,按照需求規(guī)格的說明書要求對程序功能進(jìn)行檢查,看能否達(dá)到功能說明的要求。白盒式測試就是允許實施測試的人員根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)和相關(guān)信息進(jìn)行測試用例的設(shè)計與選擇,測試程序邏輯的路徑。按照前后的過程分類,測試步驟可分成:單元測試,組裝(集成)測試,確認(rèn)測試及系統(tǒng)測試等。
5.軟件測試的要求[2]
1.客觀性
對軟件測試和軟件中的錯誤必須持客觀的態(tài)度,避免先入為主,盡量讓第三方或者獨立的部門進(jìn)行測試,這樣既能以揭露軟件中錯誤的態(tài)度工作,也能不受發(fā)現(xiàn)的錯誤的影響。經(jīng)濟上的獨立性使測試有更充分的條件按測試要求去完成。
2.專業(yè)性
軟件測試是技術(shù)含量很高的工作,既要有軟件相關(guān)知識,還要具備相關(guān)管理能力,這就需要有專業(yè)隊伍,并經(jīng)過大量的測試實踐。專業(yè)化分工是提高測試水平、保證測試質(zhì)量、充分發(fā)揮測試效應(yīng)的必然途徑。
3.權(quán)威性
由于專業(yè)優(yōu)勢,獨立測試工作形成的測試結(jié)果更具信服力,而測試結(jié)果常常與軟件的質(zhì)量評價聯(lián)系在一起,專業(yè)化的獨立測試機構(gòu)的評價更客觀、公正和具有權(quán)威性。
4.資源保證
獨立測試機構(gòu)的主要任務(wù)是進(jìn)行獨立測試工作,這使得測試工作在經(jīng)費、人力和時間等方面更有保證,不會因為開發(fā)的壓力而減少對測試的投入,進(jìn)而降低測試的有效性??梢员苊忾_發(fā)單位側(cè)重軟件開發(fā)而對測試工作產(chǎn)生不利的影響。
6.軟件測試的內(nèi)容[2]
軟件測試主要工作內(nèi)容是驗證和確認(rèn)。驗證是保證軟件正確地實現(xiàn)了一些特定功能的一系列活動,即保證軟件做了你所期望的事情。驗證確定軟件生存周期中的一個給定階段的產(chǎn)品是否達(dá)到前階段確立的需求的過程;驗證程序正確性的形式證明,即采用形式理論證明程序符號設(shè)計規(guī)約規(guī)定的過程;評市、審查、測試、檢查、審計等各類活動,或?qū)δ承┓?wù)或文件等是否和規(guī)定的需求相一致進(jìn)行判斷和提出報告。
確認(rèn)是一系列的活動和過程,目的是想證實在一個給定的外部環(huán)境中軟件的邏輯正確性。即保證軟件以正確的方式來做了這個事件:靜態(tài)確認(rèn),不在計算機上實際執(zhí)行程序,通過人工或程序分析來證明軟件的正確性;動態(tài)確認(rèn),通過執(zhí)行程序做分析,測試程序的動態(tài)行為,以證實軟件是否存在問題。軟件測試的對象不僅僅是程序測試,軟件測試應(yīng)該包括整個軟件開發(fā)期間各個階段所產(chǎn)生的文檔,如需求規(guī)格說明、概要設(shè)計文檔、詳細(xì)設(shè)計文檔,當(dāng)然軟件測試的主要對象還是源程序。
軟件測試,按照測試過程可分為單元測試、集成測試、確認(rèn)測試及系統(tǒng)測試等;按照測試內(nèi)容分可分為功能測試、性能測試、界面測試、鏈接測試等。
7.軟件測試的步驟[2]
(1)測試計劃。根據(jù)用戶需求報告中關(guān)于功能要求和性能指標(biāo)的規(guī)格說明書,定義相應(yīng)的測試需求報告,即制訂黑盒測試的最高標(biāo)準(zhǔn);同時,適當(dāng)選擇測試內(nèi)容,合理安排測試人員、測試時間及測試資源等。
(2)測試設(shè)計。將測試計劃階段制訂的測試需求分解、細(xì)化為若干個可執(zhí)行的測試過程,并為每個測試過程選擇適當(dāng)?shù)?a href="/wiki/%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B" title="測試用例">測試用例。
(3)測試開發(fā)。建立可重復(fù)使用的自動測試過程。
(4)測試執(zhí)行。執(zhí)行測試開發(fā)階段建立的自動測試過程,并對所發(fā)現(xiàn)的缺陷進(jìn)行跟蹤管理。測試人員應(yīng)本著科學(xué)負(fù)責(zé)的態(tài)度,一步一個腳印地進(jìn)行測試。
(5)測試評估。結(jié)合量化的測試覆蓋域及缺陷跟蹤報告,對于應(yīng)用軟件的質(zhì)量和開發(fā)團(tuán)隊的工作進(jìn)度及工作效率進(jìn)行綜合評價。
8.軟件測試的過程[1]
軟件的測試過程根據(jù)階段的不同可以分為以下幾種測試階段:
(1)單元測試:這個測試過程是測試的最初階段,測試的主要對象就是單元。通過單元的測試可以將每個模塊的的性能摸查清楚。在實際的操作過程中為了提高測試的有效性,一般采用多種單元測試的方式,比如最常使用的就是選取白盒的測試方法。
(2)集成測試:也稱組裝測試。這一步測試是在單元測試過程之后來進(jìn)行,屬于測試的關(guān)鍵環(huán)節(jié)。各個測試結(jié)束的模塊進(jìn)行綜合分析,組裝成比較大的模塊進(jìn)行系統(tǒng)集成分析測試。各個系統(tǒng)之間的接口和連接代碼可以被檢測和分析,最常見的方式就是黑盒測試。
(3)確認(rèn)測試:這個測試階段是軟件測試的比較核心的一個模塊,這一測試過程是發(fā)生在集成測試之后的測試過程,這一測試過程被用來仿真軟件的功能和參數(shù)以及某些特點能不能實現(xiàn)使用者的特殊要求通過確認(rèn)測試可以確定用戶的工作開展與否。
(4)系統(tǒng)測試:也稱為產(chǎn)品測試。確認(rèn)測試在滿足用戶的要求之后,系統(tǒng)測試要進(jìn)行檢測實際環(huán)境和軟件能夠很好的結(jié)合協(xié)調(diào)工作。這種測試過程,有必要進(jìn)行相應(yīng)的硬件平臺搭建和模擬仿真實驗。與此同時,相應(yīng)的軟件系統(tǒng)和客戶應(yīng)該參與進(jìn)來進(jìn)行測試和評估。綜合可以說,如果軟件測試通過以上幾種測試最終達(dá)到了系統(tǒng)測試,那么這個產(chǎn)品基本就符合要求了。
(5)驗收測試:測試過程的最后一個階段。這一階段主要檢測軟件安裝之后,用戶能否使用該軟件以及軟件的所有功能。軟件和硬件能夠使用戶放心使用和持續(xù)運行是檢驗驗收效果的關(guān)鍵。軟件設(shè)計者也應(yīng)該參與這一步的測試和分析。