一、軟件測試的基本概念1.測試是軟件生存周期中十分重要的一個過程,是產(chǎn)品發(fā)布、提交給最終用戶前的穩(wěn)定化階段。 2.軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程?;蛘哒f,軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序內(nèi)部結(jié)構(gòu)而精心設(shè)計的一批 二、軟件測試的目的1.基于不同的立場,存在著兩種完全不同的測試目的。 2.從用戶的角度出發(fā),普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,以考慮是否可接受該產(chǎn)品。 3.從軟件開發(fā)者的角度出發(fā),則希望測試成為表明軟件產(chǎn)品中不存在錯誤的過程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對軟件質(zhì)量的信心。 4.測試的目標(biāo)是能夠以耗費(fèi)最少時間與最小工作量找出軟件系統(tǒng)中潛在的各種錯誤與缺陷。另外,我們應(yīng)該認(rèn)識到:測試只能證明程序中錯誤的存在,但不能證明程序中沒有錯誤。因?yàn)榧词箤?shí)施了最嚴(yán)格的測試,仍然可能還有尚未被發(fā)現(xiàn)的錯誤或缺陷存在于程序當(dāng)中,因而測試不能證明程序沒有錯誤,但可能查出程序中的錯誤。 三、軟件測試的原則1.盡早地并不斷地進(jìn)行軟件測試。 2.程序員或程序設(shè)計機(jī)構(gòu)應(yīng)避免測試自己設(shè)計的程序。 3.測試用例中不僅要有輸入數(shù)據(jù),還要有與之對應(yīng)的預(yù)期結(jié)果。 4.測試用例的設(shè)計不僅要有合法的輸入數(shù)據(jù),還要有非法的輸入數(shù)據(jù)。 5.在對程序修改之后要進(jìn)行回歸測試。 6.程序中尚未發(fā)現(xiàn)的錯誤的數(shù)量通常與該程序中已發(fā)現(xiàn)的錯誤的數(shù)量成正比。 7.妥善保留測試計劃、全部測試用例、出錯統(tǒng)計和最終分析報告,并把它們作為軟件的組成部分之一,為維護(hù)提供方便。 8.應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查。 9.嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性。測試計劃內(nèi)容應(yīng)包括:所測軟件的功能、輸入和輸出、測試內(nèi)容、各項(xiàng)測試的進(jìn)度安排、資源要求、測試資料、測試工具、測試用例的選擇、測試的控制方式和過程、系統(tǒng)組裝方式、跟蹤規(guī)程、調(diào)試規(guī)程、回歸測試的規(guī)定以及評價標(biāo)準(zhǔn)等。 三、軟件測試的對象1.軟件測試并不等于程序測試。軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個期間。 2.需求分析、概要設(shè)計、詳細(xì)設(shè)計以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說明、概要設(shè)計規(guī)格說明、詳細(xì)設(shè)計規(guī)格說明以及源程序,都應(yīng)成為軟件測試的對象。 四、軟件測試的對象1.從測試方法的角度可以分為手工測試和自動化測試: 2.兩種常用的測試方法:黑盒測試、白盒測試 五、黑盒測試1.這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。 2.黑盒測試法是根據(jù)被測程序功能來進(jìn)行測試,所以通常又叫做功能測試或數(shù)據(jù)驅(qū)動測試 3.黑盒測試方法是在程序接口上進(jìn)行測試,主要是為了發(fā)現(xiàn)以下錯誤: 六、黑盒測試的測試用例設(shè)計1.等價類劃分 等價類劃分是一種典型的黑盒測試方法,使用這一方法時, 完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說明來設(shè)計測試用例。 等價類是指某個輸入域的子集合。在該子集合中, 各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的。測試某等價類的代表值就等價于對這一類其它值的測試。 2.邊界值分析 1.邊界值分析也是一種黑盒測試方法,是對等價類劃分方法的補(bǔ)充。 2,從長期的測試工作經(jīng)驗(yàn)得知,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計測試用例,可以查出更多的錯誤。 3.比如,在做三角形計算時,要輸入三角形的三個邊長:A、B和C。 我們應(yīng)注意到這三個數(shù)值應(yīng)當(dāng)滿足A>0、B>0、C>0、 A+B>C、A+C>B、B+C>A,才能構(gòu)成三角形。但如果把六個不等式中的任何一個大于號“>”錯寫成大于等于號“≥”,那就不能構(gòu)成 三角形。問題恰出現(xiàn)在容易被疏忽的邊界附近。 4.這里所說的邊界是指,相當(dāng)于輸入等價類和輸出等價類而言,稍高于其邊界值及稍低于其邊界值的一些特定情況。 5.使用邊界值分析方法設(shè)計測試用例,首先應(yīng)確定邊界情況。 應(yīng)當(dāng)大于等于最大值,小于等于最小值作為邊界值進(jìn)行測試。 3.錯誤推測法 1.人們也可以靠經(jīng)驗(yàn)和直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的例子。這就是錯誤推測法。 2.錯誤推測法的基本想法是: 列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)它們選擇測試用例。 4,因果圖 1.因果圖的適用范圍 七、軟件測試的策略1.大型軟件系統(tǒng)通常由若干個子系統(tǒng)組成,每個子系統(tǒng)又由許多模塊組成。大型軟件系統(tǒng)的測試步驟基本由以下四個步驟組成:單元測試、集成測試(組裝測試)、確認(rèn)測試和系統(tǒng)測試。 2.開始是單元測試,集中對用源代碼實(shí)現(xiàn)的每一個程序單元進(jìn)行測試,檢查各個程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。 3.確認(rèn)測試則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求,以及軟件配置是否完全、正確。 4.系統(tǒng)測試 把已經(jīng)經(jīng)過確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測試。 七、測試策略詳解1.單元測試 (Unit Testing) 1)單元測試又稱模塊測試, 是針對軟件設(shè)計的最小單位 ── 程序模塊 ,進(jìn)行正確性檢驗(yàn)的測試工作。 2)其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯。 3)單元測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例 。 4)多個模塊可以平行地獨(dú)立進(jìn)行單元測試。 2.組裝測試( Integrated Testing) 1)組裝測試(集成測試、聯(lián)合測試) 2)通常,在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計要求組裝成為系統(tǒng)。這時需要考慮的問題是: 在把各個模塊連接起來的時侯,穿越模塊接口的數(shù)據(jù)是否會丟失; 3)一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響; 4)各個子功能組合起來,能否達(dá)到預(yù)期要求的父功能; 5)全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題; 6)單個模塊的誤差累積起來,是否會放大,從而達(dá)到不能接受的程度。 7)在單元測試的同時可進(jìn)行組裝測,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問題,最終構(gòu)成要求的軟件系統(tǒng)。 3.確認(rèn)測試( Validation Testing) 1)確認(rèn)測試又稱有效性測試 2)任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。 3)對軟件的功能和性能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測試的基礎(chǔ)。 4)主要由使用用戶參加測試,檢驗(yàn)軟件規(guī)格說明的技術(shù)標(biāo)準(zhǔn)的符合程度,是保證軟件質(zhì)量的最后關(guān)鍵環(huán)節(jié). 5)進(jìn)行有效性測試(黑盒測試) 6)軟件配置復(fù)查 4.系統(tǒng)測試(System Testing) 1.系統(tǒng)測試,是將通過確認(rèn)測試的軟件,作為整個基于計算機(jī)系統(tǒng)的一個元素,與計算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起, 在實(shí)際運(yùn)行環(huán)境下,對計算機(jī)系統(tǒng)進(jìn)行一系列的組裝測試和確認(rèn)測試。 2.系統(tǒng)測試的目的在于通過與系統(tǒng)的需求定義作比較, 發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。 3.在系統(tǒng)測試實(shí)施之前,軟件工程師應(yīng)完成以下工作: 5.驗(yàn)收測試( Acceptance Testing) 1.在通過了系統(tǒng)的有效性測試及軟件配置審查之后,就應(yīng)開始系統(tǒng)的驗(yàn)收測試。 2.驗(yàn)收測試是以用戶為主的測試。軟件開發(fā)人員和QA(質(zhì)量保證)人員也應(yīng)參加。 3.由用戶參加設(shè)計測試用例,使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測試。 4.在測試過程中,除了考慮軟件的功能和性能外,還應(yīng)對軟件的可移植性、兼容性、可維護(hù)性、錯誤的恢復(fù)功能等進(jìn)行確認(rèn)。 5.確認(rèn)測試應(yīng)交付的文檔有:確認(rèn)測試分析報告、最終的用戶手冊和操作手冊 八、軟件測試的過程
(1) 軟件配置:指被測試軟件的文件,如軟件需求規(guī)格說明書、軟件設(shè)計說明書和源程序清單等文檔。 (2) 測試配置:指測試方案、測試計劃、測試用例、測試驅(qū)動程序等文檔。 (3) 測試工具:是為了提高測試效率而設(shè)計的支持軟件測試的軟件。例如,測試數(shù)據(jù)自動生成程序、靜態(tài)分析程序、動態(tài)分析程序、測試結(jié)果分析程序以及驅(qū)動測試的測試數(shù)據(jù)庫等。 (4) 測試評價:由測試出的錯誤跡象,分析、找出錯誤的原因和位置,以便糾正和積累軟件設(shè)計的經(jīng)驗(yàn)。 (5) 糾錯(調(diào)試):是指找到出錯的原因與位置并糾錯,包括修正文件直到軟件正確為止。糾錯本身所具有的不確定性,常常難以準(zhǔn)確地安排測試日程表。 (6) 可靠性模型:通過對測試出的軟件出錯率的分析,建立模型,得出可靠的數(shù)據(jù),指導(dǎo)軟件的設(shè)計與維護(hù)。 九、項(xiàng)目測試的基本流程1.項(xiàng)目測試啟動:項(xiàng)目立項(xiàng)后,在測試配置庫中創(chuàng)建項(xiàng)目。 2.測試計劃:系統(tǒng)詳細(xì)設(shè)計后,制定測試計劃,準(zhǔn)備測試資源。 3.設(shè)計測試用例,主要是與業(yè)務(wù)相關(guān)的測試用例。 4.實(shí)施功能模塊測試,搭建運(yùn)行或開發(fā)環(huán)境,采用功能模塊測試表的方式,開發(fā)人員在功能模塊測試表中更新進(jìn)度狀態(tài),測試人員在該表中描述測試進(jìn)度。形成測試錯誤列表,該表對每個錯誤都有相應(yīng)的測試記錄與之鏈接,在測試記錄中,詳細(xì)描述錯誤的情況。在測試記錄中還要包括修正信息和驗(yàn)證信息。 5.錯誤關(guān)閉后,測試人員維護(hù)測試記錄表和更新測試用例庫和問題庫,作為經(jīng)驗(yàn)積累。 6.項(xiàng)目在結(jié)項(xiàng)時,測試人員進(jìn)行項(xiàng)目完工驗(yàn)收測試,填寫項(xiàng)目測試報告。該測試報告可作為用戶驗(yàn)收的輸入工件。 十、測試過程管理十一、測試用例的設(shè)計1.在編寫測試用例之前需要準(zhǔn)備以下幾個編寫的依據(jù): 2.測試用例可以分為基本事件、備選事件和異常事件。 3.軟件測試常用的設(shè)計測試用例的基本方法有:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、邏輯覆蓋法等。視軟件的不同性質(zhì)采用不同的方法。如何靈活運(yùn)用各種基本方法來設(shè)計完整的測試用例,并最終實(shí)現(xiàn)暴露隱藏的缺陷,則要憑測試設(shè)計人員的豐富經(jīng)驗(yàn)和精心設(shè)計。 4.測試用例的評審 5.測試用例的修改更新 6.測試用例的管理 |
|