李艷艷 劉琴
摘要:隨著信息技術(shù)的飛速發(fā)展,現(xiàn)代軟件的規(guī)模越來越大,復(fù)雜程度也越來越高,軟件產(chǎn)品的質(zhì)量成為人們共同關(guān)注的焦點。軟件測試是保證質(zhì)量的重要手段,單元測試是軟件測試過程中最基本的測試,主要發(fā)現(xiàn)編碼和詳細(xì)設(shè)計中產(chǎn)生的錯誤。結(jié)合當(dāng)前軟件單元測試技術(shù)的研究現(xiàn)狀,本文首先對軟件測試的內(nèi)涵進(jìn)行了分析,其次對單元測試的詳細(xì)過程進(jìn)行了分析,最后對單元測試用例的5種方法進(jìn)行了說明。
關(guān)鍵詞:軟件測試;單元測試;測試用例;用例設(shè)計方法
中圖分類號:TP311.53?? 文獻(xiàn)標(biāo)識碼:A?? 文章編號:1672-9129(2020)04-0029-01
Abstract:With the rapid development of information technology, the scale of modern software is becoming larger and larger, the complexity is also becoming higher and higher, the quality of software products has become the focus of common concern. Software testing is an important means to ensure the quality, and unit testing is the most basic test in the process of software testing, mainly discovering errors in coding and detailed design. Combined with the current research status of software unit test technology, this paper first analyzes the connotation of software testing, then analyzes the detailed process of unit test, and finally explains the five methods of unit test cases.
Key words:software test;Unit testing;Test cases;Use case design approach
單元測試是整個軟件測試過程中最基本的測試,軟件單元是指詳細(xì)設(shè)計說明中的最小成員,因此軟件單元的質(zhì)量是整個軟件質(zhì)量的基礎(chǔ)。單元測試是測試過程中直接與源程序相關(guān)的測試,它對其它軟件測試活動的進(jìn)行有著重要的影響。軟件單元測試一般在軟件的開發(fā)階段開展,目的是檢驗每個軟件單元能否正確的實現(xiàn)設(shè)計說明中詳細(xì)設(shè)計部分的功能、性能和其他設(shè)計約束等要求,發(fā)現(xiàn)單元內(nèi)可能存在的各種錯誤。
1 軟件測試
軟件測試主要指的是通過對相關(guān)測試工具的使用,按照一定的測試程序和過程對軟件系統(tǒng)的功能和性能等進(jìn)行測試、分析、評估可能出現(xiàn)的問題,發(fā)現(xiàn)開發(fā)錯誤并進(jìn)行跟蹤,最主要就是對用戶的需求進(jìn)行全面的滿足。具體地說,軟件測試是依據(jù)軟件研發(fā)各個階段的規(guī)格說明和源代碼的內(nèi)部結(jié)構(gòu)而專門設(shè)計一批測試用例,然后去執(zhí)行這些測試用例,用以發(fā)現(xiàn)軟件缺陷的過程,軟件測試是提高軟件質(zhì)量的重要手段。軟件測試的階段一般包括:單元測試、部件測試、配置項測試和系統(tǒng)測試,本文著重對單元測試進(jìn)行探討。
2 單元測試
所謂單元測試又被稱之為模塊測試,是以軟件設(shè)計說明的最小單元作為測試對象-程序模塊來驗證其正確性的測試。單元測試主要驗證函數(shù)單元是否正確的實現(xiàn)了軟件詳細(xì)設(shè)計說明中的功能、性能、以及其它設(shè)計約束等要求,發(fā)現(xiàn)程序設(shè)計與實現(xiàn)過程中可能存在的缺陷。單元測試根據(jù)要求一般需開展:靜態(tài)分析、文檔審查、代碼審查以及動態(tài)測試。
文檔審查是對照文檔審查單,審查文檔的完整性、一致性和準(zhǔn)確性。靜態(tài)分析是指使用測試工具通過分析被測源代碼的數(shù)據(jù)流和控制流等方面,檢查源代碼是否符合代碼編碼規(guī)范或者是否存在軟件缺陷。代碼審查指依據(jù)代碼審查單,對被測軟件進(jìn)行人工審查,重點關(guān)注不能通過測試工具自動發(fā)現(xiàn)的各種典型問題,如算法設(shè)計的問題、代碼實現(xiàn)過程與設(shè)計文檔不符的問題等。動態(tài)測試需要設(shè)計測試用例并執(zhí)行這些用例,目的是發(fā)現(xiàn)程序運行過程中的一些問題。動態(tài)測試一般需要開展功能測試、邏輯測試和性能測試。
功能測試主要驗證軟件是否實現(xiàn)了軟件設(shè)計說明中的功能要求,功能測試不僅需要測試正常的功能,更要考慮功能的異常。特別注意不能忽略功能之間交叉影響,應(yīng)考慮從功能設(shè)計實現(xiàn)角度,考慮功能的組合的測試。
邏輯測試,又稱覆蓋測試,是指測試軟件內(nèi)部邏輯結(jié)構(gòu)的合理性、實現(xiàn)的正確性,是一種白盒測試技術(shù)。邏輯測試應(yīng)該首先在測試大綱或計劃中明確覆蓋率的目標(biāo),對于未覆蓋的模塊,應(yīng)該分析原因,必要時,可以采用代碼審查輔助提高覆蓋率。邏輯測試一般包括:語句覆蓋、判定覆蓋、條件覆蓋、MC/DC覆蓋及路徑覆蓋。
性能測試是針對軟件設(shè)計說明或者需求規(guī)格說明中的性能需求逐項進(jìn)行的測試。性能測試一般需進(jìn)行:測試程序完成功能的時間、程序運行占用的空間和計算精度。
3 單元測試用例設(shè)計方法
測試用例是為指為了某個目標(biāo)而設(shè)計的一系列測試輸入、運行條件及預(yù)期結(jié)果,以便驗證某個程序的路徑能否滿足某個特定的要求。常見的軟件測試用例設(shè)計方法有:等價類劃分、判定表、邊界值分析、錯誤推測法和正交實驗法等。
3.1等價類劃分。這種方法是指對軟件詳細(xì)設(shè)計說明中的函數(shù)模塊開展分析,把函數(shù)的輸入域劃分為若干個子集,再從每個子集中選擇具有代表性的數(shù)據(jù)形成單元測試用例。等價類可以分為有效等價類和無效等價類。有效等價類是由有意義的數(shù)據(jù)組成的集合,無效等價類是指由不合理的數(shù)據(jù)所組成的集合。
3.2判定表。又稱為策略表,基于判定表的測試,是軟件功能測試中最嚴(yán)格的一種測試方法。該方法適用于判斷邏輯復(fù)雜的情況,通過窮舉所有條件而獲得結(jié)果,對測試結(jié)果再優(yōu)化合并,就會生成一個判斷清楚的判定表。
3.3邊界值分析。長期的軟件測試工作經(jīng)驗啟示我們,大部分得軟件缺陷發(fā)生在輸出或輸入數(shù)據(jù)的邊界上,因此有必要對各種邊界設(shè)計軟件測試用例,發(fā)現(xiàn)更多的軟件缺陷。使用小于、等于或者大于邊界數(shù)值得數(shù)據(jù)√代碼金星軟件測試的方法,就是所謂的邊界值分析方法。
3.4錯誤推測法。所謂錯誤推測法,指在開展測試前,測試人員根據(jù)以往的工作經(jīng)驗,推測程序中可能存在的一些問題,然后有針對性的去設(shè)計并執(zhí)行測試用例,發(fā)現(xiàn)這些錯誤的過程。這種方法沒有比較固定的形式,根據(jù)的是個人的直覺和經(jīng)驗。
3.5正交實驗法。這種方法指的是從大量的測試點中挑選出比較具有代表性的點,然后依據(jù)正交表,開展實驗的一種用例設(shè)計方法。
使用正交實驗法設(shè)計軟件測試用例的時候,第一步根據(jù)被測代碼的設(shè)計說明找出可能影響功能實現(xiàn)的對象,把它們作為因素,而把這些因素的取值作為狀態(tài),生成一個二元因素分析表。第二步進(jìn)行正交表的狀態(tài)組合,生成測試用例的輸入集合,最終得到因果圖。
結(jié)語:單元測試及其測試用例設(shè)計方法有多種,它們的最終目標(biāo)是通過對程序進(jìn)行分析和檢查,設(shè)計出有效的測試用例,測試出程序中存在的各種錯誤,提高軟件的質(zhì)量。單元測試所做的工作比較繁瑣,程序的質(zhì)量和單元之間依賴關(guān)系都會影響軟件測試人員對源代碼的理解,從而影響軟件單元測試的測試效率,單元測試改包括對源代碼設(shè)計一系列測試用例進(jìn)而滿足一定的覆蓋率標(biāo)準(zhǔn),這項任務(wù)工作量非常大,自動化的檢測會提升單元測試的效率。
參考文獻(xiàn):
[1]劉偉,葉祥明.軟件單元測試用例設(shè)計探討[J].機(jī)械管理開發(fā),2019(02):106-109.
[2]任俊.軟件單元測試及測試用例設(shè)計[J].科技與企業(yè),2019(04):293-295.
[3]劉斌.軟件驗證與確認(rèn)[J].國防工業(yè)出版社,2011(04):31-33.