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