劉欣苗
摘 要 為保證軟件產品的質量,需要對軟件過程進行控制,同時也需要對軟件產品本身進行檢測,在目前形式化方法和程序正確性證明還無望成為使用性方法的情況下,軟件測試在將來的相當長一段時間仍然是軟件質量保證的有效方法。面向對象軟件的獨有特性,如抽象、繼承、封裝、多態等,使得傳統的軟件測試技術不能直接應用于面向對象的軟件測試。文章探討了面向對象的測試方法,分析了面向對象的各種特征對軟件測試造成的影響。
【關鍵詞】軟件測試 面向對象測試 影響
1 引言
隨著軟件規模的不斷擴大,軟件設計的復雜程序不斷提高,軟件開發中出現錯誤或者缺陷的機會越來越多,同時,由于人們對于軟件質量的重視程度越來越高,故在軟件投入運行之前, 對軟件需求分析、設計規格和編碼的最終復查, 是軟件質量保證的關鍵步驟。在規劃測試時,不要設想程序中不會查出錯誤,所有的測試都應當追溯到用戶需求,應該在測試工作真正開始前就計劃測試,窮舉測試是不可能的,但是盡可能充分覆蓋程序邏輯是可能的,軟件測試是一項具有創造性的和需要高智慧的挑戰性任務。
2 軟件測試的方法
面向對象技術是一種全新的軟件開發技術,面向對象技術所獨有的多態、繼承、封裝等新特點, 使OO 程序設計比傳統語言程序設計產生錯誤的可能性增大, 使得傳統軟件測試中的重點不再顯得那么突出, 也使原來測試經驗和實踐證明的次要方面成為了主要問題。盡管面向對象技術的基本思想保證了軟件應該有更高的質量, 但實際情況卻并非如此, 因為無論采用什么樣的編程技術,編程人員的錯誤都是不可避免的, 而且由于面向對象技術開發的軟件代碼重用率高, 更需要嚴格測試,以避免錯誤的繁衍。
與傳統的軟件測試不同,面向對象技術具有以下特點:
(1)它要綜合考慮軟件開發過程所有階段。
(2)在軟件開發的整個生存周期中,每個階段之間是連續的
(3)開發過程分為面向對象分析、面向對象設計、面向對象編程、面向對象測試四個連續的部分。
面向對象軟件測試的基本測試單元是類,面向對象技術的本質是定義了類的抽象,將變量和與作用于它的操作封裝到一起。然后用不同的類和方法組合成一個對象系統。相應的軟件測試方法也可以分為兩類。
2.1 基于需求的測試
與已知的黑盒測試一樣,此測試旨在測試程序的功能是否滿足相應的需求。它通常是利用一組測試數據,也叫測試用例,來測試程序,并判斷輸出與需求的一致性,從而實現測試。
2.2 基于程序的測試
同白盒測試一樣,基于程序的測試是上一種測試的有益補充,主要肜于檢測代碼的內部結構。通過相應的測試準則,選取合適的測試用例來實現測試目的。
3 面向對象技術對測試的影響
面向對象技術的出現不僅改變了程序設計的風格,而且還影響了軟件開發的需求分析、概要設計、詳細設計及軟件測試等步驟,其中面向對象方法對軟件測試的影響直到近年來才為人們所注意。不管是基于需求的測試還是基于程序的測試,都要受到面向對象程序設計語言的自身的一些特征的影響。這些特征主要包括:封裝、繼承和多態。
3.1 封裝對測試的影響
封裝是指在詞法單位之中或者之間決定名字可見性的訪問控制機制。在在面向對象方法中引入封裝是有益的,它實現了信息隱藏,封裝通過分離類的接口與實現,增強了類的抽象性。盡管封裝不會直接促成錯誤的發生,它卻給測試帶來了障礙。封裝使對象的內部屬性無法獲取,如果類中未能提供足夠的存取函數來表明對象的實現方式和內部狀態,訪問對象的這些屬性的唯一方法只能通過調用對象的操作,這就是說測試將依賴于被測試軟件本身。
3.2 繼承對測試的影響
在面向對象的程序中,繼承的使用讓一個函數可能被封裝在多個類中,子類中還可以對繼承的特征進行重定義。繼承可用于一般與特殊的關系中,并且方便編碼。問題是繼承削弱了封裝性,產生了類似于非面向對象語言中全局數據的錯誤風險。兩個功能相同而實現不同的程序,對其中一個充分測試的測試用例未必對另一個是充分的,故對子類中重寫的函數仍需全面測試。
3.3 多態對測試的影響
多態性是指一個引用可以與多個對象綁定的能力。多態通常是與繼承相聯系的,由基類和它的子類組成。多態能減少代碼的復雜性和規模,同時還可以實現動態綁定。多態性的性質給測試帶來障礙。首先多態性將給基于程序的測試帶來未決定性,某些綁定能正確的工作但不能保證所有的綁定都能正確運行,由于多態名字可表示不同類的對象,故當調用一個多態名字的操作時,只有到程序運行時,才可能知道哪段代碼要被運行。還有當操作的一個或者多個參數為多態時,相似的問題依然存在。故測試必須確定能覆蓋綁定的所有可能的情況。
4 總結
軟件測試作為軟件運行的最后關口,應得到高度重視。然而由于傳統意識和歷史原因,重開發輕測試的意識根深蒂固,已經成為制約軟件成功運行的瓶頸。軟件測試在明確和界定清楚測試與開發的關系時,不能簡單地把測試與開發看作是串行的過程。從軟件過程管理看,測試應當從需求分析開始,它不僅要與開發并行,而且要從開始就以測試用例為需求立定客觀標準。
軟件測試是軟件開發的一部分, 始終伴隨著軟件生命周期的各個階段, 測試的好壞直接關系到軟件產品的質量, 因此在軟件開發過程中要充分重視軟件測試。要做好軟件測試一定要記住一句話測試的目的不是證明軟件的正確性, 而是發現軟件中存在的錯誤!隨著我國軟件業的發展和各公司測試管理過程的進一步完善,軟件測試已經成為軟件質量保證的重要組成,并且也越來越受到重視,越來越多的軟件測試管理技術也會應運而生。
作者單位
衡水職業技術學院 河北省衡水市 053000endprint