1.2-軟件缺陷、軟件錯(cuò)誤、軟件故障_第1頁
1.2-軟件缺陷、軟件錯(cuò)誤、軟件故障_第2頁
1.2-軟件缺陷、軟件錯(cuò)誤、軟件故障_第3頁
1.2-軟件缺陷、軟件錯(cuò)誤、軟件故障_第4頁
1.2-軟件缺陷、軟件錯(cuò)誤、軟件故障_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

軟件質(zhì)量保證與測試1.2軟件缺陷、軟件錯(cuò)誤、軟件故障第1章緒論SoftwareQualityAssuranceandTestingGraceHopper

第一個(gè)Bug

軟件缺陷(Defect),常常又被叫做Bug。Bug一詞的原意是“臭蟲”或“蟲子”,這是怎么回事呢?

1945年9月9日,下午三點(diǎn)。美國海軍編程員、編譯器的發(fā)明者格蕾斯·哈珀(GraceHopper)哈珀正領(lǐng)著她的小組構(gòu)造一個(gè)稱為“馬克二型”的計(jì)算機(jī)。第一個(gè)Bug

這還不是一個(gè)真正的電子計(jì)算機(jī),它使用了大量的繼電器,一種電子機(jī)械裝置。

第二次世界大戰(zhàn)還沒有結(jié)束。

哈珀的小組夜以繼日地工作。機(jī)房是一間第一次世界大戰(zhàn)時(shí)建造的老建筑。那是一個(gè)炎熱的夏天,房間沒有空調(diào),所有窗戶都敞開散熱。突然,馬克二型死機(jī)了。第一個(gè)bug

技術(shù)人員試了很多辦法,最后定位到第70號(hào)繼電器出錯(cuò)。哈珀觀察這個(gè)出錯(cuò)的繼電器,發(fā)現(xiàn)一只飛蛾躺在中間,已經(jīng)被繼電器打死。她小心地用攝子將蛾子夾出來,用透明膠布帖到工作日志中,并注明“第一個(gè)發(fā)現(xiàn)蟲子的實(shí)例”。于是后來,bug一詞成了計(jì)算機(jī)領(lǐng)域的專業(yè)術(shù)語,比喻那些系統(tǒng)中的缺陷或問題。

缺陷是存在于軟件(文檔、數(shù)據(jù)、程序)之中的那些不希望或不可接受的偏差。缺陷的存在會(huì)導(dǎo)致軟件產(chǎn)品在某種程度上不能滿足用戶的需要。IEEE729-1983對(duì)缺陷有一個(gè)標(biāo)準(zhǔn)的定義:從產(chǎn)品內(nèi)部看,缺陷是軟件產(chǎn)品開發(fā)或維護(hù)過程中存在的錯(cuò)誤、毛病等各種問題;從產(chǎn)品外部看,缺陷是系統(tǒng)所需要實(shí)現(xiàn)的某種功能的失效或違背。軟件缺陷的概念軟件出現(xiàn)了產(chǎn)品說明書指明不會(huì)出現(xiàn)的錯(cuò)誤軟件未達(dá)到產(chǎn)品說明書的功能軟件功能超出產(chǎn)品說明書指明范圍軟件未達(dá)到產(chǎn)品說明書雖未指出但應(yīng)達(dá)到的目標(biāo)軟件難以理解、不易使用、運(yùn)行速度緩慢,最終用戶認(rèn)為不好軟件缺陷的外在表現(xiàn)軟件缺陷的多種情況SoftS0t’軟件產(chǎn)品要求

實(shí)際軟件

SoftS0t’1錯(cuò)誤軟件缺陷的多種情況軟件產(chǎn)品要求

實(shí)際軟件

SoftS0t’2缺少1錯(cuò)誤軟件產(chǎn)品要求

實(shí)際軟件

軟件缺陷的多種情況SoftS0t’2缺少1錯(cuò)誤3多余軟件產(chǎn)品要求

實(shí)際軟件

軟件缺陷的多種情況SoftS0t’2缺少1錯(cuò)誤3多余4未指出但應(yīng)有軟件產(chǎn)品要求

實(shí)際軟件

軟件缺陷的多種情況SoftS0t’2缺少1錯(cuò)誤3多余4未指出但應(yīng)有5用戶不滿意!軟件產(chǎn)品要求

實(shí)際軟件

軟件缺陷的多種情況課堂提問:下列那種不屬于軟件缺陷:A.銀行POS機(jī)在用戶取款時(shí)翻倍吐錢,取100,吐200B.計(jì)算機(jī)病毒發(fā)作,屏幕出現(xiàn)熊貓燒香畫面C.網(wǎng)上售票軟件反應(yīng)遲鈍,用戶難以正常買票D.某軟件在進(jìn)行修改升級(jí)之后,原來正常的功能現(xiàn)在出錯(cuò)了軟件缺陷的多種情況軟件缺陷產(chǎn)生的原因軟件自身的特點(diǎn)團(tuán)隊(duì)合作設(shè)計(jì)和實(shí)現(xiàn)問題管理問題

軟件缺陷的產(chǎn)生,主要是由軟件產(chǎn)品的特點(diǎn)和開發(fā)過程決定的。那么造成軟件缺陷的主要原因有哪些?下面從軟件自身的特點(diǎn)、團(tuán)隊(duì)工作和技術(shù)問題等角度來分析軟件缺陷產(chǎn)生的原因。軟件缺陷產(chǎn)生的原因軟件自身的特點(diǎn)1.軟件本身的實(shí)際需求不清晰,導(dǎo)致設(shè)計(jì)目標(biāo)偏離實(shí)際需求,從而引起功能或產(chǎn)品特征上的缺陷。案例:某網(wǎng)上售票系統(tǒng),一開始把系統(tǒng)的同時(shí)在線購票用戶數(shù)量定位在十萬數(shù)量級(jí),但在實(shí)際應(yīng)用中,同時(shí)在線購票用戶數(shù)量可能會(huì)達(dá)到百萬甚至千萬數(shù)量級(jí),這樣就會(huì)引起負(fù)載或強(qiáng)度問題。系統(tǒng)過載會(huì)導(dǎo)致性能下降,而如果負(fù)載超過其強(qiáng)度極限,則可能會(huì)徹底癱瘓或崩潰。軟件缺陷產(chǎn)生的原因軟件自身的特點(diǎn)2.系統(tǒng)結(jié)構(gòu)非常復(fù)雜,而又無法設(shè)計(jì)成一個(gè)很好的層次結(jié)構(gòu)或組件結(jié)構(gòu),結(jié)果導(dǎo)致意想不到的問題或系統(tǒng)維護(hù)、擴(kuò)充上的困難;即使設(shè)計(jì)成良好的面向?qū)ο蟮南到y(tǒng),由于對(duì)象、類太多,很難完成對(duì)各種對(duì)象、類相互作用的組合測試,而隱藏著一些參數(shù)傳遞、方法調(diào)用、對(duì)象狀態(tài)變化等方面問題。如龐大的ERP系統(tǒng),數(shù)字化校園系統(tǒng)等。3.對(duì)一些實(shí)時(shí)應(yīng)用,需要進(jìn)行精心設(shè)計(jì)和技術(shù)處理,保證精確的時(shí)間同步,否則容易引起時(shí)間上不協(xié)調(diào)、不一致所帶來的問題。軟件缺陷產(chǎn)生的原因軟件自身的特點(diǎn)4.系統(tǒng)運(yùn)行環(huán)境的復(fù)雜,不僅用戶使用的計(jì)算機(jī)環(huán)境千變?nèi)f化,包括用戶的各種操作方式或各種不同的輸入數(shù)據(jù),容易引起一些特定用戶環(huán)境下的問題。案例:手機(jī)APP;美國迪斯尼公司獅子王游戲軟件兼容性問題軟件缺陷產(chǎn)生的原因軟件自身的特點(diǎn)5.由于通信端口多、存取和加密手段的矛盾性等,會(huì)造成系統(tǒng)的安全性或適用性等問題。例如:網(wǎng)銀。軟件缺陷產(chǎn)生的原因團(tuán)隊(duì)合作1.系統(tǒng)需求分析時(shí)對(duì)客戶的需求理解不清楚,或者和用戶的溝通存在一些困難。2.不同階段的開發(fā)人員相互理解不一致。例如,軟件設(shè)計(jì)人員對(duì)需求分析的理解有偏差,編程人員對(duì)系統(tǒng)設(shè)計(jì)規(guī)格說明書某些內(nèi)容重視不夠,或存在誤解。3.對(duì)于設(shè)計(jì)或編程上的一些假定或依賴性,相關(guān)人員沒有充分溝通。4.項(xiàng)目組成員技術(shù)水平參差不齊,新員工較多,或培訓(xùn)不夠等原因也容易引起問題。軟件缺陷產(chǎn)生的原因設(shè)計(jì)和實(shí)現(xiàn)問題1.系統(tǒng)結(jié)構(gòu)設(shè)計(jì)不合理、算法選擇不科學(xué),造成系統(tǒng)性能低下。2.沒有考慮系統(tǒng)崩潰后的自我恢復(fù)或數(shù)據(jù)的異地備份、災(zāi)難性恢復(fù)等問題,從而存在系統(tǒng)安全性、可靠性的隱患。3.對(duì)程序邏輯路徑或數(shù)據(jù)范圍的邊界考慮不夠周全,漏掉某些邊界條件,造成容量或邊界錯(cuò)誤。軟件缺陷產(chǎn)生的原因設(shè)計(jì)和實(shí)現(xiàn)問題4.算法錯(cuò)誤:在給定條件下沒能給出正確或準(zhǔn)確的結(jié)果。5.語法錯(cuò)誤:對(duì)于編譯性語言程序,編譯器可以發(fā)現(xiàn)這類問題;但對(duì)于解釋性語言程序,只能在測試運(yùn)行時(shí)發(fā)現(xiàn)。6.計(jì)算和精度問題:計(jì)算的結(jié)果沒有滿足所需要的精度。7.接口參數(shù)傳遞不匹配,導(dǎo)致模塊集成出現(xiàn)問題。軟件缺陷產(chǎn)生的原因管理問題1.缺乏質(zhì)量文化,不重視質(zhì)量計(jì)劃,對(duì)質(zhì)量、資源、任務(wù)、成本等的平衡性把握不好,容易擠掉需求分析、評(píng)審、測試、等時(shí)間,遺留的缺陷會(huì)比較多。2.開發(fā)流程不夠完善和規(guī)范,存在太多的隨機(jī)性和缺乏嚴(yán)謹(jǐn)?shù)膬?nèi)審或評(píng)審機(jī)制,容易產(chǎn)生問題。例如對(duì)需求變化、設(shè)計(jì)更改、代碼修正等因素缺乏嚴(yán)格規(guī)范的管理機(jī)制,導(dǎo)致開發(fā)過程難以穩(wěn)步推進(jìn)。軟件缺陷產(chǎn)生的原因管理問題3.開發(fā)周期短,需求分析、設(shè)計(jì)、編程、測試等各項(xiàng)工作不能完全按照定義好的流程來進(jìn)行,工作不夠充分,結(jié)果也就不完整、不準(zhǔn)確,錯(cuò)誤較多;周期短,還給各類開發(fā)人員造成太大的壓力,引起一些人為的錯(cuò)誤。4.文檔不完善,風(fēng)險(xiǎn)估計(jì)不足等PIE模型

在試圖發(fā)現(xiàn)軟件缺陷的而執(zhí)行軟件的動(dòng)態(tài)測試工作中有一些復(fù)雜而有趣的現(xiàn)象。假設(shè)某一個(gè)程序中有一個(gè)存在缺陷的代碼行,在該軟件的某次執(zhí)行中,這個(gè)存在缺陷的代碼行并不一定會(huì)被執(zhí)行到;就算是這個(gè)存在缺陷的代碼行被執(zhí)行到了,只要沒有達(dá)到某個(gè)特定的條件,程序也并不會(huì)出錯(cuò);只有執(zhí)行錯(cuò)誤代碼,達(dá)到某個(gè)特定的條件,程序的錯(cuò)誤狀態(tài)表現(xiàn)出來后被感知,才能發(fā)現(xiàn)程序中的缺陷。幾個(gè)相關(guān)概念

軟件測試中的PIE模型可以區(qū)分這些不同的現(xiàn)象,并明確了這些現(xiàn)象的轉(zhuǎn)化條件。先來明確幾個(gè)概念。缺陷Fault:

指靜態(tài)存在于程序中的錯(cuò)誤代碼行。錯(cuò)誤Error:

指執(zhí)行錯(cuò)誤代碼后導(dǎo)致的內(nèi)部錯(cuò)誤狀態(tài)。此時(shí)若無適當(dāng)措施(容錯(cuò))加以及時(shí)處理,便產(chǎn)生軟件失敗。失敗Failure:

指錯(cuò)誤狀態(tài)傳播到軟件外部被外部感知。錯(cuò)誤缺陷失敗外部內(nèi)部缺陷Fault、錯(cuò)誤Error和失敗FailurePIE模型

PIE模型告訴我們,就算一個(gè)程序中有缺陷,但要通過動(dòng)態(tài)測試觀察到這一缺陷的外部表現(xiàn),還需要三個(gè)必要的條件:1、程序執(zhí)行路徑必須通過錯(cuò)誤的代碼(Execution-執(zhí)行);2、在執(zhí)行錯(cuò)誤代碼的時(shí)候必須符合某個(gè)或者某些特定條件,從而觸發(fā)出錯(cuò)誤的中間狀態(tài)(Infection-感染);3、錯(cuò)誤的中間狀態(tài)必須傳播到最后輸出,使得觀測到輸出結(jié)果與預(yù)期結(jié)果不一致(Propagation-傳播)。缺陷錯(cuò)誤符合特定條件的輸入執(zhí)行存在缺陷的代碼行失敗ExecutionInfectionPropagationPIE模型程序PIE模型對(duì)某個(gè)軟件進(jìn)行軟件測試時(shí):包含缺陷Fault的代碼可能沒有被執(zhí)行到;測試執(zhí)行到了包含缺陷Fault的代碼,但由于不滿足特定的輸入條件,不一定會(huì)產(chǎn)生錯(cuò)誤的中間狀態(tài)error;產(chǎn)生了錯(cuò)誤的中間狀態(tài),但沒有傳播到最后輸出,我們從外部沒有發(fā)現(xiàn)問題。以上情況都會(huì)導(dǎo)致測試工作不充分,發(fā)現(xiàn)不了軟件中存在的缺陷!類比:體檢PIE模型:代碼示例publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}代碼有問題嗎?PIE模型:示例publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++)//缺陷Fault{V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}情況1:沒有對(duì)MY_AVG的調(diào)用,缺陷代碼沒有被執(zhí)行到。publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}PIE模型:示例publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}PIE模型:示例情況2:numbers[]={},此時(shí)雖然執(zhí)行到了包含缺陷Fault的代碼行,但不會(huì)產(chǎn)生錯(cuò)誤Error。publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}PIE模型:示例情況3:numbers[]={0,2,4},輸出結(jié)果為2,預(yù)期正確結(jié)果也為2,有Error(邏輯上第一個(gè)數(shù)沒有加進(jìn)去),但觀察不到Failure。publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}PIE模型:示例情況4:numbers[]={3,4,5},輸出結(jié)果為3,預(yù)期正確結(jié)果為4,有Error,也發(fā)生了Failure。//測試的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論