一痕支、軟件測試概述
1.1 軟件蛮原、軟件危機和軟件工程
程序是指按特定的功能和性能要求而設(shè)計的能夠執(zhí)行的指令序列儒陨;
數(shù)據(jù)是指程序能正常操縱蹦漠、處理的信息及其數(shù)據(jù)結(jié)構(gòu);
文檔是指與程序設(shè)計開發(fā)隘击、維護和使用有關(guān)的圖文材料埋同。
軟件危機:
(1)軟件生產(chǎn)不能滿足日益增長的軟件需求凶赁,軟件生產(chǎn)率遠低于硬件生產(chǎn)率和計算機應(yīng)用的增長率哟冬,社會出現(xiàn)了軟件供不應(yīng)求的局面忆绰。更為嚴重的是错敢,軟件生產(chǎn)效率隨軟件生產(chǎn)規(guī)模的增加和軟件復(fù)雜性的提高而急劇下降。
(2)軟件生產(chǎn)率隨軟件規(guī)模與復(fù)雜性提高而下降平斩,智力密集型行業(yè)的人力成本不斷增加咽块,這些都導致軟件成本在計算機系統(tǒng)成本構(gòu)成中的比例急劇上升侈沪。
(3)軟件開發(fā)的進度與成本失控亭罪。人們很難估計軟件開發(fā)的成本與進度应役,通常情況是預(yù)算成倍突破,項目計劃一再延期院崇。軟件開發(fā)單位為了趕進度亚脆、節(jié)約成本寂屏,往往只有降低軟件質(zhì)量。軟件開發(fā)陷入成本居高不下单寂、質(zhì)量無保證坚弱、用戶不滿意蚁孔、開發(fā)單位信譽降低的怪圈中杠氢。
(4)軟件系統(tǒng)實現(xiàn)的功能與實際需求不符鼻百。軟件開發(fā)人員對用戶需求缺乏深入的理解,往往急于編寫程序堕汞,閉門造車晃琳,最后完成的軟件與用戶需求相距太遠。
(5)軟件難以維護卫旱。程序中的錯誤很難改正视哑,要想使軟件適應(yīng)新的運行環(huán)境幾乎不可能,軟件在使用過程中不能增加用戶需要的新功能誊涯,大量的軟件開發(fā)人員在重復(fù)開發(fā)基本類似的軟件。
(6)軟件文檔配置沒有受到足夠的重視蒜撮。軟件文檔包括開發(fā)過程各階段的說明書暴构、數(shù)據(jù)詞典、程序清單段磨、軟件使用手冊、維護手冊苹支、軟件測試報告和測試用例等砾隅。這些軟件文檔的不規(guī)范、不健全是造成軟件開發(fā)的進度债蜜、成本不可控制和軟件的維護晴埂、管理困難的重要原因。
1.2 軟件工程的目標及其一般開發(fā)過程
從狹義上說寻定,軟件工程的目標是生產(chǎn)出滿足預(yù)算儒洛、按期交付、用戶滿意的無缺陷的軟件狼速,進而當用戶需求改變時琅锻,所生產(chǎn)的軟件必須易于修改。從廣義上說向胡,軟件工程的目標就是提高軟件的質(zhì)量與生產(chǎn)率恼蓬,最終實現(xiàn)軟件的工業(yè)化生產(chǎn)。
一般軟件生存周期包括問題的定義僵芹、軟件開發(fā)处硬、軟件測試、軟件使用與維護等幾個階段拇派。
- 問題的定義可分為軟件系統(tǒng)的可行性研究和需求分析兩個階段郁油,其基本任務(wù)是確定軟件系統(tǒng)的工程需求本股。可行性研究的任務(wù)是了解用戶的要求及實現(xiàn)環(huán)境桐腌,從技術(shù)拄显、經(jīng)濟和社會等幾個方面研究并論證軟件系統(tǒng)的可行性。需求分析的任務(wù)是確定所要開發(fā)軟件的功能需求案站、性能需求和運行環(huán)境約束躬审,編制軟件需求規(guī)格說明書、軟件系統(tǒng)的確認測試準則蟆盐。
- 軟件測試過程分單元測試承边、集成測試、系統(tǒng)測試以及驗收測試4個階段進行石挂。
1.3 軟件過程模型
-
瀑布過程模型
瀑布過程模型 -
螺旋過程模型
螺旋過程模型
螺旋過程模型優(yōu)點:(1)規(guī)避風險博助;(2)在早期構(gòu)造軟件的局部版本時即交給客戶以獲得反饋;(3)避免像瀑布過程模型一樣一次集成大量的代碼痹愚。(4)能夠在每次迭代中都收集到過程中產(chǎn)生的各種度量數(shù)據(jù)富岳。
-
增量過程模型
增量過程模型 - 快速原型過程模型
在快速原型過程模型中,首先是快速進行系統(tǒng)分析拯腮,在設(shè)計人員和用戶的緊密配合下窖式,快速確定軟件系統(tǒng)的基本要求,盡快實現(xiàn)一個可運行的动壤、功能簡單的原型系統(tǒng)萝喘,然后對原型系統(tǒng)逐步求精、不斷擴充完善得到最終的軟件系統(tǒng)琼懊「篝ぃ快速原型過程模型主要優(yōu)點在于它是一種支持用戶的方法,它使用戶在系統(tǒng)生存周期的設(shè)計階段起到積極的作用哼丈,并能減少系統(tǒng)開發(fā)的風險强窖。 - 敏捷過程模型
在敏捷開發(fā)中,軟件項目的構(gòu)建被切分成多個子項目削祈,各個子項目的成果都經(jīng)過測試翅溺,具備集成和可運行的特征。換言之髓抑,就是把一個大項目分為多個相互聯(lián)系咙崎,但也可獨立運行的小項目,并分別完成吨拍,在此過程中軟件一直處于可使用狀態(tài)褪猛。
1.4 軟件缺陷與軟件故障
軟件錯誤是指在軟件生存期內(nèi)的不希望出現(xiàn)或不可接受的人為錯誤,軟件錯誤導致軟件缺陷的產(chǎn)生羹饰。
軟件缺陷是存在于軟件(文檔伊滋、數(shù)據(jù)碳却、程序)之中的不希望出現(xiàn)或不可接受的偏差,軟件缺陷導致軟件在運行于某一特定條件時出現(xiàn)軟件故障笑旺,這時軟件缺陷被激活昼浦。
軟件故障是指軟件在運行過程中產(chǎn)生的不希望出現(xiàn)或不可接受的內(nèi)部狀態(tài),對軟件故障若無適當措施(容錯)加以及時處理筒主,就會使軟件失效关噪。
軟件失效是指軟件在運行時產(chǎn)生的不希望出現(xiàn)或不可接受的外部行為結(jié)果。
1.5 軟件質(zhì)量與質(zhì)量模型
軟件質(zhì)量是與軟件產(chǎn)品滿足明確或隱含需求的能力有關(guān)的特征和特性的總和乌妙。
其含義有以下4個方面:
- 能滿足給定需求的特性使兔。軟件需求是衡量軟件質(zhì)量的基礎(chǔ),不符合需求的軟件就不具備好的質(zhì)量藤韵。設(shè)計的軟件應(yīng)在功能虐沥、性能等方面都符合要求,并可靠地運行泽艘。
- 具有所期望的各種屬性的組合的程度欲险,即軟件結(jié)構(gòu)良好,合理地利用系統(tǒng)資源悉盆,易讀、易于理解馋吗,并易于修改焕盟,方便軟件的維護。
- 能滿足用戶綜合期望的程度宏粤,軟件系統(tǒng)具有友好的用戶界面脚翘,便于用戶使用。
-
軟件的組合特性绍哎。軟件生存周期中各階段文檔齊全来农、規(guī)范,便于配置管理崇堰。
常見的3個質(zhì)量模型:McCall模型沃于、Boehm模型和ISO 9126。
McCall模型
軟件測試
軟件測試定義:使用人工或自動手段來運行或測試某個系統(tǒng)的過程海诲,其目的在于檢驗它是否滿足規(guī)定的需求或弄清楚預(yù)期結(jié)果與實際結(jié)果之間的差別繁莹。
軟件測試的原則:
盡早測試;全面測試特幔;全過程測試咨演;獨立的、迭代的測試蚯斯;Pareto原則:測試發(fā)現(xiàn)的錯誤中80%很可能起源于20%的模塊中薄风;對測試出的錯誤結(jié)果一定要有一個確認的過程饵较;制訂嚴格的測試計劃;完全測試是不可能的遭赂,測試需要終止循诉;妥善保存一切測試過程文檔;注意回歸測試的關(guān)聯(lián)性嵌牺。
軟件測試過程模型
-
V模型
V模型
V模型局限性:它僅僅把測試作為在編碼之后的一個階段打洼,是針對程序運行的尋找錯誤的活動,而忽視了測試活動對需求分析逆粹、系統(tǒng)設(shè)計等活動的驗證和確認的功能募疮。
-
W模型
W模型
W模型局限性:在W模型中,需求僻弹、設(shè)計阿浓、編碼等活動被視為串行的,同時蹋绽,測試和開發(fā)活動也保持著一種線性的前后關(guān)系芭毙,上一階段完全結(jié)束,才可正式開始下一個階段工作卸耘。這樣就無法支持迭代的開發(fā)模型退敦。對于當前軟件開發(fā)工作復(fù)雜多變的情況,W模型并不能解除測試管理面臨的困惑蚣抗。
-
X模型
X模型 -
H模型
H模型
軟件測試的分類
(1)功能測試侈百。功能測試主要針對產(chǎn)品需求說明書對軟件進行測試,驗證軟件功能是否符合需求翰铡,包括對原定功能的檢驗以及測試軟件是否有冗余功能钝域、遺漏功能。
(2)健壯性測試锭魔。健壯性測試側(cè)重于對程序容錯能力的測試例证,主要是驗證程序在各種異常情況下是否能正確運行,包括數(shù)據(jù)邊界測試迷捧、非法數(shù)據(jù)測試织咧、異常中斷測試等。
(3)接口測試漠秋。接口測試是對各個模塊進行系統(tǒng)聯(lián)調(diào)的測試烦感,包括程序內(nèi)接口測試和程序外接口測試。在接口測試中膛堤,測試人員在單元測試階段進行一部分工作手趣,大部分工作是在集成測試階段完成的。
(4)性能測試。性能測試主要測試系統(tǒng)的性能是否滿足用戶要求绿渣,即在特定的運行條件下驗證系統(tǒng)的能力狀況朝群。性能測試主要是通過自動化的測試工具模擬正常、峰值以及異常負載狀況中符,對系統(tǒng)的各項性能指標進行測試姜胖,測試中得到的負荷和響應(yīng)時間等數(shù)據(jù)可以被用于驗證軟件系統(tǒng)是否能夠達到用戶提出的性能指標。
(5)強度測試淀散。強度測試是一種性能測試右莱,強度測試總是迫使系統(tǒng)在異常的資源配置下運行。強度測試的目的是找出因資源不足或資源爭用而導致的錯誤档插。
(6)壓力測試慢蜓。壓力測試是一種性能測試,主要是在超負荷環(huán)境中郭膛,檢驗程序是否能夠正常運行晨抡。壓力測試的目的是檢測系統(tǒng)在資源超負荷的情況下的表現(xiàn),是通過極限測試方法则剃,發(fā)現(xiàn)系統(tǒng)在極限或惡劣環(huán)境中的自我保護能力耘柱。壓力測試的目標是確定并確保系統(tǒng)在超出最大預(yù)期工作量的情況下仍能正常運行。此外棍现,壓力測試還要評估軟件的性能特征调煎,例如響應(yīng)時間、事務(wù)處理速率和其他與時間相關(guān)的性能特征己肮。
(7)用戶界面測試士袄。用戶界面測試主要對系統(tǒng)的界面進行測試,測試用戶界面是否友好朴肺、軟件是否方便易用窖剑、系統(tǒng)設(shè)計是否合理坚洽、界面位置是否正確等問題戈稿。
(8)安全測試。安全測試主要測試系統(tǒng)防止非法侵入的能力讶舰,例如測試系統(tǒng)在沒有授權(quán)的內(nèi)部或者外部用戶對系統(tǒng)進行攻擊或者惡意破壞時如何運行鞍盗,是否能夠保證數(shù)據(jù)的安全。
(9)可靠性測試跳昼“慵祝可靠性測試是指為了保證和驗證軟件的可靠性水平是否滿足用戶的要求而進行的測試,即確定軟件是否滿足軟件規(guī)格說明書中規(guī)定的可靠性指標鹅颊。軟件可靠性測試的目的是給出可靠性的定量估計值敷存,通過對軟件可靠性測試中觀測到的失效數(shù)據(jù)進行分析,可以評估當前軟件可靠性的水平,驗證軟件可靠性是否達到要求锚烦。軟件可靠性測試是一項高投入的測試工作觅闽,通常需要進行大量的測試。
(10)安裝/反安裝測試涮俄。安裝測試主要檢驗軟件是否可以正確安裝蛉拙,安裝文件的各項設(shè)置是否有效,安裝后是否影響整個計算機系統(tǒng)彻亲;反安裝測試是逆過程孕锄,測試軟件是否被刪除干凈,刪除后軟件是否影響整個計算機系統(tǒng)等苞尝。(11)文檔測試畸肆。文檔測試主要檢查內(nèi)部/外部文檔的清晰性和準確性,對外部文檔而言野来,測試工作主要針對用戶的文檔恼除,以需求說明、用戶手冊曼氛、安裝手冊等為主豁辉,檢驗文檔是否和實際應(yīng)用存在差別,而且還必須考慮文檔是否簡單明了舀患,相關(guān)的技術(shù)術(shù)語是否解釋清楚等問題徽级。
(12)恢復(fù)測試×那常恢復(fù)測試主要測試當出現(xiàn)系統(tǒng)崩潰餐抢、硬件錯誤或其他災(zāi)難性問題時系統(tǒng)的表現(xiàn)情況,以及系統(tǒng)從故障中恢復(fù)的能力低匙。
(13)兼容性測試旷痕。兼容性測試主要測試軟件產(chǎn)品在不同的平臺、不同的工具軟件或相同工具軟件的不同版本下的兼容性顽冶,其目的是測試系統(tǒng)與其他軟件欺抗、硬件兼容的能力。
(14)負載測試强重。負載測試是通過測試系統(tǒng)在資源超負荷情況下的表現(xiàn)绞呈,以發(fā)現(xiàn)設(shè)計上的錯誤或驗證系統(tǒng)的負載能力。在這種測試中间景,將使測試對象承擔不同的工作量佃声,以評測和評估測試對象在不同工作量條件下的性能行為,以及持續(xù)正常運行的能力倘要。負載測試的目標是確定并確保系統(tǒng)在超出最大預(yù)期工作量的情況下仍能正常運行圾亏。此外,負載測試還要評估性能特征。例如志鹃,響應(yīng)時間父晶、事務(wù)處理速率和其他與時間相關(guān)的方面。
軟件測試流程
制訂測試計劃弄跌、設(shè)計測試甲喝、測試準備、測試環(huán)境的建立铛只、執(zhí)行測試埠胖、評估測試和總結(jié)測試。
- 測試計劃包括:
(1)軟件測試背景淳玩。軟件測試背景主要包括軟件項目介紹直撤、項目涉及人員(如項目負責人等)介紹以及相應(yīng)聯(lián)系方式等。
(2)軟件測試依據(jù)蜕着。軟件測試依據(jù)主要包括軟件需求文檔谋竖、軟件規(guī)格書、軟件設(shè)計文檔等承匣。
(3)測試范圍的界定蓖乘。測試范圍的界定就是確定測試工作需要覆蓋的范圍。在實際工作中韧骗,人們總是不自覺地調(diào)整軟件測試的范圍嘉抒,比如在時間緊張的情況下,通常優(yōu)先完成重要功能的測試袍暴。所以測試計劃者在接收到一項任務(wù)的時候些侍,需要根據(jù)主項目計劃的時間來確定測試范圍。如果在確定范圍上出現(xiàn)偏差政模,會給測試執(zhí)行工作帶來消極的影響岗宣。
(4)風險的確定。項目中總是有不確定的因素淋样,這些因素一旦發(fā)生之后耗式,會對項目的順利執(zhí)行產(chǎn)生很大的影響。所以在項目開發(fā)中习蓬,首先需要識別出存在的風險纽什。
(5)測試資源措嵌。確定完成任務(wù)需要消耗的人力資源躲叼、物資資源,主要包括測試設(shè)備需求企巢、測試人員需求枫慷、測試環(huán)境需求以及其他資源需求。
(6)測試策略。測試策略主要包括采取測試的方法或听、搭建哪些測試環(huán)境探孝、采用哪些測試工具和測試管理工具、對測試人員進行培訓等誉裆。
(7)時間表的制訂顿颅。在識別出子任務(wù)和估計出測試資源之后,可以將任務(wù)足丢、資源與時間關(guān)聯(lián)起來形成測試時間進度表粱腻。
(8)其他。測試計劃還要包括測試計劃編寫的日期斩跌、作者信息等內(nèi)容绍些。 - 設(shè)計測試
測試的設(shè)計階段要設(shè)計測試用例和測試過程,要保證測試用例完全覆蓋測試需求耀鸦。
測試用例是為特定目標開發(fā)的測試輸入柬批、執(zhí)行條件和預(yù)期結(jié)果的集合,這些特定目標可以是驗證一個特定的程序路徑袖订,也可以是核實某項功能是否符合特定需求氮帐。
測試用例的標準: 是否可以發(fā)現(xiàn)尚未發(fā)現(xiàn)的軟件缺陷?是否可以覆蓋全部的測試需求洛姑? - 測試準備和測試環(huán)境的建立
測試準備主要包括全面準確掌握各種測試資料揪漩,進一步了解、熟悉測試軟件吏口,配置測試的軟奄容、硬件環(huán)境,搭建測試平臺产徊,充分熟悉和掌握測試工具等工作昂勒。 - 測試評估
測試評估的主要方法包括缺陷評估、覆蓋評測和質(zhì)量評測舟铜。
(1)缺陷評估戈盈。嚴格的評估是用測試過程中缺陷達到的比率或發(fā)現(xiàn)的比率表示。
(2)覆蓋評測谆刨。覆蓋評測是對測試完全程度的評測塘娶,它是由測試需求和測試用例的覆蓋與已執(zhí)行代碼的覆蓋表示的。簡而言之痊夭,測試覆蓋是就需求(基于需求的)或代碼的設(shè)計/實施標準(基于代碼的)而言的完全程度的任意評測刁岸。
(3)質(zhì)量評測。質(zhì)量評測是對測試軟件的可靠性她我、穩(wěn)定性以及性能的評測虹曙,主要的性能評測包括動態(tài)監(jiān)測迫横、響應(yīng)時間/吞吐量、百分位報告酝碳、比較報告以及追蹤和配置文件報告矾踱。