雷邦蘭
(黔東南民族職業技術學院,貴州 凱里 556000)
[摘 要] 在軟件開發的過程中,測試階段是保證其質量的重要環節,尤其是面向對象軟件的開發。隨著理念的更新,相關技術的發展,面向對象軟件測試技術經歷著不斷的變革和發展。在理論基礎下,結合實際,探究了面向對象技術特點對于測試的影響,分析了測試方法與層次結構,提出了面向對象軟件的測試注意點,希望研究工作為相關技術的發展與應用提供幫助。
[關 鍵 詞] 面向對象;軟件開發;測試技術
[中圖分類號] G712 [文獻標志碼] A [文章編號] 2096-0603(2017)03-0170-02
一、面向對象軟件測試技術簡介
面向對象軟件測試技術的核心思想在于:基于特定的輸入,通過相關的執行結果,以此來驗證所得到的值是否與期望值相同,然后在相關的控制要求與標準下進行調整和糾錯。面向對象技術應用于軟件測試中,具有階段連續性特點,并且作用于軟件開發的生存周期,表現在具體的開發過程中,可以將其劃分為四部分,即面向對象的分析、設計、編程和測試。與傳統的軟件相比,面向對象技術通過類將變量與操作結合,而后通過相關的作用組合成對象系統,這樣就將過程或者方法的復雜性轉換成為對象之間的交互。隨著相關技術的發展,面向對象的軟件測試技術逐漸被認可接受,由于其在定義、功能等方面具有優點,已成為軟件開發與測試的重要技術。
二、面向對象技術特性及其影響
在面向對象系統中,類和對象取代了傳統軟件測試技術中的功能模型,成為基本的構造單元。由于對象中數據和方法并不是隔離、分別作用的,因此在相關的軟件測試工作中,要同時考慮輸出值與期望值是否相同和相關的狀態變化。面向對象技術具有多種特性,包括封裝與信息隱蔽、繼承、多態與動態綁定等,其對于測試的影響也不盡相同。
(一)信息隱蔽對于測試的影響
對于面向對象技術中的類,信息隱蔽性是一個重要的特性。在軟件測試中,任何細節性的錯誤都會引起難以想象的后果,而信息隱蔽性正是體現在對細節性信息的控制,避免相關的信息數據被濫用。在面向對象的軟件測試技術中,由于系統的特定組成,因此我們必須考慮對象的狀態以及相關的變化情況。從面向對象軟件測試技術的核心思想中我們也可以發現,測試就是通過向我們所創立的對象輸入信息,然后檢查對象是否在正確的狀態。但在這個過程中,對象狀態具有隱蔽性,如果缺少某些定義函數或定義狀態,則在測試過程中,測試人員必須自行增添。因此,面向對象技術的信息隱蔽特性給我們的測試工作造成了很大的困擾。
(二)封裝對于測試的影響
面向對象技術的封裝特性,需要我們正確地看待其對于測試的影響。在面向對象技術中,封裝性是將數據及其操作方法封裝到某一個類中。通常情況下,由于封裝性的作用,外界在進行訪問或修改數據信息時,只能按照被提供的操作進行。這是由于類的封裝性,使內部的操作與屬性通常被申明為私有的成員,與之相對應,外部的申明為公有成員。這樣的設定避免了在傳統的軟件測試技術中錯誤的連鎖性,增加了數據的抗干擾力,降低了數據被隨意操作的可能。從另一方面來說,由于在類中定義了某一些函數,以此來達到保護或其他的操作目的,但由于受測試過程中諸多因素的影響,比如輸入輸出、對象的狀態變化等,這就使封裝性在一定程度上給測試工作造成了困擾。
(三)繼承特性對于測試的影響
作為面向對象技術的重要特性之一,繼承性是概括對象共性和組織結構的一種機制。在面向對象的設計中,繼承性的作用體現在使設計更加自然和直觀性。由于受繼承性的影響,子類在繼承的同時,也能夠重新進行定義,但對于每個新的使用語境,相關工作人員也需要進行重新測試。因此,在實際的測試工作中面臨著不小的困難。在多重繼承情況下,對于兩個父類的同名特征,保留的一個對于子類有直接的影響,兩者結構一般相同,再根據優先級來選擇某一個保留,但無論怎樣操作,仍然需要不同的測試數據集。繼承性使測試更加困難還表現在一個方面,就是當我們對父類進行某一定義時,由于繼承性的存在,因此對于相關的子類、引用類等,都要進行重新測試,這就加劇了復雜程度。綜合而言,良好的類層次結構使面向對象軟件測試技術的可重用性得到增強,但在共享程度增加的同時,也產生了一些問題和錯誤。以多重繼承和重復繼承來說,子類的復雜性也使隱含錯誤的可能性大大增加。
(四)多態性和動態綁定的影響
同一消息可以采取不同的方法來進行操作,因此在多態中,最為常見的形式就是重載。重載就是相同名稱的函數,其參數類型卻各不相同。這種形式雖然能夠根據相應的數據信息來選擇相應的實現代碼,優化系統的運行過程,但從整個測試過程中來看,加劇了系統運行的不確定性,使靜態分析的實行遇到很大的阻礙,這也是與傳統軟件測試技術的差異。與此同時,由于多態與動態綁定的影響,也使系統運行的可能路徑變得復雜化,增大了不確定性因素的影響程度,使測試工作面臨著更大的難度和挑戰。
三、面向對象軟件測試技術層次劃分與方法
(一)方法測試
對于方法測試而言,其測試對象是類中的一個方法,通過相關的分析處理,檢測這個方法對數據所進行的操作。在單元測試方面,可以采取傳統的方法進行,但要注意兩者之間的區別。在面向對象的軟件測試技術中,封裝在類中的包含方法與數據兩者,其驅動與執行受到對象狀態的影響,有可能反作用于對象,并使其狀態發生變化。因此,在進行測試用例的設計工作時,要綜合考慮各方面的因素,例如對象初態的設置、執行路徑的指定、結果狀態值的設定等。同時對于出現的某些問題,要采取相應的措施應對,例如測試樁模塊的替代應用。
(二)類測試
類測試與方法測試的區別在于,方法測試是類中的一個方法與操作,而類測試分析的重點在于一個類中的方法與數據的相互作用。對于面向對象軟件測試技術而言,對象的操作與狀態二者之間是相互作用、相互影響的,因此在進行測試工作時要注意兩者的聯系。通常類測試分為兩部分,包含基于狀態的測試和基于響應狀態的測試。基于對象狀態行為的類測試通常包含基于規約的測試和基于程序的測試兩種。前者是在軟件的需求和功能基礎上,進行相關的測試工作;后者是通過對象的分析來進行測試工作。辯證地看待兩種方法,都具有一定的優勢和缺點。基于狀態的類測試具有明顯的優勢,但在實際的工作開展中,執行起來較為困難。狀態空間大、測試覆蓋率的計算等因素都影響著面向對象軟件的質量與效果。
(三)類簇的測試
類簇是一組協同操作的類,類簇測試的重點在于這組類之間的相互作用,也就是繼承、多態等邏輯關系的分析檢驗,得到相互配合度。在測試用例方面,可以根據實際情況選擇不同的方案,例如縱向檢查類、橫向檢查類等。關聯和聚合關系的測試,也就是將相關的類劃分為一組,通常情況下該測試的測試用例一般選擇為主動發送信息的類,然后運行用例進行檢測。繼承關系的測試在現階段普遍包括派生類繼承部分的測試,然而對于該類的非繼承部分,一般不采用父類的用例,需要我們重新設計相應的用例進行測試工作。多態與動態綁定的測試在前面的內容中我們分析到,其具有不確定性和執行路徑的增加性,這就使測試用例增多,因此需要我們考慮到實例變量的每種可能,盡可能地減小誤差和錯誤發生的可能性。
(四)系統測試
為了保證系統的實際工作,降低工作過程中錯誤的發生率,同時也是為了滿足相關的設計要求與目的,必須進行系統測試環節。系統測試應該在與實際環境相似的條件下進行,確保每一部分都要參與其中,對軟件的整體表現有清晰正確的認識,從另一方面看,這也是開發設計工作的再確認階段。系統測試表現在具體的測試過程中包括功能測試、強度測試、性能測試、安全測試、恢復測試、可用性測試以及安裝測試等。
四、面向對象軟件測試技術的注意事項
隨著面向對象軟件測試技術的發展,其應用也越發廣泛。該技術的目的是為了降低錯誤發生率,保證所測試對象性能與功能正常,因此在工作過程中,我們要注意以下幾點。
(一)擴大測試的視角
我們要改變傳統測試觀念,擴大測試的視角。在面向對象軟件測試技術中,由于其構造模型是逐步演化而來的,因此我們的視角不應該局限于某一階段,而應該對每一階段的測試模型都認真對待、分析研究,避免錯誤的發生和擴散。在面向對象的分析階段,要注意類屬性定義的問題,要及時發現問題、解決問題、調整系統。在收尾階段,要保證所有的模型在各方面的正確性和完整性。
(二)測試過程的規范化
在測試過程中,我們首先要保證測試對象的合理性,要建立在系統科學、合理的分析基礎之上。而后調整測試對象的狀態,檢查是否能夠達到期望值。在測試計劃的實施過程中,要注意測試的類和對象的狀態,以此確定合理的方法和某一些參數,切不可隨意地進行操作,以免發生難以想象的后果。
(三)結合實際情況
面向對象軟件測試技術的整體目標與傳統的測試技術大同小異,也是以小的工作量發現多的錯誤,但由于前者其自身的特點和影響因素,使得具體應用過程有不同之處,因此在實際的應用過程中要注意結合實際情況。一方面,要注意層次的劃分以及測試方法的區別,另一方面,在進行測試時,要根據相應的測試目的選擇相應的測試類型。
面向對象軟件測試技術的發展,使其應用范圍越發廣泛,在這個過程中,對技術進行必要的研究,分析其理論基礎,為實際應用提供保障,這對于促進技術變革與發展具有重要意義。本文結合實際,研究了面向對象軟件測試技術,希望為其發展與應用提供有益的參考和幫助。
參考文獻:
[1]楊貞祥,趙興奮,賀虎林.基于控制流和數據流分析的軟件回歸測試設計[J].電子科學技術,2016(6).
[2]胡巍威.軟件測試用例技術發展分析及對策[J].信息通信,2016(2).
[3]方泉,馮曙明,張燕.基于業務流程的SG-ERP自動化測試技術研究與應用[J].計算機光盤軟件與應用,2014(15).
[4]劉春頌,楊壽保.CMM導入小型軟件企業/小型軟件項目的研究[J].計算機工程與應用,2002(18).
[5]李建強,范玉順.一種工作流模型的性能分析方法[J]. 計算機學報,2013(5).