ppt5-特定環(huán)境及應(yīng)用測(cè)試.ppt_第1頁(yè)
ppt5-特定環(huán)境及應(yīng)用測(cè)試.ppt_第2頁(yè)
ppt5-特定環(huán)境及應(yīng)用測(cè)試.ppt_第3頁(yè)
ppt5-特定環(huán)境及應(yīng)用測(cè)試.ppt_第4頁(yè)
ppt5-特定環(huán)境及應(yīng)用測(cè)試.ppt_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第5章 特定環(huán)境及應(yīng)用測(cè)試,5.1 客戶(hù)/服務(wù)器體系結(jié)構(gòu)測(cè)試 5.2 圖形用戶(hù)界面GUI測(cè)試 5.3 實(shí)時(shí)系統(tǒng)測(cè)試 5.4 面向?qū)ο筌浖臏y(cè)試,本章教學(xué)目標(biāo),理論環(huán)節(jié) 認(rèn)識(shí)和理解特定環(huán)境及應(yīng)用的測(cè)試 掌握客戶(hù)/服務(wù)器體系結(jié)構(gòu)測(cè)試方法 掌握?qǐng)D形用戶(hù)界面GUI測(cè)試內(nèi)容 認(rèn)識(shí)和理解實(shí)時(shí)系統(tǒng)測(cè)試 認(rèn)識(shí)和理解面向?qū)ο蟮能浖y(cè)試基本概念和基本知識(shí) 掌握面向?qū)ο筌浖y(cè)試的常用方法 實(shí)踐環(huán)節(jié) 掌握對(duì)Web進(jìn)行的壓力測(cè)試 掌握類(lèi)的數(shù)據(jù)流測(cè)試,重點(diǎn)設(shè)置登錄服務(wù)器的網(wǎng)絡(luò)設(shè)置,5.1 客戶(hù)/服務(wù)器體系結(jié)構(gòu)測(cè)試,5.1.1 客戶(hù)/服務(wù)器體系結(jié)構(gòu)測(cè)試方法 5.1.2 Web網(wǎng)站的測(cè)試 5.1.3 對(duì)Web進(jìn)行壓力測(cè)試 5

2、.1.4 使用WAS進(jìn)行Web負(fù)載測(cè)試,Return,5.1.1 客戶(hù)/服務(wù)器體系結(jié)構(gòu)測(cè)試方法,從宏觀上說(shuō),C/S體系結(jié)構(gòu)的軟件測(cè)試通常是從單個(gè)客戶(hù)端開(kāi)始,然后再逐步集成客戶(hù)端、服務(wù)器和網(wǎng)絡(luò)系統(tǒng)進(jìn)行集成測(cè)試,最后進(jìn)行系統(tǒng)的整體測(cè)試。即從以下三個(gè)層面來(lái)進(jìn)行C/S系統(tǒng)的測(cè)試: (1)客戶(hù)端的獨(dú)立測(cè)試 對(duì)客戶(hù)端的測(cè)試主要是屬于功能性測(cè)試。用戶(hù)客戶(hù)端應(yīng)用以“分離的”模式被測(cè)試,即這層測(cè)試不考慮服務(wù)器和底層網(wǎng)絡(luò)的運(yùn)行。通常包括: 客戶(hù)端的測(cè)試檢測(cè)客戶(hù)端的業(yè)務(wù)邏輯流程的應(yīng)用 操作系統(tǒng)平臺(tái)測(cè)試在各種系統(tǒng)平臺(tái)上進(jìn)行兼容性測(cè)試 瀏覽器測(cè)試,客戶(hù)/服務(wù)器體系結(jié)構(gòu)測(cè)試方法(續(xù),2)客戶(hù)端與服務(wù)器端的集成測(cè)試 客戶(hù)端

3、軟件和關(guān)聯(lián)的服務(wù)器端應(yīng)用作一體測(cè)試,但并不過(guò)多考慮網(wǎng)絡(luò)運(yùn)行的關(guān)聯(lián)因素。 對(duì)服務(wù)器的測(cè)試主要是性能的測(cè)試。測(cè)試包含服務(wù)器的協(xié)調(diào)和數(shù)據(jù)管理功能以及服務(wù)器的性能(整體響應(yīng)時(shí)間和數(shù)據(jù)的吞吐量)的表現(xiàn)。通常包括:數(shù)據(jù)庫(kù)測(cè)試、連接速度測(cè)試、負(fù)載測(cè)試、壓力測(cè)試。 對(duì)應(yīng)用服務(wù)器(中間件)的測(cè)試 對(duì)C/S系統(tǒng)的集成測(cè)試一般采用非增量式的方法完成。此外,C/S測(cè)試必須考慮面向?qū)ο蟮臏y(cè)試技術(shù),尤其是C/S系統(tǒng)基本上都采用了GUI(圖形用戶(hù)界面,客戶(hù)/服務(wù)器體系結(jié)構(gòu)測(cè)試方法(續(xù),3)整體測(cè)試 對(duì)完整的C/S體系結(jié)構(gòu)整體測(cè)試,在上述功能測(cè)試和性能測(cè)試的基礎(chǔ)上,還包括網(wǎng)絡(luò)運(yùn)行及其性能的測(cè)試。 整體測(cè)試通常包括以下測(cè)試項(xiàng)目

4、: 事務(wù)測(cè)試創(chuàng)建一系列的測(cè)試以保證每類(lèi)事務(wù)被按照需求處理。事務(wù)測(cè)試著重于處理的正確性,同時(shí)也關(guān)注性能問(wèn)題。 網(wǎng)絡(luò)通信測(cè)試用于驗(yàn)證網(wǎng)絡(luò)節(jié)點(diǎn)間的通信是否正常的發(fā)生,并且消息傳遞、事務(wù)和相關(guān)的網(wǎng)絡(luò)通信有無(wú)錯(cuò)誤的發(fā)生,5.1.2 Web網(wǎng)站的測(cè)試,基于 Web 的系統(tǒng)測(cè)試不但需要檢查和驗(yàn)證是否按照設(shè)計(jì)的要求運(yùn)行,而且還要評(píng)價(jià)系統(tǒng)在不同用戶(hù)的瀏覽器端的顯示是否合適。重要的是,還要從最終用戶(hù)的角度進(jìn)行安全性和可用性測(cè)試,從功能、性能、可用性、客戶(hù)端兼容性、安全性等方面討論了基于Web的系統(tǒng)測(cè)試方法。 對(duì)Web網(wǎng)站測(cè)試所采用的測(cè)試方法與策略有哪些? 黑盒測(cè)試、白盒測(cè)試、靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試都有可能用到,還會(huì)包

5、括面向?qū)ο鬁y(cè)試技術(shù)的運(yùn)用。 Web網(wǎng)站的測(cè)試是一項(xiàng)復(fù)雜的任務(wù),如何進(jìn)行? 最初的起點(diǎn)是把網(wǎng)頁(yè)或整個(gè)網(wǎng)站當(dāng)作一個(gè)黑盒子,網(wǎng)頁(yè)測(cè)試,文字測(cè)試:檢查用戶(hù)等級(jí)、術(shù)語(yǔ)、內(nèi)容、準(zhǔn)確度以及內(nèi)容的時(shí)效性。 鏈接測(cè)試:測(cè)試所有鏈接是否能按照指示的那樣正確鏈接到應(yīng)當(dāng)鏈接的頁(yè)面;測(cè)試所鏈接的頁(yè)面是否存在;確保不存在孤立頁(yè)面(即沒(méi)有鏈接指向的頁(yè)面)。 圖形、圖像測(cè)試:確保有明確的用途;顏色的搭配;圖片的大小和質(zhì)量;所有圖形是否能夠正確載入和顯示。 表單測(cè)試:檢測(cè)域的大小;數(shù)據(jù)接收是否正確;可選域是否真正可選;提交操作的完整性等。 動(dòng)態(tài)內(nèi)容測(cè)試(要求能查看到程序源代碼) Cookies測(cè)試:Cookies是否起作用;是

6、否按預(yù)定的時(shí)間進(jìn)行保存;刷新對(duì)Cookies有何影響等,網(wǎng)站測(cè)試,數(shù)據(jù)庫(kù)測(cè)試:在使用了數(shù)據(jù)庫(kù)的Web系統(tǒng)中,測(cè)試由用戶(hù)提交的表單信息不正確而引起的數(shù)據(jù)一致性問(wèn)題;測(cè)試由網(wǎng)絡(luò)速度或程序設(shè)計(jì)等問(wèn)題引起的輸出故障。 服務(wù)器性能及負(fù)載(壓力)測(cè)試:通過(guò)應(yīng)用模擬的方法實(shí)現(xiàn),即通過(guò)某種程序方法(工具軟件)模擬上萬(wàn)個(gè)鏈接和下載來(lái)判斷服務(wù)器的響應(yīng)時(shí)間、并發(fā)訪(fǎng)問(wèn)數(shù)量等性能與負(fù)載能力。 可用性測(cè)試:包括整體界面測(cè)試和導(dǎo)航測(cè)試。 安全性測(cè)試:測(cè)試有效和無(wú)效的用戶(hù)名和密碼;測(cè)試Web應(yīng)用系統(tǒng)是否有超時(shí)的限制;測(cè)試相關(guān)信息是否寫(xiě)進(jìn)了日志文件、是否可追蹤;在使用了安全套接字時(shí),測(cè)試加密是否正確;在沒(méi)有經(jīng)過(guò)授權(quán)時(shí),測(cè)試是否

7、能拒絕在服務(wù)器端放置和編輯腳本,5.1.3 對(duì)Web進(jìn)行壓力測(cè)試,Web服務(wù)測(cè)試原理 Web壓力測(cè)試 壓力測(cè)試是系統(tǒng)測(cè)試的一部分,要被設(shè)計(jì)為通過(guò)應(yīng)用很大的工作負(fù)載來(lái)使軟件超負(fù)荷運(yùn)轉(zhuǎn),其目的是要弄清楚被測(cè)試的Web服務(wù)是不是不僅能做預(yù)期應(yīng)能做的事,而且在被施加了某些高強(qiáng)度壓力的情況下仍能繼續(xù)正常運(yùn)行。如果壓力測(cè)試通過(guò)對(duì)軟件保持高強(qiáng)度的使用(不超過(guò)性能統(tǒng)計(jì)數(shù)字確定的限制)能夠有效執(zhí)行,那么它就經(jīng)常能夠發(fā)現(xiàn)許多其它測(cè)試無(wú)法發(fā)現(xiàn)的隱蔽錯(cuò)誤。 壓力下的錯(cuò)誤類(lèi)型 內(nèi)存泄露通常要求操作重復(fù)非常多的次數(shù)后才會(huì)出現(xiàn) 并發(fā)與同步,對(duì)Web進(jìn)行壓力測(cè)試(續(xù),圖 Web服務(wù)測(cè)試原理,對(duì)Web進(jìn)行壓力測(cè)試(續(xù),有效的壓

8、力測(cè)試系統(tǒng)的關(guān)鍵條件 重復(fù):就是一遍又一遍地執(zhí)行某個(gè)操作或功能。這將確定一個(gè)操作能否正常執(zhí)行,并且能否繼續(xù)在每次執(zhí)行時(shí)都表現(xiàn)正常。 并發(fā):就是在同一時(shí)間內(nèi)執(zhí)行多個(gè)操作。由并發(fā)引起的錯(cuò)誤只能通過(guò)執(zhí)行多個(gè)代碼示例才能測(cè)出來(lái),測(cè)試時(shí)要同時(shí)遍歷多條代碼路徑。 量級(jí):要考慮到每個(gè)操作中的負(fù)載量,操作自身應(yīng)盡可能給被測(cè)軟件系統(tǒng)增加壓力,即:盡量使單獨(dú)的操作進(jìn)行高強(qiáng)度的使用,增加操作的量級(jí)。 隨機(jī)變化:隨機(jī)使用前面條件中的無(wú)數(shù)變化形式,就能夠在每次測(cè)試運(yùn)行時(shí)應(yīng)用許多不同的代碼路徑,5.1.4 使用WAS進(jìn)行Web負(fù)載測(cè)試,負(fù)載測(cè)試是任何Web 應(yīng)用開(kāi)發(fā)周期中一個(gè)重要的環(huán)節(jié)。在構(gòu)造一個(gè)為大量用戶(hù)服務(wù)的應(yīng)用之前

9、,搞清楚產(chǎn)品配置能夠承受多大的負(fù)載非常重要。但是在實(shí)際開(kāi)發(fā)過(guò)程中,若要按照實(shí)際投入運(yùn)行的情況,組織成千上萬(wàn)的用戶(hù)來(lái)進(jìn)行壓力測(cè)試,無(wú)論從那個(gè)方面看,都是不現(xiàn)實(shí)的。 為了有效的對(duì)Web應(yīng)用程序進(jìn)行負(fù)載(壓力)測(cè)試,微軟公司發(fā)布了簡(jiǎn)單易用、功能強(qiáng)大的Web應(yīng)用負(fù)載測(cè)試工具WAS(Web Application Stress Tool),它能夠提供一種簡(jiǎn)單的方法模擬大量用戶(hù)進(jìn)行訪(fǎng)問(wèn)目標(biāo)網(wǎng)站,而且還能夠提供Web應(yīng)用程序工作時(shí)對(duì)硬件和軟件的使用情況。 如何使用WAS進(jìn)行Web負(fù)載測(cè)試,5.2 圖形用戶(hù)界面GUI測(cè)試,由于GUI開(kāi)發(fā)環(huán)境采用了較多可重用的組件,因此在開(kāi)發(fā)用戶(hù)界面時(shí)高效、省時(shí)而且精確;但由于

10、GUI的復(fù)雜性,增加了對(duì)這類(lèi)情形的軟件進(jìn)行測(cè)試的難度,從而也加大了設(shè)計(jì)和執(zhí)行測(cè)試用例的難度。 目前,針對(duì)GUI的測(cè)試技術(shù)基本上都是采用自動(dòng)化測(cè)試工具來(lái)實(shí)現(xiàn)。 具體測(cè)試工作中,GUI測(cè)試經(jīng)常需要考慮以下的測(cè)試內(nèi)容和方法: 窗體操作測(cè)試 下拉式菜單和鼠標(biāo)操作測(cè)試 數(shù)據(jù)項(xiàng)操作測(cè)試,5.3 實(shí)時(shí)系統(tǒng)測(cè)試,實(shí)時(shí)系統(tǒng):將硬件、軟件、人力和數(shù)據(jù)庫(kù)元素集成起來(lái),產(chǎn)生某種動(dòng)作響應(yīng)外部世界。在實(shí)時(shí)系統(tǒng)中,時(shí)間是交互的核心,它必須高速地獲得數(shù)據(jù),并在問(wèn)題域規(guī)定的時(shí)間框架內(nèi)對(duì)該問(wèn)題域做出相應(yīng)的處理。 實(shí)時(shí)系統(tǒng)測(cè)試的特殊性和復(fù)雜性: 實(shí)時(shí)系統(tǒng)的時(shí)間依賴(lài)性和異步性給測(cè)試帶來(lái)新的困難。 實(shí)時(shí)系統(tǒng)的軟件和硬件之間存在著密切關(guān)

11、系,測(cè)試時(shí)必須考慮硬件故障對(duì)軟件處理的影響。 實(shí)時(shí)系統(tǒng)測(cè)試的一般步驟: (1)任務(wù)測(cè)試;(2)行為測(cè)試;(3)任務(wù)間測(cè)試;(4)系統(tǒng)測(cè)試,5.4 面向?qū)ο筌浖臏y(cè)試,5.4.1 面向?qū)ο蟮幕靖拍?5.4.2 面向?qū)ο蟮能浖y(cè)試與傳統(tǒng)軟件測(cè)試 5.4.3 面向?qū)ο筌浖y(cè)試模型 5.4.4 類(lèi)的功能性測(cè)試和結(jié)構(gòu)性測(cè)試 5.4.5 狀態(tài)轉(zhuǎn)移圖的面向?qū)ο筌浖y(cè)試,Return,5.4.1 面向?qū)ο蟮幕靖拍?對(duì)象 類(lèi) 消息 接口 繼承 多態(tài)和動(dòng)態(tài)綁定,對(duì)象,對(duì)象是指包含了一組屬性以及對(duì)這些屬性的操作的封裝體。屬性可以是數(shù)據(jù),也可以是另一個(gè)對(duì)象;每個(gè)對(duì)象都有它自己的屬性值,表示該對(duì)象的狀態(tài);對(duì)象中的屬

12、性只能通過(guò)該對(duì)象所提供的操作來(lái)存取或修改。對(duì)象所具有的狀態(tài)、行為、標(biāo)識(shí)三個(gè)基本特征,分別對(duì)應(yīng)與對(duì)象的屬性、方法和對(duì)象名。 對(duì)象是軟件開(kāi)發(fā)期間測(cè)試的直接目標(biāo)。 面向?qū)ο筌浖y(cè)試所關(guān)注的焦點(diǎn): (1)對(duì)象的行為是否符合它的規(guī)定說(shuō)明; (2)該對(duì)象與和它相關(guān)的對(duì)象是否協(xié)同工作,類(lèi),類(lèi)是具有相同屬性和相同行為的對(duì)象的集合。面向?qū)ο蟪绦蜻\(yùn)行的基本元素是對(duì)象,而類(lèi)則是用來(lái)定義對(duì)象這一基本元素的。 在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類(lèi)是一個(gè)獨(dú)立的程序單位,它有一個(gè)類(lèi)名,還包括用于描述對(duì)象屬性的成員變量和用于描述對(duì)象行為的成員函數(shù)。 類(lèi)是對(duì)象的抽象定義,它定義了用戶(hù)將要如何創(chuàng)建對(duì)象的方法。使用類(lèi)時(shí)必須先實(shí)例化用對(duì)象名創(chuàng)建

13、類(lèi)的實(shí)例,再通過(guò)這個(gè)對(duì)象去訪(fǎng)問(wèn)類(lèi)的成員變量,去調(diào)用類(lèi)的成員函數(shù),消息,消息是對(duì)象的操作將要執(zhí)行的一種請(qǐng)求,也被稱(chēng)為成員函數(shù)調(diào)用或者方法調(diào)用。面向?qū)ο蟮某绦虻膱?zhí)行實(shí)際上是執(zhí)行一個(gè)由消息連接起來(lái)的方法序列。 “發(fā)送消息M到對(duì)象N” =“調(diào)用N對(duì)象的M方法” 一個(gè)對(duì)象通過(guò)向另一個(gè)對(duì)象發(fā)送消息來(lái)請(qǐng)求其服務(wù),對(duì)象之間的協(xié)同工作是通過(guò)互相傳送消息來(lái)完成的。 一個(gè)消息通常包括接收對(duì)象名、調(diào)用的操作名和適當(dāng)參數(shù)(如有必要)。消息只告訴接收對(duì)象需要完成什么操作,但并不指示接收者怎樣去完成操作。消息完全由接收者解釋?zhuān)邮照擢?dú)立決定采用什么方法來(lái)完成所需操作,消息(續(xù),從測(cè)試的角度看,關(guān)于消息有下面的結(jié)論: (1)

14、消息的發(fā)送者決定何時(shí)進(jìn)行發(fā)送消息,可能會(huì)做出錯(cuò)誤的決定; (2)消息的接收者可能收到非預(yù)期的特定消息,并做出不正確地反映; (3)消息可能含有參數(shù)。在處理一條消息時(shí),參數(shù)能被接收者使用或修改。若傳遞的參數(shù)是對(duì)象,那么在消息被處理前和處理后,對(duì)象必須處于正確的狀態(tài),而且必須是接收者所期望的接口,接口,接口是行為聲明的集合。接口是由一些規(guī)范構(gòu)成的,規(guī)范定義了類(lèi)的一套完整的公共行為。 從測(cè)試的角度,關(guān)于接口有下面的結(jié)論: (1)接口封裝了操作的說(shuō)明。如果這一接口包含的行為和類(lèi)的行為不相符,那么這一接口的說(shuō)明就有問(wèn)題。 (2)接口非孤立,它與其它的接口和類(lèi)有一定的關(guān)系。一個(gè)接口可以指定一個(gè)行為的參數(shù)類(lèi)

15、型,使得實(shí)現(xiàn)該接口的類(lèi)可以被當(dāng)作一個(gè)參數(shù)進(jìn)行傳遞,繼承,繼承是指在某個(gè)類(lèi)的層次關(guān)聯(lián)中,不同的類(lèi)共享屬性和操作的一種機(jī)制。繼承允許一個(gè)新的類(lèi)(稱(chēng)為子類(lèi))在一個(gè)已有的類(lèi)(稱(chēng)為父類(lèi)或者基類(lèi))的基礎(chǔ)上進(jìn)行定義。一個(gè)父類(lèi)可以有多個(gè)子類(lèi),這些子類(lèi)都是父類(lèi)的特例。父類(lèi)描述了這些子類(lèi)的公共屬性和操作,子類(lèi)中還可以定義它自己的屬性和操作。 從測(cè)試的角度來(lái)看,繼承包含以下內(nèi)容: (1)繼承提供一種機(jī)制,通過(guò)這種機(jī)制,潛在的錯(cuò)誤能夠從一個(gè)類(lèi)傳遞到它的派生類(lèi)。 (2)子類(lèi)是從父類(lèi)繼承過(guò)來(lái)的,子類(lèi)也就繼承了父類(lèi)的屬性和操作。因此,可以用測(cè)試父類(lèi)的方法對(duì)子類(lèi)進(jìn)行測(cè)試,多態(tài)和動(dòng)態(tài)綁定,多態(tài)是指同一個(gè)操作作用于不同的對(duì)象可以

16、有不同的解釋?zhuān)a(chǎn)生不同的執(zhí)行結(jié)果。多態(tài)提供了將類(lèi)看作是一種或多種類(lèi)型的能力,它定義了用來(lái)支持多種不同類(lèi)型所適應(yīng)的策略。多態(tài)可分為包含多態(tài)與參數(shù)多態(tài)。 與多態(tài)密切相關(guān)的一個(gè)概念就是動(dòng)態(tài)綁定。傳統(tǒng)程序設(shè)計(jì)語(yǔ)言把過(guò)程調(diào)用與目標(biāo)代碼的連接放在程序運(yùn)行前進(jìn)行,稱(chēng)為靜態(tài)綁定。而動(dòng)態(tài)綁定則是把這種連接推遲到運(yùn)行時(shí)才進(jìn)行。 在程序運(yùn)行過(guò)程中,當(dāng)一個(gè)對(duì)象發(fā)送消息請(qǐng)求服務(wù)時(shí),要根據(jù)接收對(duì)象的具體情況將請(qǐng)求的操作與實(shí)現(xiàn)的方法進(jìn)行連接,即動(dòng)態(tài)綁定,5.4.2 面向?qū)ο蟮能浖y(cè)試與傳統(tǒng)軟件測(cè)試,面向?qū)ο蠹夹g(shù)所獨(dú)有的封裝、繼承、多態(tài)等新特點(diǎn)給測(cè)試帶來(lái)一系列新的問(wèn)題,增加了測(cè)試的難度。與傳統(tǒng)的面向過(guò)程的程序設(shè)計(jì)相比,面向?qū)?/p>

17、象程序設(shè)計(jì)產(chǎn)生錯(cuò)誤的可能性增大,或者使得傳統(tǒng)軟件測(cè)試中的重點(diǎn)不再那么突出,使原來(lái)測(cè)試經(jīng)驗(yàn)和實(shí)踐證明的次要方面成為了主要問(wèn)題。 例如:函數(shù) y = Function(x) 如果該函數(shù)寫(xiě)在傳統(tǒng)的面向過(guò)程的程序中,通常考慮的是函數(shù)Function()本身的行為特點(diǎn)。但若寫(xiě)在面向?qū)ο蟮某绦蛑校筒坏貌煌瑫r(shí)考慮基類(lèi)函數(shù)Base:Function() 的行為和繼承類(lèi)函數(shù)Derived:Function()的行為,面向?qū)ο蠹夹g(shù)的特點(diǎn)給測(cè)試帶來(lái)的新問(wèn)題具體表現(xiàn)為: (1)封裝把數(shù)據(jù)及對(duì)數(shù)據(jù)的操作封裝在一起,限制了對(duì)象屬性對(duì)外的透明性和外界對(duì)它的操作權(quán)限,在某種程度上避免了對(duì)數(shù)據(jù)的非法操作,有效防止了故障的擴(kuò)散

18、。但同時(shí),封裝機(jī)制也給測(cè)試數(shù)據(jù)的生成、測(cè)試路徑的選取以及測(cè)試結(jié)構(gòu)的分析帶來(lái)了困難。 (2)繼承實(shí)現(xiàn)了共享父類(lèi)中定義的數(shù)據(jù)和操作,同時(shí)也可定義新的特征。子類(lèi)是在新的環(huán)境中存在,所以父類(lèi)的正確性不能保證子類(lèi)的正確性。繼承使代碼的重用率得到了提高,但同時(shí)也使故障的傳播幾率增加。 (3)多態(tài)和動(dòng)態(tài)綁定增加了系統(tǒng)運(yùn)行中可能的執(zhí)行路徑,而且給面向?qū)ο筌浖?lái)了嚴(yán)重的不確定性,給測(cè)試覆蓋率的活動(dòng)帶來(lái)新的困難,面向?qū)ο蟮能浖y(cè)試與傳統(tǒng)軟件測(cè)試(續(xù),與傳統(tǒng)軟件相比,由于存在的諸如繼承、關(guān)聯(lián)、動(dòng)態(tài)綁定等關(guān)系,面向?qū)ο筌浖哂懈鼜?fù)雜的依賴(lài)關(guān)系,一個(gè)類(lèi)將不可避免的依賴(lài)于其它的類(lèi),從而增加了面向?qū)ο筌浖y(cè)試的難度。 傳

19、統(tǒng)軟件中存在的依賴(lài)關(guān)系有:變量間的數(shù)據(jù)依賴(lài);模塊間的調(diào)用依賴(lài);變量與其類(lèi)型間的定義依賴(lài);模塊與其變量間的功能依賴(lài)。 面向?qū)ο筌浖舜嬖谏鲜鲆蕾?lài)關(guān)系外,還存在以下的依賴(lài)關(guān)系:類(lèi)與類(lèi)間的依賴(lài);類(lèi)與操作間的依賴(lài);類(lèi)與消息間的依賴(lài);類(lèi)與變量間的依賴(lài);操作與變量間的依賴(lài);操作與消息間的依賴(lài);操作與操作間的依賴(lài),面向?qū)ο蟮能浖y(cè)試與傳統(tǒng)軟件測(cè)試(續(xù),5.4.3 面向?qū)ο筌浖y(cè)試模型,面向?qū)ο蟮某绦蚪Y(jié)構(gòu)不再是傳統(tǒng)的功能模塊結(jié)構(gòu),作為一個(gè)整體,原有集成測(cè)試所要求的逐步將開(kāi)發(fā)的模塊搭建在一起進(jìn)行測(cè)試的方法已變得不可行。而且,面向?qū)ο筌浖仐壛藗鹘y(tǒng)的開(kāi)發(fā)模式,對(duì)每個(gè)開(kāi)發(fā)階段都有不同以往的要求和結(jié)果,已經(jīng)不可能用

20、功能細(xì)化的觀點(diǎn)來(lái)檢測(cè)面向?qū)ο蠓治龊驮O(shè)計(jì)的結(jié)果。因此,傳統(tǒng)的測(cè)試模型對(duì)面向?qū)ο筌浖呀?jīng)不再適用。 面向?qū)ο蟮能浖_(kāi)發(fā)模型將開(kāi)發(fā)過(guò)程定義為面向?qū)ο蠓治?OOA)、面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο缶幊?OOP)三個(gè)階段。針對(duì)這種開(kāi)發(fā)模型,應(yīng)該建立一種新的測(cè)試模型,面向?qū)ο筌浖y(cè)試模型(續(xù),面向?qū)ο蟮臏y(cè)試模型,面向?qū)ο筌浖y(cè)試模型(續(xù),OOA Test 和OOD Test 是對(duì)分析結(jié)果和設(shè)計(jì)結(jié)果的測(cè)試,主要是對(duì)分析設(shè)計(jì)產(chǎn)生的文檔進(jìn)行測(cè)試,是軟件開(kāi)發(fā)前期的關(guān)鍵性測(cè)試。OOP Test 主要針對(duì)編程風(fēng)格和程序代碼實(shí)現(xiàn)進(jìn)行測(cè)試,主要的測(cè)試內(nèi)容在面向?qū)ο髥卧獪y(cè)試和面向?qū)ο蠹蓽y(cè)試中體現(xiàn)。 面向?qū)ο髥卧獪y(cè)試針對(duì)

21、程序內(nèi)部具體單一功能的模塊進(jìn)行測(cè)試,比如在C+程序中主要就是對(duì)類(lèi)成員函數(shù)的測(cè)試。面向?qū)ο蠹蓽y(cè)試主要對(duì)系統(tǒng)內(nèi)部的相互服務(wù)進(jìn)行測(cè)試,如成員函數(shù)間的相互作用、類(lèi)間的消息傳遞等。面向?qū)ο笙到y(tǒng)測(cè)試是基于面向?qū)ο蠹蓽y(cè)試的最后階段的測(cè)試,主要以用戶(hù)需求為測(cè)試標(biāo)準(zhǔn),面向?qū)ο蠓治龅臏y(cè)試(OOA Test,OOA直接映射問(wèn)題空間,全面地將問(wèn)題空間中實(shí)現(xiàn)功能的實(shí)例抽象為對(duì)象(不同于C+中的對(duì)象概念),用對(duì)象的結(jié)構(gòu)反映問(wèn)題空間的復(fù)雜實(shí)例和復(fù)雜關(guān)系,用屬性和服務(wù)表示實(shí)例的特性和行為。 OOA的測(cè)試重點(diǎn)在其完整性和冗余性。對(duì)OOA階段的測(cè)試劃分為五個(gè)方面:對(duì)認(rèn)定的對(duì)象的測(cè)試;對(duì)認(rèn)定的結(jié)構(gòu)的測(cè)試;對(duì)認(rèn)定的主題的測(cè)試;對(duì)

22、定義的屬性和實(shí)例關(guān)聯(lián)的測(cè)試;對(duì)定義的服務(wù)和消息關(guān)聯(lián)的測(cè)試。 OOA中認(rèn)定的對(duì)象:是指對(duì)問(wèn)題空間中的結(jié)構(gòu)、其他系統(tǒng)、設(shè)備、被記憶的事件、系統(tǒng)涉及的人員等實(shí)際實(shí)例的抽象,面向?qū)ο笤O(shè)計(jì)的測(cè)試(OOD Test,OOD是OOA的進(jìn)一步細(xì)化和擴(kuò)充,重點(diǎn)在于說(shuō)明項(xiàng)目的實(shí)施方案,來(lái)確定類(lèi)和類(lèi)的結(jié)構(gòu)。 對(duì)OOD的測(cè)試,應(yīng)針對(duì)功能的實(shí)現(xiàn)和重用以及對(duì)OOA結(jié)果的拓展進(jìn)行,從以下三方面考慮: (1)對(duì)認(rèn)定的類(lèi)的測(cè)試是否涵蓋了OOA中所有認(rèn)定的對(duì)象;是否能體現(xiàn)OOA中定義的屬性;是否能實(shí)現(xiàn)OOA中定義的服務(wù);是否對(duì)應(yīng)著一個(gè)含義明確的數(shù)據(jù)抽象;是否盡可能少的依賴(lài)其他類(lèi);類(lèi)中的方法是否單用途。 (2)對(duì)構(gòu)造的類(lèi)層次結(jié)構(gòu)的

23、測(cè)試類(lèi)層次結(jié)構(gòu)是否涵蓋了所有定義的類(lèi);是否能體現(xiàn)OOA中定義的實(shí)例關(guān)聯(lián);是否能實(shí)現(xiàn)OOA中定義的消息關(guān)聯(lián);子類(lèi)是否具有父類(lèi)沒(méi)有的新特性;子類(lèi)間的共同特性是否完全在父類(lèi)中得以體現(xiàn)。 (3)對(duì)類(lèi)庫(kù)支持的測(cè)試,面向?qū)ο缶幊痰臏y(cè)試(OOP Test,面向?qū)ο蟪绦蚴前压δ艿膶?shí)現(xiàn)分布在類(lèi)中。能正確實(shí)現(xiàn)功能的類(lèi),通過(guò)消息傳遞來(lái)協(xié)同實(shí)現(xiàn)設(shè)計(jì)要求的功能。這種程序架構(gòu)能將出現(xiàn)的錯(cuò)誤精確的確定在某一具體的類(lèi)。 對(duì)OOP的測(cè)試重點(diǎn)集中在類(lèi)功能的實(shí)現(xiàn)和相應(yīng)的面向?qū)ο蟪绦蚣軜?gòu),主要體現(xiàn)為以下兩個(gè)方面: (1)數(shù)據(jù)成員是否滿(mǎn)足數(shù)據(jù)封裝的要求基本原則是數(shù)據(jù)成員是否被外界(數(shù)據(jù)成員所屬的類(lèi)或子類(lèi)以外的調(diào)用)直接調(diào)用。 (2)類(lèi)

24、是否實(shí)現(xiàn)了要求的功能測(cè)試類(lèi)的功能,不能僅滿(mǎn)足于代碼能無(wú)錯(cuò)運(yùn)行或被測(cè)試的類(lèi)能提供的功能正確,應(yīng)以所做的OOD結(jié)果為依據(jù),檢測(cè)類(lèi)提供的功能是否滿(mǎn)足了設(shè)計(jì)的要求,是否有缺陷,面向?qū)ο蟮膯卧獪y(cè)試,傳統(tǒng)的單元測(cè)試是針對(duì)程序的函數(shù)、過(guò)程或完成某一特定功能的程序塊。沿用單元測(cè)試的概念,面向?qū)ο髥卧獪y(cè)試實(shí)際測(cè)試類(lèi)成員函數(shù)。單獨(dú)的看待類(lèi)的成員函數(shù),與面向過(guò)程程序中的函數(shù)或過(guò)程沒(méi)有本質(zhì)的區(qū)別,傳統(tǒng)的測(cè)試方法在面向?qū)ο髥卧獪y(cè)試中都可使用,如等價(jià)類(lèi)劃分法、因果圖法、邊值分析法、邏輯覆蓋法、路徑分析法等等。 面向?qū)ο缶幊痰奶匦允沟脤?duì)成員函數(shù)的測(cè)試又不完全等同于傳統(tǒng)的函數(shù)或過(guò)程測(cè)試。尤其是繼承特性和多態(tài)特性,使子類(lèi)繼承或

25、重載的父類(lèi)成員函數(shù)出現(xiàn)了傳統(tǒng)測(cè)試中未遇見(jiàn)的問(wèn)題。這里要考慮如下兩個(gè)問(wèn)題: (1)繼承的成員函數(shù)是否都不需要測(cè)試? (2)對(duì)父類(lèi)的測(cè)試是否能照搬到子類(lèi),面向?qū)ο蟮膯卧獪y(cè)試(續(xù),繼承的成員函數(shù)是否都不需要測(cè)試? 對(duì)父類(lèi)中已經(jīng)測(cè)試過(guò)的成員函數(shù),以下兩種情況需要在子類(lèi)中重新測(cè)試: a)繼承的成員函數(shù)在子類(lèi)中做了改動(dòng); b)成員函數(shù)調(diào)用了改動(dòng)過(guò)的成員函數(shù)的部分。 例:假設(shè)存在父類(lèi)Base有Inherited()和Redefined()這兩個(gè)成員函數(shù),繼承父類(lèi)Base的子類(lèi)Derived只對(duì)Redefined() 做了改動(dòng)。那么,Derived:Redefined()就需要重新測(cè)試;對(duì)于Derived:I

26、nherited(),若它包含了調(diào)用Redefined()的 語(yǔ)句 (比如:x=x/Redefined()),就需要重新測(cè)試,否則就不需要,面向?qū)ο蟮膯卧獪y(cè)試(續(xù),對(duì)父類(lèi)的測(cè)試是否能照搬到子類(lèi)? 引用前面的假設(shè),成員函數(shù)Base:Redefined()和Derived:Redefined()已經(jīng)是不同的。那么,按理應(yīng)該要對(duì)Derived:Redefined()重新測(cè)試分析,設(shè)計(jì)測(cè)試用例。但是由于面向?qū)ο蟮睦^承使得兩個(gè)函數(shù)相似,故只需要在對(duì)Base:Redefined()的測(cè)試要求和測(cè)試用例上添加對(duì)Derived:Redefined()新的測(cè)試要求和增補(bǔ)相應(yīng)測(cè)試用例。 例 Base:Redefi

27、ned()含有如下語(yǔ)句: If (value0) message(“l(fā)ess”); else if (value=0) message(“equal”); else message(“more”);,面向?qū)ο蟮膯卧獪y(cè)試(續(xù),例(續(xù)) 在Derived:Redefined()中定義為: If (value0) message(“l(fā)ess”); else if (value=0) message(“It is equal”); else message(“more”); if (value=88) message(“l(fā)uck”); 在原有對(duì)父類(lèi)Base的測(cè)試上,對(duì)Derived:Redefined

28、()的測(cè)試只需作如下改動(dòng):將value=0的測(cè)試結(jié)果期望改動(dòng);增加value=88的測(cè)試,面向?qū)ο蟮募蓽y(cè)試,傳統(tǒng)的自頂向下和自底向上的集成策略對(duì)于面向?qū)ο蟮臏y(cè)試集成是沒(méi)有意義的,類(lèi)之間的相互依賴(lài)使其根本無(wú)法在編譯不完全的程序上對(duì)類(lèi)進(jìn)行測(cè)試。因此,面向?qū)ο蠹蓽y(cè)試通常需要在整個(gè)程序編譯完成后進(jìn)行。此外,面向?qū)ο蟪绦蚓哂袆?dòng)態(tài)特性,程序的控制流往往無(wú)法確定,所以也只能對(duì)整個(gè)編譯后的程序做基于黑盒的集成測(cè)試。 面向?qū)ο蟮募蓽y(cè)試通常需要進(jìn)行兩級(jí)集成:一是將成員函數(shù)集成到完整類(lèi)中;二是將類(lèi)與其它類(lèi)集成。 面向?qū)ο蟮募蓽y(cè)試能夠檢測(cè)出相對(duì)獨(dú)立的單元測(cè)試無(wú)法檢測(cè)出的那些類(lèi)相互作用時(shí)才會(huì)產(chǎn)生的錯(cuò)誤。單元測(cè)試

29、可以保證成員函數(shù)行為的正確性,集成測(cè)試則只關(guān)注于系統(tǒng)的結(jié)構(gòu)和內(nèi)部的相互作用,面向?qū)ο蟮募蓽y(cè)試(續(xù),面向?qū)ο蠹蓽y(cè)試可以分成兩步進(jìn)行:先進(jìn)行靜態(tài)測(cè)試,再進(jìn)行動(dòng)態(tài)測(cè)試。 靜態(tài)測(cè)試主要針對(duì)程序結(jié)構(gòu)進(jìn)行,檢測(cè)程序結(jié)構(gòu)是否符合設(shè)計(jì)要求?,F(xiàn)在常用的一些測(cè)試軟件都能提供一種稱(chēng)為 “可逆性工程”的功能,即通過(guò)源程序得到類(lèi)關(guān)系圖和函數(shù)功能調(diào)用關(guān)系圖。將“可逆性工程”得到的結(jié)果與OOD的結(jié)果相比較,以檢測(cè)OOP是否達(dá)到了設(shè)計(jì)要求。 動(dòng)態(tài)測(cè)試則測(cè)試與每個(gè)動(dòng)態(tài)語(yǔ)境有關(guān)的消息。設(shè)計(jì)測(cè)試用例時(shí),通常需要上述的功能調(diào)用關(guān)系圖、類(lèi)關(guān)系圖或?qū)嶓w關(guān)系圖為參考,確定不需要被重復(fù)測(cè)試的部分,從而優(yōu)化測(cè)試用例,使得進(jìn)行的測(cè)試能夠達(dá)到一定覆蓋標(biāo)準(zhǔn),面向?qū)ο蟮南到y(tǒng)測(cè)試,系統(tǒng)測(cè)試應(yīng)該盡量搭建與用戶(hù)實(shí)際使用環(huán)境相同的測(cè)試平臺(tái),應(yīng)該保證被測(cè)系統(tǒng)的完整性,對(duì)臨時(shí)沒(méi)有的系統(tǒng)設(shè)備部件,也應(yīng)有相應(yīng)的模擬手段。 面

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論