軟件測試技術(shù)課件_第1頁
軟件測試技術(shù)課件_第2頁
軟件測試技術(shù)課件_第3頁
軟件測試技術(shù)課件_第4頁
軟件測試技術(shù)課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件測試技術(shù)

3.1結(jié)構(gòu)化系統(tǒng)測試技術(shù)3.1.1人工測試技術(shù)3.1.2黑盒測試技術(shù)3.1.3白盒測試技術(shù)3.1.4靜態(tài)分析技術(shù)3.1.5動態(tài)測試技術(shù)3.2面向?qū)ο笙到y(tǒng)測試技術(shù)3.2.1面向?qū)ο鬁y試基礎(chǔ)3.2.2面向?qū)ο鬁y試內(nèi)容

軟件測試技術(shù)3.1結(jié)構(gòu)化系統(tǒng)測試技術(shù)3.1結(jié)構(gòu)化系統(tǒng)測試技術(shù)3.1.1人工測試技術(shù)人工測試是一種不依賴于計算機(jī)的白盒測試技術(shù)。人工測試通過人工手段對代碼進(jìn)行審查和運(yùn)行,主要包括軟件審查、代碼審查和代碼走查。3.1結(jié)構(gòu)化系統(tǒng)測試技術(shù)3.1.1人工測試技術(shù)3.1.1人工測試技術(shù)

早在20世紀(jì)70年代Weinberg在《計算機(jī)程序設(shè)計心理學(xué)》一書中就指出采用人工方法閱讀程序的必要性。經(jīng)驗表明,人工測試能相當(dāng)有效地查找錯誤。 因此,為了有效的保證軟件質(zhì)量,在一個軟件的開發(fā)過程中應(yīng)至少使用一種或多種人工測試技術(shù)。

3.1.1人工測試技術(shù) 早在20世紀(jì)70年代Weinberg人工測試的主要方法:1.軟件審查(softwarereview)主要進(jìn)行文檔審查。2.代碼審查(codeinspections)主要進(jìn)行代碼審查。3.人工走查(walkthroughs)主要進(jìn)行代碼審查和人工運(yùn)行程序。

人工測試的主要方法:1.軟件審查(softwarerevi人工測試技術(shù)的重要性: 經(jīng)驗表明,使用人工測試方法平均能夠發(fā)現(xiàn)接近40%的邏輯設(shè)計和編碼錯誤。人工測試技術(shù)的重要性: 經(jīng)驗表明,使用人工測試方法平均能夠發(fā)人工測試技術(shù)的重要性:

由于人工測試技術(shù)在檢查某些編碼錯誤時,有著特殊的功效,它常常能夠找出機(jī)器測試不易發(fā)現(xiàn)的錯誤。人工測試至今仍是一種行之有效的測試方法。

人工測試技術(shù)的重要性: 由于人工測試技術(shù)在檢查某些編碼錯誤時1.代碼審查(codeinspections)代碼審查的對象:

源程序代碼。代碼審查的方式:

召開代碼審查會。1.代碼審查(codeinspections)代碼審查的對代碼審查會參加人員:4

5人主持人:1人被審查代碼的程序員:1

2人其它人員(領(lǐng)域或程序?qū)<遥?

3人

會議時間:2

3個小時代碼審查會參加人員:45人代碼審查的步驟:制定計劃;預(yù)審;會議準(zhǔn)備;召開代碼審查會;返工;復(fù)審。

代碼審查的步驟:制定計劃;1)會議準(zhǔn)備在會議開始之前,組織者把被審查的程序清單和設(shè)計規(guī)范分發(fā)給小組的其他成員,要求他們在會議之前熟悉這些材料。1)會議準(zhǔn)備在會議開始之前,組織者把被審查的程序清單和設(shè)計規(guī)2)召開會議

1.請程序員逐個語句地講述程序的邏輯結(jié)構(gòu)。其間大家提出問題加以追究,以斷定是否存在錯誤。2.根據(jù)常見程序錯誤檢查清單分析程序。3.組織者要確保討論有效地進(jìn)行,并使參加者集中精力發(fā)現(xiàn)錯誤,而不是改正錯誤。2)召開會議1.請程序員逐個語句地講述程序的邏輯結(jié)構(gòu)。其間3)返工1.把已查出的錯誤清單交給程序員。2.組織者對問題的修復(fù)時間和優(yōu)先級就應(yīng)做出安排,3.程序員根據(jù)上述安排返工(修復(fù)代碼)。3)返工1.把已查出的錯誤清單交給程序員。4)復(fù)審在這些錯誤得到修復(fù)之后,需要重新召開代碼審查會或進(jìn)行單獨(dú)審查來復(fù)審這個程序。4)復(fù)審在這些錯誤得到修復(fù)之后,需要重新召開代碼審代碼審查的目的:發(fā)現(xiàn)的問題主要有三種:遺漏–功能遺漏。多余–冗余代碼。錯誤–數(shù)據(jù)錯誤,邏輯錯誤。代碼審查的目的:發(fā)現(xiàn)的問題主要有三種:常見程序錯誤檢查清單:數(shù)據(jù)引用錯誤;數(shù)據(jù)說明錯誤;計算錯誤;比較錯誤;控制流錯誤;接口錯誤;輸入/輸出錯誤;其它檢查。常見程序錯誤檢查清單:數(shù)據(jù)引用錯誤;1)數(shù)據(jù)引用錯誤l

用了未賦值的變量嗎?l

數(shù)組下標(biāo)越界嗎?l

有定義未引用問題嗎?l

指針運(yùn)算正確嗎?l

字符串越界嗎?l

地址或下標(biāo)運(yùn)算中有“差1”錯誤嗎?

1)數(shù)據(jù)引用錯誤l

用了未賦值的變量嗎?用了未賦值的變量嗎?Dimension*expression(Input&input){charopi;Dimension *vaiue,*dummy;Dimension *term(Input&);value=term(input); //while((op=input.getToken(dummy))!='E')if(op=='+') value=*value+term(input);//elseif(op=='-') value=*value-term(input);//else{ input.ungetToken(); break;}returnvalue;}用了未賦值的變量嗎?Dimension*expressio數(shù)組下標(biāo)越界嗎?constintLUNITNAME=10,BUFFSIZE=256,MAXUNIT=10;classInput{charbuf[BUFFSIZE];intpos;int last;voidskipSpace();public:intgetline();chargetToken(Dimension*&);voidungetToken(){--pos;}數(shù)組下標(biāo)越界嗎?constintLUNITNAME=數(shù)組下標(biāo)越界嗎?charInput::getToken(Dimension*&dim){inti;doublev;charunit[LUNITNAME];skipSpace();if(pos>=last)return'E';elseif(isdigit(buf[pos])){v=0.0;while(isdigit(buf[pos]))v=v*10+(buf[pos++]-'0');unit[0]=0;for(i=0;isalnum(buf[pos])||(buf[pos]=='/'&&isalpha(buf[pos+1]));++i)unit[i]=buf[pos++];};數(shù)組下標(biāo)越界嗎?charInput::getToken有定義未引用問題嗎?Dimension*expression(Input&input){charopi;Dimension *vaiue,*dummy;Dimension *term(Input&);value=term(input); //while((op=input.getToken(dummy))!='E')if(op=='+') value=*value+term(input);//elseif(op=='-') value=*value-term(input);//else{ input.ungetToken(); break;}returnvalue;}有定義未引用問題嗎?Dimension*expressio指針運(yùn)算正確嗎?public:staticconstchar*unitname;Length(doubled=0.0,intplain=0){value=d;}virtualDimension*clone(doublev,intplain=0){returnnewLength(v,plain);}virtualconstchar**getBase(){return&unitname;}virtualconstchar*getName(){returnunitname;}virtualDimension*operator+(Dimension*);virtualDimension*operator/(Dimension*);}指針運(yùn)算正確嗎?public:2)數(shù)據(jù)說明錯誤l

所有變量都被說明了嗎?l

缺省屬性使用得正確嗎?l

數(shù)組與字符串的初始化正確嗎?l

變量的長度、類型、存貯類指定得正確嗎?l

初始化與存貯類一致嗎?l

有相似的變量名嗎?

2)數(shù)據(jù)說明錯誤所有變量都被說明了嗎?Dimension*term(Input&input){char op;Dimension*vaiue,*dummy;Dimension*atom(Input&);value=atom(input);while((op=input.getToken(dummy))!='E')if(op=='*')

value=*value*atom(input);//elseif(op=='/')

value=*value/atom(input);//else{ input.ungetToken(); break;}returnvalue;}所有變量都被說明了嗎?Dimension*term(In缺省屬性使用得正確嗎?charuptolow(chatlow){charup;//If(low>=97&&low<=122)Up=low–32;If(low>=97&&low<=122)Up=low–33;returnup;}缺省屬性使用得正確嗎?charuptolow(chat3)計算錯誤l

有對非算術(shù)變量進(jìn)行運(yùn)算嗎?l

有混合運(yùn)算嗎?l

有不同長度的變量之間的運(yùn)算嗎?l

運(yùn)算的中間結(jié)果有無上溢或下溢?l

有用零作除數(shù)的情況嗎?l

變量值是否超過有效范圍?l

運(yùn)算符優(yōu)先級用得是否正確?l

整數(shù)除法運(yùn)算是否正確?3)計算錯誤l

有對非算術(shù)變量進(jìn)行運(yùn)算嗎?運(yùn)算的中間結(jié)果有無上溢或下溢?

有用零作除數(shù)的情況嗎?

整數(shù)除法運(yùn)算是否正確?

Dimension*Time::operator/(Dimension*d){if(d->getBase()==&Dimension::unitname)returnclone(getValue/d->getValue());elseif(d->getBase()==&Time::unitname)returnnewVelocity(getValue()/d->getValue());elsereturnnewDimension(getValue()/d->getValue());}運(yùn)算的中間結(jié)果有無上溢或下溢?

有用零作除數(shù)的情況嗎?

整4)比較錯誤l

有不同類型變量之間的比較嗎?l

有混合類型變量的比較嗎?l

比較關(guān)系正確嗎?l

布爾表達(dá)式正確嗎?l

運(yùn)算符優(yōu)先級使用的是否正確?l

能否正確處理布爾表達(dá)式?4)比較錯誤l

有不同類型變量之間的比較嗎?有不同類型變量之間的比較嗎?charuptolow(chatlow){charup;floatbottom=97.0,top=122.0;If(low>=bottom&&low<=top)up=low–32;returnup;}有不同類型變量之間的比較嗎?charuptolow(c比較關(guān)系正確嗎?charuptolow(chatlow){charup;//If(low>=97&&low<=122)Up=low–32;If(low>97&&low<122)Up=low–32;returnup;}比較關(guān)系正確嗎?charuptolow(chatlo5)控制流錯誤l

多路轉(zhuǎn)移越界嗎?l

每一個循環(huán)是否終止?l

程序能否終止?l

由于入口條件的原因,是否有循環(huán)不被執(zhí)行的情況?l

可能的“循環(huán)失敗”處理是否正確?l

有“差1”迭代錯誤嗎?l

有非窮舉的判斷嗎?5)控制流錯誤l

多路轉(zhuǎn)移越界嗎?每一個循環(huán)是否終止?…intCount=0;for(;;;){buf=getline();count++;if(count>=100)exit(1);}…每一個循環(huán)是否終止?…6)接口錯誤l

實參與形參的個數(shù)是否相同?l

實參與形參的屬性是否匹配?l

實參與形參的單位是否匹配?l

調(diào)用庫函數(shù)所用的參數(shù)的個數(shù)、屬性和次序是否正確?l

引用了與當(dāng)前入口無關(guān)的參數(shù)嗎?l

只讀變量被修改了嗎?l

全程變量在各模塊中定義一致嗎?

6)接口錯誤l

實參與形參的個數(shù)是否相同?實參與形參的個數(shù)是否相同?定義:intmax(inti,intj){If(I>j)returni;elsereturnj;}引用:…Result=Max(10,20,300);…實參與形參的個數(shù)是否相同?定義:7)輸入/輸出錯誤l

文件屬性是否正確?l

文件打開是否正確?l

格式說明與I/O語句是否一致?l

緩沖區(qū)大小與記錄大小是否匹配?l

使用了未打開的文件嗎?l

文件結(jié)束條件處理了嗎?l

I/O錯誤處理了嗎?7)輸入/輸出錯誤l

文件屬性是否正確?文件屬性是否正確?#include<stdio.h>main()(charc;//FILE*fp;intfd;//fp=fopen(“my_file.txt”,”r”);fd=open(“my_file.txt”,”r”);…}文件屬性是否正確?#include<stdio.h>文件打開是否正確?#include<stdio.h>main()(charc;FILE*fp;While((fp=fopen(“my_file.txt”,”r”))!=NULL);{…}…}文件打開是否正確?#include<stdio.h>8)其它檢查l

是否遺漏了功能?l

有錯誤警告和提示信息嗎?

8)其它檢查l

是否遺漏了功能?2.人工走查(walkthroughs)

人工走查和代碼審查的區(qū)別在于,人工走查要通過人工的方式模擬運(yùn)行程序,并檢查程序運(yùn)行的結(jié)果與預(yù)期結(jié)果的差異。2.人工走查(walkthroughs) 人工走查和代碼審查2.人工走查(walkthroughs)代碼走查的對象:

源程序代碼。代碼走查的方式:

召開代碼走查會。2.人工走查(walkthroughs)代碼走查的對象:人工走查會參加人員:4

5人主持人:1人被審查代碼的程序員:1

2人測試員:1人其它人員(領(lǐng)域或程序?qū)<遥?

2人

會議時間:2

3個小時人工走查會參加人員:45人人工走查的步驟:制定計劃;預(yù)審;會議準(zhǔn)備;召開代碼走查會;返工;復(fù)審。人工走

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論