自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面向?qū)ο筌浖y試技術(shù)研究

開發(fā) 測試
軟件測試在整個(gè)軟件項(xiàng)目開發(fā)過程中有著舉足輕重的地位,測試技術(shù)的發(fā)展對于縮短測試周期、降低成本、提高質(zhì)量都有著十分重要的意義。本文介紹了軟件測試的關(guān)鍵技術(shù),并對面向?qū)ο筌浖y試技術(shù)進(jìn)行了深入研究。

軟件測試是伴隨著軟件的產(chǎn)生而產(chǎn)生的。軟件危機(jī)的頻繁出現(xiàn)促使了軟件測試的地位得到了大幅提升。軟件測試已經(jīng)不僅僅是局限于軟件開發(fā)過程中的一個(gè)階段,它已經(jīng)開始貫穿于整個(gè)軟件開發(fā)過程,成為軟件產(chǎn)品質(zhì)量控制與質(zhì)量管理的重要手段之一。

一、前言

軟件測試技術(shù)作為軟件工程學(xué)科的一個(gè)分支,是保證軟件質(zhì)量和可靠性的關(guān)鍵,因此它也是軟件開發(fā)過程中的一個(gè)重要環(huán)節(jié)。它的核心思想是:對于輸入域的特定輸入,觀察軟件的執(zhí)行結(jié)果,驗(yàn)證該結(jié)果與期望結(jié)果是否一致,然后根據(jù)結(jié)果作相應(yīng)的糾錯(cuò)和調(diào)整。

在測試過程中,測試用例的選擇決定測試的有效性,這也就直接影響到成本,是軟件測試的關(guān)鍵和難點(diǎn)。目前,軟件測試技術(shù)的發(fā)展還不是很成熟,測試人員在選擇測試用例時(shí)通常根據(jù)直覺和經(jīng)驗(yàn)進(jìn)行,給測試帶來很大的盲目性,最終導(dǎo)致的后果是使軟件后期維護(hù)的費(fèi)用在成本中居高不下??茖W(xué)生成測試用例對提高軟件質(zhì)量不僅重要而且必要。

隨著面向?qū)ο筌浖_發(fā)技術(shù)的廣泛應(yīng)用和軟件測試自動化的要求,特別是基于的軟件開發(fā)技術(shù)的逐漸普及,基于模型的軟件測試逐漸得到了軟件開發(fā)人員和軟件測試人員的認(rèn)可和接受。它是一種新興的測試用例生成技術(shù)。有優(yōu)于以前的測試技術(shù)的方面。其中模型以其定義良好、功能強(qiáng)大、普遍適用的優(yōu)點(diǎn),為基于模型的測試提供了非常好的契機(jī)。

二、面向?qū)ο筇卣鲗浖y試的影響

面向?qū)ο蠹夹g(shù)是一個(gè)全新的開發(fā)模式,具有以下特點(diǎn):

(1)它要綜合考慮軟件開發(fā)過程所有階段。

(2)在軟件開發(fā)的整個(gè)生存周期中,每個(gè)階段之間是連續(xù)的。

(3)開發(fā)過程分為面向?qū)ο蠓治觯?0A)、面向?qū)ο笤O(shè)計(jì)(OOD)、面向?qū)ο缶幊蹋∣OP)、面向?qū)ο鬁y試(OOT)四個(gè)連續(xù)的部分。

Coad和Yourdon給面}向?qū)ο蟮母拍钕铝艘粋€(gè)定義:

面向?qū)ο?對象+類+繼承+通信

如果一個(gè)軟件系統(tǒng)是使用這樣4個(gè)概念設(shè)計(jì)和實(shí)現(xiàn)的,則認(rèn)為這個(gè)軟件系統(tǒng)是面向?qū)ο蟮?。一個(gè)而向?qū)ο蟮某绦虻拿恳粋€(gè)組成部分都是對象,計(jì)算是通過對象和對象之間的通信來執(zhí)行的。

面向?qū)ο蠹夹g(shù)的本質(zhì)是定義了類的抽象,將變量和與作用于它的操作封裝到一塊。然后用不同的類和方法組合成一個(gè)對象系統(tǒng)。面向?qū)ο筌浖鹘y(tǒng)軟件中的一個(gè)過程或一個(gè)方法內(nèi)的復(fù)雜性轉(zhuǎn)移到對象之間的交互中。面向?qū)ο笳Z言一些本質(zhì)特征形成了如下的一些新的故障、錯(cuò)誤風(fēng)險(xiǎn)。

1、基本功能模塊

在面向?qū)ο笙到y(tǒng)中,系統(tǒng)的基本構(gòu)造單元是封裝了數(shù)據(jù)和方法的類和對象,而不再是一個(gè)個(gè)能完成特定功能的功能模型。每個(gè)對象有自己的生存期,有自己的狀態(tài)。消息是對象之間相互請示或協(xié)作的途徑,是外界使用對象方法及獲取對象狀態(tài)的唯一方式。對象的功能是在消息的觸發(fā)下,由對象所屬類中定義的方法與相關(guān)對象的合作共同完成,并且對象在不同狀態(tài)下對消息的響應(yīng)可能完全同。

工作過程中,對象的狀態(tài)可能被改變,產(chǎn)生新的狀態(tài),即發(fā)生狀態(tài)的轉(zhuǎn)移。對象中的數(shù)據(jù)和方法是一個(gè)有機(jī)的整體,在軟件測試過程中,不能僅僅檢查輸入數(shù)據(jù)產(chǎn)生的輸出結(jié)果是否與預(yù)期結(jié)果相吻合,還要考慮對象的狀態(tài)變化。因此,除了要對對象的狀態(tài)與方法間的相互影響進(jìn)行測試,還要進(jìn)行狀態(tài)測試。

2、系統(tǒng)的功能實(shí)現(xiàn)

在面向?qū)ο笙到y(tǒng)中,系統(tǒng)的功能體現(xiàn)在對象間的協(xié)作上,而不再是簡單的過程調(diào)用關(guān)系。面向?qū)ο蟪绦虻膱?zhí)行實(shí)際上是執(zhí)行一個(gè)由消息連接起來的方法序列,方法的實(shí)現(xiàn)與所屬對象本身的狀態(tài)有關(guān),各方法之間可能有相互作用。為實(shí)現(xiàn)某一特定的功能,可能要激活調(diào)用屬于不同對象類的多個(gè)成員函數(shù),形成成員函數(shù)的啟用鏈。因此,基于功能分解的自頂向下或自底向上的集成測試策略不適用于面向?qū)ο筌浖到y(tǒng)的測試。

3、封裝對測試的影響

封裝是指在詞法單位之中或之間決定名字可見性的訪問控制機(jī)制。它支持信息的隱蔽和模塊化,有助于防止全局變量訪問的問題。盡管封裝不會直接促成錯(cuò)誤的發(fā)生,它卻給測試帶來了障礙。封裝使對象的內(nèi)部狀態(tài)隱蔽,如果類中未提供足夠的存取函數(shù)來表明對象的實(shí)現(xiàn)方式和內(nèi)部狀態(tài),則類的信息隱蔽機(jī)制將給測試帶來困難。

4、繼承對測試的影響

繼承也是面向?qū)ο笳Z言中的一個(gè)本質(zhì)特征。繼承可用于一般與特殊關(guān)系,并目方便編碼。但繼承削弱了封裝性,產(chǎn)生了類似于非面向?qū)ο笳Z言中全局?jǐn)?shù)據(jù)的錯(cuò)誤風(fēng)險(xiǎn)。由于繼承的作用,一個(gè)函數(shù)可能被封裝在具有繼承關(guān)系的多個(gè)類中,子類中還可以對繼承的特征進(jìn)行覆蓋或重定義。

5、多態(tài)對測試的影響

多態(tài)性是指一個(gè)引用可以與多個(gè)對象綁定的能力。多態(tài)能減少代碼的復(fù)雜性和規(guī)模,同時(shí)還可以實(shí)現(xiàn)動態(tài)綁定。但依賴于不規(guī)則的類層次的動態(tài)綁定可能產(chǎn)生編程人員沒有想到的結(jié)果。某些綁定能正確的工作但并不能保證所有的綁定都能正確地運(yùn)行。以后綁定的對象可能很容易將消息發(fā)送給錯(cuò)誤的類,執(zhí)行錯(cuò)誤的功能,還可能導(dǎo)致一些與消息序列和狀態(tài)相關(guān)的錯(cuò)誤。

三、面向?qū)ο筌浖y試的層次劃分及內(nèi)容

面向?qū)ο筌浖y試的測試工作過程與傳統(tǒng)的測試一樣,分為以下幾個(gè)階段:制定測試計(jì)劃、產(chǎn)生測試用例、執(zhí)行測試和評價(jià)。目前,面向?qū)ο筌浖y試劃分方法是:方法測試、類測試、類簇測試、系統(tǒng)測試。

1、方法測試

方法測試主要考察封裝在類中的一個(gè)方法對數(shù)據(jù)進(jìn)行的操作,它與傳統(tǒng)的單元模塊測試相對應(yīng),可以將傳統(tǒng)成熟的單元測試方法。但是,方法與數(shù)據(jù)一起被封裝在類中,并通過向所在對象發(fā)送消息來驅(qū)動,它的執(zhí)行與對象狀態(tài)有關(guān),也有可能會改變對象的狀態(tài)。因此,設(shè)計(jì)測試用例時(shí)要考慮設(shè)置對象的初態(tài),使它收到消息時(shí)執(zhí)行指定的路徑。

2、類測試

主要考察封裝在一個(gè)類中的方法與數(shù)據(jù)之間的相互作用。一個(gè)對象有它自己的狀態(tài)和依賴于狀態(tài)的行為,對象操作既與對象狀態(tài)有關(guān),又反過來可能改變對象的狀態(tài)。普遍認(rèn)為這一級別的測試是必須的。類測試時(shí)要把對象與狀態(tài)結(jié)合起來,進(jìn)行對象狀態(tài)行為的測試。類測試可分以下兩個(gè)部分:

(1)基于狀態(tài)的測試

考察類的實(shí)例在其生命期各個(gè)狀態(tài)下的情況。這類方法的優(yōu)勢是可以充分借鑒成熟的有限狀態(tài)自動機(jī)理論,但執(zhí)行起來還很困難。一是狀態(tài)空間可能太大,二是很難對一些類建立起狀態(tài)模型,沒有一種好的規(guī)則來識別對象狀態(tài)及其狀態(tài)轉(zhuǎn)換,三是可能缺乏對被測對象的控制和觀察機(jī)制的支持。

(2)基于響應(yīng)狀態(tài)的測試

從類和對象的責(zé)任出發(fā),以外界向?qū)ο蟀l(fā)送特定的消息序列來測試對象。較有影響的是基于規(guī)約的測試方法,和基于程序的測試?;谝?guī)約的測試往往可以根據(jù)規(guī)約自動或半自動地生成測試用例,但未必能提供足夠的代碼覆蓋率?;诔绦虻臏y試大都是在傳統(tǒng)的基于程序的測試技術(shù)的推廣,有一定的實(shí)用性但方法過于復(fù)雜且效率不高。

3、系統(tǒng)測試

系統(tǒng)測試是對所有類和主程序構(gòu)成的整個(gè)系統(tǒng)進(jìn)行整體測試,以驗(yàn)證軟件系統(tǒng)的正確性和性能指標(biāo)等滿足需求式樣說明書和任務(wù)書所指定的要求。它與傳統(tǒng)的系統(tǒng)測試一樣,包括功能測試、性能測試、余量測試等,可套用傳統(tǒng)的系統(tǒng)測試方法。

四、面向?qū)ο筌浖y試的覆蓋準(zhǔn)則

測試覆蓋標(biāo)準(zhǔn)是對軟件測試充分性的度量,任何測試策略都應(yīng)該有相對應(yīng)的覆蓋標(biāo)準(zhǔn),在此基礎(chǔ)上選擇測試用例,通過覆蓋率來說明測試結(jié)果的可信性。傳統(tǒng)的軟件測試的覆蓋標(biāo)準(zhǔn)對基于代碼的測試而言,主要是代碼覆蓋,可細(xì)分為語句覆蓋、路徑覆蓋、分支覆蓋、判定分支覆蓋,其中判定分支是最強(qiáng)的覆蓋標(biāo)準(zhǔn)。

對于面向?qū)ο筌浖臏y試而言代碼的覆蓋只對方法級測試適用,為了測試面向?qū)ο蟪绦蛟O(shè)計(jì)機(jī)制帶來的錯(cuò)誤風(fēng)險(xiǎn),必須引入新的覆蓋標(biāo)準(zhǔn)。對于繼承而言,要求達(dá)到繼承的上下文覆蓋;多態(tài)性要求覆蓋所有可能的消息綁定;基于代數(shù)規(guī)約的測試要求能達(dá)到公理的覆蓋;基于狀態(tài)的測試要求能覆蓋所有的狀態(tài)和轉(zhuǎn)換。

【編輯推薦】

  1. 詳談軟件測試中的動態(tài)測試
  2. 通過軟件測試防止IT浪費(fèi) 降低成本和風(fēng)險(xiǎn)
  3. 軟件測試接口測試的測試用例類型
  4. “腳踩二枝”做軟件測試復(fù)合型人才
  5. 嵌入式軟件測試淺談

 

責(zé)任編輯:于鐵 來源: 51Testing采編
相關(guān)推薦

2009-01-20 14:47:19

ETL數(shù)據(jù)集成技術(shù)研究

2023-06-19 07:08:22

結(jié)構(gòu)化數(shù)據(jù)ChatGPT

2017-02-06 13:31:11

調(diào)度技術(shù)集群

2011-11-30 21:54:11

ibmdwDominoSAP

2017-07-03 15:22:51

達(dá)觀數(shù)據(jù)技術(shù)研究

2010-01-18 22:54:40

2022-02-18 16:28:19

VR/AR交互互聯(lián)網(wǎng)

2020-10-29 12:59:57

國產(chǎn)生態(tài)網(wǎng)絡(luò)

2018-11-19 13:44:39

2019-04-26 05:33:47

IPv6網(wǎng)絡(luò)技術(shù)IPv4

2010-05-27 14:12:48

2012-11-07 14:00:05

2022-07-27 08:25:13

語言操作系統(tǒng)日志

2013-07-22 14:56:33

5G關(guān)鍵技術(shù)4G

2009-08-04 16:50:26

2018-09-27 14:35:56

2022-07-28 13:18:48

系統(tǒng)日志編碼器

2022-05-31 10:11:55

金融行業(yè)云原生眾邦銀行

2009-10-22 09:55:31

php應(yīng)用程序安全防范

2022-01-25 00:06:05

云計(jì)算安全技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號