軟件測(cè)試(英語(yǔ):software testing),
描述一種用來(lái)促進(jìn)鑒定軟件的正確性、完整性、安全性和質(zhì)量的過(guò)程。
軟件測(cè)試的經(jīng)典定義是:
在規(guī)定的條件下對(duì)程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對(duì)其是否能滿(mǎn)足設(shè)計(jì)要求進(jìn)行評(píng)估的過(guò)程。
?
軟件測(cè)試是使用人工操作或者軟件自動(dòng)運(yùn)行的方式來(lái)檢驗(yàn)它是否滿(mǎn)足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別的過(guò)程。
?
它是幫助識(shí)別開(kāi)發(fā)完成(中間或最終的版本)的
計(jì)算機(jī)軟件
(整體或部分)的
正確度(correctness) 、完全度(completeness)和質(zhì)量(quality)
的
軟件過(guò)程
;是
SQA
(software quality assurance)的重要子域。
?
?
(1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程。
(2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案。
(3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。
(4)測(cè)試并不僅僅是為了找出錯(cuò)誤。通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的發(fā)生趨勢(shì),可以幫助
項(xiàng)目管理
者發(fā)現(xiàn)當(dāng)前
軟件開(kāi)發(fā)
過(guò)程中的缺陷,以便及時(shí)改進(jìn)。
(5)這種分析也能幫助測(cè)試人員設(shè)計(jì)出有針對(duì)性的測(cè)試方法,改善測(cè)試的效率和有效性。
(6)沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完整的測(cè)試是評(píng)定
軟件質(zhì)量
的一種方法。
(7)另外,根據(jù)測(cè)試目的的不同,還有
回歸測(cè)試
、
壓力測(cè)試
、
性能測(cè)試
等,分別為了檢驗(yàn)修改或優(yōu)化過(guò)程是否引發(fā)新的問(wèn)題、軟件所能達(dá)到處理能力和是否達(dá)到預(yù)期的處理能力等。
?
測(cè)試原則
一,測(cè)試應(yīng)該
盡早進(jìn)行
,最好在需求階段就開(kāi)始介入,因?yàn)樽顕?yán)重的錯(cuò)誤不外乎是系統(tǒng)不能滿(mǎn)足用戶(hù)的需求。
二,程序員應(yīng)該避免檢查自己的程序,軟件測(cè)試應(yīng)該
由
第三方
來(lái)負(fù)責(zé)
。
三,設(shè)計(jì)測(cè)試用例時(shí)應(yīng)考
慮到合法的輸入和不合法的輸入以及各種邊界條件
,特殊情況下要制造極端狀態(tài)和意外狀態(tài),如網(wǎng)絡(luò)異常中斷、電源斷電等。
四,應(yīng)該充分
注意測(cè)試中的
群集現(xiàn)象
。
五,對(duì)錯(cuò)誤結(jié)果要進(jìn)行一個(gè)確認(rèn)過(guò)程。
一般由A測(cè)試出來(lái)的錯(cuò)誤,一定要由B來(lái)確認(rèn)
。嚴(yán)重的錯(cuò)誤可以召開(kāi)評(píng)審會(huì)議進(jìn)行討論和分析,對(duì)測(cè)試結(jié)果要進(jìn)行嚴(yán)格地確認(rèn),是否真的存在這個(gè)問(wèn)題以及嚴(yán)重程度等。
六,
制定嚴(yán)格的測(cè)試計(jì)劃
。一定要制定測(cè)試計(jì)劃,并且要有指導(dǎo)性。測(cè)試時(shí)間安排盡量寬松,不要希望在極短的時(shí)間內(nèi)完成也有一個(gè)高水平的測(cè)試。
七,
妥善保存測(cè)試計(jì)劃、
測(cè)試用例
、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便
。
?
?
?
測(cè)試目標(biāo)
1.發(fā)現(xiàn)一些可以通過(guò)測(cè)試避免的開(kāi)發(fā)風(fēng)險(xiǎn)。
2.實(shí)施測(cè)試來(lái)降低所發(fā)現(xiàn)的風(fēng)險(xiǎn)。
3.確定測(cè)試何時(shí)可以結(jié)束。
?
測(cè)試內(nèi)容
軟件測(cè)試主要工作內(nèi)容是
驗(yàn)證(verification)和確認(rèn)(validation),
下面分別給出其概念:
驗(yàn)證(verification)是保證軟件正確地實(shí)現(xiàn)了一些特定功能的一系列活動(dòng), 即保證軟件以正確的方式來(lái)做了這個(gè)事件(Do it right)
1.確定
軟件生存周期
中的一個(gè)給定階段的產(chǎn)品是否達(dá)到前階段確立的需求的過(guò)程。
2.程序正確性的形式證明,即采用形式理論證明程序符合設(shè)計(jì)規(guī)約規(guī)定的過(guò)程。
3.評(píng)審、審查、測(cè)試、檢查、審計(jì)等各類(lèi)活動(dòng),或?qū)δ承╉?xiàng)處理、服務(wù)或文件等是否和規(guī)定的需求相一致進(jìn)行判斷和提出報(bào)告。
確認(rèn)(validation)是一系列的活動(dòng)和過(guò)程,目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的邏輯正確性。即保證軟件做了你所期望的事情。(Do the right thing)
1.靜態(tài)確認(rèn),不在計(jì)算機(jī)上實(shí)際執(zhí)行程序,通過(guò)人工或
程序分析
來(lái)證明軟件的正確性。
2.動(dòng)態(tài)確認(rèn),通過(guò)執(zhí)行程序做分析,測(cè)試程序的動(dòng)態(tài)行為,以證實(shí)軟件是否存在問(wèn)題。
軟件測(cè)試的對(duì)象不僅僅是程序測(cè)試,軟件測(cè)試應(yīng)該包括整個(gè)軟件開(kāi)發(fā)期間各個(gè)階段所產(chǎn)生的文檔,如需求規(guī)格說(shuō)明、
概要設(shè)計(jì)
文檔、詳細(xì)設(shè)計(jì)文檔,當(dāng)然軟件測(cè)試的主要對(duì)象還是源程序。
?
測(cè)試方法
等價(jià)類(lèi)
1.定義
是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測(cè)試用例。該方法是一種重要的,常用的
黑盒測(cè)試
用例設(shè)計(jì)方法。
2.劃分等價(jià)類(lèi)
等價(jià)類(lèi)是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的,并合理地假定:測(cè)試某等價(jià)類(lèi)的代表值就等于對(duì)這一類(lèi)其它值的測(cè)試,因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類(lèi),在每一個(gè)等價(jià)類(lèi)中取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件就可以用少量代表性的測(cè)試數(shù)據(jù)取得較好的測(cè)試結(jié)果。等價(jià)類(lèi)劃分可有兩種不同的情況:有效等價(jià)類(lèi)和無(wú)效等價(jià)類(lèi)。
1)有效等價(jià)類(lèi)
是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō)是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價(jià)類(lèi)可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說(shuō)明中所規(guī)定的功能和性能。
2)無(wú)效等價(jià)類(lèi)
與有效等價(jià)類(lèi)的定義恰巧相反。無(wú)效等價(jià)類(lèi)指對(duì)程序的規(guī)格說(shuō)明是不合理的或無(wú)意義的輸入數(shù)據(jù)所構(gòu)成的集合。對(duì)于具體的問(wèn)題,無(wú)效等價(jià)類(lèi)至少應(yīng)有一個(gè),也可能有多個(gè)。
設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類(lèi)。因?yàn)檐浖粌H要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn),這樣的測(cè)試才能確保軟件具有更高的可靠性。
3.劃分等價(jià)類(lèi)的標(biāo)準(zhǔn)
1)完備測(cè)試、避免冗余;
2)劃分等價(jià)類(lèi)重要的是:集合的劃分,劃分為互不相交的一組子集,而子集的并是整個(gè)集合;
3)并是整個(gè)集合:完備性;
4)子集互不相交:保證一種形式的無(wú)冗余性;
5)同一類(lèi)中標(biāo)識(shí)(選擇)一個(gè)測(cè)試用例,同一等價(jià)類(lèi)中,往往處理相同,相同處理映射到"相同的執(zhí)行路徑"。
4.劃分等價(jià)類(lèi)的方法
1)在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類(lèi)和兩個(gè)無(wú)效等價(jià)類(lèi)。
如:輸入值是學(xué)生成績(jī),范圍是0~100。
2)在輸入條件規(guī)定了輸入值的集合或者規(guī)定了"必須如何"的條件的情況下,可確立一個(gè)有效等價(jià)類(lèi)和一個(gè)無(wú)效等價(jià)類(lèi)。
?
邊界值
1. 定義:
邊界值分析法就是對(duì)輸入或輸出的邊界值進(jìn)行測(cè)試的一種黑盒測(cè)試方法。通常邊界值分析法是作為對(duì)等價(jià)類(lèi)劃分法的補(bǔ)充,這種情況下,其測(cè)試用例來(lái)自等價(jià)類(lèi)的邊界。
2. 與等價(jià)劃分的區(qū)別
1) 邊界值分析不是從某等價(jià)類(lèi)中隨便挑一個(gè)作為代表,而是使這個(gè)等價(jià)類(lèi)的每個(gè)邊界都要作為測(cè)試條件。
2) 邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測(cè)試情況。
3. 邊界值分析方法的考慮:
長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)告訴我們,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。
使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)確定邊界情況。通常輸入和輸出等價(jià)類(lèi)的邊界,就是應(yīng)著重測(cè)試的邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),而不是選取等價(jià)類(lèi)中的典型值或任意值作為測(cè)試數(shù)據(jù)。
4. 常見(jiàn)的邊界值
1) 對(duì)16-bit 的整數(shù)而言 32767 和 -32768 是邊界
2) 屏幕上光標(biāo)在最左上、最右下位置
3) 報(bào)表的第一行和最后一行
4) 數(shù)組元素的第一個(gè)和最后一個(gè)
5) 循環(huán)的第 0 次、第 1 次和倒數(shù)第 2 次、最后一次
5. 邊界值分析
1) 邊界值分析使用與等價(jià)類(lèi)劃分法相同的劃分,只是邊界值分析假定錯(cuò)誤更多地存在于劃分的邊界上,因此在等價(jià)類(lèi)的邊界上以及兩側(cè)的情況設(shè)計(jì)測(cè)試用例。
例:測(cè)試計(jì)算平方根的函數(shù)
--輸入:實(shí)數(shù)
--輸出:實(shí)數(shù)
--規(guī)格說(shuō)明:當(dāng)輸入一個(gè)0或比0大的數(shù)的時(shí)候,返回其正平方根;當(dāng)輸入一個(gè)小于0的數(shù)時(shí),顯示錯(cuò)誤信息"平方根非法-輸入值小于0"并返回0;庫(kù)函數(shù)Print-Line可以用來(lái)輸出錯(cuò)誤信息。
?
詳細(xì)分類(lèi)
角度細(xì)分
從是否關(guān)心軟件內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)的角度劃分(按測(cè)試分類(lèi))
A.
白盒測(cè)試
B.
黑盒測(cè)試
C.
灰盒測(cè)試
從是否執(zhí)行程序的角度
B.
動(dòng)態(tài)測(cè)試
。
階段細(xì)分
從軟件開(kāi)發(fā)的過(guò)程按階段劃分有
A.
單元測(cè)試
B.
集成測(cè)試
F.
回歸測(cè)試
G.
Alpha測(cè)試
H.
Beta測(cè)試
* 測(cè)試過(guò)程按4個(gè)
步驟
進(jìn)行,即單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試及發(fā)布測(cè)試。
* 開(kāi)始是單元測(cè)試,集中對(duì)用源代碼實(shí)現(xiàn)的每一個(gè)
程序單元
進(jìn)行測(cè)試,檢查各個(gè)
程序模塊
是否正確地實(shí)現(xiàn)了規(guī)定的功能。
*
集成測(cè)試
把已測(cè)試過(guò)的模塊組裝起來(lái),主要對(duì)與設(shè)計(jì)相關(guān)的
軟件體系結(jié)構(gòu)
的構(gòu)造進(jìn)行測(cè)試。
* 確認(rèn)測(cè)試則是要檢查已實(shí)現(xiàn)的軟件是否滿(mǎn)足了需求規(guī)格說(shuō)明中確定了的各種需求,以及
軟件配置
是否完全、正確。
* 系統(tǒng)測(cè)試把已經(jīng)經(jīng)過(guò)確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測(cè)試。
單元測(cè)試 (Unit Testing)
* 單元測(cè)試又稱(chēng)模塊測(cè)試,是針對(duì)
軟件設(shè)計(jì)
的最小單位 ─ 程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。
* 單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試。
1. 單元測(cè)試的內(nèi)容
* 在單元測(cè)試時(shí),測(cè)試者需要依據(jù)
詳細(xì)設(shè)計(jì)說(shuō)明書(shū)
和源程序清單,了解該模塊的I/O條件和模塊的
邏輯結(jié)構(gòu)
,主要采用白盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。
(1) 模塊接口測(cè)試
* 在單元測(cè)試的開(kāi)始,應(yīng)對(duì)通過(guò)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。測(cè)試項(xiàng)目包括:
– 調(diào)用本模塊的輸入?yún)?shù)是否正確;
– 本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確;
– 全局量的定義在各模塊中是否一致
* 在做內(nèi)外存交換時(shí)要考慮:
– 文件屬性是否正確;
– OPEN與CLOSE語(yǔ)句是否正確;
– 緩沖區(qū)容量與記錄長(zhǎng)度是否匹配;
– 在進(jìn)行讀寫(xiě)操作之前是否打開(kāi)了文件;
– 在結(jié)束文件處理時(shí)是否關(guān)閉了文件;
– 正文書(shū)寫(xiě)/輸入錯(cuò)誤,
– I/O錯(cuò)誤是否檢查并做了處理。
(2) 局部
數(shù)據(jù)結(jié)構(gòu)
測(cè)試
* 不正確或不一致的數(shù)據(jù)類(lèi)型說(shuō)明
* 使用尚未賦值或尚未初始化的變量
* 錯(cuò)誤的初始值或錯(cuò)誤的缺省值
* 變量名拼寫(xiě)錯(cuò)或書(shū)寫(xiě)錯(cuò)
* 不一致的數(shù)據(jù)類(lèi)型
* 全局?jǐn)?shù)據(jù)對(duì)模塊的影響
(3) 路徑測(cè)試
* 選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。
* 應(yīng)當(dāng)設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤。
* 對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量的路徑錯(cuò)誤。
(4) 錯(cuò)誤處理測(cè)試
* 出錯(cuò)的描述是否難以理解
* 出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位
* 顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符
* 對(duì)錯(cuò)誤條件的處理正確與否
* 在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等
(5) 邊界測(cè)試
* 注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試。
* 如果對(duì)模塊運(yùn)行時(shí)間有要求的話(huà),還要專(zhuān)門(mén)進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。
2. 單元測(cè)試的步驟
* 模塊并不是一個(gè)獨(dú)立的程序,在考慮測(cè)試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相聯(lián)系的其它模塊。
– 驅(qū)動(dòng)模塊 (driver)
– 樁模塊 (stub) ── 存根模塊
* 如果一個(gè)模塊要完成多種功能,可以將這個(gè)模塊看成由幾個(gè)小程序組成。必須對(duì)其中的每個(gè)小程序先進(jìn)行單元測(cè)試要做的工作,對(duì)關(guān)鍵模塊還要做性能測(cè)試。
* 對(duì)支持某些標(biāo)準(zhǔn)規(guī)程的程序,更要著手進(jìn)行互聯(lián)測(cè)試。有人把這種情況特別稱(chēng)為模塊測(cè)試,以區(qū)別單元測(cè)試。
集成測(cè)試(Integrated Testing)
* 集成測(cè)試 (組裝測(cè)試、聯(lián)合測(cè)試)
* 通常,在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問(wèn)題是:
– 在把各個(gè)模塊連接起來(lái)的時(shí)候,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;
– 一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響
– 各個(gè)子功能組合起來(lái),能否達(dá)到預(yù)期要求的父功能;
– 全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題;
– 單個(gè)模塊的誤差累積起來(lái),是否會(huì)放大,從而達(dá)到不能接受的程度。
在單元測(cè)試的同時(shí)可進(jìn)行集成測(cè)試,
發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)
的問(wèn)題,最終構(gòu)成要求的
軟件系統(tǒng)
。
* 子系統(tǒng)的集成測(cè)試特別稱(chēng)為部件測(cè)試,它所做的工作是要找出集成后的子系統(tǒng)與系統(tǒng)需求規(guī)格說(shuō)明之間的不一致。
* 通常,把模塊集成成為系統(tǒng)的方式有兩種
– 一次性集成方式
– 增殖式集成方式
1. 一次性集成方式(big bang)
* 它是一種非增殖式組裝方式。也叫做整體拼裝。
* 使用這種方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在一起進(jìn)行測(cè)試,最終得到要求的軟件系統(tǒng)。
2. 增殖式集成方式
* 這種集成方式又稱(chēng)漸增式集成
* 首先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng)
* 在集成的過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題
* 通過(guò)增殖逐步組裝成為要求的軟件系統(tǒng)。
(1) 自頂向下的增殖方式
* 這種集成方式將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。
* 自頂向下的增殖方式在測(cè)試過(guò)程中較早地驗(yàn)證了主要的控制和判斷點(diǎn)。
* 選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能。
(2) 自底向上的增殖方式
* 這種集成的方式是從程序模塊結(jié)構(gòu)的最底層的模塊開(kāi)始集成和測(cè)試。
* 因?yàn)槟K是自底向上進(jìn)行組裝,對(duì)于一個(gè)給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經(jīng)組裝并測(cè)試完成,所以不再需要樁模塊。在模塊的測(cè)試過(guò)程中需要從子模塊得到的信息可以直接運(yùn)行子模塊得到。
* 自頂向下增殖的方式和自底向上增殖的方式各有優(yōu)缺點(diǎn)。
* 一般來(lái)講,一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)。
(3) 混合增殖式測(cè)試
* 衍變的自頂向下的增殖測(cè)試
– 首先對(duì)
輸入/輸出模塊
和引入新算法模塊進(jìn)行測(cè)試;
– 再自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)立的子系統(tǒng);
– 然后由主模塊開(kāi)始自頂向下進(jìn)行增殖測(cè)試。
* 自底向上-自頂向下的增殖測(cè)試
– 首先對(duì)含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行組裝和測(cè)試;
– 然后對(duì)含寫(xiě)操作的子系統(tǒng)做自頂向下的組裝與測(cè)試。
* 回歸測(cè)試
– 這種方式采取自頂向下的方式測(cè)試被修改的模塊及其子模塊;
– 然后將這一部分視為子系統(tǒng),再自底向上測(cè)試。
關(guān)鍵模塊問(wèn)題
* 在
組裝測(cè)試
時(shí),應(yīng)當(dāng)確定關(guān)鍵模塊,對(duì)這些關(guān)鍵模塊及早進(jìn)行測(cè)試。
* 關(guān)鍵模塊的特征:
① 滿(mǎn)足某些
軟件需求
② 在程序的模塊結(jié)構(gòu)中位于較高的層次(高層控制模塊)
③ 較復(fù)雜、較易發(fā)生錯(cuò)誤
④ 有明確定義的性能要求。
確認(rèn)測(cè)試(Validation Testing)
* 確認(rèn)測(cè)試又稱(chēng)有效性測(cè)試。任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶(hù)的要求一致。
* 對(duì)軟件的功能和性能要求在軟件需求規(guī)格
說(shuō)明書(shū)
中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測(cè)試的基礎(chǔ)。
1. 進(jìn)行有效性測(cè)試(
黑盒測(cè)試
)
* 有效性測(cè)試是在模擬的環(huán)境 (可能就是開(kāi)發(fā)的環(huán)境) 下,運(yùn)用黑盒測(cè)試的方法,驗(yàn)證被測(cè)軟件是否滿(mǎn)足需求規(guī)格說(shuō)明書(shū)列出的需求。
* 首先制定測(cè)試計(jì)劃,規(guī)定要做測(cè)試的種類(lèi)。還需要制定一組測(cè)試步驟,描述具體的測(cè)試用例。
* 通過(guò)實(shí)施預(yù)定的測(cè)試計(jì)劃和測(cè)試步驟,確定
– 軟件的特性是否與需求相符;
– 所有的文檔都是正確且便于使用;
– 同時(shí),對(duì)其它軟件需求,例如可移植性、兼容性、出錯(cuò)自動(dòng)恢復(fù)、可維護(hù)性等,也都要進(jìn)行測(cè)試
* 在全部軟件測(cè)試的測(cè)試用例運(yùn)行完后,所有的測(cè)試結(jié)果可以分為兩類(lèi):
– 測(cè)試結(jié)果與預(yù)期的結(jié)果相符。這說(shuō)明軟件的這部分功能或性能特征與需求規(guī)格說(shuō)明書(shū)相符合,從而這部分程序被接受。
– 測(cè)試結(jié)果與預(yù)期的結(jié)果不符。這說(shuō)明軟件的這部分功能或性能特征與需求規(guī)格說(shuō)明不一致,因此要為它提交一份問(wèn)題報(bào)告。
2. 軟件配置復(fù)查
n 軟件配置復(fù)查的目的是保證
u 軟件配置的所有成分都齊全;
u 各方面的質(zhì)量都符合要求;
u 具有維護(hù)階段所必需的細(xì)節(jié);
u 而且已經(jīng)編排好分類(lèi)的目錄。
n 應(yīng)當(dāng)嚴(yán)格遵守用戶(hù)手冊(cè)和操作手冊(cè)中規(guī)定的使用步驟,以便檢查這些文檔資料的完整性和正確性。
系統(tǒng)測(cè)試(System Testing)
* 系統(tǒng)測(cè)試,是將通過(guò)確認(rèn)測(cè)試的軟件,作為整個(gè)基于
計(jì)算機(jī)系統(tǒng)
的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試。
* 系統(tǒng)測(cè)試的目的在于通過(guò)與系統(tǒng)的需求定義作比較, 發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。
驗(yàn)收測(cè)試(Acceptance Testing)
* 在通過(guò)了系統(tǒng)的有效性測(cè)試及軟件配置審查之后,就應(yīng)開(kāi)始系統(tǒng)的驗(yàn)收測(cè)試。
* 驗(yàn)收測(cè)試是以用戶(hù)為主的測(cè)試。軟件開(kāi)發(fā)人員和QA(質(zhì)量保證)人員也應(yīng)參加。
* 由用戶(hù)參加設(shè)計(jì)測(cè)試用例,使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測(cè)試。
* 在測(cè)試過(guò)程中,除了考慮軟件的功能和性能外,還應(yīng)對(duì)軟件的可移植性、
兼容性
、可維護(hù)性、錯(cuò)誤的恢復(fù)功能等進(jìn)行確認(rèn)。
*
確認(rèn)測(cè)試
應(yīng)交付的文檔有:
– 確認(rèn)測(cè)試分析報(bào)告
– 最終的用戶(hù)手冊(cè)和操作手冊(cè)
– 項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告。
?
測(cè)試流程
?
1、制定測(cè)試計(jì)劃
2、編輯測(cè)試用例
3、執(zhí)行測(cè)試用例
4、發(fā)現(xiàn)并提交BUG
5、開(kāi)發(fā)組修正BUG
6、對(duì)已修正BUG進(jìn)行返測(cè)
7、修正完成的BUG將狀態(tài)置為已關(guān)閉,未正確修正的BUG重新激
?
?測(cè)試階段
單元測(cè)試
主條目:
單元測(cè)試
單元測(cè)試是對(duì)軟件組成單元進(jìn)行測(cè)試,其目的是檢驗(yàn)軟件基本組成單位的正確性,測(cè)試的對(duì)象是軟件設(shè)計(jì)的最小單位:模塊。
集成測(cè)試
主條目:
集成測(cè)試
集成測(cè)試也稱(chēng)聯(lián)合測(cè)試,將程序模塊采用適當(dāng)?shù)募刹呗越M裝起來(lái),對(duì)系統(tǒng)的接口及集成后的功能進(jìn)行正確性檢測(cè)的測(cè)試工作。其主要目的是檢查軟件單位之間的接口是否正確,集成測(cè)試的對(duì)象是已經(jīng)經(jīng)過(guò)單元測(cè)試的模塊。
系統(tǒng)測(cè)試
主條目:
系統(tǒng)測(cè)試
系統(tǒng)測(cè)試包括功能測(cè)試、界面測(cè)試、可靠性測(cè)試、易用性測(cè)試、性能測(cè)試。 功能測(cè)試主要針對(duì)包括功能可用性、功能實(shí)現(xiàn)程度(功能流程&業(yè)務(wù)流程、數(shù)據(jù)處理&業(yè)務(wù)數(shù)據(jù)處理)方面測(cè)試。
回歸測(cè)試
主條目:
回歸測(cè)試
回歸測(cè)試指在軟件維護(hù)階段,為了檢測(cè)代碼修改而引入的錯(cuò)誤所進(jìn)行的測(cè)試活動(dòng)?;貧w測(cè)試是軟件維護(hù)階段的重要工作,有研究表明,回歸測(cè)試帶來(lái)的耗費(fèi)占軟件生命周期的1/3總費(fèi)用以上。
與普通的測(cè)試不同,在回歸測(cè)試過(guò)程開(kāi)始的時(shí)候,測(cè)試者有一個(gè)完整的測(cè)試用例集可供使用,因此,如何根據(jù)代碼的修改情況對(duì)已有測(cè)試用例集進(jìn)行有效的復(fù)用是回歸測(cè)試研究的重要方向,此外,回歸測(cè)試的研究方向還涉及自動(dòng)化工具,面向?qū)ο蠡貧w測(cè)試,測(cè)試用例優(yōu)先級(jí),回歸測(cè)試用例補(bǔ)充生成等。
?
?
測(cè)試模型
V模型
測(cè)試階段:
單元測(cè)試
集成測(cè)試
系統(tǒng)測(cè)試
實(shí)現(xiàn)意義
從左到右,描述了基本的開(kāi)發(fā)過(guò)程和測(cè)試行為,非常明確地標(biāo)明了測(cè)試過(guò)程中存在的不同級(jí)別,并且清楚地描述了這些測(cè)試階段和開(kāi)發(fā)過(guò)程期間各階段的對(duì)應(yīng)關(guān)系 。
左邊依次下降的是開(kāi)發(fā)過(guò)程各階段,與此相對(duì)應(yīng)的是右邊依次上升的部分,即各測(cè)試過(guò)程的各個(gè)階段。
用戶(hù)需求 驗(yàn)收測(cè)試
需求分析
和系統(tǒng)設(shè)計(jì) 確認(rèn)測(cè)試和系統(tǒng)測(cè)試
概要設(shè)計(jì) 集成測(cè)試
詳細(xì)設(shè)計(jì) 單元測(cè)試
1.測(cè)試是開(kāi)發(fā)之后的一個(gè)階段。
2.測(cè)試的對(duì)象就是程序本身。
3.實(shí)際應(yīng)用中容易導(dǎo)致需求階段的錯(cuò)誤一直到最后系統(tǒng)測(cè)試階段才被發(fā)現(xiàn)。
4.整個(gè)軟件產(chǎn)品的過(guò)程質(zhì)量保證完全依賴(lài)于開(kāi)發(fā)人員的能力和對(duì)工作的責(zé)任心,而且上一步的結(jié)果必須是充分和正確的,如果任何一個(gè)環(huán)節(jié)出了問(wèn)題,則必將嚴(yán)重的影響整個(gè)工程的質(zhì)量和預(yù)期進(jìn)度
W模型
W
模型
由Evolutif公司公司提出,相對(duì)于V模型,W模型增加了軟件各開(kāi)發(fā)階段中應(yīng)同步進(jìn)行的驗(yàn)證和確認(rèn)活動(dòng)。W模型由兩個(gè)V字型模型組成,分別代表測(cè)試與開(kāi)發(fā)過(guò)程,圖中明確表示出了測(cè)試與開(kāi)發(fā)的并行關(guān)系。 W模型強(qiáng)調(diào):測(cè)試伴隨著整個(gè)軟件開(kāi)發(fā)周期,而且測(cè)試的對(duì)象不僅僅是程序,需求、設(shè)計(jì)等同樣要測(cè)試,也就是說(shuō),測(cè)試與開(kāi)發(fā)是同步進(jìn)行的。W模型有利于盡早地全面的發(fā)現(xiàn)問(wèn)題。例如,需求分析完成后,測(cè)試人員就應(yīng)該參與到對(duì)需求的驗(yàn)證和確認(rèn)活動(dòng)中,以盡早地找出缺陷所在。同時(shí),對(duì)需求的測(cè)試也有利于及時(shí)了解項(xiàng)目難度和測(cè)試風(fēng)險(xiǎn),及早制定應(yīng)對(duì)措施,這將顯著減少總體測(cè)試時(shí)間,加快項(xiàng)目進(jìn)度。 但W模型也存在局限性。在W模型中,需求、設(shè)計(jì)、編碼等活動(dòng)被視為串行的,同時(shí),測(cè)試和開(kāi)發(fā)活動(dòng)也保持著一種線(xiàn)性的前后關(guān)系,上一階段完全結(jié)束,才可正式開(kāi)始下一個(gè)階段工作。這樣就無(wú)法支持迭代的開(kāi)發(fā)模型。對(duì)于當(dāng)前軟件開(kāi)發(fā)復(fù)雜多變的情況,W模型并不能解除測(cè)試管理面臨著困惑。
H模型
H模型
中, 軟件測(cè)試過(guò)程活動(dòng)完全獨(dú)立,貫穿于整個(gè)產(chǎn)品的周期,與其他
流程
并發(fā)地進(jìn)行,某個(gè)測(cè)試點(diǎn)準(zhǔn)備就緒時(shí),就可以從測(cè)試準(zhǔn)備階段進(jìn)行到測(cè)試執(zhí)行階段。軟件測(cè)試可以盡早的進(jìn)行,并且可以根據(jù)被測(cè)物的不同而分層次進(jìn)行。
這個(gè)示意圖演示了在整個(gè)生產(chǎn)周期中某個(gè)層次上的一次測(cè)試“微循環(huán)”。圖中標(biāo)注的其它流程可以是任意的開(kāi)發(fā)流程,例如設(shè)計(jì)流程或者編碼流程。也就是說(shuō), 只要測(cè)試條件成熟了,測(cè)試
準(zhǔn)備活動(dòng)
完成了,測(cè)試執(zhí)行活動(dòng)就可以進(jìn)行了。
H模型揭示了一個(gè)原理:軟件測(cè)試是一個(gè)獨(dú)立的流程,貫穿產(chǎn)品整個(gè)生命周期,與其他流程并發(fā)地進(jìn)行。H模型指出軟件測(cè)試要盡早準(zhǔn)備, 盡早執(zhí)行。不同的測(cè)試活動(dòng)可以是按照某個(gè)次序先后進(jìn)行的,但也可能是反復(fù)的,只要某個(gè)測(cè)試達(dá)到準(zhǔn)備就緒點(diǎn),測(cè)試執(zhí)行活動(dòng)就可以開(kāi)展。
X模型
X模型也是對(duì)V模型的改進(jìn),X模型提出針對(duì)單獨(dú)的程序片段進(jìn)行相互分離的編碼和測(cè)試,此后通過(guò)頻繁的交接,通過(guò)集成最終合成為可執(zhí)行的程序。X模型的左邊描述的是針對(duì)單獨(dú)程序片段所進(jìn)行的相互分離的編碼和測(cè)試,此后將進(jìn)行頻繁的交接,通過(guò)集成最終成為可執(zhí)行的程序,然后再對(duì)這些可執(zhí)行程序進(jìn)行測(cè)試。己通過(guò)集成測(cè)試的成品可以進(jìn)行封裝并提交給用戶(hù),也可以作為更大規(guī)模和范圍內(nèi)集成的一部分。多根并行的曲線(xiàn)表示變更可以在各個(gè)部分發(fā)生。由圖中可見(jiàn),X模型還定位了探索性測(cè)試,這是不進(jìn)行事先計(jì)劃的特殊類(lèi)型的測(cè)試,這一方式往往能幫助有經(jīng)驗(yàn)的測(cè)試人員在測(cè)試計(jì)劃之外發(fā)現(xiàn)更多的
軟件錯(cuò)誤
。但這樣可能對(duì)測(cè)試造成人力、物力和財(cái)力的浪費(fèi),對(duì)測(cè)試員的熟練程度要求比較高。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

