軟件測試1軟測件試的基礎(chǔ)知識



單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,軟件測試,第1講 軟件測試基礎(chǔ),1,機(jī)遇和挑戰(zhàn)并存,2,Test Engineer,QA/Supervisor,Project/Quality Manager,Senior Engineer,軟件行業(yè)是朝陽行業(yè),軟件測試是軟件行業(yè)的朝陽行業(yè)。
軟件行業(yè)由賣方市場轉(zhuǎn)入買方市場,激烈的競爭要求軟件的產(chǎn)品質(zhì)量越來越高歐美國家的軟件項目,軟件測試的工作量占項目總工作量40%,軟件測試的經(jīng)費占項目總經(jīng)費30%測試人員和開發(fā)人員的比例 國外:1:1-2:1,國內(nèi)1:51:3,當(dāng)前國內(nèi)高素質(zhì)軟件測試人員的市場需求大約50萬人左右主要內(nèi)容,第1部分 軟件測試概述(What),第2部分 軟件測試基礎(chǔ)(概念、原理、方法、步驟、工具)(How),第3部分 軟件測試實踐(Application),3,網(wǎng)絡(luò)資源,http:/ (技術(shù)文章),http:/ Patton著,張小松等譯,機(jī)械工業(yè)出版社,2006,5,第1講 軟件測試基礎(chǔ),為什么要進(jìn)行軟件測試?,什么是軟件測試?,軟件測試的分類,測試階段,軟件測試的工作范疇,SQA與軟件測試的關(guān)系,6,7,軟件缺陷與軟件故障案例,迪斯尼并不總是帶來笑聲,英特爾奔騰浮點除法缺陷,火星探測飛船墜毀,愛國者導(dǎo)彈防御系統(tǒng),2008北京奧運會售票系統(tǒng),8,迪斯尼并不總是帶來笑聲,1994年圣誕節(jié)前夕,迪斯尼公司發(fā)布了第一個面向兒童的多媒體光盤游戲“獅子王童話”,圣誕節(jié)后的第一天,迪斯尼客戶支持部電話開始響個不停,不斷有人咨詢、抱怨為什么游戲總是安裝不成功,或沒法正常使用,這個游戲軟件只能在少數(shù)系統(tǒng)中正常運行,9,兼容性問題,英特爾奔騰浮點除法缺陷,如果答案不為0,說明計算機(jī)使用的是帶有浮點除法軟件缺陷的老式英特爾奔騰處理器。
1994年10月30日,弗吉尼亞州的Thomas R.Nicely博士在用奔騰PC進(jìn)行計算問題時得出了一個錯誤的結(jié)論,因此發(fā)現(xiàn)了這個問題,后來在互聯(lián)網(wǎng)上引起一場風(fēng)暴他們的軟件測試工程師在芯片發(fā)布之前進(jìn)行內(nèi)部測試時已經(jīng)發(fā)現(xiàn)了這個問題,英特爾的管理層認(rèn)為這沒有嚴(yán)重到保證要修正,甚至公開的程度當(dāng)軟件缺陷被發(fā)現(xiàn)時,英特爾試圖低調(diào)解決問題,但為時已晚,最終拿出4億多美元來支付所有維護(hù)費用,10,(41958353145727)3145727-4195835=,?,火星探測飛船墜毀,機(jī)械震動在大多數(shù)情況下也會觸發(fā)著地開關(guān),設(shè)置錯誤的數(shù)據(jù)位設(shè)想飛船開始著陸時,計算機(jī)極有可能關(guān)閉推進(jìn)器,而火星登陸飛船下墜1800米之后沒有反推進(jìn)器的幫助,沖向地面,必然會撞成碎片,兩個小組本身的工作都沒什么問題,就是沒有合在一起測試,其接口沒有被測,而問題就在這里,11,系統(tǒng)測試,銜接問題,愛國者導(dǎo)彈防御系統(tǒng),當(dāng)愛國者導(dǎo)彈防御系統(tǒng)的時鐘累計運行超過14小時后,系統(tǒng)的跟蹤系統(tǒng)就不準(zhǔn)確從而導(dǎo)致攔截伊拉克飛毛腿導(dǎo)彈的幾次失敗,其中一枚在沙特阿拉伯的多哈爆炸的飛毛腿導(dǎo)彈造成28名美國士兵死亡,12,系統(tǒng)時鐘誤差積累,2008北京奧運會售票系統(tǒng),2007年10月30日上午11時,2008北京奧運會售票系統(tǒng)軟件癱瘓。
北京奧運會的指定獨家票務(wù)供應(yīng)商-北京歌華特瑪捷票務(wù)有限公司成立于2006年9月,由美國特瑪捷公司、中體產(chǎn)業(yè)股份有限公司及北京歌華文化發(fā)展集團(tuán)三家出資構(gòu)建而成售票系統(tǒng)癱瘓事件發(fā)生后,公眾普遍質(zhì)疑歌華特瑪捷公司是否具備承擔(dān)2008北京奧運會的票務(wù)銷售能力用戶常常在軟件開發(fā)初期就發(fā)現(xiàn)軟件可能跟他們的需求有不一致的地方在開發(fā)軟件之前,需要進(jìn)行必要的需求分析開發(fā)完成之后,也要進(jìn)行必要的測試工作雖然這些軟件故障的后果程度不一,但可以肯定的是,通過嚴(yán)格的軟件測試可以極大地降低故障及因此而引發(fā)的種種惡果13,14,為什么要進(jìn)行軟件測試?,軟件總存在缺陷,只有通過測試,才可以發(fā)現(xiàn)軟件缺陷也只有發(fā)現(xiàn)了缺陷,才可以將軟件缺陷從軟件產(chǎn)品或軟件系統(tǒng)中清理出去軟件失敗時,也許僅僅給我們帶來了不便,也可能是災(zāi)難性的我們需要,軟件測試,,來保障軟件質(zhì)量15,什么是軟件測試?,軟件測試學(xué)科的形成,正反兩方面的爭辯,軟件測試的定義,軟件測試的其它觀點,16,軟件測試學(xué)科的發(fā)展,從測試的思想導(dǎo)向來劃分為4個階段,:,19571978年,以功能驗證為導(dǎo)向,測試是證明軟件是正確的(正向思維)19781983年,以破壞性為為導(dǎo)向,測試是為了找到軟件中的錯誤(逆向思維)。
19831987年,以質(zhì)量評估為導(dǎo)向,測試是提供產(chǎn)品的評估和質(zhì)量度量1988年起,以缺陷預(yù)防為導(dǎo)向,測試是為了展示軟件符合設(shè)計要求,發(fā)現(xiàn)缺陷、預(yù)防缺陷17,更好的階段劃分,分為3個階段初期階段、發(fā)展階段和成熟階段,初級階段,(19571971)測試通常被認(rèn)為是對產(chǎn)品進(jìn)行事后檢驗,缺乏有效的測試方法,發(fā)展階段,(19721982),1972年第一次關(guān)于軟件測試的正式會議,促進(jìn)了軟件測試的發(fā)展,成熟階段,(1983到現(xiàn)在),國際標(biāo)準(zhǔn)Std 829-1983,形成一門獨立的學(xué)科和專業(yè),成為軟件工程學(xué)科中的一個重要組成部分,18,軟件測試的正面性,Bill Hetzel博士(正向思維的代表):,軟件測試就是為程序能夠按預(yù)期設(shè)想那樣運行而建立足夠的信心,軟件測試是一系列活動以評價一個程序或系統(tǒng)的特性或能力并確定是否達(dá)到預(yù)期的結(jié)果,”,測試是為了驗證軟件是否符合用戶需求,即驗證軟件產(chǎn)品是否能正常工作,19,軟件測試的反面性,Glenford J.Myers,(反向思維的代表):,測試是為了證明程序有錯,而不是證明程序無錯誤,一個好的測試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤,一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試,20,軟件測試定義的兩面性,21,評價一個程序或系統(tǒng)的特性或能力并確定是否達(dá)到預(yù)期的結(jié)果,測試是為發(fā)現(xiàn)錯誤而針對某個程序或系統(tǒng)的執(zhí)行過程,軟件測試,正向思維,驗證軟件正常工作,逆向思維,假定軟件有錯誤,在設(shè)計規(guī)定的環(huán)境下運行軟件的所有功能,直至全部通過,。
尋找容易犯錯誤的地方和系統(tǒng)的薄弱環(huán)節(jié),試圖破壞系統(tǒng),直至找不出問題軟件測試是什么?,測試=“測”+“試”,什么是“測”?,Measure、測量,知道結(jié)果的驗證行為,測,什么是“試”?,Try、試驗,不知道結(jié)果的嘗試行為,試,軟件測試,測:驗證軟件功能、性能,試:驗證軟件是否有非功能性的異常,在規(guī)定的條件下對程序進(jìn)行操作,以發(fā)現(xiàn)程序錯誤,對其是否能滿足設(shè)計要求進(jìn)行評估的過程,Myers,軟件測試的定義,軟件測試是為了發(fā)現(xiàn)軟件缺陷而執(zhí)行程序或系統(tǒng)的過程23,Q:,我按照用戶的需求測試了實際的系統(tǒng),卻一個缺陷也沒有發(fā)現(xiàn),我所做的測試工作有意義嗎?,1979年,Glenford J.Myers,在軟件測試藝術(shù)(The art of software testing)書中給出的定義:,傳統(tǒng)意義上的測試定義,是狹義的A:,當(dāng)然有意義,因為我至少證明了該系統(tǒng)基本符 合用戶的需求IEEE軟件測試的定義,1983年,IEEE 的定義,:,使用人工或自動手段運行或測定某個系統(tǒng)的過程,其目的在于,檢驗它是否滿足規(guī)定的需求,或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別24,明確提出軟件測試以檢驗是否滿足需求為目標(biāo)軟件測試的定義,軟件測試,也可以定義為是“驗證(Verification)”和“有效性確認(rèn)(Validation)”活動構(gòu)成的整體。
驗證,:是檢驗軟件是否已正確地實現(xiàn)了產(chǎn)品規(guī)格書所定義的系統(tǒng)功能和特性,有效性確認(rèn),:是確認(rèn)所開發(fā)的軟件是否滿足用戶真正需求的活動,25,驗證:“我們是否正確地完成了產(chǎn)品?”,確認(rèn):“我們是否完成了正確的產(chǎn)品?”,-,Boehm,軟件測試的其它觀點,軟件測試被認(rèn)為是對軟件系統(tǒng)中潛在的各種風(fēng)險進(jìn)行評估的活動基于風(fēng)險,的軟件測試可以被看作是一個動態(tài)的監(jiān)控過程,對軟件開發(fā)全過程進(jìn)行檢測,隨時發(fā)現(xiàn)問題、報告問題,測試的,經(jīng)濟(jì)觀點,就是以最小的代價獲得最高的軟件產(chǎn)品質(zhì)量經(jīng)濟(jì)觀點也要求軟件測試盡早開展工作,發(fā)現(xiàn)缺陷越早,返工的工作量就越小,所造成的損失就越小26,問題討論,玩電腦游戲是不是軟件測試?,玩手機(jī)是不是軟件測試?,用戶使用軟件是不是軟件測試?,27,軟件測試的分類,方法,目標(biāo)/特性,單元測試,系統(tǒng)測試,驗收測試,性能測試,強(qiáng)壯性測試,功能測試,白盒測試,黑盒測試,測試階段或?qū)哟?適用性測試,可靠性測試,集成測試,安全性測試,軟件測試的分類,按測試的對象或范圍分類,,如單元測試、文檔測試、系統(tǒng)測試等,按測試目的分類,,如功能測試、回歸測試、性能測試、可靠性測試、安全性測試和兼容性測試等,根據(jù)測試過程中被測軟件是否被執(zhí)行,,分為靜態(tài)測試和動態(tài)測試,根據(jù)是否針對系統(tǒng)的內(nèi)部結(jié)構(gòu)和具體實現(xiàn)算法來完成測試,,可分為白盒測試和黑盒測試,按測試方法分類,數(shù)據(jù)庫測試、壓力測試、恢復(fù)測試、安全測試、兼容性測試等,注意:,不要在術(shù)語上糾纏,因為不同的測試小組可能使用不同的術(shù)語。
理解其含義及其在小組中的應(yīng)用是軟件測試人員的職責(zé)Ron Patton 軟件測試,軟件測試的各個階段,開發(fā)生命周期,.,維護(hù),需求定義,應(yīng)用定義,應(yīng)用開發(fā),修訂,建立,建立,測試生命周期,.,執(zhí)行.,執(zhí)行,執(zhí)行.,測試計劃,缺陷跟蹤,測試開發(fā),測試設(shè)計,評估,好處:可以找到軟件的Bug,提高軟件可靠性!,不好:這些Bug可能讓開發(fā)人員瘋掉!可能項目延期!,軟件測試是“不得不做”!,軟件測試階段,階 段,輸 入,輸 出,需求分析,需求定義,市場分析文檔,相關(guān)技術(shù)文檔,市場需求分析會議記要,功能設(shè)計,技術(shù)設(shè)計,設(shè)計審查,市場需求文檔,技術(shù)設(shè)計文檔,測試計劃,測試用例,功能驗證,代碼完成文件包,功能詳細(xì)設(shè)計說明書,最終技術(shù)文檔,完整測試用例,完備的測試計劃,缺陷報告,功能驗證測試報告,系統(tǒng)測試,代碼修改后的文件包,完整測試用例,完備的測試計劃,缺陷報告,缺陷狀態(tài)報告,項目階段報告,確認(rèn)測試,代碼凍結(jié)文件包,確認(rèn)測試用例,缺陷狀態(tài)報告,缺陷報告審查,版本審查,版本發(fā)布,代碼發(fā)布文件包,測試計劃檢查清單,當(dāng)前版本已知問題的清單,版本發(fā)布報告,測試階段,(SDLC),需求和設(shè)計審查,測試人員參與產(chǎn)品需求分析和系統(tǒng)設(shè)計,認(rèn)真閱讀有關(guān)文檔,真正理解客戶的需求和技術(shù)上的設(shè)計,檢查需求說明書對產(chǎn)品描述的準(zhǔn)確性、一致性等,檢查系統(tǒng)設(shè)計的合理性和可測試性等,單元測試,單元測試,的,對象是程序系統(tǒng)中的最小單元-模塊或組件上,在編碼階段進(jìn)行,針對每個模塊進(jìn)行測試,主。
