張 鑫
(江南機電設(shè)計研究所,貴州貴陽,550000)
集成測試方法淺析
張 鑫
(江南機電設(shè)計研究所,貴州貴陽,550000)
軟件開發(fā)過程中,為了保證每一功能模塊組裝在一起后能夠很好地協(xié)調(diào)工作,所以在完成功能模塊的單元測試后,需對各功能模塊集成后的系統(tǒng)開展系統(tǒng)集成測試。文章以增量式和非增量式兩種策略對集成測試的測試方法進行了分類,并對每種方法的測試執(zhí)行過程、測試方法的優(yōu)缺點分別進行了闡述。
集成測試;增量式;非增量式
集成(Integration)是指把多個單元組合起來形成更大的單元。集成測試(Integration Testing)是在假定各個軟件單元已經(jīng)通過了單元測試的前提下,檢查各個軟件單元之間的相互接口是否正確,驗證模塊間的數(shù)據(jù)傳遞是否正確;一個模塊的功能是否會對另一個模塊的功能產(chǎn)生錯誤的影響;全局數(shù)據(jù)結(jié)構(gòu)是否有問題,會不會被異常修改;塊組合起來的功能能否滿足要求;集成后,各個模塊的累積誤差是否會擴大,是否達到不可接受的程度。選擇什么方式把模塊組裝起來形成一個可運行的系統(tǒng),直接影響到模塊測試用例的形式,所用測試工具的類型,模塊編號的次序和測試的次序。
進行軟件集成測試的測試用例包括白盒法、黑盒法等多種設(shè)計技術(shù)。軟件集成也有多種不同的策略。這些策略總的來說可以分為非增量方式和增量方式兩種。
1.1 非增量方式
為了盡可能縮短測試時間,使用最少的測試用例來驗證系統(tǒng),非增量方式采用先測試好每一個軟件單元,然后依次集成在一起再測試整個程序。該方式是一種很直接、原始的集成方式,它把所有通過單元測試的模塊一塊兒地全部集成在一起進行測試,未考慮組件之間的互相依賴性及可能存在的風險,采用該種方法進行集成測試的優(yōu)點是可以并行調(diào)試所有模塊,需要的測試用例數(shù)目少,測試方法簡單、易行。
1.2 增量方式
增量方式指在集成測試過程中,逐步把一個要被集成的軟件單元或部件,同已測試好的軟件部件結(jié)合起來測試。增量方式主要包括自頂向下、自底向上、自頂向下與自低向上相結(jié)合等方式。
自頂向下集成法是一個模塊一個模塊地集成軟件的方法。按照軟件控制的結(jié)構(gòu),從主控模塊開始測試,向下地逐個把子模塊連結(jié)起來進行測試。直至所有模塊都已完成組裝測試。
自底向上集成方法是從軟件結(jié)構(gòu)中最底層的、最基本的軟件單元開始進行集成和測試。在逐步向上集成過程中,下層模塊總是存在的,不再需要樁模塊,但卻需要調(diào)用這些模塊開展工作的驅(qū)動模塊。
“三明治”方法是一種從兩頭向中間逼近的混合時集成方法。測試過程為:對上層模塊采取自頂向下測試;對關(guān)鍵模塊或子系統(tǒng)采取自底向上測試。
2.1 非增量方式
非增量方式進行集成測試的目的是盡可能縮短測試時間,使用最少的測試用例驗證系統(tǒng)。該方法的優(yōu)點是可以并行調(diào)試所有模塊,需要的測試用例數(shù)目少。測試方法簡單、易行。缺點是不能充分對各個模塊之間的接口進行充分測試。不能很好的對全局數(shù)據(jù)結(jié)構(gòu)進行測試。測試過程中如果一次集成的模塊數(shù)量多,集成測試后可能會出現(xiàn)大量的錯誤。并且修改了一處錯誤之后,很可能新增更多的新錯誤,新舊錯誤混雜,給程序的完善帶來很大的麻煩。即使集成測試通過,也會遺漏很多錯誤。非增量式集成測試方法主要適用只需要修改或增加少數(shù)幾個模塊的前期產(chǎn)品穩(wěn)定的項目和功能少,模塊數(shù)量不多,程序邏輯簡單,并且每個組件都已經(jīng)過充分單元測試的小型項目。
2.2 增量方式
2.2.1 自頂向下集成
自頂向下集成的增量集成方法主要是從頂層控制(主控模塊)開始,采用同設(shè)計順序一樣的思路對被測系統(tǒng)進行測試,來驗證系統(tǒng)的穩(wěn)定性,該方法的優(yōu)點:
a)在測試的過程中,可以較早地驗證主要的控制和判斷點。
b)選擇深度優(yōu)先組合方式,可以首先實現(xiàn)和驗證一個完整的軟件功能,可先對邏輯輸入的分支進行組裝和測試,檢查和克服潛藏的錯誤和缺陷。
c)驗證其功能的正確性,為此后主要分支的組裝和測試提供保證。
d)能夠較早的驗證功能可行性,給開發(fā)者和用戶帶來成功的信心。
e)只有在個別情況下,才需要驅(qū)動程序(最多不超過一個),減少了測試驅(qū)動程序開發(fā)和維護的費用。
f) 可以和開發(fā)設(shè)計工作一起并行執(zhí)行集成測試,能夠靈活的適應(yīng)目標環(huán)境。
g)容易進行故障隔離和錯誤定位。
缺點:
a)在測試時需要為每個模塊的下層模塊提供樁模塊,樁模塊的開發(fā)和維護費用大。
b)底層組件的需求變更可能會影響到全局組件,需要修改整個系統(tǒng)的多個上層模塊。
c)要求控制模塊具有比較高的可測試性。
d)可能會導致底層模塊特別是被重用的模塊測試不夠充分。
自頂向下集成的增量集成測試方式一般適合控制結(jié)構(gòu)比較清晰和穩(wěn)定的應(yīng)用程序和系統(tǒng)高層的模塊接口變化的可能性比較小的程序。
2.2.2 自底向上集成
自底向上集成的增量式集成測試方法是從依賴性最小的底層模塊開始,按照層次結(jié)構(gòu)圖,逐層向上集成,來驗證系統(tǒng)的穩(wěn)定性。
該方法的優(yōu)點:
a)即使數(shù)據(jù)流并未構(gòu)成有向的非環(huán)狀圖,生成測試數(shù)據(jù)也沒有困難。
b)可以盡早的驗證底層模塊的行為,提高了測試效率。
c)對實際被測模塊的可測試性要求要少。
d)減少了樁模塊的工作量。
e)容易對錯誤進行定位。
缺點:
a)直到最后一個模塊加進去之后才能看到整個系統(tǒng)的框架。
b)只有到測試過程的后期才能發(fā)現(xiàn)時序問題和資源競爭問題。
c)驅(qū)動模塊的設(shè)計工作量大。
d)不能被及時發(fā)現(xiàn)高層模塊設(shè)計上的錯誤。
自底向上集成的增量式集成測試方法主要適合底層模塊接口比較穩(wěn)定的產(chǎn)品、高層模塊接口變更比較頻繁的產(chǎn)品和底層模塊開發(fā)和單元測試工作完成較早的產(chǎn)品。
2.2.3 三明治集成
三明治集成測試方式是綜合利用自頂向下和自底向上兩中集成測試策略的優(yōu)點的測試方法,該方法的優(yōu)點:除了具有自頂向下和自底向上兩種集成策略的優(yōu)點之外,測試過程中還可以運用一定的技巧,減少了樁模塊和驅(qū)動模塊的開發(fā),提高測試效率。但在被集成之前,中間層不能盡早得到充分的測試。該方法適用最廣,多數(shù)軟件開發(fā)項目都可以應(yīng)用此集成測試策略。
在軟件開發(fā)過程中要根據(jù)概要設(shè)計盡早進行集成測試計劃,不同集成測試的策略和方法各有優(yōu)缺點,所以在選擇集成測試策略時,可以根據(jù)各種集成測試策略的特點把各種集成測試策略結(jié)合起來;并綜合考慮軟件質(zhì)量、開發(fā)成本和開發(fā)進度這三個因素之間的關(guān)系,要根據(jù)軟件的體系結(jié)構(gòu)特點,來選取集成測試策略,盡可能減少樁模塊和驅(qū)動模塊開發(fā)的工作量,并同時要兼顧是否容易進行軟件缺陷定位。
[1]周燕,宋敬華.面向?qū)ο蟮募蓽y試測試順序的研究[J].計算機測量與控制,2010,9.
[2]朱家云.淺析軟件測試[J].信息系統(tǒng)工程,2011,4.
[3]劉欣.軟件測試方法分析與實踐[D].北京郵電大學,2009.
Integration test method is easy to analyze
Zhang Xin
(Jiangnan mechanical and electrical design institute,Guiyang Guizhou,550000)
The software development process, in order to ensure that each function module together after coordination work well, so, after fulfilling the function module of the unit test for each function module integration system to carry out the system integration test. Based on incremental and non incremental two strategies on test methods for the classification of the integration test, and test execution of each method are the advantages and disadvantages of process, test methods, respectively.
integration testing; Incremental; The incremental