軟件的黑盒測試方法解析與優化
摘要:軟件測試是保證軟件質量的重要手段,尤其是自動化測試可以提高測試效率,降低成本。黑盒測試是針對非計算機專業人員進行的測試,為了確保測試質量,必須總結出一套適合業務人員使用的測試方法。文章從實際需要出發,對黑盒測試方法進行了分析,并提出了優化方案。希望可以降低軟件測試成本,提高測試效率,對軟件測試人員的工作有所幫助。
關鍵詞:軟件測試;黑盒測試;測試策略
引言
黑盒測試是目前軟件業界采用的主流測試方法,這種方法以業務應用為驅動,通過控制輸入及其對業務的預期影響來判斷代碼實現是否正確。 實踐證明,這是一種行之有效的測試方法。
1、黑盒測試常用技術及方法
黑盒測試方法主要運用于單元功能和性能方面的測試。其常用的技術方法有三種。
1.1 邊界值分析法
邊界值分析的基本思想是使用最小值(min)、略高于最小值(min+)、正常值(nom)、略低于最大值(max-)和最大值(max)處取輸入變量值。如果要進一步測試被測對象的健壯性,除了變量的五個邊界值外,還要通過采用一個略超過最大值(max+)和一個略小于最小值(min-)的取值來看看超過極值時系統會有什么表現。如果被測對象是多個獨立變量的函數,這些變量受物理量的限制,則很適合邊界值分析。
1.2 等價類劃分法
等價類劃分法是依據軟件的任務書、需求規格說明或設計文檔,把輸入數據范圍劃分為多個區間(即等價類),在每個等價類中選取有代表性的數據設計測試用例。劃分等價類是應用等價類劃分的關鍵,既要劃分出所有等價類,也要確保沒有劃分重復的等價類。等價類劃分少了會導致測試不充分,等價類劃分重復了會導致設計多余的測試用例。例如,對于if(int_DataA>=100 &&int_DataA<200){…},首先針對變量int_DataA進行等價類劃分,就能劃分為三個等價類(-∞,100)、\[100,200)和\[200,+∞),其中\[100,200)為有效等價類,而(-∞,100)和\[200,+∞)為無效等價類。然后再針對每一個等價類選取其中的數據進行測試用例設計。
1.3 基于決策表測試法
決策表指以表格方式給出的可能輸入條件和程序所的對應輸出結果之間的嚴格的邏輯關系.基于決策表設計出相應的測試用例的測試方法即為基于決策表的測試法。該測試方法在所有功能性測試方法中是最嚴格的。
2、黑盒測試方法的優化
2.1 數值更改黑盒測試的思路
首先描述一下數值更改的幾種設計思路和模式。一般設計員進行數值更改往往使用直接查找工程文件的方法。如查找到需要更改的數值,就直接使用新數值進行更改。多數設計員認為只要沒有漏改數值,就不會有問題。但不幸的是,還是會被測試人員發現一些程序中的錯誤。本文將按照軟件工程開發測試流程的八個模塊進行分析,提供一些數值更改的思路。針對數值更改的設計思路和模式,相應的測試思路如下:
?。?)首先確定設計更改的需求是否達到目的;
?。?)確認設計更改點所處的功能模塊的功能是否滿足要求;
?。?)找出該更改點涉及的相關功能和接口;找相關接口要注意查閱相關的設計文檔,如接口定義、通信協議、程序結構、芯片資料、設計標準等,設計人員的筆誤往往集中在更改點涉及的相關接口;
?。?)確認更改點涉及部分的功能是否能夠滿足要求;
(5)按測試要求做好測試記錄并最后出具報告。
2.2 隨機模擬法在黑盒測試中的應用
該方法的基本思想是為了求解數學、物理、工程技術或生產管理等方面的問題。首先建立一個與求解有關的概率模型或隨機過程,使它的參數等于所求問題的解,然后通過對模型或過程的觀察或抽樣試驗來計算所求參數的統計特征,最后給出所求解的近似值。概率統計是隨機模擬法的理論基礎,其基本手段是隨機抽樣。對于那些難以進行或條件不滿足的試驗而言,這無疑是一種極好的替代方法。在應用時,要先產生一種均勻分布的隨機數序列,然后再設法轉換成特定要求的概率分布的隨機數序列,并以此作為數字模擬試驗的輸入變量序列進行模擬求解。其基本步驟:一是建立概率模型,即對所研究的問題構造一個符合其特點的概率模型;二是產生隨機數序列作為系統的抽樣輸入,進行大量的數字模擬試驗,從而得到大量的模擬試驗值。產生隨機數的數學方法,最常用的有同余法、平方取中法以及易位指令加法等;常用的隨機數檢驗方法有參數檢驗、均勻性檢驗、獨立性檢驗、組合規律檢驗和游程檢驗等;三是對模擬試驗結果進行統計處理(計算頻率、均值等特征值),給出所求問題的解和解的精度估計。設計測試用例要經歷劃分等價類和選取測試用例兩步,首先要進行等價類劃分,之后在此基礎上通過隨機模擬方法隨機選取測試用例,這樣可以使選取的測試用例組合覆蓋程序的全部輸入域,因而更具有一般性和代表性。
2.3 基于需求的測試優先化方法
優先化方法一般基于以下四個優先化因子:
?。?)用戶指派優先權(CP)是一個需求對于用戶的重要性的度量,由用戶為每項需求指派范圍從1~10的值,值越高,優先權越高;
?。?)需求易變率(RV)表示基于一項需求在開發周期中被修改的次數,是對需求變更的估計;
?。?)執行復雜性(IC)是從開發團隊的角度對需求實現難易程度的主觀度量。一般按每項需求可接受的實現難易度給出一個1~10之間的值,值越大,所可能包含的缺陷數越多;
(4)需求缺陷傾向(FP)可幫助開發團隊從軟件以前多個版本收集的數據發現易出錯的需求,并找出實現這些需求的代碼。缺陷傾向越大的模塊,造成域失效的可能性越大。
優先化因子的收集與更新過程是:先由用戶指定系統各項需求的優先權以及開發階段需求的增加和修改;需求分析者記錄需求和相關優先權,并記下需求的任何變動;接著由軟件維護工程師修復缺陷,并將故障映射回受其影響的需求;開發者再對各項需求執行的復雜程度給出客觀評價;測試者為每項需求編寫測試用例,同時將需求映射到其測試用例并運行。最后記錄用例失效,并將其映射到引起該失效的測試用例。
2.4 測試用例的分布策略
一般而言,針對一個軟件的測試用例集是不可能窮盡的,只能根據各種原則選擇部分典型的用例進行測試。特別是對于一些大型軟件,最終可能需要數以萬計的測試用例來對其進行測試,在測試用例設計之前大量的測試用例該如何進行分布才能達到相對更好的測試效果呢?
(1)基于矩陣的首次分布策略
理論上,程序規模與測試用例的數量并非線性關系,因為程序規模越大,復雜度就越高,關聯因素也越多,所以,對軟件來說,這并不是單純行數的增長。但是在工程中,為了便于實際操作,大多會簡單將它們假設為線性關系。
為了把握好測試用例數目的合理分布,可采用矩陣式首次分布預測法進行分布。表1所示是以軟件子功能作為矩陣的行,以功能測試的基礎測試觀點作為矩陣的列給出的矩陣法示意表。表1中的行列元素僅僅是舉例說明。
?。?)基于分析結果的再次分布策略
如果是按照上述基于矩陣的首次分布策略單純地實施完最初設計的測試用例就認為測試結束,那么測試就不能稱之為完整的測試。而必須依據第一輪測試發現的bug的分布特征、bug的收斂趨勢等分析結果來判斷是否需要繼續測試。在需要繼續增加測試的情況下,可以采用基于分析結果的再次分布策略來確定增加部分測試用例的分布。具體實施方法是:根據功能點和基礎測試觀點進行bug的分布規律分析,將測試發現的bug數都正確地填寫在表1的矩陣中,然后根據數字明確哪些子功能是薄弱點,哪些基礎測試觀點是bug最多的觀點,根據軟件測試中的80-20規則(80%的bug集中在20%的程序代碼內),對于這些交叉點提高測試用例密度,并進行增加部分的測試用例再次分布。
2.5 基于輸入輸出關系的綜合黑盒測試方法
這是針對黑盒測試存在的問題提出的一種測試用例設計方法。根據系統規格說明和系統輸入輸出之間的關系等附加信息,來確定輸入參數之間的覆蓋和約束關系,并對參數輸入域進行約減;接著對各組進行處理,對各個組合中的輸入變量進行兩兩組合覆蓋,再對各相關組的結果進行水平拼接組合。實踐結果表明,該方法在不影響測試檢錯能力的情況下,可以有效地提高測試用例的選擇效果。
利用輸入輸出關系對測試用例集進行約簡和優化時,首先對輸入輸出關系自身進行約簡,然后進行關聯性分析,并將其劃分成若干個彼此獨立的相關組;接著對各相關組分別進行,可僅對每個輸出涉及到的輸入變量進行組合覆蓋,進而利用組內元素的關聯性通過公共元素進行水平拼接,最后再把各個相關組的結果進行水平拼接。結果表明,改進后的方法可以產生數量最少的用例集。
利用測試用例集的約簡技術和優化,可以大大地縮減測試計劃,降低測試成本。利用已知的輸入輸出關系,通過對輸入輸出關系自身的特點(包含和關聯)進行分析來對輸入輸出關系進行約簡和分組,然后把每個相關組視為獨立的輸入輸出關系分別進行處理,再對每個輸出所涉及的輸入變量進行組合覆蓋,進而利用關聯性把這些組合覆蓋的測試數據進行水平拼接,最后再把各個相關組的結果進行水平拼接所樣產生的結果不僅最接近最優解,而且時間復雜度也指數級下降,從而得到了較大的優化。
3、結語
為了提高軟件測試的質量和效率,本文針對黑盒測試中的軟件測試方法進行了分析,并根據實際操作總結出了針對黑盒測試的改進方法。實踐證明,通過測試方法的優化,可使軟件測試更加系統化、靈活化,其測試效率和質量都會得到明顯提升。