在實(shí)際的項(xiàng)目測試過程中,選擇和確定測試模型只是我們實(shí)施測試的第一步。 另外,我們必須弄清楚在整個測試過程中需要進(jìn)行哪些類型的測試,并根據(jù)不同的測試類型執(zhí)行相應(yīng)的測試,以便我們的測試工作能夠有效地進(jìn)行。那么軟件測試是如何分類的?下文總結(jié)了5點(diǎn),即根據(jù)項(xiàng)目流程階段劃分軟件測試;白盒測試、黑盒測試、灰盒測試;功能測試與性能測試;手工測試與自動化測試;冒煙測試、回歸測試、隨機(jī)測試、探索性測試和安全測試。
那么軟件測試是如何分類的?
1.根據(jù)項(xiàng)目流程階段劃分軟件測試
是一個典型的“V”模型軟件開發(fā)流程,各項(xiàng)軟件測試工作是在項(xiàng)目開發(fā)流程中循序漸進(jìn)進(jìn)行的。下面將介紹各個階段測試的含義。
·單元測試:單元測試是對程序中的單個子程序或具有獨(dú)立功能的代碼段進(jìn)行測試的過程。
·集成測試:集成測試是在單元測試的基礎(chǔ)上,先通過單元模塊組裝成系統(tǒng)或子系統(tǒng),再進(jìn)行測試。重點(diǎn)是檢查模塊之間的接口是否正確。
·系統(tǒng)測試:系統(tǒng)測試是針對整個產(chǎn)品系統(tǒng)進(jìn)行的測試,驗(yàn)證系統(tǒng)是否滿足需求規(guī)格的定義,以及軟件系統(tǒng)的正確性和性能等是否滿足其需求規(guī)格的要求。
·驗(yàn)收測試:驗(yàn)收測試是部署軟件之前的最后一個測試階段。驗(yàn)收測試的目的是確保軟件準(zhǔn)備就緒,向軟件購買者展示該軟件系統(tǒng)能夠滿足用戶的需求。
2.白盒測試、黑盒測試、灰盒測試
白盒測試與黑盒測試,主要是根據(jù)軟件測試工作中對軟件代碼的可見程度進(jìn)行的劃分。這也是軟件測試領(lǐng)域中最基本的概念之一。
·黑盒測試
黑盒測試,指的是把被測的軟件看作一個黑盒子,我們不去關(guān)心盒子里面的結(jié)構(gòu)是什么樣子的,只關(guān)心軟件的輸入數(shù)據(jù)和輸出結(jié)果。它只檢查程序呈現(xiàn)給用戶的功能是否按照需求規(guī)格說明書的規(guī)定正常使用、程序是否能接收輸入數(shù)據(jù)并產(chǎn)生正確的輸出信息。黑盒測試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),主要針對軟件界面和軟件功能進(jìn)行測試。
·白盒測試
白盒測試,指的是把盒子打開,去研究里面的源代碼和程序執(zhí)行結(jié)果。它是按照程序內(nèi)部的結(jié)構(gòu)測試程序,通過測試來檢測產(chǎn)品內(nèi)部動作是否按照設(shè)計(jì)規(guī)格說明書的規(guī)定正常進(jìn)行,檢驗(yàn)程序中的每條邏輯路徑是否都能按預(yù)定要求正確工作。
·灰盒測試
灰盒測試介于黑盒測試與白盒測試之間。
可以這樣理解,灰盒測試既關(guān)注輸出對于輸入的正確性,同時也關(guān)注內(nèi)部表現(xiàn)。但這種關(guān)注不像白盒測試那樣詳細(xì)、完整,它只是通過一些表征性的現(xiàn)象、事件、標(biāo)志來判斷內(nèi)部的運(yùn)行狀態(tài)。有時候輸出是正確的,但內(nèi)部其實(shí)已經(jīng)錯誤了,這種情況非常多。如果每次都通過白盒測試來操作,效率會很低,因此需要采取灰盒測試的方法。
3.功能測試與性能測試
從軟件的不同測試面可以劃分為功能測試與性能測試。
·功能測試
功能測試主要檢查實(shí)際功能是否符合用戶的需求,因此測試的大部分工作也是圍繞軟件的功能進(jìn)行。設(shè)計(jì)軟件的目的就是滿足用戶對其功能的需求,如果偏離了這個目的,則任何測試工作都是沒有意義的。
功能測試又可以細(xì)分為很多種:邏輯功能測試、界面測試、易用性測試、安裝測試、兼容性測試等。
·性能測試
性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負(fù)載條件來對系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行的測試。
軟件的性能包括很多方面,主要有時間性能和空間性能兩種。
時間性能:主要是指軟件的一個具體的響應(yīng)時間。例如一個登錄所需要的時間,一個商品交易所需要的時間等。當(dāng)然,拋開具體的測試環(huán)境,來分析一次事務(wù)的響應(yīng)時間是沒有任何意義的,它需要在搭建好的一個具體且獨(dú)立的測試環(huán)境下進(jìn)行。
空間性能:主要指軟件運(yùn)行時所消耗的系統(tǒng)資源,例如硬件資源,CPU、內(nèi)存、網(wǎng)絡(luò)帶寬消耗等。
4.手工測試與自動化測試
從對軟件測試工作的自動化程度可以劃分為手工測試與自動化測試。
·手工測試
手工測試就是由測試人員一個一個地去執(zhí)行測試用例,通過鍵盤鼠標(biāo)等輸入一些參數(shù),并查看返回結(jié)果是否符合預(yù)期結(jié)果。
手工測試并非專業(yè)術(shù)語,手工測試通常是指我們在系統(tǒng)測試階段所進(jìn)行的功能測試,為了更明顯地與自動化測試進(jìn)行區(qū)分,這里使用了手工測試這種說法。
·自動化測試
自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程。通常,在設(shè)計(jì)測試用例并通過評審之后,由測試人員根據(jù)測試用例中描述的規(guī)則流程一步步執(zhí)行測試,把得到的實(shí)際結(jié)果與期望結(jié)果進(jìn)行比較。在此過程中,為了節(jié)省人力、時間和硬件資源,提高測試效率,便引入了自動化測試的概念。
自動化測試又可分為:功能自動化測試與性能自動化測試。
功能自動化測試:是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程。通過測試工具錄制/編寫測試腳本,對軟件的功能進(jìn)行測試,并驗(yàn)證測試結(jié)果是否正確,從而代替部分的手工測試工作,達(dá)到節(jié)約人力成本和時間成本的目的。
性能自動化測試:通過性能工具來模擬成千上萬的虛擬用戶向系統(tǒng)發(fā)送請求,從而驗(yàn)證系統(tǒng)的處理能力。
5.冒煙測試、回歸測試、隨機(jī)測試、探索性測試和安全測試
這幾種測試出現(xiàn)在軟件測試的周期中,既不算具體明確的測試階段,也不是具體的測試方法。
·冒煙測試
是指在對一個新版本進(jìn)行大規(guī)模的系統(tǒng)測試之前,先驗(yàn)證一下軟件的基本功能是否實(shí)現(xiàn),是否具備可測性。
引入到軟件測試中,就是指測試小組在正式測試一個新版本之前,先投入較少的人力和時間驗(yàn)證一個軟件的主要功能,如果主要功能都沒有運(yùn)行通過,則打回開發(fā)組重新開發(fā)。這樣做的好處是可以節(jié)省時間和人力投入到不可測的項(xiàng)目中。
·回歸測試
回歸測試是指修改了舊代碼后,重新進(jìn)行測試以確認(rèn)修改后沒有引入新的錯誤或?qū)е缕渌a產(chǎn)生錯誤。
回歸測試一般是在進(jìn)行第二輪軟件測試時開始的,驗(yàn)證第一輪軟件測試中發(fā)現(xiàn)的問題是否得到修復(fù)。當(dāng)然,回歸也是一個循環(huán)的過程,如果回歸的問題通不過,則需要開發(fā)人員修改后再次進(jìn)行回歸,直到所有問題回歸通過為止。
·隨機(jī)測試
是指測試中的所有輸入數(shù)據(jù)都是隨機(jī)生成的,其目的是模擬用戶的真實(shí)操作,并發(fā)現(xiàn)一些邊緣性的錯誤。
隨機(jī)測試可以發(fā)現(xiàn)一些隱蔽的錯誤,但是也有很多缺點(diǎn),例如測試不系統(tǒng)、無法統(tǒng)計(jì)代碼覆蓋率和需求覆蓋率、發(fā)現(xiàn)的問題難以重現(xiàn)等。一般是放在測試的最后執(zhí)行。隨機(jī)測試更專業(yè)的升級版叫做探索性測試。
·探索性測試
探索性測試可以說是一種測試思維技術(shù),它沒有很多實(shí)際的測試方法、技術(shù)和工具,但卻是所有測試人員都應(yīng)該掌握的一種測試思維方式。探索性測試強(qiáng)調(diào)測試人員的主觀能動性,拋棄繁雜的測試計(jì)劃和測試用例設(shè)計(jì)過程,強(qiáng)調(diào)在碰到問題時及時改變測試策略。
·安全測試
安全測試是在IT軟件產(chǎn)品的生命周期中,特別是產(chǎn)品開發(fā)基本完成至發(fā)布階段,對產(chǎn)品進(jìn)行檢驗(yàn)以驗(yàn)證產(chǎn)品符合安全需求定義和產(chǎn)品質(zhì)量標(biāo)準(zhǔn)的過程。
安全測試現(xiàn)在越來越受到企業(yè)的關(guān)注和重視,因?yàn)橛捎诎踩詥栴}造成的后果是不可估量的,尤其是互聯(lián)網(wǎng)產(chǎn)品,最容易遭受各種安全攻擊。
以上就是關(guān)于軟件測試是如何分類的全部內(nèi)容,想了解更多關(guān)于軟件測試的信息,請繼續(xù)關(guān)注中培偉業(yè)。