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