版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件測試教程
-Ch.1軟件測試概述erdonghs@126.com陳涵生內(nèi)容概覽全書共四篇,分十三章軟件測試的原理,二章,闡述軟件測試的重要性、基本概念和方法等軟件測試的技術(shù),七章,介紹典型的軟件測試技術(shù),和在各開發(fā)階段的測試方法(單元測試、集成測試、系統(tǒng)測試、驗收測試、性能測試和回歸測試等)軟件測試的實踐,三章,介紹面向?qū)ο鬁y試以及自動化測試工具與應(yīng)用軟件測試技術(shù)前沿,一章
erdonghs@126.com.
主要參考書:軟件測試技術(shù)基礎(chǔ)教程
ISBN:987-7-121-13705-1電子工業(yè)出版社
21世紀(jì)什么最貴——軟件測試工程師
軟件測試工程師,目前IT行業(yè)極端短缺的金貴人才,未來5年IT行業(yè)最炙手可熱的高薪職位。中國軟件業(yè)每年新增約20萬測試崗位就業(yè)機會,而企業(yè)、學(xué)校培養(yǎng)出的測試人才卻不足需求量的1/10,這種測試人才需求與供給間的差距仍在拉大。
軟件測試——產(chǎn)品質(zhì)量的保證軟件測試——控制成本的關(guān)鍵軟件測試——軟件可靠性確認軟件測試——讓企業(yè)具備國際競爭的實力
erdonghs@126.com課程目標(biāo)本課程是計算機或軟件專業(yè)課程,重在培養(yǎng)我們的實踐能力,適應(yīng)軟件企業(yè)的工作環(huán)境和業(yè)界標(biāo)準(zhǔn),并和國際先進的軟件開發(fā)理念和測試技術(shù)保持同步。通過本課程的學(xué)習(xí),了解并掌握軟件產(chǎn)品質(zhì)量保證的基本思想和科學(xué)體系、軟件測試技術(shù)的基本內(nèi)容,以及軟件測試的方法、技術(shù)和工具的使用,為全面掌握軟件測試技術(shù)和軟件質(zhì)量管理打下堅實的基礎(chǔ)。本課程屬于“職業(yè)技能”
類型的課程,具有基礎(chǔ)性、實用性和可操作性特點。強調(diào)軟件工程師常用的軟件測試方法和技術(shù)的學(xué)習(xí)和應(yīng)用,以及實踐動手能力的培養(yǎng)!erdonghs@126.com課程目標(biāo)通過本課程的學(xué)習(xí),我們還可以了解并掌握:
有效的測試策略、方法和技術(shù)測試計劃和測試用例的設(shè)計測試自動化的引入、應(yīng)用更清楚、準(zhǔn)確地報告測試缺陷對軟件產(chǎn)品質(zhì)量的正確評估軟件測試和質(zhì)量保證的關(guān)系和區(qū)別……erdonghs@126.com課程服務(wù)于-測試工程師TestengineerQA工程師/經(jīng)理
QAEngineer/Manager
軟件工程過程組成員ThememberofSEPG
項目經(jīng)理Projectmanager
程序員Programmer
軟件分析師SoftwareAnalyst軟件咨詢顧問
SoftwareConsultant
……erdonghs@126.com課程安排2-3學(xué)分,建議:60學(xué)時erdonghs@126.com周次教學(xué)章節(jié)教學(xué)內(nèi)容“軟件測試教程”1,2第1章軟件測試概論1.1軟件定義1.2軟件開發(fā)過程的特性1.3軟件測試的定義和目的1.4軟件缺陷1.5測試用例1.6軟件質(zhì)量1.7與測試相關(guān)的幾個概念1.8軟件測試技術(shù)的發(fā)展趨勢和測試人員職業(yè)要求第1章,第2章第6章3第2章軟件測試基礎(chǔ)2.1軟件測試的目的和原則2.2軟件測試的分類2.3靜態(tài)測試技術(shù)2.4軟件測試模型2.5軟件測試流程2.6軟件測試3維空間和各種測試2.7軟件測試注意事項2.8終止軟件測試的標(biāo)準(zhǔn)第2章課程安排周次教學(xué)章節(jié)教學(xué)內(nèi)容“軟件測試教程”4第3章軟件測試計劃、文檔3.1軟件測試生命周期3.2測試計劃3.3測試設(shè)計3.4測試實施過程3.5測試文檔第6章5,6第4章白盒測試4.1白盒測試4.2控制結(jié)構(gòu)測試4.3邏輯覆蓋測試4.4路徑分析測試4.5代碼檢查法4.6程序插裝技術(shù)4.7案例研究第4章課程安排(2)erdonghs@126.com周次教學(xué)章節(jié)教學(xué)內(nèi)容“軟件測試教程”7,8第5章黑盒測試5.1黑盒測試概述5.2黑盒測試用例設(shè)計方法 基于用戶需求的測試等價類劃分測試邊界值測試決策表法因果圖測試錯誤猜測法5.3基于狀態(tài)測試和場景測試用例設(shè)計方法第5章9第6章軟件測試過程和單元測試6.1軟件測試過程6.2軟件測試與軟件開發(fā)的關(guān)系6.3單元測試第3章10第7章集成測試、確認測試和系統(tǒng)測試7.1什么是集成測試7.2集成測試的模式與方法7.3確認測試7.4什么是系統(tǒng)測試7.5系統(tǒng)測試類型7.6安全性、可靠性和容錯性測試7.7案例研究第3章課程安排周次教學(xué)章節(jié)教學(xué)內(nèi)容“軟件測試教程”11第8章軟件測試自動化8.1測試自動化的內(nèi)涵8.2測試工具的原理和方法8.3自動化測試生存周期方法學(xué)8.4自動化測試工具的分類8.5開放源代碼的軟件測試工具第7章,第12章12第9章單元測試工具Junit9.1JUnit概述9.2Junit特點9.3JUnit的安裝和配置9.4JUnit的編譯和執(zhí)行9.5Junit的內(nèi)容9.6Junit的高級使用第11章13,14第10章性能測試10.1性能測試概念10.2性能測試類型10.3性能測試指標(biāo)10.4性能測試流程10.5性能測試的測試用例10.6Web網(wǎng)站的測試第9章課程安排(3)erdonghs@126.com周次教學(xué)章節(jié)教學(xué)內(nèi)容“軟件測試教程”15第11章驗收測試與回歸測試11.1驗收測試的過程和主要內(nèi)容11.2易用性測試11.3兼容性測試11.4可安裝性和可恢復(fù)性測試11.5文檔測試11.6驗收測試的常用策略11.7Alpha測試11.8Beta測試11.9回歸測試第3章16第12章面向?qū)ο蟮能浖y試
12.1面向?qū)ο鬁y試模型。12.2類測試基礎(chǔ)12.3面向?qū)ο蟮募蓽y試12.4面向?qū)ο蟮南到y(tǒng)測試12.5實例研究-面向?qū)ο蟮娜諝v第8章17第13章
軟件測試技術(shù)前沿13.1敏捷測試方法13.2測試驅(qū)動開發(fā)13.3云計算第10章第一章軟件測試概述erdonghs@126.com1.1軟件定義1.2軟件開發(fā)過程的特性1.3軟件測試的定義和目的1.4軟件缺陷1.5測試用例1.6軟件質(zhì)量1.7與測試相關(guān)的幾個概念1.8軟件測試技術(shù)的發(fā)展趨勢和測試人員職業(yè)要求1.1軟件定義erdonghs@126.com軟件定義:軟件是計算機系統(tǒng)中與硬件相結(jié)合的一部分,包括程序、數(shù)據(jù)及其相關(guān)文檔。簡單地表示為:軟件=程序+數(shù)據(jù)+文檔
“程序”是指能夠?qū)崿F(xiàn)某種功能和性能要求的指令集合“數(shù)據(jù)”是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)“文檔”指的是軟件在開發(fā)、使用和維護過程中產(chǎn)生的圖文集合,如:《系統(tǒng)需求規(guī)格說明》,《用戶手冊》readme等軟件特點軟件是一種邏輯實體,而不是具體的物理實體,具有抽象性軟件是把知識與技術(shù)轉(zhuǎn)化為信息的一種產(chǎn)品
軟件在運行和使用中不會“磨損”,而是逐步完善.軟件的開發(fā)和運行常常受到計算機系統(tǒng)的限制軟件的開發(fā)至今尚未擺脫手工制作的開發(fā)方式軟件是復(fù)雜的軟件成本相當(dāng)昂貴相當(dāng)多的軟件工作涉及到社會因素erdonghs@126.com軟件的分類按照功能劃分系統(tǒng)軟件:能夠直接操作底層的硬件、并為上層軟件提供支持的軟件,如:操作系統(tǒng)、各種硬件驅(qū)動程序等應(yīng)用軟件:能夠為用戶提供某種特定的應(yīng)用服務(wù)的軟件。這類軟件也是我們測試的重點按照技術(shù)構(gòu)架劃分單機版軟件:直接在單個計算機上安裝并運行的軟件。這類軟件的測試較簡單,不需要考慮網(wǎng)絡(luò)傳輸。軟件的分類C/S(客戶/服務(wù)器)結(jié)構(gòu)軟件:這種軟件是基于局域網(wǎng)或互聯(lián)網(wǎng)的。C/S結(jié)構(gòu)軟件過去比較流行,但是不便于升級和維護(升級時需要重新安裝一個客戶端),現(xiàn)在逐漸被B/S結(jié)構(gòu)軟件所取代。B/S(瀏覽器/服務(wù)器)結(jié)構(gòu)軟件。這種軟件同樣是基于局域網(wǎng)或互聯(lián)網(wǎng)的,它與C/S結(jié)構(gòu)軟件的主要區(qū)別在于不需要安裝客戶端,只需有IE等瀏覽器即可。B/S結(jié)構(gòu)軟件是現(xiàn)在軟件的主流,也是我們測試的重點。軟件的分類按照用戶劃分產(chǎn)品軟件:目標(biāo)用戶是大眾用戶,而不是某一特殊群體。測試這類軟件相對來說比較麻煩,需要考慮硬件和軟件的兼容性測試。項目軟件:目標(biāo)用戶是具體的用戶,而不是千家萬戶。國內(nèi)80%以上的軟件都屬于項目軟件。這也是我們測試的重點。按照開發(fā)的規(guī)模劃分小型:10人以下,1-4個月(開發(fā)時間)中型:10-100人,1年以下大型:100人以上,1年以上1.2軟件開發(fā)過程的特性
1.2.1軟件的生命周期1.2.2軟件開發(fā)的基本過程1.2.1軟件的生命周期軟件生命周期是指軟件從概念形成開始,經(jīng)過開發(fā)、使用和維護,直到最終被廢棄的整個過程。軟件生命周期一般包括:軟件定義、軟件開發(fā)以及軟件使用和維護3部分。問題定義可行性分析需求分析總體設(shè)計詳細設(shè)計編碼測試維護軟件定義時期軟件開發(fā)時期軟件使用與維護時期圖1-1軟件生命周期的階段劃分1.2.1軟件的生命周期軟件的定義包括:問題定義:通過對系統(tǒng)實際用戶和使用部門負責(zé)人的訪問調(diào)查,明確要解決的問題的性質(zhì)、工程目標(biāo)和規(guī)??尚行苑治觯毫私庥脩舻囊蠹皩崿F(xiàn)環(huán)境,從技術(shù)、經(jīng)濟和社會等多個方面研究并論證軟件系統(tǒng)的可行性需求分析:確定所要開發(fā)軟件的功能需求、性能需求和運行環(huán)境約束,編制軟件需求規(guī)格說明、確認軟件系統(tǒng)的測試準(zhǔn)則1.2.1軟件的生命周期2.軟件開發(fā):按照需求規(guī)格說明的要求,從抽象到具體,逐步生成軟件的過程。一般包括:設(shè)計:又可分為:總體設(shè)計(概要設(shè)計)和詳細設(shè)計。總體設(shè)計主要是設(shè)計軟件的結(jié)構(gòu),確定軟件的模塊構(gòu)成及模塊之間的關(guān)系。詳細設(shè)計是把解決方案具體化,設(shè)計出程序的詳細規(guī)格說明,并給出細節(jié)信息。編碼:將詳細設(shè)計文檔翻譯成高級編程語言的源程序測試:通過測試與調(diào)試,使軟件達到預(yù)期的要求3.軟件使用與維護:將通過測試后的軟件安裝在用戶確定的運行環(huán)境中,移交給用戶使用,并在使用過程中負責(zé)軟件修改和對軟件需求變化的維護!1.2.2軟件開發(fā)過程圖1-2軟件開發(fā)過程軟件開發(fā)過程需求分析:
根據(jù)客戶的要求,清楚了解客戶需求中的產(chǎn)品功能、特性、性能、界面和具體規(guī)格等,然后進行分析,確定軟件產(chǎn)品所能達到的目標(biāo)。這一階段結(jié)束時,應(yīng)提交軟件需求規(guī)格說明(SRS)文檔設(shè)計:
根據(jù)需求分析的結(jié)果,考慮如何在邏輯、程序上去實現(xiàn)所定義的產(chǎn)品功能、特性等,可以分為概要設(shè)計和詳細設(shè)計,也可分為數(shù)據(jù)結(jié)構(gòu)設(shè)計、軟件體系結(jié)構(gòu)設(shè)計、應(yīng)用接口設(shè)計、模塊設(shè)計、界面設(shè)計等。設(shè)計階段生成設(shè)計文檔,該文檔將作為后續(xù)階段工作的輸入。軟件開發(fā)過程(續(xù))③編程:
將設(shè)計轉(zhuǎn)換成計算機可執(zhí)行的編程語言代碼。這一階段的輸出是軟件的源代碼,可作為測試和維護階段的輸入④測試:
對設(shè)計、編程進行驗證和用戶需求確認的過程。測試階段的輸出是測試報告,記錄測試中發(fā)現(xiàn)的錯誤。⑤維護:維持軟件運行,修改軟件缺陷、增強已有功能、增加新功能、升級等。軟件測試實踐證明:對軟件進行充分的測試 才能夠有效的保證軟件質(zhì)量對軟件產(chǎn)品進行充分測試,找出其中的缺陷(Bug),并進行修復(fù)(Fix)。erdonghs@126.com軟件類型開發(fā)成本按階段分布%需求與設(shè)計實現(xiàn)測試控制軟件462034航空航天軟件342046操作系統(tǒng)331750科技計算軟件442630商業(yè)應(yīng)用軟件442828erdonghs@126.com軟件測試成本占有開發(fā)成本的近一半1.3軟件測試的含義軟件的質(zhì)量就是軟件的生命,為了保證軟件的質(zhì)量,人們在長期的開發(fā)過程中積累了許多經(jīng)驗并形成了許多行之有效的方法。但是借助這些方法,我們只能盡量減少軟件中的錯誤和不足,卻不能完全避免所有的錯誤。如果把所開發(fā)出來的軟件看作一個企業(yè)生產(chǎn)的產(chǎn)品,那么軟件測試就相當(dāng)于該企業(yè)的質(zhì)量檢測部分。簡單地說,我們在編寫完一段代碼之后,檢查其是否如我們所預(yù)期的那樣運行,這個活動就可以看作是一種軟件測試工作。新的測試?yán)碚?、測試方法、測試技術(shù)手段在不斷涌出,軟件測試機構(gòu)和組織也在迅速產(chǎn)生和發(fā)展,由此軟件測試技術(shù)職業(yè)也同步完善和健全起來。1.3.1軟件測試的定義Myers曾對軟件測試下過如下定義:“軟件測試就是為了發(fā)現(xiàn)錯誤而執(zhí)行程序或系統(tǒng)的過程”。這個定義有不完善的地方,如:測試文檔屬于軟件測試,但它不一定需要執(zhí)行程序我按照用戶需求測試了實際的系統(tǒng),卻一個Bug也沒有發(fā)現(xiàn)。那么,我的測試工作算不算測試呢?當(dāng)然算的,因為我至少證明了該系統(tǒng)基本符合用戶需求。erdonghs@126.com軟件測試的定義上面定義把軟件測試的目的和手段搞混了。發(fā)現(xiàn)錯誤僅僅試軟件測試的手段而已。軟件測試的最終目的是檢驗實際的軟件系統(tǒng)是否符合用戶需求,測試不只是為了發(fā)現(xiàn)錯誤。當(dāng)然,上面定義在當(dāng)時環(huán)境下還說得通,因為那時對用戶需求的認識比較模糊,測試僅僅是編碼后的一個階段,測試的主要工作也就是用來發(fā)現(xiàn)錯誤。erdonghs@126.com軟件測試的定義標(biāo)準(zhǔn)定義:使用人工或自動手段,來運行或測試某個軟件系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。
《1983,IEEE軟件工程標(biāo)準(zhǔn)術(shù)語》
該定義明確指出:軟件測試的目的是為了檢驗軟件系統(tǒng)是否滿足需求。它再也不是一個一次性的、只是開發(fā)后期的活動,而是與整個開發(fā)流程融合成一體。此外,還有[BillHetzel,1983],他將測試的定義:“評價一個程序和系統(tǒng)的特性或能力,并判斷它是否達到預(yù)期的結(jié)果,軟件測試就是以此為目的的任何行為”erdonghs@126.com軟件測試的定義從軟件測試的定義我們可以得出:軟件測試的目的是通過科學(xué)的測試方法,找出軟件中存在的缺陷,最終得到一個高質(zhì)量的軟件產(chǎn)品,那么確保用戶滿意將是我們的服務(wù)宗旨,如何找出更多的軟件缺陷,是我們的工作重點。所以,我們要從客戶的角度出發(fā),按照正確的業(yè)務(wù)流程盡最大可能去模擬用戶的行為習(xí)慣,找出產(chǎn)品中缺陷。在此過程中應(yīng)以<需求規(guī)格說明書>為基本依據(jù),結(jié)合軟件產(chǎn)品的設(shè)計文檔,以及項目經(jīng)驗設(shè)計高效的測試用例,只有這樣才能達到我們測試的目的從廣義上講,軟件測試是指軟件產(chǎn)品生命周期內(nèi)所有檢查、評審和確認的活動。如:設(shè)計評審、文檔審查、單元測試、集成測試、系統(tǒng)測試、驗收測試等。從狹義上講,軟件測試是對軟件產(chǎn)品質(zhì)量的檢驗和評價。它一方面檢查、揭露軟件產(chǎn)品質(zhì)量中存在的質(zhì)量問題,同時又需對產(chǎn)品質(zhì)量進行客觀的評價并提出改進意見。1.3.2軟件測試的目的軟件測試的目的基于不同的立場,存在著兩種完全不同的測試目的。從用戶的角度出發(fā),測試的目的就在于在軟件投入運行之前,盡可能地多發(fā)現(xiàn)軟件中的錯誤以考慮是否可以接受該產(chǎn)品。驗證該軟件已正確地實現(xiàn)了用戶的要求,確立人們對軟件質(zhì)量的信心從軟件開發(fā)者的角度出發(fā),軟件測試是對軟件規(guī)格說明、設(shè)計和編碼的最后復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。綜上所述,軟件測試的目的有以下3點:測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤,而不是證明程序的正確性。一個好的測試用例在于可以發(fā)現(xiàn)還未曾發(fā)現(xiàn)的錯誤。一個成功的測試是發(fā)現(xiàn)了至今還沒有發(fā)現(xiàn)的錯誤。1.4軟件缺陷(Bug)我們常將軟件測試活動中尋找軟件缺陷的過程稱為找Bug今天的計算機的Bug之多難以令人置信。例如,微軟的Windows98操作系統(tǒng)改正了Windows95里面5000多個Bug!全世界有數(shù)千億個Bug在計算機中飛來飛去!計算機含有這么多Bug有一個技術(shù)原因,就是軟件越來越龐大復(fù)雜。軟件Bug是指:軟件(包括程序和文檔)中不符合用戶需求的問題。這里的軟件Bug意思相當(dāng)于我們的軟件缺陷erdonghs@126.com軟件缺陷案例人們常常不把軟件當(dāng)回事,沒有真正意識到它已經(jīng)深入滲透到我們的日常生活中,軟件在電子信息領(lǐng)域里無處不在?,F(xiàn)在有許多人如果一天不上網(wǎng)查看電子郵件,簡直就沒法過下去。我們已經(jīng)離不開24小時包裹投遞服務(wù)、長途電話服務(wù)和最先進的醫(yī)療服務(wù)了。然而軟件是由人編寫開發(fā)的,是一種邏輯思維的產(chǎn)品,盡管現(xiàn)在軟件開發(fā)者采取了一系列有效措施,不斷地提高軟件開發(fā)質(zhì)量,但仍然無法完全避免軟件(產(chǎn)品)會存在各種各樣的缺陷。軟件中的缺陷有時會造成相當(dāng)嚴(yán)重的損失和災(zāi)難!下面用4個軟件缺陷的案例來說明!軟件缺陷案例(1)迪斯尼的獅子王游戲軟件缺陷。1994年秋天,迪斯尼公司發(fā)布了第一個面向兒童的多媒體光盤游戲——獅子王動畫故事書(TheLionKingAnimatedStorybook)。盡管已經(jīng)有許多其他公司在兒童游戲市場上運作多年,但是這次是迪斯尼公司首次進軍這個市場,所以進行了大量促銷宣傳。結(jié)果,銷售額非??捎^,該游戲成為孩子們那年節(jié)假日的“必買游戲”。然而后來卻飛來橫禍。12月26日,圣誕節(jié)的后一天,迪斯尼公司的客戶支持電話開始響個不停。很快,電話支持技術(shù)員們就淹沒在來自于憤怒的家長并伴隨著玩不成游戲的孩子們哭叫的電話之中。報紙和電視新聞進行了大量的報道。后來證實,迪斯尼公司未能在軟件上對市前將投入使用的許多不同類型的PC機型進行兼容性測試。該軟件在極少數(shù)系統(tǒng)中工作正常—-例如在迪斯尼程序員用來開發(fā)游戲的系統(tǒng)中——但在大多數(shù)公眾使用的系統(tǒng)中卻不能運行。軟件缺陷案例(2)美國航天局火星登陸探測器事故1999年12月3日,美國航天局的火星極地登陸者號探測器試圖在火星表面著陸時失蹤。從理論上看,登陸的計劃是這樣的:在飛船降落到火星的過程中,打開降落傘減緩飛船的下降速度。降落傘打開后的幾秒鐘內(nèi),飛船的3條腿將迅速撐開,并在預(yù)定地點著陸。當(dāng)飛船離地面1800米時,它將丟棄降落傘,點燃著陸推進器,緩緩地降落到地面。美國航天局為了省錢,簡化了確定何時關(guān)閉著陸推進器的裝置。為了替代其他太空船上使用的貴重雷達,他們在飛船的腳上裝了一個廉價的觸點開關(guān),通過在計算機中設(shè)置一個數(shù)據(jù)位來關(guān)閉燃料。很簡單,飛船的腳不“著地”,引擎就會點火。
軟件缺陷案例遺憾的是,故障評估委員會在事后的測試中發(fā)現(xiàn),當(dāng)飛船的腳迅速撐開準(zhǔn)備著陸時,機械震動在大多數(shù)情況下也會觸發(fā)著陸開關(guān),進而會設(shè)置一個的錯誤數(shù)據(jù)位。這樣飛船開始著陸時,計算機極有可能關(guān)閉著陸推進器,這樣飛船開始著陸時,計算機極有可能關(guān)閉推進器,而火星登陸飛船下墜1800米之后沖向地面,必然會撞成碎片。結(jié)果是災(zāi)難性的,但背后的原因卻很簡單。登陸飛船經(jīng)過了多個小組測試。其中一個小組測試飛船的腳著落過程,但不檢查那個關(guān)鍵的數(shù)據(jù)位,因為那不是這個小組負責(zé)的范圍;另一個小組測試著陸過程的其他部分。但這個小組總是在開始測試前重置計算機,清除數(shù)據(jù)位。雙方本身工作都沒有什么問題,就是沒有沒有合在一起進行集成測試,后一個小組從來沒有注意到數(shù)據(jù)位已經(jīng)被錯誤設(shè)定,最終導(dǎo)致了災(zāi)難性事故的發(fā)生。
軟件缺陷案例(3)英特爾奔騰浮點除法缺陷在計算機的“計算器”程序中輸入以下算式:(4195835/3145727)*3145727-4195835如果答案是0,就說明計算機浮點運算沒有問題。如果得出別的結(jié)果,就表示計算機浮點除法存在軟件缺陷。英特爾為此缺陷拿出4億多美元來支付更換芯片的費用!1994年10月30日,弗吉利亞州Lynchburg學(xué)院的ThomasR.Nicely博士在他的一個實驗中,用奔騰PC機解決一個除法問題時,記錄了一個想不到的結(jié)果,得出了“錯誤”的結(jié)論。他把發(fā)現(xiàn)的問題放到因特網(wǎng)上,隨后引發(fā)了一場風(fēng)暴,成千上萬的人發(fā)現(xiàn)了同樣的問題,以及其他得出錯誤結(jié)果的情形。萬幸的是,這種情況很少見,僅僅在進行精度要求很高的數(shù)學(xué)、科學(xué)和工程計算中才會導(dǎo)致錯誤。大多數(shù)用來進行稅務(wù)處理和商務(wù)應(yīng)用的用戶根本不會遇到此類問題。事實上,英特爾軟件測試工程師在芯片發(fā)布之前進行內(nèi)部測試時已經(jīng)發(fā)現(xiàn)了這個問題。但管理層認為這沒有嚴(yán)重到一定要修正,甚至需要公開的程度。這個事故不僅說明軟件缺陷所帶來的問題,更重要的是,發(fā)現(xiàn)軟件缺陷后,要有正確對待軟件缺陷的態(tài)度!erdonghs@126.com軟件缺陷案例(4)北京奧運門票被迫暫停銷售2007年10月9日上午9點,北京奧運會門票向境內(nèi)公眾的第二階段預(yù)售正式啟動。公眾紛紛搶在第一時間訂票,致使票務(wù)官網(wǎng)壓力激增,承受了超過自身設(shè)計容量的8倍的流量,導(dǎo)致系統(tǒng)癱瘓。為此次門票銷售提供技術(shù)系統(tǒng)平臺的是北京歌華特瑪捷票務(wù)有限公司。該票務(wù)官網(wǎng)設(shè)計的流量容量是每小時100萬次,但瞬間承受了每小時800萬次的流量壓力,訪問數(shù)量過大造成網(wǎng)絡(luò)堵塞,使系統(tǒng)在啟動后不久就出現(xiàn)了處理能力不足的問題。Web壓力測試可以有效地測試一些web服務(wù)器的運行狀態(tài)和相應(yīng)時間等,對于WEb服務(wù)器的承受力測試是個非常好的手法!軟件缺陷IEEE(1983)729軟件缺陷一個標(biāo)準(zhǔn)的定義:從產(chǎn)品內(nèi)部看,軟件缺陷是軟件產(chǎn)品開發(fā)或維護過程中所存在的錯誤、毛病等各種問題;從外部看,軟件缺陷是系統(tǒng)所需要實現(xiàn)的某種功能的失效或違背。
軟件缺陷的主要類型/現(xiàn)象:功能、特性沒有實現(xiàn)或部分實現(xiàn)設(shè)計不合理,存在缺陷實際結(jié)果和預(yù)期結(jié)果不一致運行出錯,包括運行中斷、系統(tǒng)崩潰、界面混亂數(shù)據(jù)結(jié)果不正確、精度不夠用戶不能接受的其他問題,如存取時間過長、界面不美觀erdonghs@126.com軟件缺陷的定義erdonghs@126.com
軟件缺陷即計算機系統(tǒng)或程序中存在的任何一種破壞正常運行能力的問題、錯誤,或者隱藏的功能缺陷、瑕疵。缺陷會導(dǎo)致軟件產(chǎn)品在某種程度上不能滿足用戶的需求。對于軟件缺陷的精確定義,通常有以下5條:軟件未達到產(chǎn)品說明書要求的功能軟件出現(xiàn)了產(chǎn)品說明書指明不會出現(xiàn)的錯誤軟件功能超出了產(chǎn)品說明書規(guī)定的功能軟件未實現(xiàn)產(chǎn)品說明書雖未明確指出但應(yīng)該實現(xiàn)的目標(biāo)軟件難以理解,不易使用,運行緩慢或者最終用戶認為使用效果不好軟件缺陷為了更好地理解每一條規(guī)則,我們以計算器為例進行說明。計算器的產(chǎn)品說明書聲稱它能夠準(zhǔn)確無誤地進行加、減、乘、除運算。當(dāng)你拿到計算器后,按下(+)鍵,結(jié)果什么反應(yīng)也沒有,根據(jù)第1條規(guī)則,這是一個缺陷。假如得到錯誤答案,根據(jù)第1條規(guī)則,這同樣是一個缺陷。若產(chǎn)品說明書聲稱計算器永遠不會崩潰、鎖死或者停止反應(yīng)。當(dāng)你任意敲鍵盤,計算器停止接受輸入,根據(jù)第2條規(guī)則,這是一個缺陷。若用計算器進行測試,發(fā)現(xiàn)除了加、減、乘、除之外它還可以求平方根,說明書中從沒提到這一功能,根據(jù)第3條規(guī)則,這是軟件缺陷。軟件實現(xiàn)了產(chǎn)品說明書未提到的功能若在測試計算器時,發(fā)現(xiàn)電池沒電會導(dǎo)致計算不正確,但產(chǎn)品說明書未指出這個問題。根據(jù)第4條規(guī)則,這是個缺陷第5條規(guī)則是全面的。如果軟件測試員發(fā)現(xiàn)某些地方不對勁,無論什么原因,都要認定為缺陷。如“=”鍵布置的位置使其極其不好按;或在明亮光下顯示屏難以看清。根據(jù)第5條規(guī)則,這些都是缺陷。軟件缺陷屬性軟件缺陷屬性包括缺陷標(biāo)識、缺陷癥狀、缺陷類型、缺陷嚴(yán)重程度等。缺陷標(biāo)識:是標(biāo)記某個缺陷的唯一的表示,可以使用數(shù)字序號表示。缺陷癥狀:包括界面缺陷、不友好行為、非法輸入、文檔缺陷、無效操作、數(shù)據(jù)錯誤、功能設(shè)計缺陷、系統(tǒng)崩潰、意外行為等缺陷類型:是根據(jù)缺陷的自然屬性劃分缺陷種類。見軟件缺陷類型列表:軟件缺陷屬性4.缺陷嚴(yán)重程度:是指因缺陷引起的故障對軟件產(chǎn)品的影響程度,所謂“嚴(yán)重性”我指的是在測試條件下,一個錯誤在系統(tǒng)中的絕對影響。見軟件缺陷嚴(yán)重等級列表:缺陷嚴(yán)重等級
描述
致命(Fatal)系統(tǒng)任何一個主要功能完全喪失、用戶數(shù)據(jù)受到破壞、系統(tǒng)崩潰、懸掛、死機,或者危及人身安全
嚴(yán)重
(Critical)系統(tǒng)的主要功能部分喪失、數(shù)據(jù)不能保存,系統(tǒng)所提供的功能或服務(wù)受到明顯的影響
一般
(Major)系統(tǒng)的部分功能沒有完全實現(xiàn),但不影響用戶的正常使用,例如:提示信息不太準(zhǔn)確;或用戶界面差、操作時間長等一些問題。
較小
(Minor)
使操作者不方便或遇到麻煩,但它不影響功能的操作和執(zhí)行,如個別的不影響產(chǎn)品理解的錯別字、文字排列不整齊等一些小問題。
軟件缺陷類型列表缺陷類型
描述
功能
影響了各種系統(tǒng)功能、邏輯的缺陷用戶界面
影響了用戶界面、人機交互特性,包括屏幕格式、用戶輸入靈活性、結(jié)果輸出格式等方面的缺陷
文檔
影響發(fā)布和維護,包括注釋,用戶手冊,設(shè)計文檔
軟件包
由于軟件配置庫、變更管理或版本控制引起的錯誤
性能
不滿足系統(tǒng)可測量的屬性值,如執(zhí)行時間,事務(wù)處理速率等。
系統(tǒng)/模塊接口
與其他組件、模塊或設(shè)備驅(qū)動程序、調(diào)用參數(shù)、控制塊或參數(shù)列表等不匹配、沖突。
軟件缺陷狀態(tài)軟件缺陷除了嚴(yán)重性之外,還存在反映軟件缺陷處于一種什么樣的狀態(tài),便于跟蹤和管理某個產(chǎn)品的缺陷,可以定義不同的bug狀態(tài)。激活狀態(tài):問題還沒有解決,測試人員新報的bug,或驗證后bug仍然存在。已修正狀態(tài):開發(fā)人員針對所存在的缺陷,修改程序,認為已解決問題,或通過單元測試。關(guān)閉或非激活狀態(tài):測試人員驗證已經(jīng)修正的bug后,確認bug不存在以后的狀態(tài)。
軟件缺陷產(chǎn)生的原因5.軟件缺陷的原因軟件本身文檔錯誤數(shù)據(jù)考慮不周全引起強度或負載問題對邊界考慮不周全,漏掉某幾個邊界條件造成的錯誤對一些實時應(yīng)用系統(tǒng),保證精確的時間同步,否則容易引起時間上不協(xié)調(diào)、不一致性帶來的問題沒有考慮系統(tǒng)崩潰后的安全性、可靠性的隱患硬件或系統(tǒng)軟件上存在的錯誤軟件開發(fā)標(biāo)準(zhǔn)或過程上的錯誤
軟件缺陷產(chǎn)生的原因2
技術(shù)問題算法錯誤語法錯誤計算的精度問題系統(tǒng)接口不合理,造成系統(tǒng)性能問題接口參數(shù)不匹配,導(dǎo)致模塊集成出問題3
團隊工作系統(tǒng)分析時對客戶的需求不是十分清楚,或者與用戶溝通存在一些困難不同階段的開發(fā)人員相互理解不一致,軟件設(shè)計的需求分析結(jié)果的理解偏差,編程人員對系統(tǒng)設(shè)計規(guī)格說明書中某些內(nèi)容重視不夠,或存在誤解設(shè)計或編程上的一些假定或依賴性,沒有得到充分地溝通。
erdonghs@126.com軟件缺陷在不同階段的分布在真正的程序測試之前,通過審查、評審會可以發(fā)現(xiàn)更多的缺陷。規(guī)格說明書的缺陷在需求分析審查、設(shè)計、編碼、測試等過程中會逐步發(fā)現(xiàn),而不能僅在需求分析一個階段發(fā)現(xiàn)erdonghs@126.com缺陷成本erdonghs@126.com軟件缺陷造成的修復(fù)費用隨著時間的推移呈指數(shù)級增長!軟件缺陷erdonghs@126.com6.軟件缺陷的組成我們知道軟件缺陷是由很多原因造成的,如果把它們按需求分析結(jié)果——規(guī)格說明書,系統(tǒng)設(shè)計結(jié)果,編程的代碼等歸類起來,比較后發(fā)現(xiàn),結(jié)果規(guī)格說明書是軟件缺陷出現(xiàn)最多的地方,見下圖。軟件缺陷為什么產(chǎn)品規(guī)格說明書是軟件缺陷最多的地方?其主要原因是:由于軟件產(chǎn)品的設(shè)計、開發(fā)的特性的描述不夠清晰!軟件開發(fā)人員與用戶溝通存在較大困難,開發(fā)人員對要開發(fā)的產(chǎn)品功能理解與用戶不一致!需求變化的不一致性對規(guī)格說明書不夠重視!沒有整個開發(fā)隊伍中進行充分的溝通!軟件缺陷的分類按性質(zhì)可將軟件缺陷分為5類:功能缺陷:規(guī)格說明缺陷,實現(xiàn)的功能與用戶要求不一致等系統(tǒng)缺陷:外部、內(nèi)部接口缺陷,硬件結(jié)構(gòu)缺陷、OS缺陷等加工缺陷:算術(shù)和操作缺陷、控制缺陷、靜態(tài)邏輯缺陷等數(shù)據(jù)缺陷:動態(tài)、靜態(tài)數(shù)據(jù)缺陷、數(shù)據(jù)結(jié)構(gòu)缺陷等代碼缺陷:語法缺陷等按軟件生命周期不同階段可將軟件缺陷分類為:問題定義(需求分析)缺陷。分析員研究用戶的要求后所編寫的文檔中出現(xiàn)的缺陷規(guī)格說明缺陷。規(guī)格說明說明與問題定義不一致所產(chǎn)生的缺陷設(shè)計缺陷。系統(tǒng)設(shè)計與需求規(guī)格說明中的功能說明不相符。編碼缺陷。與缺陷相關(guān)的幾個概念軟件錯誤(error):在軟件生命周期內(nèi)出現(xiàn)的不可接受的人為錯誤;軟件缺陷(bug):是軟件錯誤的結(jié)果,指軟件產(chǎn)品預(yù)期屬性的偏離現(xiàn)象;對產(chǎn)品規(guī)格說明的偏離。如:規(guī)格說明規(guī)定了a+b=>c,而軟件產(chǎn)品實際上做的不是這樣。對客戶(customer)/用戶(user)期望的偏離,即用戶要求未體現(xiàn)在產(chǎn)品中(可能是規(guī)格說明有疏漏,也可能是實現(xiàn)中的問題。)軟件失效(failure):當(dāng)缺陷執(zhí)行時會發(fā)生失效,是指軟件運行時產(chǎn)生的不可接受的外部行為結(jié)果;軟件故障(fault):是指軟件運行過程中產(chǎn)生的不可接受的內(nèi)部狀態(tài)。常見的軟件錯誤有:軟件需求錯誤,功能和性能錯誤,軟件結(jié)構(gòu)錯誤,數(shù)據(jù)錯誤,軟件實現(xiàn)和編碼錯誤,軟件集成錯誤,軟件系統(tǒng)結(jié)構(gòu)錯誤,測試定義和測試執(zhí)行錯誤。1.4測試用例(TestCase)測試用例就是為了高效率地發(fā)現(xiàn)軟件缺陷而精心設(shè)計的少量測試數(shù)據(jù)。好的測試用例應(yīng)該能發(fā)現(xiàn)尚未發(fā)現(xiàn)的軟件缺陷。通常在測試設(shè)計階段就要進行測試用例的設(shè)計!測試用例是為某個特殊目標(biāo)而編制的一組測試輸入、執(zhí)行條件、預(yù)期結(jié)果,用于核實是否滿足某個特定軟件的需求。IEEE610.12給出測試用例的定義如下:測試用例是一組輸入(運行前提條件)和為某特定目標(biāo)而生成的預(yù)期結(jié)果及與之相關(guān)的測試規(guī)程的集合,或稱為為有效地發(fā)現(xiàn)缺陷的最小測試執(zhí)行單元測試用例是一個文檔,詳細說明測試的輸入、期望輸出和為一測試項所準(zhǔn)備的一組執(zhí)行條件erdonghs@126.com測試用例(TestCase)測試用例指的是:在測試執(zhí)行之前設(shè)計一套詳細的測試方案,包括:測試環(huán)境、測試步驟、測試數(shù)據(jù)和測試結(jié)果。可用一個簡單等式來表示:測試用例=輸入+輸出+測試環(huán)境“輸入”包括測試數(shù)據(jù)和操作步驟“輸出”指的是期望結(jié)果“測試環(huán)境”指的是系統(tǒng)環(huán)境設(shè)置測試環(huán)境測試軟件的第一件事就是搭建軟件的測試環(huán)境軟件測試環(huán)境就是軟件運行的平臺:測試環(huán)境=軟件+硬件+網(wǎng)絡(luò)硬件:主要包括PC機、筆記本、服務(wù)器、各種PDA終端軟件:這里主要指軟件運行的操作系統(tǒng)網(wǎng)絡(luò):主要針對的是C/S結(jié)構(gòu)和B/S結(jié)構(gòu)的軟件一個合格測試工程師,不僅要熟悉軟件知識,還要了解硬件和網(wǎng)絡(luò)的相關(guān)知識。erdonghs@126.com怎么搭建測試環(huán)境搭建測試環(huán)境的幾個要點:真實項目軟件:參考系統(tǒng)的最終使用環(huán)境。例如:
搭建測試環(huán)境時就要按照上面的配置來進行.產(chǎn)品軟件:這個相對來說比較復(fù)雜,工作量也大。比如,現(xiàn)在要測試微軟Word2000,怎樣來搭建測試環(huán)境呢?由于最終用戶使用什么樣的系統(tǒng)都有可能,如:硬件聯(lián)想品牌機,P42.4G,RAM512M軟件Windows2000Professional網(wǎng)絡(luò)10M局域網(wǎng)erdonghs@126.com怎么搭建測試環(huán)境2.
干凈:測試環(huán)境盡量不要安裝其他與被測軟件無關(guān)的軟件一般我們測試一款軟件時,都要求在一個剛剛裝好操作系統(tǒng)的機器上測試.3.無毒:測試環(huán)境不會中毒4.獨立:測試環(huán)境和開發(fā)環(huán)境獨立硬件品牌機,兼容機,筆記本軟件Windows98,WindowsMe,WindowsNT,Windows2000,WindowsXP網(wǎng)絡(luò)不需要erdonghs@126.com軟件環(huán)境的分類軟件開發(fā)環(huán)境:軟件在開發(fā)過程中使用的環(huán)境,一般包括:VB、VC等一些開發(fā)工具軟件生產(chǎn)環(huán)境:最終用戶使用的環(huán)境軟件測試環(huán)境要與軟件生產(chǎn)運行環(huán)境保持一致,要從開發(fā)環(huán)境中獨立出來。erdonghs@126.com163郵箱登錄測試用例用例編號測試步驟輸入數(shù)據(jù)預(yù)期結(jié)果1輸入用戶名和密碼,點擊”登錄“按鈕用戶名:user密碼:12345成功登錄user的個人郵箱2輸入用戶名和密碼,點擊”登錄“按鈕用戶名:user密碼:123提示:”密碼錯誤,請重新輸入!“3不輸入用戶名和密碼,點擊”登錄“按鈕提示:”請輸入用戶名和密碼“上面只寫了3條用例,其實如果全面考慮的話,可寫出20條以上用例erdonghs@126.com測試用例模板常用測試模板有兩種:Excel模板和Word模板,以Excel模板的應(yīng)用更普遍些!兩種模板比較Excel模板:每個用例占一行,便于集中管理和維護,一般適合寫功能用例Word模板:每個用例獨占一頁,描述的較清楚,但比較分散,適合寫性能用例erdonghs@126.com測試用例模板(Excel模板)erdonghs@126.com測試用例模板(Excel模板)項目/軟件:需要填寫項目或軟件的名稱程序版本:該軟件目前的版本號測試環(huán)境:測試的硬件/軟件和網(wǎng)絡(luò)環(huán)境編制人:略編制時間:略功能模塊:被測模塊的名稱功能特性:被測模塊的主要功能測試目的:測試所期望達到的目標(biāo)預(yù)置條件:在測試該模塊之前需要做哪些前期工作erdonghs@126.com測試用例模板(Excel模板)參考信息:測試該模塊需要參考的需求文檔的章節(jié)特殊規(guī)程說明:相當(dāng)于備注用例編號:每個用例有唯一編號,一般為拼音縮寫+數(shù)字,比如:DL001表示登錄模塊的第一個測試用例測試步驟:操作描述輸入數(shù)據(jù):測試數(shù)據(jù)預(yù)期結(jié)果:程序應(yīng)輸出的結(jié)果測試結(jié)果:程序?qū)嶋H輸出的結(jié)果erdonghs@126.comerdonghs@126.com測試用例模版(WORD模版)測試用例的設(shè)計原則測試用例除了應(yīng)該符合基本的測試用例編寫規(guī)范,還要遵守以下幾條基本設(shè)計原則:(1)保證測試用例的明確性。測試人員要盡量避免測試用例存在含糊的因素,否則會影響測試工作的進行,影響測試結(jié)果的準(zhǔn)確性。清晰的測試用例會使測試人員在測試過程中不會出現(xiàn)模棱兩可的測試結(jié)果。在測試過程中,測試用例的測試結(jié)果是唯一的,即通過、沒通過或未進行測試。如果測試沒有通過,一般會生成相應(yīng)的測試錯誤報告;如果測試沒有進行,也會生成相應(yīng)的原因說明報告,如測試用例本身具有錯誤性、測試用例的不適用性等等。例如,測試用例這樣描述:用戶正確操作,系統(tǒng)正常運行;用戶進行非法操作,系統(tǒng)不能正常運行。在這里,測試用例沒有具體說明什么是正確的操作,什么是非法的操作。另外,從測試用例描述中也無法知道什么是系統(tǒng)的正常或不正常的運行狀態(tài)。這就必然導(dǎo)致測試人員對測試用例的不確定理解,從而引發(fā)測試中的錯誤問題。測試用例的設(shè)計原則(2)保證測試用例的代表性。 盡量將具有相似功能的測試用例抽象合并。這樣,每一個測試用例都具有代表性,可以測試一類或一系列的系統(tǒng)功能。(3)保證測試用例的簡潔性。 冗長和復(fù)雜的測試用例是不應(yīng)該出現(xiàn)的,因為這樣的用例可讀性差、不利于測試人員理解和操作。簡潔的測試用例可以讓測試過程目的明確,讓測試結(jié)果具有唯一性。編寫測試用例的注意事項為什么要寫測試用例便于團隊交流便于重復(fù)測試便于跟蹤統(tǒng)計便于用戶自測什么時候?qū)懹美ǔT跍y試設(shè)計階段來寫測試用例,即在《需求規(guī)格說明書》和《測試計劃》都已完成之后誰來寫測試用例一般測試用例是由測試設(shè)計人員來編寫,由測試執(zhí)行人員來執(zhí)行根據(jù)什么寫測試用例編寫測試用例的唯一依據(jù)是用戶需求,具體的參考資料是<軟件需求規(guī)格說明書>和軟件原型.原型一般指沒有嵌入全部源代碼的軟件界面.erdonghs@126.com軟件質(zhì)量的內(nèi)涵軟件質(zhì)量是客戶滿意度的體現(xiàn)客戶+
質(zhì)+量?erdonghs@126.com1.5軟件質(zhì)量(Quality)IEEE<<StandardGlossaryofSoftwareEngineeringTerminology>>軟件質(zhì)量:軟件產(chǎn)品具有滿足規(guī)定的和潛在用戶需求的能力的特性與特性總和(ISO8492)軟件質(zhì)量:軟件產(chǎn)品滿足使用要求的程度軟件質(zhì)量是一個復(fù)雜的多層面概念:從用戶角度出發(fā),質(zhì)量是對需求的滿足。軟件需求是度量軟件質(zhì)量的基礎(chǔ)。從軟件產(chǎn)品角度出發(fā),質(zhì)量是軟件的內(nèi)在特征。從軟件開發(fā)過程出發(fā),質(zhì)量是對過程規(guī)范的符合。
erdonghs@126.com軟件質(zhì)量通常,軟件質(zhì)量由以下幾個方面進行評價:軟件需求是衡量軟件質(zhì)量的基礎(chǔ),不符合需求的軟件就不具備質(zhì)量。設(shè)計的軟件應(yīng)在功能、性能等方面都符合要求,并能可靠地運行。軟件結(jié)構(gòu)良好、易讀、易于理解,并易于修改、維護軟件系統(tǒng)具有友好的用戶界面,便于用戶使用軟件生命周期中各階段的文檔齊全、規(guī)范高質(zhì)量軟件標(biāo)準(zhǔn)體系產(chǎn)品質(zhì)量:是人們實踐產(chǎn)物的屬性和行為,是可以認識,可以科學(xué)地描述的。并且可以通過一些方法和人類活動,來改進質(zhì)量.質(zhì)量模型:McCall模型,Boehm模型,ISO9126模型過程質(zhì)量:
軟件能力成熟度模型
CMM(CapabilityMaturityModel).
國際標(biāo)準(zhǔn)過程模型
ISO9000
軟件過程改進和能力決斷
SPICE(SoftwareProcessImprovementandCapabilitydEtermination)
在商業(yè)過程中有關(guān)的質(zhì)量內(nèi)容:
培訓(xùn)、成品制作、宣傳、發(fā)布日起、客戶、風(fēng)險、成本、業(yè)務(wù)等erdonghs@126.com軟件質(zhì)量標(biāo)準(zhǔn)新版GB/T16260標(biāo)準(zhǔn)在總標(biāo)題《軟件工程產(chǎn)品質(zhì)量》下共分為4個部分:質(zhì)量模型:GB/T16260.1外部度量:GB/T16260.2內(nèi)部度量:GB/T16260.3使用質(zhì)量的度量:GB/T16260.4GB/T16260.1:質(zhì)量模型部分描述了關(guān)于軟件產(chǎn)品質(zhì)量的兩部分模型:內(nèi)部質(zhì)量與外部質(zhì)量的模型使用質(zhì)量的模型。外部質(zhì)量和內(nèi)部質(zhì)量模型第一個模型由6個質(zhì)量特性和21個子特性組成。當(dāng)用軟件本身的內(nèi)部屬性(如軟件的規(guī)模、復(fù)雜性或模塊間的獨立性等)來刻畫軟件產(chǎn)品質(zhì)量時,所體現(xiàn)的是內(nèi)部質(zhì)量;而當(dāng)軟件在特定環(huán)境下運行時所表現(xiàn)的行為則代表了產(chǎn)品的外部質(zhì)量。外部質(zhì)量和內(nèi)部質(zhì)量模型適用性準(zhǔn)確性互操作性安全性依從性成熟性容錯性易恢復(fù)性易理解性易學(xué)習(xí)性易操作性時間特性資源特性易分析性易變更性穩(wěn)定性易測試性適應(yīng)性易安裝性共存性易替換性功能性可靠性易用性效率可維護性可移植性外部質(zhì)量和內(nèi)部質(zhì)量內(nèi)部度量元、外部度量元1.5.1質(zhì)量管理質(zhì)量管理制定計劃需求評審設(shè)計審查程序代碼審查測試用例審查
測試跟蹤監(jiān)督質(zhì)量保證質(zhì)量控制質(zhì)量管理質(zhì)量管理是指以組織為質(zhì)量中心,以企業(yè)全員參與為基礎(chǔ),為追求客戶滿意和組織所有受益者滿意而建立和形成的一整套質(zhì)量方針、目標(biāo)和體系。軟件質(zhì)量管理包括兩個核心過程:質(zhì)量保證(QA):評估整個項目滿足相關(guān)的質(zhì)量要求,目標(biāo)是預(yù)防缺陷和錯誤的發(fā)生。質(zhì)量控制(QC):監(jiān)控是否符合相應(yīng)的質(zhì)量標(biāo)準(zhǔn)、滿足項目管理者以及整個項目組的要求,用于查找缺陷和錯誤。質(zhì)量保證和質(zhì)量控制什么是QA?
QA是一組計劃好的系統(tǒng)化預(yù)防活動,用來監(jiān)控和改善軟件開發(fā)過程。QA活動對軟件產(chǎn)品在多大程度上符合預(yù)定義標(biāo)準(zhǔn)作出評價,并為軟件開發(fā)定義規(guī)程。這里所說的規(guī)程由一系列活動組成,設(shè)計這些活動的目標(biāo)在于預(yù)防軟件缺陷
什么是QC?
QC是將產(chǎn)品質(zhì)量與指定標(biāo)準(zhǔn)進行比較的過程,若質(zhì)量與標(biāo)準(zhǔn)不符,則采取相應(yīng)的措施。QC面向缺陷檢查,而非預(yù)防缺陷質(zhì)量保證和質(zhì)量控制QA面向過程,QC面向產(chǎn)品。QA著重于通過對軟件開發(fā)過程持續(xù)的監(jiān)管和改進來防范缺陷,QC則著重于對產(chǎn)品進行缺陷檢查。換言之,QA確保你按正確的方式做正確的事,而QC則確保你所做的結(jié)果符合預(yù)先的期望.1.5.2軟件質(zhì)量保證的目的軟件質(zhì)量保證(SQA):
是指為了保證軟件質(zhì)量而對軟件開發(fā)過程和被開發(fā)的軟件產(chǎn)品進行的有計劃、有系統(tǒng)的管理活動。其目的是使軟件開發(fā)過程對于管理人員來說是可見的。它通過對軟件產(chǎn)品和活動進行評審和審計,驗證軟件是符合標(biāo)準(zhǔn)的。軟件質(zhì)量保證在項目開始時就一起參與建立計劃、標(biāo)準(zhǔn)和過程,以使軟件項目滿足用戶要求!erdonghs@126.com1.5.3軟件質(zhì)量保證的工作內(nèi)容軟件質(zhì)量保證工作有以下幾個方面的工作:參與制定軟件質(zhì)量要求組織正式評審軟件測試管理對軟件的變更進行控制對軟件的質(zhì)量進行度量對軟件質(zhì)量情況及時記錄和報告erdonghs@126.com軟件質(zhì)量保證的工作內(nèi)容軟件質(zhì)量保證和質(zhì)量管理當(dāng)前相關(guān)的標(biāo)準(zhǔn)有:ISO9000系列標(biāo)準(zhǔn)。軟件測試人員可以以此系列標(biāo)準(zhǔn)規(guī)范、約定軟件的開發(fā)過程,提高軟件產(chǎn)品質(zhì)量CMM軟件能力成熟度模型,此為軟件行業(yè)標(biāo)準(zhǔn)模型。它具體等級劃分為5個等級:等級1(初始級),等級2(可重復(fù)級),等級3(已定義級),等級4(已管理級),等級5(優(yōu)化級)。1.5.3軟件開發(fā)各階段SQA的目標(biāo)軟件質(zhì)量保證組在項目開始時就一起參與建立計劃、標(biāo)準(zhǔn)和過程。軟件開發(fā)各階段SQA的目標(biāo)如下:需求分析階段確保客戶所需的系統(tǒng)是可行的確??蛻糁付ǖ男枨蟠_實能夠滿足他們的真正要求避免開發(fā)者與客戶之間的誤解向客戶提供為滿足所提出的需求而實際構(gòu)建的適當(dāng)?shù)能浖到y(tǒng)軟件規(guī)格說明書編制階段通過建立需求跟蹤文檔,確保規(guī)格說明書與系統(tǒng)需求保持一致確保規(guī)格說明書能適當(dāng)?shù)馗倪M系統(tǒng)的靈活性、可維護性及性能確保已經(jīng)建立了測試策略確保已經(jīng)建立了現(xiàn)實的開發(fā)進度表,包括預(yù)定的評審確保已經(jīng)為系統(tǒng)設(shè)計了正式的變更規(guī)程erdonghs@126.com1.5.3軟件開發(fā)各階段SQA的目標(biāo)3
軟件設(shè)計階段確保已建立用于描述設(shè)計的標(biāo)準(zhǔn),并確保遵循這些標(biāo)準(zhǔn)確保適當(dāng)?shù)乜刂撇⒂梦臋n記錄對設(shè)計進行的變更確保在系統(tǒng)設(shè)計組建立按照商定的準(zhǔn)則得到批準(zhǔn)之后才開始編程確保對設(shè)計的評審按照進度進行編碼階段確保代碼遵循已建立的風(fēng)格、結(jié)構(gòu)和文檔標(biāo)準(zhǔn)確保代碼經(jīng)過適當(dāng)測試和集成,同時對編碼模塊的修改得到適當(dāng)?shù)臉?biāo)識查看代碼編寫是否遵循既定的進度確保代碼評審按照進度進行1.5.3軟件開發(fā)各階段SQA的目標(biāo)5
測試階段確保測試計劃的建立和遵循確保創(chuàng)建的測試計劃能夠滿足所有系統(tǒng)規(guī)格說明書的要求確保經(jīng)過測試和返工后的軟件與規(guī)格說明書保持一致6維護階段確保代碼和文檔的一致性確保對已建立的變更控制過程進行監(jiān)測,包括將變更集成到軟件的產(chǎn)品版本中的過程確保對代碼的修改遵循編碼標(biāo)準(zhǔn),并且要對其進行評審,不要破壞整個代碼結(jié)構(gòu)確保代碼評審按照進度進行erdonghs@126.com1.5.4軟件質(zhì)量保證與軟件測試的關(guān)系軟件質(zhì)量保證與軟件測試的關(guān)系軟件質(zhì)量保證與軟件測試二者之間既存在包含又存有交叉的關(guān)系。軟件測試能夠找出軟件缺陷,確保軟件產(chǎn)品滿足需求。但是測試不是質(zhì)量保證,二者并不等同。測試可以查找錯誤并進行修改,從而提高軟件產(chǎn)品的質(zhì)量。軟件質(zhì)量保證則是避免錯誤以求高質(zhì)量,并且還有其他方面的措施以保證質(zhì)量問題。從共同點的角度看,軟件測試和軟件質(zhì)量保證的目的都是盡力確保軟件產(chǎn)品滿足需求,從而開發(fā)出高質(zhì)量的軟件產(chǎn)品。兩個流程都是貫穿整個軟件開發(fā)生命周期中。1.5.4質(zhì)量和測試軟件質(zhì)量保證的工作主要為:制定軟件質(zhì)量要求、組織正式審查、軟件測試管理、對軟件的變更進行控制、對軟件質(zhì)量進行度量、對軟件質(zhì)量情況及時記錄和報告。軟件質(zhì)量保證的職能是向管理層提供正確的可行信息,從而促進和輔助設(shè)計流程的改進。軟件質(zhì)量保證的職能還包括監(jiān)督測試流程,這樣測試工作就可以被客觀地審查和評估,同時也有助于測試流程的改進。二者的不同之處在于:軟件質(zhì)量保證工作側(cè)重對軟件開發(fā)流程中的各個過程進行管理與控制,杜絕軟件缺陷的產(chǎn)生。而測試則是對已產(chǎn)生的軟件缺陷進行修復(fù)。測試在保證質(zhì)量方面的主要職責(zé)是找出那些在設(shè)計開始時就本應(yīng)該避免的錯誤并進行修復(fù)軟件質(zhì)量保證的任務(wù)首先是避免錯誤,要做到這一點,除了測試外還需要其他方面的處理1.5.4質(zhì)量和測試軟件測試和軟件質(zhì)量是分不開的。測試是手段,質(zhì)量是目的軟件質(zhì)量保證主要有兩種途徑:通過貫徹軟件工程各種有效的技術(shù)方法和措施以盡量減少軟件開發(fā)過程中的錯誤通過分析軟件和測試軟件來發(fā)現(xiàn)和糾正錯誤軟件測試與軟件質(zhì)量保證的區(qū)別
erdonghs@126.com項目軟件測試質(zhì)量保證工作性質(zhì)技術(shù)性工作管理性工作對象軟件產(chǎn)品(包括階段產(chǎn)品)軟件過程焦點事后檢驗強調(diào)預(yù)防范圍在研發(fā)部門和技術(shù)部門在公司層面1.5.5軟件測試的規(guī)范軟件測試國家標(biāo)準(zhǔn)GB/T9386-2008《計算機軟件測試文檔編制規(guī)范》GB/T15532-2008《計算機軟件測試規(guī)范》GB/T8567-2006《計算機軟件文檔編制規(guī)范》GB/T8566-2007《信息技術(shù)軟件生存周期過程》GB/T18905-2002《軟件工程產(chǎn)品評價》GB/T17544-1998《信息技術(shù)軟件包質(zhì)量要求和測試》GB/T15532-1995《計算機軟件單元測試規(guī)范》GB/T9386-1988《計算機軟件測試文件編制規(guī)范》1.5.5軟件測試的規(guī)范2軟件測試行業(yè)標(biāo)準(zhǔn)IEEEStd829-2008軟件和系統(tǒng)測試文檔的標(biāo)準(zhǔn)。IEEEStd1008-1997軟件單元測試標(biāo)準(zhǔn)3企業(yè)規(guī)范企業(yè)規(guī)范是由一些大型企業(yè)或公司組織制訂。針對軟件工程工作的需要,制訂適用于本部門的規(guī)范4項目規(guī)范項目規(guī)范是由某一科研生產(chǎn)項目組織制訂,為該項任務(wù)專用的軟件工程規(guī)范,協(xié)助項目組構(gòu)建符合自身要求的軟件測試體系。
1.6與測試相關(guān)的幾個概念1排錯(debug)排錯是查找、分析和糾正錯誤的過程測試的任務(wù)是盡可能多地發(fā)現(xiàn)軟件的缺陷和錯誤排錯的任務(wù)是進一步診斷和改正程序中潛伏的缺陷和錯誤排錯的兩類活動:確定程序中可疑的缺陷或錯誤的確切性質(zhì)和位置對程序(設(shè)計、編碼)進行修改,排除潛在的缺陷或錯誤與測試相關(guān)的幾個概念2驗證和確認(V&V)“驗證”是檢驗軟件工作產(chǎn)品是否符合規(guī)定的設(shè)計要求,而“確認”過程則要證明所開發(fā)的最終產(chǎn)品在其預(yù)定義的環(huán)境中能否發(fā)揮預(yù)定的作用,滿足客戶使用的需求?!膀炞C”是以產(chǎn)品設(shè)計規(guī)格說明作為依據(jù),而“確認”是以客戶需求為目標(biāo)。確認是在軟件開發(fā)結(jié)束時,對軟件進行評價,確認軟件和其需求是否一致的過程,目的是證實在一個給定的外部環(huán)境中軟件的正確性。驗證和確認(V&V)Verification:Arewebuildingtheproductright?是否正確地構(gòu)造了軟件?即是否正確地做事,驗證開發(fā)過程是否遵守已定義好的內(nèi)容。驗證產(chǎn)品滿足規(guī)格設(shè)計說明書的一致性驗證有如下3個含義:確定軟件生命周期中的一個給定階段的產(chǎn)品是否達到前階段確立的需求的過程程序正確性的形式證明在設(shè)計和開發(fā)中,驗證是指對某項指定活動的結(jié)果進行檢查的過程,如:評審、測試、檢查等各類活動驗證的例子有:需求評審、設(shè)計評審、代碼中走查和代碼審查等驗證和確認(V&V)Validation:Arewebuildingtherightproduct是否構(gòu)造了正是用戶所需要的軟件?即是否正在做正確的事。驗證產(chǎn)品所實現(xiàn)的功能是否滿足用戶的需求,其目的是證實在一個給定的外部環(huán)境中軟件的正確性。確認包括需求規(guī)格說明書的確認和程序的確認,而程序的確認又分為靜態(tài)確認和動態(tài)確認。確認的例子有:單元測試、集成測試、系統(tǒng)測試和用戶驗收測試等人們通常認為軟件工程中開發(fā)程序是一個復(fù)雜而困難的過程,需要花費大量的人力、物力和時間,而測試程序則比較容易,不需要花費太多的精力。這其實是人們對軟件工程開發(fā)過程理解上的一個誤區(qū)。在實際的軟件開發(fā)過程中,作為現(xiàn)代軟件開發(fā)工業(yè)一個非常重要的組成部分,軟件測試正扮演著越來越重要的角色。隨著軟件規(guī)模的不斷擴大,如何在有限的條件下對被開發(fā)軟件進行有效的測試正成為軟件工程中一個非常關(guān)鍵的課題。1.7軟件測試的復(fù)雜性與經(jīng)濟性分析軟件測試的復(fù)雜性軟件測試是一項細致并且需要具備高度技巧的工作,稍有不慎就會顧此失彼,發(fā)生不應(yīng)有的疏漏。下面分析了容易出現(xiàn)問題的根源。(1)完全測試是不現(xiàn)實的在實際的軟件測試工作中,不論采用什么方法,由于軟件測試情況數(shù)量極其巨大,都不可能進行完全的測試。所謂完全測試,就是讓被測程序在一切可能的輸入情況下全部執(zhí)行一遍。通常也稱這種測試為“窮舉測試”。窮舉測試會引起以下幾種問題:所需的輸入量太大;測試的輸出結(jié)果太多;軟件執(zhí)行路徑太多;軟件的規(guī)格說明書存在主觀性。不要試圖窮舉測試窮舉測試是指測試時考慮所有可能的輸入值。比如,一個程序需3個整型的輸入數(shù)據(jù),若計算機的字長為32位,則每個數(shù)據(jù)可能取的值有232個,3個數(shù)的排列組合共有:
232×232×232=296(種)若每執(zhí)行一次需1ms,則需2萬年既然窮舉測試行不通,則需要在測試用例上多下功夫,設(shè)計出優(yōu)秀的測試用例,用最少的測試用例達到最大的覆蓋率軟件測試的復(fù)雜性E.W.Dijkstra的一句名言對測試的不徹底性作了很好的注解:“程序測試只能證明錯誤的存在,但不能證明錯誤的不存在”。由于窮舉測試工作量太大,實踐上行不通,這就注定了一切實際測試都是不徹底的,也就不能夠保證被測試程序在理論上不存在遺留的錯誤。軟件測試的復(fù)雜性(2)殺蟲劑現(xiàn)象1990年,BorisBeizer在其編著的《SoftwareTestingTechniques》(第二版)中提到了“殺蟲劑怪事”一詞,同一種測試工具或方法用于測試同一類軟件越多,則被測試軟件對測試的免疫力就越強。這與農(nóng)藥殺蟲是一樣的,老用一種農(nóng)藥,則害蟲就有了免疫力,農(nóng)藥就失去了作用。由于軟件開發(fā)人員在開發(fā)過程中可能碰見各種各樣的主客觀因素,再加上不可預(yù)見的突發(fā)性事件,所以再優(yōu)秀的軟件測試員采用一種測試方法或者工具也不可能檢測出所有的缺陷。為了克服被測試軟件的免疫力,軟件測試員必須不斷編寫新的測試程序,對程序的各個部分進行不斷地測試,以避免被測試軟件對單一的測試程序具有免疫力而使軟件缺陷不被發(fā)現(xiàn)。軟件測試的復(fù)雜性(3)軟件測試的代價
如右圖所示的最優(yōu)測試量示意圖可以觀察到,當(dāng)軟件缺陷降低到某一數(shù)值后,隨著測試量的不斷上升軟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目招標(biāo)文件撰寫經(jīng)驗
- 借款合同借據(jù)樣本格式
- 高考地理一輪復(fù)習(xí)第五章地表形態(tài)的塑造第二節(jié)塑造地表形態(tài)的力量課件
- 九年級道德與法治下冊 第一單元 中國與世界 第一課 生活在地球村 第1框 地球村形成了教案 人民版
- 2024-2025學(xué)年新教材高中化學(xué) 1.3 第2課時 氧化劑和還原劑教案 新人教版必修第一冊
- 2024秋五年級語文上冊 第八單元 第26課 憶讀書說課稿 新人教版
- 六年級品德與社會下冊 戰(zhàn)爭給人類帶來了什么1教案 鄂教版
- 2024-2025學(xué)年高中物理 第四章 電磁感應(yīng) 2 探究感應(yīng)電流的產(chǎn)生條件(3)教案 新人教版選修3-2
- 2024年四年級英語上冊 Unit 3 My friends Part B 第二課時教案 人教PEP
- 文書模板-上學(xué)租賃合同
- MOOC 流行歌曲演唱-武漢理工大學(xué) 中國大學(xué)慕課答案
- (正式版)JBT 10437-2024 電線電纜用可交聯(lián)聚乙烯絕緣料
- 中職英語基礎(chǔ)模塊1課件-U5-Celebrations-1
- 脫發(fā)知識課件
- 新部編版小學(xué)三年級上冊語文第三單元基礎(chǔ)過關(guān)卷(單元測試)
- 康復(fù)治療技術(shù)生涯發(fā)展展示
- 《哈腰掛》的音樂手法
- 轉(zhuǎn)正述職報告?zhèn)€人簡介
- 公開課中國式績效管理精彩回顧
- (完整版)家具報價單模板
- 低空經(jīng)濟產(chǎn)業(yè)園定位
評論
0/150
提交評論