軟件測(cè)試(第2版) 課件 第3、4章 白盒測(cè)試方法、接口測(cè)試_第1頁
軟件測(cè)試(第2版) 課件 第3、4章 白盒測(cè)試方法、接口測(cè)試_第2頁
軟件測(cè)試(第2版) 課件 第3、4章 白盒測(cè)試方法、接口測(cè)試_第3頁
軟件測(cè)試(第2版) 課件 第3、4章 白盒測(cè)試方法、接口測(cè)試_第4頁
軟件測(cè)試(第2版) 課件 第3、4章 白盒測(cè)試方法、接口測(cè)試_第5頁
已閱讀5頁,還剩219頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章白盒測(cè)試方法《軟件測(cè)試(第2版)》學(xué)習(xí)目標(biāo)/Target

掌握基本路徑法的使用,能夠應(yīng)用基本路徑法設(shè)計(jì)測(cè)試用例

掌握語句覆蓋法的使用,能夠應(yīng)用語句覆蓋法設(shè)計(jì)測(cè)試用例

掌握判定覆蓋法的使用,能夠應(yīng)用判定覆蓋法設(shè)計(jì)測(cè)試用例

掌握條件覆蓋法的使用,能夠應(yīng)用條件覆蓋法設(shè)計(jì)測(cè)試用例學(xué)習(xí)目標(biāo)/Target

掌握判定-條件覆蓋法的使用,能夠應(yīng)用判定-條件覆蓋法設(shè)計(jì)測(cè)試用例

掌握條件組合覆蓋法的使用,能夠應(yīng)用條件組合覆蓋法設(shè)計(jì)測(cè)試用例

了解目標(biāo)代碼插樁法的原理,能夠描述目標(biāo)代碼插樁法的3種執(zhí)行模式

掌握源代碼插樁法的使用,能夠應(yīng)用探針代碼測(cè)試程序章節(jié)概述/Summary白盒測(cè)試又稱為透明盒測(cè)試、結(jié)構(gòu)測(cè)試,它基于程序的內(nèi)部邏輯結(jié)構(gòu)進(jìn)行測(cè)試,而不是程序的功能(黑盒測(cè)試)。因此,進(jìn)行白盒測(cè)試時(shí),測(cè)試人員需要了解程序的內(nèi)部邏輯結(jié)構(gòu),根據(jù)使用的編程語言設(shè)計(jì)測(cè)試用例。白盒測(cè)試可用于單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試。白盒測(cè)試的方法包括基本路徑法、邏輯覆蓋法、程序插樁法,本章將對(duì)白盒測(cè)試的方法進(jìn)行詳細(xì)講解。目錄/Contents010203基本路徑法邏輯覆蓋法程序插樁法基本路徑法3.1

先定一個(gè)小目標(biāo)!掌握基本路徑法的概述,能夠使用基本路徑法設(shè)計(jì)測(cè)試用例3.1.1 基本路徑法概述基本路徑法是一種將程序的流程圖轉(zhuǎn)化為程序控制流圖,并在程序控制流圖的基礎(chǔ)上,分析被測(cè)程序控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例的方法。使用基本路徑法設(shè)計(jì)的測(cè)試用例需要確保被測(cè)程序中的每個(gè)可執(zhí)行語句至少被執(zhí)行一次。3.1.1 基本路徑法概述3.1.1 基本路徑法概述步驟1步驟2步驟3步驟4使用基本路徑法設(shè)計(jì)測(cè)試用例的4個(gè)步驟首先需要分析被測(cè)程序的源代碼,并畫出程序的流程圖。畫出流程圖3.1.1 基本路徑法概述步驟2步驟1步驟3步驟4控制流圖是描述程序控制流的一種圖示方法。控制流圖可以由程序流程圖轉(zhuǎn)化而來。如果測(cè)試的源程序代碼簡(jiǎn)潔,也可以直接通過分析源程序代碼畫出控制流圖。在畫程序的控制流圖時(shí),使用圓圈表示一條或多條無分支的語句;使用箭頭表示控制流方向。程序中常見的控制流圖如下圖所示。畫出控制流圖3.1.1 基本路徑法概述步驟3步驟1步驟2步驟4計(jì)算程序圈復(fù)雜度的方法有3種,具體如下。使用公式計(jì)算:V(G)=E-N+2,其中V(G)表示程序的圈復(fù)雜度,E表示控制流圖中邊的數(shù)量,N表示控制流圖中節(jié)點(diǎn)的數(shù)量。使用公式計(jì)算:V(G)=P+1,P表示控制流圖中判定節(jié)點(diǎn)的數(shù)量。程序的圈復(fù)雜度數(shù)量等于控制流圖中的區(qū)域數(shù)量。為了演示上述介紹的3種方法,假設(shè)某程序的控制流圖如右圖所示。計(jì)算程序的圈復(fù)雜度3.1.1 基本路徑法概述步驟4步驟1步驟2步驟3根據(jù)計(jì)算出的程序圈復(fù)雜度導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例的輸入數(shù)據(jù)和預(yù)期結(jié)果。以上一頁中某程序的控制流圖為例,由于圈復(fù)雜度為4,所以可以得到4條獨(dú)立的路徑,具體如下。路徑1:1→7。路徑2:1→2→3→7。路徑3:1→2→4→5→8→1→7。路徑4:1→2→4→6→8→1→7。根據(jù)以上4條獨(dú)立的路徑即可設(shè)計(jì)測(cè)試用例,從而確保每一條路徑都能被執(zhí)行。設(shè)計(jì)測(cè)試用例如何將程序流程圖轉(zhuǎn)化為控制流圖多學(xué)一招將程序流程圖轉(zhuǎn)化為控制流圖時(shí),在順序結(jié)構(gòu)、if條件語句結(jié)構(gòu)、while循環(huán)語句結(jié)構(gòu)、until循環(huán)語句結(jié)構(gòu)和多分支結(jié)構(gòu)語句中,分支的匯聚處需要有一個(gè)匯聚節(jié)點(diǎn)。如果判斷條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符(如or、and)連接的復(fù)合條件表達(dá)式,則需要修改為只有單個(gè)條件的嵌套判斷。假設(shè)有一個(gè)待測(cè)試的程序流程圖如右圖所示。3.1.1 基本路徑法概述上一頁中的待測(cè)試的程序流程圖中,序號(hào)0表示開始,在轉(zhuǎn)化為控制流圖時(shí)可以忽略。將待測(cè)試的程序流程圖轉(zhuǎn)化為控制流圖后,控制流圖如下圖所示。3.1.1 基本路徑法概述多學(xué)一招

先定一個(gè)小目標(biāo)!掌握基本路徑法的使用,能夠使用基本路徑法設(shè)計(jì)判斷年份是否為閏年的測(cè)試用例3.1.2 實(shí)例:判斷年份是否為閏年在白盒測(cè)試中,經(jīng)常使用基本路徑法測(cè)試程序的代碼。為了讓讀者更好地掌握基本路徑法的使用,下面以判斷閏年問題的C語言程序代碼為例,講解如何通過基本路徑法設(shè)計(jì)測(cè)試用例。3.1.2 實(shí)例:判斷年份是否為閏年當(dāng)年份能夠被4但不能被100整除時(shí)為閏年,或者年份能夠被400整除時(shí)為閏年,據(jù)此可以設(shè)計(jì)判斷輸入的年份是否為閏年的C語言程序代碼,具體代碼如下。通過分析上述代碼畫出程序的流程圖,如下圖所示。3.1.2 實(shí)例:判斷年份是否為閏年[單擊查看源碼]畫出程序的控制流圖,如右圖所示。右圖中,一共有10條邊,8個(gè)節(jié)點(diǎn),4個(gè)區(qū)域,其中判定節(jié)點(diǎn)有3個(gè),分別是1、3、4,程序的圈復(fù)雜度為4。根據(jù)圈復(fù)雜度可以得到4條獨(dú)立的路徑,具體如下。路徑1:1→2→8。路徑2:1→3→4→6→8。路徑3:1→3→4→7→8。路徑4:1→3→5→8。3.1.2 實(shí)例:判斷年份是否為閏年根據(jù)上一頁中的4條獨(dú)立路徑即可設(shè)計(jì)測(cè)試用例。判斷閏年問題的測(cè)試用例如下表所示。3.1.2 實(shí)例:判斷年份是否為閏年測(cè)試用例執(zhí)行路徑輸入數(shù)據(jù)預(yù)期結(jié)果test1路徑1year=1999leap=0test2路徑2year=2000leap=1test3路徑3year=1900leap=0test4路徑4year=2020leap=1當(dāng)預(yù)期結(jié)果leap=0時(shí),表示平年;當(dāng)預(yù)期結(jié)果leap=1時(shí),表示閏年。邏輯覆蓋法3.2

先定一個(gè)小目標(biāo)!掌握語句覆蓋法的使用,能夠應(yīng)用語句覆蓋法設(shè)計(jì)測(cè)試用例3.2.1 語句覆蓋語句覆蓋(StatementCoverage)又稱行覆蓋、段覆蓋、基本塊覆蓋,它是最常見的覆蓋方式之一。語句覆蓋的目的是測(cè)試程序中的代碼是否被執(zhí)行,它只測(cè)試代碼中的執(zhí)行語句,這里的執(zhí)行語句不包括頭文件、注釋、空行等。語句覆蓋在多分支的程序中只能覆蓋某一條路徑,使得該路徑中的每一個(gè)語句至少被執(zhí)行一次,不會(huì)考慮各種分支組合的情況。3.2.1 語句覆蓋下面結(jié)合一段小程序介紹語句覆蓋中方法的執(zhí)行,程序偽代碼如下。3.2.1 語句覆蓋ifx>0andy<0//條件1

z=z-(x-y)ifx>2orz>0//條件2

z=z+(x+y)上述代碼中,and表示邏輯運(yùn)算&&,or表示邏輯運(yùn)算||。第1~2行代碼表示如果x>0成立并且y<0成立,則執(zhí)行z=z-(x-y)語句;第3~4行代碼表示如果x>2成立或者z>0成立,則執(zhí)行z=z+(x+y)語句。根據(jù)程序偽代碼可以畫出流程圖,程序執(zhí)行的流程圖如右圖所示。根據(jù)程序執(zhí)行流程圖中標(biāo)示的語句執(zhí)行路徑設(shè)計(jì)測(cè)試用例,具體如下。3.2.1 語句覆蓋test1:x=3y=-1z=2執(zhí)行上述測(cè)試用例,程序的運(yùn)行路徑為a→c→e??梢钥闯龀绦蛑衋→c→e路徑上的每個(gè)語句都能被執(zhí)行,但是語句覆蓋無法全面反映多分支的邏輯,僅僅執(zhí)行一次不能進(jìn)行全面覆蓋。因此,語句覆蓋是弱覆蓋方法。

先定一個(gè)小目標(biāo)!掌握判定覆蓋法的使用,能夠應(yīng)用判定覆蓋法設(shè)計(jì)測(cè)試用例3.2.2 判定覆蓋判定覆蓋(DecisionCoverage)又稱為分支覆蓋,其原則是設(shè)計(jì)足夠多的測(cè)試用例,在測(cè)試過程中保證每個(gè)判定條件至少有一次為真值,有一次為假值。判定覆蓋的作用是使真假分支均被執(zhí)行,雖然判定覆蓋比語句覆蓋測(cè)試能力強(qiáng),但仍然具有和語句覆蓋一樣的單一性。3.2.2 判定覆蓋判定覆蓋測(cè)試用例如下表所示。3.2.2 判定覆蓋測(cè)試用例xyz執(zhí)行語句路徑test12-11a→c→dtest2-31-1a→b→dtest33-15a→c→etest4111a→b→e判定覆蓋語句一般是由多個(gè)邏輯條件組成的,如果僅僅判斷測(cè)試程序執(zhí)行的最終結(jié)果而忽略每個(gè)條件的取值,必然會(huì)遺漏部分測(cè)試路徑。因此,判定覆蓋也屬于弱覆蓋。

先定一個(gè)小目標(biāo)!掌握條件覆蓋法的使用,能夠應(yīng)用條件覆蓋法設(shè)計(jì)測(cè)試用例3.2.3 條件覆蓋條件覆蓋(ConditionCoverage)是指設(shè)計(jì)足夠多的測(cè)試用例,使判定語句中的每個(gè)邏輯條件取真值與取假值至少出現(xiàn)一次。例如,對(duì)于判定語句if(a>1orc<0)中存在a>1和c<0這2個(gè)邏輯條件,設(shè)計(jì)條件覆蓋測(cè)試用例時(shí),要保證a>1、c<0的真值、假值至少出現(xiàn)一次。下面以程序執(zhí)行的流程圖及其程序?yàn)槔?,設(shè)計(jì)條件覆蓋測(cè)試用例,在該程序中,有2個(gè)判定語句,每個(gè)判定語句有2個(gè)邏輯條件,共有4個(gè)邏輯條件,使用標(biāo)識(shí)符標(biāo)記各個(gè)邏輯條件取真值與取假值的情況,條件覆蓋判定條件如下表所示。3.2.3 條件覆蓋條件1條件標(biāo)記條件2條件標(biāo)記x>0S1x>2S3x<=0-S1x<=2-S3y<0S2z>0S4y>=0-S2z<=0-S4以程序執(zhí)行的流程圖為例,使用條件覆蓋則可以設(shè)計(jì)3條測(cè)試用例,條件覆蓋測(cè)試用例如下表所示。3.2.3 條件覆蓋測(cè)試用例xyz執(zhí)行語句路徑test1315a→b→etest2-31-1a→b→dtest33-11a→c→e

先定一個(gè)小目標(biāo)!掌握判定-條件覆蓋法的使用,能夠應(yīng)用判定-條件覆蓋法設(shè)計(jì)測(cè)試用例3.2.4 判定-條件覆蓋判定-條件覆蓋(Condition/DecisionCoverage)要求設(shè)計(jì)較多的測(cè)試用例,使得判定語句中所有條件的可能取值至少出現(xiàn)一次,同時(shí),所有判定語句的可能結(jié)果也至少出現(xiàn)一次。例如,對(duì)于判定語句if(a>1andc<1),該判定語句有a>1、c<1這2個(gè)條件,則在設(shè)計(jì)測(cè)試用例時(shí),要保證a>1和c<1這2個(gè)條件取真值、假值至少一次,同時(shí),判定語句if(a>1andc<1)取真值、假值也至少出現(xiàn)一次。判定-條件覆蓋彌補(bǔ)了判定覆蓋和條件覆蓋的不足之處。3.2.4 判定-條件覆蓋根據(jù)判定-條件覆蓋原則,以3.2.2小節(jié)中的程序執(zhí)行的流程圖對(duì)應(yīng)的程序?yàn)槔O(shè)計(jì)判定-條件覆蓋測(cè)試用例。判定-條件覆蓋測(cè)試用例如下表所示。3.2.4 判定-條件覆蓋測(cè)試用例xyz條件標(biāo)記條件1條件2執(zhí)行路徑test1315S1、-S2、S3、S401a→b→etest2-31-1-S1、-S2、-S3、-S400a→b→dtest33-11S1、S2、S3、S411a→c→etest42-11S1、S2、-S3、-S410a→c→d

先定一個(gè)小目標(biāo)!掌握條件組合覆蓋法的使用,能夠應(yīng)用條件組合覆蓋法設(shè)計(jì)測(cè)試用例3.2.5 條件組合覆蓋條件組合覆蓋(MultipleConditionCoverage)是指設(shè)計(jì)足夠多的測(cè)試用例,使判定語句中每個(gè)條件的所有可能情況至少出現(xiàn)一次,并且每個(gè)判定語句本身的判定結(jié)果也至少出現(xiàn)一次。它與判定-條件覆蓋的區(qū)別是,它不是簡(jiǎn)單地要求每個(gè)條件都出現(xiàn)真與假2種結(jié)果,而是要求讓這些結(jié)果的所有可能組合都至少出現(xiàn)一次。3.2.5 條件組合覆蓋以3.2.2小節(jié)中的程序執(zhí)行的流程圖及其程序?yàn)槔?,該程序中共?個(gè)條件:x>0、y<0、x>2、z>0。下面繼續(xù)使用S1、S2、S3、S4標(biāo)記這4個(gè)條件成立,用-S1、-S2、-S3、-S4標(biāo)記這4個(gè)條件不成立。S1與S2屬于一個(gè)判定語句,兩兩組合有4種情況,如下所示。S1,S2S1,-S2-S1,S2-S1,-S2。同樣,S3與S4屬于一個(gè)判定語句,兩兩組合也有4種情況。2個(gè)判定語句的組合情況各有4種。在執(zhí)行程序時(shí),只要能分別覆蓋2個(gè)判定語句的組合情況即可,因此,針對(duì)3.2.2小節(jié)中的程序執(zhí)行的流程圖的程序,條件組合覆蓋至少要設(shè)計(jì)4個(gè)測(cè)試用例。3.2.5 條件組合覆蓋條件組合覆蓋的4種情況如下表所示。3.2.5 條件組合覆蓋序號(hào)組合含義1S1、S2、S3、S4x>0成立,y<0成立,x>2成立,z>0成立2S1、-S2、S3、-S4x>0成立,y<0不成立,x>2成立,z>0不成立3-S1、S2、-S3、S4x>0不成立,y<0成立,x>2不成立,z>0成立4-S1、-S2、-S3、-S4x>0不成立,y<0不成立,x>2不成立,z>0不成立條件組合覆蓋測(cè)試用例3.2.5 條件組合覆蓋序號(hào)組合測(cè)試用例條件1條件2覆蓋路徑xyztest1S1、S2、S3、S43-1511a→c→etest2-S1、S2、-S3、S4-5-2101a→b→etest3S1、-S2、S3、-S461-201a→b→etest4-S1、-S2、-S3、-S4-31-100a→b→d

先定一個(gè)小目標(biāo)!掌握三角形的邏輯覆蓋,能夠設(shè)計(jì)三角形程序判定覆蓋測(cè)試用例3.2.6 實(shí)例:三角形的邏輯覆蓋在第2章的黑盒測(cè)試中使用了決策表法判斷三角形的類型,根據(jù)三角形三邊關(guān)系可知可能出現(xiàn)4種情況:不構(gòu)成三角形、一般三角形、等腰三角形、等邊三角形。據(jù)此實(shí)現(xiàn)一個(gè)判斷三角形的程序,偽代碼如下。3.2.6 實(shí)例:三角形的邏輯覆蓋intABC

//三角形的三個(gè)邊 if((A+B>C)&&(A+C>B)&&(B+C)>A) //是否滿足三角形構(gòu)成條件

if((A==B)&&(B==C)) //等邊三角形

等邊三角形

elseif((A==B)||(B==C)||(A==C)) //等腰三角形

等腰三角形

else

//一般三角形

一般三角形else

不是三角形end根據(jù)上述代碼可以畫出流程圖,三角形程序流程圖如下圖所示。3.2.6 實(shí)例:三角形的邏輯覆蓋繪制程序的控制流圖,如下圖表示。3.2.6 實(shí)例:三角形的邏輯覆蓋3.2.6 實(shí)例:三角形的邏輯覆蓋編號(hào)測(cè)試用例路徑預(yù)期結(jié)果ABCtest16661→2→3→4→11等邊三角形test26681→2→5→6→11等腰三角形test33451→2→7→8→11一般三角形test43361→9→10→11不構(gòu)成三角形三角形程序判定覆蓋測(cè)試用例程序插樁法3.3

先定一個(gè)小目標(biāo)!了解目標(biāo)代碼插樁法的原理,能夠描述目標(biāo)代碼插樁法的3種執(zhí)行模式3.3.1 目標(biāo)代碼插樁目標(biāo)代碼插樁是指向目標(biāo)代碼(即二進(jìn)制代碼)插入測(cè)試代碼,以獲取程序運(yùn)行信息的測(cè)試方法,也稱為動(dòng)態(tài)程序分析方法。在進(jìn)行目標(biāo)代碼插樁之前,測(cè)試人員要對(duì)目標(biāo)代碼的邏輯結(jié)構(gòu)進(jìn)行分析,從而確認(rèn)需要插樁的位置。目標(biāo)代碼插樁對(duì)程序運(yùn)行時(shí)的內(nèi)存監(jiān)控、指令跟蹤、錯(cuò)誤檢測(cè)等有著重要意義。相比于邏輯覆蓋法,目標(biāo)代碼插樁在測(cè)試過程中不需要重新編譯代碼或鏈接程序,并且目標(biāo)代碼的格式與具體的編程語言無關(guān),主要與操作系統(tǒng)相關(guān),因此目標(biāo)代碼插樁被廣泛使用。3.3.1 目標(biāo)代碼插樁下面對(duì)目標(biāo)代碼插樁的原理、方式、執(zhí)行模式和工具進(jìn)行介紹,具體內(nèi)容如下。3.3.1 目標(biāo)代碼插樁目標(biāo)代碼插樁的原理目標(biāo)代碼插樁法的原理是在程序運(yùn)行平臺(tái)和底層操作系統(tǒng)之間建立中間層,通過中間層檢查執(zhí)行程序、修改指令,開發(fā)人員、軟件分析工程師等對(duì)運(yùn)行的程序進(jìn)行觀察,判斷程序是否被惡意攻擊或者出現(xiàn)異常行為,從而提高程序的整體質(zhì)量。3.3.1 目標(biāo)代碼插樁2.

目標(biāo)代碼插樁的兩種方式由于目標(biāo)代碼是可執(zhí)行的二進(jìn)制代碼,所以目標(biāo)代碼的插樁可分為兩種方式。第1種方式對(duì)未運(yùn)行的目標(biāo)代碼插樁,首先從頭到尾插入測(cè)試代碼,然后執(zhí)行程序。這種方式適用于需要實(shí)現(xiàn)完整系統(tǒng)或仿真(模擬真實(shí)系統(tǒng))進(jìn)行的代碼覆蓋測(cè)試。向正在運(yùn)行的程序插入測(cè)試代碼,用來檢測(cè)程序在特定時(shí)間的運(yùn)行狀態(tài)信息。第2種方式3.3.1 目標(biāo)代碼插樁3.

目標(biāo)代碼插樁的執(zhí)行模式目標(biāo)代碼插樁具有以下3種執(zhí)行模式。即時(shí)模式將修改部分的二進(jìn)制代碼以副本的形式在新的內(nèi)存區(qū)域中,在測(cè)試時(shí)僅執(zhí)行修改部分的目標(biāo)代碼。解釋模式測(cè)試人員插入的測(cè)試代碼作為目標(biāo)代碼指令的解釋語言。每當(dāng)執(zhí)行一條目標(biāo)代碼指令時(shí),程序就會(huì)在測(cè)試代碼中查找并執(zhí)行相應(yīng)的替代指令。探測(cè)模式探測(cè)模式使用新指令覆蓋舊指令進(jìn)行測(cè)試,這種模式在某些體系結(jié)構(gòu)(如x86體系結(jié)構(gòu))中比較適用。3種執(zhí)行模式Just-In-TimeModeInterpretationModeProbeMode3.3.1 目標(biāo)代碼插樁4.

目標(biāo)代碼插樁工具常見的目標(biāo)代碼插樁工具主要有以下2種。(1)Pin-ADynamicBinaryInstrumentationTool(Pin)Pin是由Intel公司開發(fā)的免費(fèi)框架,它可以用于二進(jìn)制代碼檢測(cè)與源代碼檢測(cè)。Pin支持IA-32、x86-64、MIC(ManyIntegratedCore,眾核架構(gòu))體系,可以運(yùn)行在Linux平臺(tái)、Windows平臺(tái)和Android平臺(tái)上。Pin具有基本塊分析器、緩存模擬器、指令跟蹤生成器等模塊,使用該工具可以創(chuàng)建程序分析工具、監(jiān)視程序運(yùn)行的狀態(tài)信息等。Pin非常穩(wěn)定可靠,常用于大型程序測(cè)試,(如Office辦公軟件、虛擬現(xiàn)實(shí)引擎等)測(cè)試。(2)DynamoRIODynamoRIO是一個(gè)受許可的動(dòng)態(tài)二進(jìn)制代碼檢測(cè)框架,作為應(yīng)用程序和操作系統(tǒng)的中間平臺(tái),它可以在程序執(zhí)行時(shí)實(shí)現(xiàn)程序任何部分的代碼轉(zhuǎn)換。DynamoRIO支持IA-32、x86-64、AArch64體系,可以運(yùn)行在Linux平臺(tái)、Windows平臺(tái)和Android平臺(tái)上。DynamoRIO包含內(nèi)存調(diào)試工具、內(nèi)存跟蹤工具、指令跟蹤工具等。

先定一個(gè)小目標(biāo)!掌握源代碼插樁法的使用,能夠應(yīng)用探針代碼測(cè)試程序3.3.2 源代碼插樁源代碼插樁是指對(duì)源文件進(jìn)行完整的詞法、語法分析后,確認(rèn)插樁的位置,植入探針代碼(測(cè)試代碼)。相比目標(biāo)代碼插樁,源代碼插樁具有針對(duì)性和更高的精確性,源代碼插樁模型如下圖所示。3.3.2 源代碼插樁下面通過一個(gè)小案例來講解源代碼插樁,該案例是一個(gè)除法運(yùn)算,具體代碼如下所示。程序運(yùn)行后,提示輸入被除數(shù)和除數(shù),在輸入除數(shù)后,程序宏函數(shù)ASSERT(y)判斷除數(shù)是否為0,若除數(shù)為0則輸出錯(cuò)誤信息,程序運(yùn)行結(jié)束;若除數(shù)不為0,則進(jìn)行除法運(yùn)算并輸出計(jì)算結(jié)果。3.3.2 源代碼插樁[單擊查看源碼]根據(jù)除法運(yùn)算程序設(shè)計(jì)測(cè)試用例,除法運(yùn)算測(cè)試用例如下表所示。3.3.2 源代碼插樁測(cè)試用例測(cè)試數(shù)據(jù)預(yù)期結(jié)果test11,11test21,-1-1test3-1,-11test4-1,1-1test51,0錯(cuò)誤test6-1,0錯(cuò)誤test70,0錯(cuò)誤test80,10test90,-10程序的目標(biāo)代碼插樁與源代碼插樁測(cè)試方法有效提高了代碼測(cè)試覆蓋率,但是使用插樁測(cè)試方法會(huì)出現(xiàn)代碼膨脹、執(zhí)行效率低下、HeisenBugs等問題。在一般情況下,插樁后的代碼膨脹率在20%~40%,甚至能達(dá)到100%,導(dǎo)致插樁測(cè)試失敗。3.3.2 源代碼插樁HeisenBugs即海森堡Bug,它是一種軟件缺陷,這種缺陷的重現(xiàn)率很低,當(dāng)開發(fā)人員試圖研究時(shí),它會(huì)消失或改變。實(shí)際軟件測(cè)試中,這種缺陷也比較常見,例如,測(cè)試人員測(cè)試到一個(gè)缺陷并提交給開發(fā)人員后,開發(fā)人員按照測(cè)試人員提交的缺陷報(bào)告中的步驟執(zhí)行時(shí),卻無法重現(xiàn)缺陷,其原因是缺陷已經(jīng)消失或者出現(xiàn)了其他缺陷。小提示:HeisenBugs黑盒測(cè)試和白盒測(cè)試異同多學(xué)一招3.3.2 源代碼插樁VS黑盒測(cè)試黑盒測(cè)試可以發(fā)現(xiàn)以下3種類型的缺陷。外部邏輯功能缺陷。兼容性錯(cuò)誤。性能問題。白盒測(cè)試白盒測(cè)試常用于以下2種情況。源程序中含有多個(gè)分支,在設(shè)計(jì)測(cè)試用例時(shí)要盡可能覆蓋所有分支,提高測(cè)試覆蓋率。檢查內(nèi)存泄漏。1.

黑盒測(cè)試和白盒測(cè)試比較黑盒測(cè)試過程中不用考慮程序內(nèi)部的邏輯結(jié)構(gòu),僅僅需要驗(yàn)證程序外部功能是否符合用戶實(shí)際需求。3.3.2 源代碼插樁2.

測(cè)試階段黑盒測(cè)試與白盒測(cè)試在不同的測(cè)試階段的使用情況也不同,兩者在不同階段的使用情況如下表所示。測(cè)試名稱測(cè)試對(duì)象測(cè)試方法單元測(cè)試模塊中的功能白盒測(cè)試集成測(cè)試模塊間的接口黑盒測(cè)試、白盒測(cè)試系統(tǒng)測(cè)試整個(gè)系統(tǒng)(軟件、硬件)黑盒測(cè)試驗(yàn)收測(cè)試整個(gè)系統(tǒng)(軟件、硬件、用戶體驗(yàn))黑盒測(cè)試多學(xué)一招

先定一個(gè)小目標(biāo)!掌握求3個(gè)數(shù)的中間值的案例,能夠使用源代碼插樁求3個(gè)數(shù)的中間值3.3.3 實(shí)例:求3個(gè)數(shù)的中間值下面通過一個(gè)案例對(duì)源代碼插樁進(jìn)行講解,以加深讀者對(duì)源代碼插樁的理解。該案例要求用鍵盤輸入3個(gè)數(shù)并求中間值,源程序代碼如下。測(cè)試人員通過寫入的文件可以查看源程序執(zhí)行的過程,插樁后的代碼如下。3.3.3 實(shí)例:求3個(gè)數(shù)的中間值[單擊查看源碼][單擊查看源碼]源代碼插樁完成之后,根據(jù)3個(gè)數(shù)的不同組合方式設(shè)計(jì)測(cè)試用例,具體測(cè)試用例如下表所示。3.3.3 實(shí)例:求3個(gè)數(shù)的中間值測(cè)試用例測(cè)試數(shù)據(jù)預(yù)期結(jié)果test11,1,21test21,2,32test33,2,12test43,3,33test56,4,55test66,8,46test78,4,98程序運(yùn)行后得到的輸出結(jié)果與程序執(zhí)行路徑如下表所示。3.3.3 實(shí)例:求3個(gè)數(shù)的中間值測(cè)試用例輸出結(jié)果源程序執(zhí)行路徑test119→10→9→10→9→10→9→11→12→14→16→17→26→27test229→10→9→10→9→10→9→11→12→14→15→26→27test329→10→9→10→9→10→9→11→12→21→22→26→27test439→10→9→10→9→10→9→11→12→21→23→26→27test559→10→9→10→9→10→9→11→12→14→16→26→27test669→10→9→10→9→10→9→11→12→21→23→24→26→27test749→10→9→10→9→10→9→11→12→14→16→17→26→27分析輸出結(jié)果與程序執(zhí)行路徑表中測(cè)試用例輸出結(jié)果會(huì)發(fā)現(xiàn),輸出結(jié)果與測(cè)試用例表中的測(cè)試用例test7的期望結(jié)果不相符。對(duì)test7數(shù)據(jù)及執(zhí)行過程進(jìn)行分析,test7的數(shù)據(jù)為8、4、9,其執(zhí)行路徑為9→10→9→10→9→10→9→11→12→14→16→17→26→27。test7測(cè)試用例執(zhí)行路徑如下圖所示。3.3.3 實(shí)例:求3個(gè)數(shù)的中間值除了邏輯錯(cuò)誤,源程序還會(huì)將程序執(zhí)行的路徑寫入test.txt文件中,此時(shí)會(huì)覆蓋test.txt文件中原有的數(shù)據(jù),這樣在查看test.txt文件時(shí)只能看到最近一次的執(zhí)行過程,這違背了測(cè)試可溯源的原則。在修改代碼邏輯錯(cuò)誤時(shí),同時(shí)修改test.txt的寫入方式為追加寫入,修改后的代碼如下。3.3.3 實(shí)例:求3個(gè)數(shù)的中間值[單擊查看源碼]本章小結(jié)本章講解了白盒測(cè)試方法中的基本路徑法、邏輯覆蓋法和程序插樁法。對(duì)于基本路徑法,需要掌握繪制控制流圖和計(jì)算圈復(fù)雜度的方法。邏輯覆蓋法包含語句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋,讀者需要掌握這些方法以及它們之間的差別,在實(shí)際測(cè)試中選擇合適的方法進(jìn)行測(cè)試。程序插樁法包含目標(biāo)代碼插樁和源代碼插樁,使用源代碼插樁并設(shè)置合理的探針有助于在程序開發(fā)中查找邏輯錯(cuò)誤。通過本章的學(xué)習(xí),讀者應(yīng)能夠掌握白盒測(cè)試的方法。本章小結(jié)第4章

接口測(cè)試《軟件測(cè)試(第2版)》學(xué)習(xí)目標(biāo)/Target

了解接口測(cè)試,能夠描述接口測(cè)試的原理與實(shí)現(xiàn)方式

熟悉HTTP,能夠歸納HTTP請(qǐng)求和響應(yīng)的組成部分

掌握Postman的安裝方式,能夠獨(dú)立安裝Postman工具

掌握使用Postman發(fā)送請(qǐng)求的方式,能夠使用Postman發(fā)送一個(gè)簡(jiǎn)單的請(qǐng)求學(xué)習(xí)目標(biāo)/Target

掌握Postman的基本使用方法,能夠靈活運(yùn)用Postman的斷言、關(guān)聯(lián)和參數(shù)化完成有特定需求的接口測(cè)試

掌握接口測(cè)試報(bào)告的生成方式,能夠使用newman命令生成HTML格式的接

口測(cè)試報(bào)告

掌握iHRM人力資源管理系統(tǒng)中登錄模塊的接口測(cè)試用例設(shè)計(jì)與執(zhí)行方式,

能夠設(shè)計(jì)并執(zhí)行登錄模塊的接口測(cè)試用例

掌握iHRM人力資源管理系統(tǒng)中員工管理模塊的接口測(cè)試用例設(shè)計(jì)與執(zhí)行方

式,能夠設(shè)計(jì)并執(zhí)行員工管理模塊的接口測(cè)試用例章節(jié)概述/Summary如今,隨著軟件系統(tǒng)的復(fù)雜度不斷提升,對(duì)于任意一款軟件,如果測(cè)試人員能夠越早對(duì)軟件進(jìn)行測(cè)試,就能夠越早發(fā)現(xiàn)軟件中明顯的或隱藏的缺陷,同時(shí)也能夠降低缺陷的修復(fù)成本和缺陷產(chǎn)生的風(fēng)險(xiǎn)。因此,在項(xiàng)目初期,前端和后端都完成接口開發(fā)后,就需要測(cè)試人員參與接口的測(cè)試,本章將詳細(xì)講解接口測(cè)試。目錄/Contents010203接口測(cè)試簡(jiǎn)介HTTPPostman入門0405Postman的基本使用實(shí)例:iHRM人力資源管理系統(tǒng)接口測(cè)試接口測(cè)試簡(jiǎn)介4.1

先定一個(gè)小目標(biāo)!了解接口測(cè)試的簡(jiǎn)介,能夠描述接口測(cè)試的原理與實(shí)現(xiàn)方式4.1

接口測(cè)試簡(jiǎn)介接口是指系統(tǒng)或組件之間進(jìn)行信息交互的通道。在軟件開發(fā)的過程中,隨著項(xiàng)目需求越來越多,軟件的功能會(huì)越來越復(fù)雜,接口也會(huì)不斷增多。為了確保軟件系統(tǒng)中的接口能夠正常進(jìn)行信息交互和傳輸數(shù)據(jù),就需要開展接口測(cè)試。接口測(cè)試是對(duì)系統(tǒng)組件間接口進(jìn)行的測(cè)試,其原理是模擬客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接收到請(qǐng)求后進(jìn)行相應(yīng)的業(yè)務(wù)處理,并向客戶端返回響應(yīng)數(shù)據(jù)。測(cè)試人員在進(jìn)行接口測(cè)試時(shí),需要關(guān)注軟件系統(tǒng)中被測(cè)接口之間數(shù)據(jù)的傳遞、交換和控制管理過程,以及接口與接口之間是否存在邏輯依賴關(guān)系,并檢測(cè)服務(wù)器向客戶端返回的響應(yīng)數(shù)據(jù)是否符合預(yù)期結(jié)果。4.1

接口測(cè)試簡(jiǎn)介實(shí)現(xiàn)接口測(cè)試的方式有兩種,分別是通過工具實(shí)現(xiàn)和通過代碼實(shí)現(xiàn),關(guān)于這兩種方式的介紹如下。4.1

接口測(cè)試簡(jiǎn)介常用的接口測(cè)試工具有Postman、JMeter等。Postman是一款簡(jiǎn)單易操作的接口測(cè)試工具,有很多強(qiáng)大的功能,例如支持批量運(yùn)行、保存歷史記錄。JMeter是Apache基于Java開發(fā)的一款免費(fèi)開源工具,它支持多個(gè)協(xié)議,具有豐富的第三方插件,不僅可以進(jìn)行性能測(cè)試,而且可以進(jìn)行接口測(cè)試。通常情況下會(huì)使用Postman工具來實(shí)現(xiàn)接口測(cè)試,使用該工具實(shí)現(xiàn)接口測(cè)試可以提高測(cè)試效率,并且對(duì)于編程能力弱的測(cè)試人員,Postman更容易學(xué)習(xí)、掌握。1.通過工具實(shí)現(xiàn)接口測(cè)試4.1

接口測(cè)試簡(jiǎn)介測(cè)試人員使用Java、Python等語言編寫代碼也可以實(shí)現(xiàn)接口測(cè)試,在使用Java語言編寫接口測(cè)試的代碼時(shí),通常需要結(jié)合HttpClient技術(shù);在使用Python語言編寫接口測(cè)試的代碼時(shí),通常需要結(jié)合Request框架。雖然通過代碼實(shí)現(xiàn)接口測(cè)試的方式能夠讓測(cè)試人員與開發(fā)人員使用相同的技術(shù)棧,更好地對(duì)接測(cè)試流程,但是這種方式要求測(cè)試人員具備一定的編程能力,對(duì)于編程能力弱的測(cè)試人員而言難度較大。2.通過代碼實(shí)現(xiàn)接口測(cè)試在工作中,測(cè)試人員需要按照公司制定的流程開展接口測(cè)試。通常,接口測(cè)試的流程包括分析接口測(cè)試需求、解析與評(píng)審接口文檔、編寫接口測(cè)試計(jì)劃、設(shè)計(jì)與評(píng)審接口測(cè)試用例、搭建接口測(cè)試環(huán)境、編寫接口測(cè)試腳本、執(zhí)行接口測(cè)試用例、管理與跟蹤接口缺陷、整理測(cè)試報(bào)告。在時(shí)間充裕并且公司條件允許的情況下,有時(shí)還會(huì)進(jìn)行接口自動(dòng)化持續(xù)集成測(cè)試。4.1

接口測(cè)試簡(jiǎn)介需要特別說明的是,接口文檔也稱為API文檔,主要由開發(fā)人員編寫,用來描述接口信息。在沒有接口文檔的情況下,測(cè)試人員也可以通過抓包工具或者打開瀏覽器的開發(fā)者工具獲取接口的相關(guān)信息。測(cè)試人員需要根據(jù)接口文檔的描述設(shè)計(jì)接口測(cè)試用例。通常,接口測(cè)試用例包括用例ID、用例名稱、接口名稱、前置條件、請(qǐng)求地址(URL)、請(qǐng)求方法、請(qǐng)求頭、請(qǐng)求參數(shù)、預(yù)期結(jié)果和實(shí)際結(jié)果等。4.1

接口測(cè)試簡(jiǎn)介HTTP4.2

先定一個(gè)小目標(biāo)!熟悉統(tǒng)一資源定位符,能夠描述什么是統(tǒng)一資源定位符4.2.1 統(tǒng)一資源定位符統(tǒng)一資源定位符(UniformResourceLocator,URL)也稱網(wǎng)頁地址,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)的資源地址,它的作用是讓客戶端查詢不同的信息資源時(shí)有統(tǒng)一訪問的方法。例如,用戶在使用瀏覽器訪問某個(gè)網(wǎng)站時(shí),就需要輸入該網(wǎng)站的URL,當(dāng)服務(wù)器成功接收到瀏覽器發(fā)出的請(qǐng)求后,服務(wù)器返回的內(nèi)容會(huì)通過瀏覽器呈現(xiàn)。4.2.1 統(tǒng)一資源定位符URL的語法格式如下。4.2.1 統(tǒng)一資源定位符protocol://hostname:port/path?parameters?query&fragment關(guān)于URL的語法格式組成部分說明具體如下。protocol:表示因特網(wǎng)服務(wù)的數(shù)據(jù)傳輸協(xié)議,常見的協(xié)議有HTTP、HTTPS、FTP等。hostname:表示主機(jī)名,是存放資源的服務(wù)器主機(jī)名或IP地址,有時(shí)候在主機(jī)名前面也可以設(shè)置連接到服務(wù)器所需的用戶名和密碼,例如username:password@hostname。port:表示端口號(hào),通??梢允÷?,每一種傳輸協(xié)議都有默認(rèn)的端口號(hào),例如,HTTP的默認(rèn)端口是80,HTTPS的默認(rèn)端口是443,F(xiàn)TP的默認(rèn)端口是21。path:表示資源路徑,使用“/”分隔。parameters:表示參數(shù),用于指定查詢參數(shù),使用“?”與資源路徑分隔,多個(gè)參數(shù)之間使用“&”分隔。query:表示查詢,用于給動(dòng)態(tài)網(wǎng)頁傳遞參數(shù),參數(shù)名和參數(shù)值之間使用“=”分隔。fragment:表示信息片斷,用于指定資源中的片斷。為了讓讀者更加熟悉URL,下面通過一個(gè)例子說明URL的組成。例如,:80/index.html?id=001&page=1,該URL的協(xié)議為HTTP,主機(jī)名或IP地址為,端口號(hào)為80,資源路徑為/index.html,查詢參數(shù)id=001&page=1。4.2.1 統(tǒng)一資源定位符

先定一個(gè)小目標(biāo)!掌握HTTP請(qǐng)求的格式,能夠歸納HTTP請(qǐng)求的3個(gè)組成部分4.2.2 HTTP請(qǐng)求HTTP請(qǐng)求是指客戶端向服務(wù)器發(fā)送的請(qǐng)求消息。HTTP請(qǐng)求主要由請(qǐng)求行、請(qǐng)求頭和請(qǐng)求體組成,HTTP請(qǐng)求的格式如下圖所示。4.2.2 HTTP請(qǐng)求1.

請(qǐng)求行請(qǐng)求行用于指定客戶端向服務(wù)器發(fā)送的請(qǐng)求方法、請(qǐng)求地址(URL)和協(xié)議版本,位于HTTP請(qǐng)求中的第1行。在接口測(cè)試中,常用的請(qǐng)求方法和說明如下表所示。4.2.2 HTTP請(qǐng)求請(qǐng)求方法說明GET用于請(qǐng)求服務(wù)器獲取指定的資源POST用于請(qǐng)求服務(wù)器提交指定的資源PUT用于請(qǐng)求服務(wù)器更新指定的資源DELETE用于請(qǐng)求服務(wù)器刪除指定的資源2.

請(qǐng)求頭請(qǐng)求頭是客戶端向服務(wù)器發(fā)送的附加信息,用于通知服務(wù)器關(guān)于客戶端請(qǐng)求的信息。請(qǐng)求頭由鍵值對(duì)組成,即key:value,常見的請(qǐng)求頭字段和說明如下表所示。4.2.2 HTTP請(qǐng)求請(qǐng)求頭字段說明Host表示接受請(qǐng)求的服務(wù)器地址User-Agent表示產(chǎn)生請(qǐng)求的瀏覽器類型Accept表示客戶端可以識(shí)別的內(nèi)容類型列表Content-Type表示請(qǐng)求體數(shù)據(jù)的類型Accept-Encoding表示服務(wù)器可以發(fā)送的數(shù)據(jù)壓縮格式Accept-Language表示服務(wù)器可以發(fā)送的語言Connection指定與連接相關(guān)的屬性3.

請(qǐng)求體請(qǐng)求體是客戶端發(fā)送請(qǐng)求時(shí)攜帶的參數(shù),通常在POST或PUT請(qǐng)求方法中使用。請(qǐng)求體中的常見數(shù)據(jù)類型有text/html、text/plain、application/JSON、application/x-www-form-urlencoded、image/jpeg、multipart/form-data等。下面展示一段使用Fiddler工具抓取到的HTTP請(qǐng)求數(shù)據(jù),如下圖所示。4.2.2 HTTP請(qǐng)求

先定一個(gè)小目標(biāo)!掌握HTTP響應(yīng)的格式,能夠歸納HTTP響應(yīng)的3個(gè)組成部分4.2.3 HTTP響應(yīng)HTTP響應(yīng)是指服務(wù)器向客戶端發(fā)送的響應(yīng)消息。HTTP響應(yīng)主要由狀態(tài)行、響應(yīng)頭和響應(yīng)體組成,HTTP響應(yīng)的格式如下圖所示。4.2.3 HTTP響應(yīng)1.

狀態(tài)行狀態(tài)行用于展示HTTP響應(yīng)的協(xié)議版本、狀態(tài)碼和狀態(tài)碼描述,它位于HTTP響應(yīng)的第1行。其中,狀態(tài)碼用來標(biāo)識(shí)響應(yīng)的狀態(tài),它由3位數(shù)字組成,第1個(gè)數(shù)字定義了響應(yīng)的類型。狀態(tài)碼有5種響應(yīng)類型,具體介紹如下。1××:表示指示信息。2××:表示請(qǐng)求成功。3××:表示請(qǐng)求重定向。4××:表示客戶端錯(cuò)誤。5××:表示服務(wù)器錯(cuò)誤。4.2.3 HTTP響應(yīng)在接口測(cè)試中,常見的狀態(tài)碼和描述如下表所示。狀態(tài)碼狀態(tài)碼描述200OK,客戶端請(qǐng)求成功400BadRequest,客戶端請(qǐng)求有語法錯(cuò)誤401Unauthorized,客戶端請(qǐng)求未經(jīng)授權(quán)403Forbidden,服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)404NotFound,客戶端請(qǐng)求的資源不存在500InternalServerError,服務(wù)器發(fā)生錯(cuò)誤503ServerUnavailable,服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求4.2.3 HTTP響應(yīng)2.

響應(yīng)頭響應(yīng)頭是指服務(wù)器對(duì)客戶端請(qǐng)求的應(yīng)答信息,它位于狀態(tài)行的下方,主要由鍵值對(duì)組成,與HTTP請(qǐng)求中的請(qǐng)求頭類似。常見的響應(yīng)頭字段和說明如下表所示。響應(yīng)頭字段狀態(tài)碼描述Server表示服務(wù)器用到的軟件信息Content-Type表示服務(wù)器實(shí)際返回給客戶端的內(nèi)容類型Connection表示服務(wù)器與客戶端的連接類型Content-Length表示服務(wù)器告知瀏覽器需要接收的數(shù)據(jù)長(zhǎng)度Content-Language表示服務(wù)器可以識(shí)別的內(nèi)容語言列表Accept-Encoding表示服務(wù)器可以發(fā)送的數(shù)據(jù)壓縮格式4.2.3 HTTP響應(yīng)3.

響應(yīng)體響應(yīng)體是服務(wù)器發(fā)送到客戶端的實(shí)際內(nèi)容,它位于響應(yīng)頭的下方。響應(yīng)體的內(nèi)容類型由響應(yīng)頭中的Content-Type指定。下面展示一段使用Fiddler工具抓取到的HTTP響應(yīng)數(shù)據(jù),如下圖所示。4.2.3 HTTP響應(yīng)使用開發(fā)者工具進(jìn)行抓包多學(xué)一招抓包是指將網(wǎng)絡(luò)傳輸中發(fā)送或接收的數(shù)據(jù)包進(jìn)行截獲、重發(fā)、編輯、轉(zhuǎn)存等操作。通過對(duì)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)進(jìn)行抓取,并對(duì)其進(jìn)行分析,能夠分析程序網(wǎng)絡(luò)接口、檢查網(wǎng)絡(luò)安全、分析網(wǎng)絡(luò)故障等。抓包工具是攔截并查看網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)容的軟件,常用的抓包工具有Fiddler、Sniffer、IPTools等。這些抓包工具的功能各異,但是基本使用原理相同,除了可以使用抓包工具進(jìn)行抓包外,還可以使用瀏覽器自帶的開發(fā)者工具進(jìn)行抓包。4.2.3 HTTP響應(yīng)多學(xué)一招4.2.3 HTTP響應(yīng)下面以使用Chrome瀏覽器訪問TPshop開源商城首頁為例,演示如何通過開發(fā)者工具進(jìn)行抓包。首先在瀏覽器中訪問TPshop開源商城,按鍵盤上的“F12”鍵,打開開發(fā)者工具,單擊“Network”可以查看抓取的相關(guān)數(shù)據(jù)信息,如下圖所示。多學(xué)一招4.2.3 HTTP響應(yīng)單擊瀏覽器左上方的“

”刷新頁面,重新抓取請(qǐng)求資源信息,如下圖所示。多學(xué)一招4.2.3 HTTP響應(yīng)通常在接口測(cè)試中,需要重點(diǎn)關(guān)注document類型的請(qǐng)求資源信息,該類型的請(qǐng)求資源信息中包含詳細(xì)的接口請(qǐng)求地址、請(qǐng)求方法等。例如,單擊左下方名稱為“”的document類型的請(qǐng)求資源信息時(shí),右下方會(huì)顯示具體的請(qǐng)求和響應(yīng)數(shù)據(jù),如下圖所示。Postman入門4.3

先定一個(gè)小目標(biāo)!掌握Postman的安裝方式,能夠獨(dú)立安裝Postman工具4.3.1 安裝Postman步驟1步驟2Postman的下載4.3.1 安裝Postman在瀏覽器中訪問Postman的官方網(wǎng)站,進(jìn)入Postman官方網(wǎng)站首頁,如下圖所示。步驟1步驟2Postman的下載4.3.1 安裝Postman單擊Postman官方網(wǎng)站首頁左下方的“

”圖標(biāo),進(jìn)入DownloadPostman頁面,如下圖所示。Postman安裝包單擊下載步驟2步驟1Postman的安裝4.3.1 安裝Postman雙擊Postman安裝包,進(jìn)入Createanaccountorsignin頁面,如下圖所示。步驟2步驟1Postman的安裝4.3.1 安裝Postman單擊“CreateFreeAccount”按鈕,進(jìn)入Postman-Signup頁面,如下圖所示。步驟2步驟1Postman的安裝4.3.1 安裝Postman當(dāng)注冊(cè)成功后,使用注冊(cè)的賬號(hào)登錄即可進(jìn)入Postman的主窗口,如下圖所示。Collections:表示集合,可以對(duì)項(xiàng)目模塊中的接口進(jìn)行分類和管理。APIs:表示應(yīng)用程序接口,用于定義集合和環(huán)境。Environments:表示環(huán)境,可以定義全局變量和環(huán)境變量。MockServers:表示模擬服務(wù)器。Monitors:表示監(jiān)聽器,能夠定期運(yùn)行集合中的請(qǐng)求。Flows:表示流程,能夠通過邏輯連接請(qǐng)求模擬實(shí)際項(xiàng)目中的流程。History:表示歷史記錄。4.3.1 安裝Postman下面介紹Postman主窗口左側(cè)的選項(xiàng)。

先定一個(gè)小目標(biāo)!掌握使用Postman發(fā)送請(qǐng)求的方式,能夠使用Postman發(fā)送一個(gè)簡(jiǎn)單的請(qǐng)求4.3.2 發(fā)送第一個(gè)HTTP請(qǐng)求下面以百度網(wǎng)站為例,使用Postman發(fā)送第一個(gè)HTTP請(qǐng)求,具體步驟如下所示。4.3.2 發(fā)送第一個(gè)HTTP請(qǐng)求STEP01創(chuàng)建集合在Postman的主窗口中,首先單擊左側(cè)的Collections選項(xiàng),然后單擊Collections選項(xiàng)右側(cè)的“”圖標(biāo)即可創(chuàng)建集合NewCollection,如下圖所示。4.3.2 發(fā)送第一個(gè)HTTP請(qǐng)求STEP02添加HTTP請(qǐng)求在NewCollection所在條目的任意地方右擊或者單擊右側(cè)的“

”圖標(biāo),會(huì)彈出一個(gè)下拉列表,如下圖所示。4.3.2 發(fā)送第一個(gè)HTTP請(qǐng)求單擊拉列表中的“Addrequest”選項(xiàng)即可添加一個(gè)HTTP請(qǐng)求,如下圖所示。4.3.2 發(fā)送第一個(gè)HTTP請(qǐng)求關(guān)于請(qǐng)求方法和請(qǐng)求地址下方的標(biāo)簽的具體介紹如下。Params:表示參數(shù),當(dāng)單擊該標(biāo)簽時(shí),可以在下方設(shè)置請(qǐng)求地址參數(shù)。Authorization:表示授權(quán),當(dāng)單擊該標(biāo)簽時(shí),可以了解授權(quán)信息,通常在發(fā)送請(qǐng)求時(shí),在其下方會(huì)自動(dòng)生成授權(quán)的請(qǐng)求頭。Headers:表示請(qǐng)求頭,當(dāng)單擊該標(biāo)簽時(shí),可以在下方設(shè)置請(qǐng)求頭。Body:表示請(qǐng)求體,當(dāng)單擊該標(biāo)簽時(shí),可以在下方設(shè)置請(qǐng)求體參數(shù)。Pre-requestScript:表示預(yù)請(qǐng)求腳本,當(dāng)單擊該標(biāo)簽時(shí),可以在下方編寫預(yù)請(qǐng)求腳本代碼。Tests:表示測(cè)試,當(dāng)單擊該標(biāo)簽時(shí),可以在下方編寫測(cè)試腳本代碼,例如斷言代碼、關(guān)聯(lián)代碼等。Settings:表示設(shè)置,當(dāng)單擊該標(biāo)簽時(shí),可以在下方進(jìn)行相關(guān)的設(shè)置操作,例如啟用SSL證書驗(yàn)證、自動(dòng)跟隨重定向等。4.3.2 發(fā)送第一個(gè)HTTP請(qǐng)求STEP03填寫百度網(wǎng)站的請(qǐng)求信息并發(fā)送請(qǐng)求百度網(wǎng)站的請(qǐng)求信息與響應(yīng)結(jié)果如下圖所示。Postman的基本使用4.4

先定一個(gè)小目標(biāo)!掌握Postman的斷言,能夠運(yùn)用Postman斷言完成有特定需求的接口測(cè)試4.4.1 Postman斷言4.4.1 Postman斷言斷言是程序中的一種邏輯判斷式,目的是驗(yàn)證軟件開發(fā)的預(yù)期結(jié)果與實(shí)際結(jié)果是否一致。例如,程序員在編寫代碼時(shí),通常會(huì)做出一些假設(shè),斷言的目的就是在代碼中捕捉這些假設(shè)。當(dāng)程序執(zhí)行到斷言所在的位置時(shí),對(duì)應(yīng)的斷言如果為真,則程序?qū)⒗^續(xù)往下執(zhí)行;如果斷言為假,則程序會(huì)終止執(zhí)行,并給出錯(cuò)誤信息。在進(jìn)行接口測(cè)試時(shí),Postman提供的斷言代碼能夠代替人工自動(dòng)判斷HTTP響應(yīng)的實(shí)際結(jié)果與預(yù)期結(jié)果是否一致。4.4.1 Postman斷言Postman中的斷言代碼使用JavaScript語言編寫,常用的斷言有響應(yīng)狀態(tài)碼斷言、包含指定字符串?dāng)嘌浴SON數(shù)據(jù)斷言等。下面分別對(duì)這3個(gè)常用的斷言進(jìn)行詳細(xì)介紹。1.

響應(yīng)狀態(tài)碼斷言響應(yīng)狀態(tài)碼斷言是對(duì)HTTP響應(yīng)的狀態(tài)碼進(jìn)行斷言。在Postman中,有2種方式實(shí)現(xiàn)響應(yīng)狀態(tài)碼斷言。第1種方式在HTTP請(qǐng)求中單擊“Tests”標(biāo)簽,在其下方空白區(qū)域手動(dòng)編寫響應(yīng)狀態(tài)碼斷言的代碼。首先在HTTP請(qǐng)求中單擊“Tests”標(biāo)簽,然后單擊Postman主窗口右側(cè)的“Statuscode:Codeis200”,自動(dòng)生成響應(yīng)狀態(tài)碼斷言的代碼模板。第2種方式4.4.1 Postman斷言由于第2種方式比較方便,一般會(huì)選擇使用第2種方式,使用第2種方式生成的響應(yīng)狀態(tài)碼斷言的代碼模板如下圖所示。4.4.1 Postman斷言2.

包含指定字符串?dāng)嘌园付ㄗ址當(dāng)嘌允侵笇?duì)HTTP響應(yīng)中的某個(gè)字符串進(jìn)行斷言??梢允謩?dòng)編寫包含指定字符串?dāng)嘌缘拇a或自動(dòng)生成包含指定字符串?dāng)嘌缘拇a模板,如下圖所示。4.4.1 Postman斷言3.

JSON數(shù)據(jù)斷言JSON數(shù)據(jù)斷言是對(duì)HTTP響應(yīng)中的JSON數(shù)據(jù)進(jìn)行斷言,可以手動(dòng)編寫JSON數(shù)據(jù)斷言的代碼或自動(dòng)生成JSON數(shù)據(jù)斷言的代碼模板,如下圖所示。下面通過一個(gè)案例演示斷言的使用,具體操作步驟如下。4.4.1 Postman斷言STEP01設(shè)置百度網(wǎng)址的請(qǐng)求信息在Postman中創(chuàng)建一個(gè)集合和請(qǐng)求,將請(qǐng)求方法設(shè)置為GET,請(qǐng)求地址設(shè)置為。百度網(wǎng)站的請(qǐng)求信息如下圖所示。4.4.1 Postman斷言STEP02修改斷言代碼生成包含指定字符串的斷言代碼模板,并將顯示斷言結(jié)果的提示文字修改為“百度頁面包含‘百度搜索’”,將斷言的字符串修改為“百度搜索”,如下圖所示。4.4.1 Postman斷言STEP03顯示百度網(wǎng)站的響應(yīng)結(jié)果在Postman主窗口下方顯示百度網(wǎng)站的響應(yīng)結(jié)果,如下圖所示。4.4.1 Postman斷言STEP03顯示百度網(wǎng)站的響應(yīng)結(jié)果查看百度網(wǎng)站的斷言結(jié)果,如下圖所示。斷言失敗界面如下圖所示。

先定一個(gè)小目標(biāo)!掌握Postman的關(guān)聯(lián),能夠運(yùn)用Postman關(guān)聯(lián)完成有特定需求的接口測(cè)試4.4.2 Postman關(guān)聯(lián)在接口測(cè)試中,關(guān)聯(lián)是指兩個(gè)或兩個(gè)以上的接口互相存在依賴關(guān)系。例如,某個(gè)接口請(qǐng)求地址中的參數(shù)是另一個(gè)接口的響應(yīng)結(jié)果中的數(shù)據(jù),則說明這兩個(gè)接口存在關(guān)聯(lián)關(guān)系。在使用Postman做接口測(cè)試時(shí),實(shí)現(xiàn)接口關(guān)聯(lián)的方式是在Postman中設(shè)置環(huán)境變量或全局變量,具體實(shí)現(xiàn)步驟如下。(1)獲取第1個(gè)接口請(qǐng)求的響應(yīng)結(jié)果。(2)提取響應(yīng)結(jié)果中的某個(gè)字段,保存到Postman環(huán)境變量或全局變量中。(3)在第2個(gè)接口的請(qǐng)求地址中引用環(huán)境變量或全局變量,引用方式為{{環(huán)境變量或全局變量}}。4.4.2 Postman關(guān)聯(lián)當(dāng)在Postman中添加存在接口關(guān)聯(lián)的HTTP請(qǐng)求時(shí),需要在該接口的HTTP請(qǐng)求的Tests下方編寫一段核心代碼,具體如下所示。4.4.2 Postman關(guān)聯(lián)//獲取返回?cái)?shù)據(jù)值并轉(zhuǎn)為JSON格式保存到變量jsonData中varjsonData=pm.response.json()//使用全局變量做容器pm.globals.set("全局變量名",全局變量值)//使用環(huán)境變量做容器pm.environment.set("環(huán)境變量名",環(huán)境變量值)值得一提的是,在Postman中,可以設(shè)置多組環(huán)境變量,但是只能設(shè)置一組全局變量。二者的區(qū)別是,環(huán)境變量需要在特定的測(cè)試環(huán)境中才能引用其中的變量,全局變量作用于整個(gè)Postman,在Postman中的所有請(qǐng)求都可以直接引用全局變量中的變量,而不用指定測(cè)試環(huán)境。當(dāng)在Postman的環(huán)境變量和全局變量中設(shè)置了同一個(gè)變量時(shí),環(huán)境變量的優(yōu)先級(jí)比全局變量的優(yōu)先級(jí)高。下面通過一個(gè)案例演示Postman接口關(guān)聯(lián)的實(shí)現(xiàn),具體操作步驟如下。4.4.2 Postman關(guān)聯(lián)STEP01添加查詢天氣接口查詢天氣接口的請(qǐng)求信息如下圖所示。4.4.2 Postman關(guān)聯(lián)STEP02編寫實(shí)現(xiàn)接口關(guān)聯(lián)的核心代碼顯示查詢天氣接口的響應(yīng)結(jié)果,如下圖所示。4.4.2 Postman關(guān)聯(lián)STEP02編寫實(shí)現(xiàn)接口關(guān)聯(lián)的核心代碼將準(zhǔn)備好的實(shí)現(xiàn)接口關(guān)聯(lián)的核心代碼添加到Tests下方,如下圖所示。4.4.2 Postman關(guān)聯(lián)STEP02編寫實(shí)現(xiàn)接口關(guān)聯(lián)的核心代碼待請(qǐng)求發(fā)送成功后,單擊Postman主窗口左側(cè)的Environments,再單擊Globals,會(huì)彈出Globals界面,如下圖所示。4.4.2 Postman關(guān)聯(lián)STEP03添加百度搜索接口百度搜索接口的請(qǐng)求信息如下圖所示。4.4.2 Postman關(guān)聯(lián)STEP03添加百度搜索接口百度搜索接口的響應(yīng)結(jié)果如下圖所示。

先定一個(gè)小目標(biāo)!掌握Postman的參數(shù)化,能夠運(yùn)用Postman參數(shù)化完成有特定需求的接口測(cè)試4.4.3 Postman參數(shù)化在接口測(cè)試中,參數(shù)化是將測(cè)試數(shù)據(jù)組織到數(shù)據(jù)文件中,通過測(cè)試人員對(duì)編寫的腳本不斷更新迭代,使用不同的測(cè)試數(shù)據(jù)對(duì)接口進(jìn)行測(cè)試,例如,在測(cè)試單個(gè)接口時(shí),如果測(cè)試數(shù)據(jù)不相同,則可以使用參數(shù)化,提高腳本的復(fù)用率。使用Postman做接口測(cè)試時(shí),實(shí)現(xiàn)參數(shù)化的關(guān)鍵步驟是將測(cè)試數(shù)據(jù)保存在數(shù)據(jù)文件中單獨(dú)維護(hù),然后引用數(shù)據(jù)文件實(shí)現(xiàn)腳本迭代調(diào)用。在Postman中常用的數(shù)據(jù)文件格式有CSV和JSON。4.4.3 Postman參數(shù)化在Postman中常用的數(shù)據(jù)文件格式有兩種,具體介紹如下。4.4.3 Postman參數(shù)化CSV是一種常用的文件格式,在CSV文件中主要以純文本形式存儲(chǔ)數(shù)據(jù),數(shù)據(jù)之間以逗號(hào)分隔,格式簡(jiǎn)單,但是不能存儲(chǔ)元組、列表、字典和bool類型的數(shù)據(jù)。CSVJSONJSON也是一種常用的文件格式,該文件格式的數(shù)據(jù)由鍵值對(duì)組成,能夠存儲(chǔ)元組、列表、字典等類型的數(shù)據(jù)。為了讓讀者掌握參數(shù)化的應(yīng)用,下面通過一個(gè)案例演示Postman參數(shù)化的實(shí)現(xiàn),在本案例中,要求使用Postman發(fā)送一個(gè)請(qǐng)求,查詢手機(jī)號(hào)的運(yùn)營(yíng)商,其中,測(cè)試的手機(jī)號(hào)需要保存在CSV格式的文件中。查詢手機(jī)號(hào)運(yùn)營(yíng)商的接口信息如下。請(qǐng)求方法:GET。請(qǐng)求地址:/phonearea.php。請(qǐng)求體參數(shù):number,11位手機(jī)號(hào),4.4.3 Postman參數(shù)化手機(jī)號(hào)運(yùn)營(yíng)商接口的請(qǐng)求信息如下圖所示。4.4.3 Postman參數(shù)化手機(jī)號(hào)運(yùn)營(yíng)商接口的響應(yīng)結(jié)果如下圖所示。4.4.3 Postman參數(shù)化JSON格式的響應(yīng)結(jié)果如下圖所示。4.4.3 Postman參數(shù)化如果需要測(cè)試多個(gè)手機(jī)號(hào),按照上述接口測(cè)試的方法,則需要不斷修改請(qǐng)求地址中參數(shù)number的值發(fā)送請(qǐng)求。為了提高測(cè)試的效率,可以使用參數(shù)化的方式測(cè)試多個(gè)手機(jī)號(hào)的運(yùn)營(yíng)商。首先新建一個(gè)文本文檔,并將其命名為mobile_test01,mobile_test01.txt文件中的內(nèi)容如右圖所示。將mobile_test01.txt文件的后綴名.txt修改為.csv。單擊上圖菜單欄中的“文件(F)”選項(xiàng),會(huì)出現(xiàn)一個(gè)列表,單擊該列表中的“另存為”,會(huì)彈出一個(gè)另存為對(duì)話框,如右圖所示。4.4.3 Postman參數(shù)化當(dāng)準(zhǔn)備好測(cè)試數(shù)據(jù)后,下面需要在Postman中修改手機(jī)號(hào)運(yùn)營(yíng)商接口的請(qǐng)求信息,首先修改請(qǐng)求地址中的參數(shù)值為{{mobile}},該參數(shù)值對(duì)應(yīng)mobile_test01.csv文件中的變量mobile,表示從數(shù)據(jù)文件中獲取測(cè)試的手機(jī)號(hào),然后單擊Tests標(biāo)簽,在Tests下方添加斷言代碼,并單擊“Save”按鈕保存修改后的請(qǐng)求信息如下圖所示。4.4.3 Postman參數(shù)化在參數(shù)化的應(yīng)用集合名稱處連續(xù)快速單擊2次,進(jìn)入?yún)?shù)化的應(yīng)用界面,如下圖所示。4.4.3 Postman參數(shù)化單擊上一頁圖中的Run進(jìn)入Runner界面,如下圖所示。4.4.3 Postman參數(shù)化單擊Runner界面中的“Run參數(shù)化的應(yīng)用”按鈕發(fā)送請(qǐng)求。測(cè)試結(jié)果如下圖所示。4.4.3 Postman參數(shù)化如果需要將測(cè)試數(shù)據(jù)的文件保存為JSON格式,則JSON文件格式內(nèi)容如下圖所示。4.4.3 Postman參數(shù)化

先定一個(gè)小目標(biāo)!掌握接口測(cè)試報(bào)告的生成方式,能夠使用newman命令生成HTML格式的接口測(cè)試報(bào)告4.4.4 Postman生成測(cè)試報(bào)告測(cè)試報(bào)告主要用來記錄測(cè)試的過程和結(jié)果,便于測(cè)試人員分析發(fā)現(xiàn)的缺陷,并為修改軟件系統(tǒng)存在的質(zhì)量問題提供依據(jù)。在Postman中完成接口測(cè)試后,如果需要更直觀地查看和分析測(cè)試結(jié)果,則可以導(dǎo)出Postman中的環(huán)境變量和集合,并通過命令生成測(cè)試報(bào)告。使用Postman做接口測(cè)試并生成測(cè)試報(bào)告的具體步驟如下。(1)在Postman中創(chuàng)建環(huán)境變量,并設(shè)置變量名和變量值。(2)在Postman中創(chuàng)建集合,并設(shè)置請(qǐng)求信息,發(fā)送請(qǐng)求。(3)從Postman中導(dǎo)出環(huán)境變量。(4)從Postman中導(dǎo)出集合。(5)打開cmd命令窗口,輸入生成測(cè)試報(bào)告的newman命令。4.4.4 Postman生成測(cè)試報(bào)告Postman是一個(gè)輕量級(jí)的工具,該工具不具備自動(dòng)生成測(cè)試報(bào)告的功能,需要借助newman插件才能夠生成測(cè)試報(bào)告。newman是一款基于Node.js開發(fā)、并能夠通過命令運(yùn)行Postman腳本的插件,該插件支持生成HTML、JSON、XML等格式的測(cè)試報(bào)告,由于HTML格式的測(cè)試報(bào)告界面美觀且方便查看,所以本書主要選擇安裝newman-report-html插件,用于生成HTML格式的測(cè)試報(bào)告。4.4.4 Postman生成測(cè)試報(bào)告關(guān)于Node.js、newman和newman-report-html的具體安裝過程如下所示。4.4.4 Postman生成測(cè)試報(bào)告步驟1步驟2步驟3Node.js的下載與安裝首先通過瀏覽器訪問Node.js的官方網(wǎng)站,該網(wǎng)站的首頁如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告步驟1步驟2步驟3Node.js的下載與安裝單擊Node.js的官方網(wǎng)站首頁中的“所有下載選項(xiàng)”鏈接,進(jìn)入CNPMBinariesMirror頁面,如下圖所示。node-v12.22.10-x64.msi安裝包單擊下載4.4.4 Postman生成測(cè)試報(bào)告步驟1步驟2步驟3Node.js的下載與安裝雙擊安裝包進(jìn)入安裝Node.js的界面,如下圖所示。124.4.4 Postman生成測(cè)試報(bào)告步驟1步驟2步驟3Node.js的下載與安裝34564.4.4 Postman生成測(cè)試報(bào)告步驟1步驟2步驟3Node.js的下載與安裝9104.4.4 Postman生成測(cè)試報(bào)告步驟1步驟2步驟3Node.js的下載與安裝當(dāng)Node.js安裝完成之后,在cmd命令行窗口中輸入“node--version”命令并按下“Enter”鍵,檢查Node.js是否安裝成功,cmd命令行窗口如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告步驟2步驟1步驟3newman的安裝在cmd命令行窗口中,輸入“npminstall-gnewman”命令,并按下“Enter”鍵即可安裝newman。cmd命令行窗口如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告步驟3步驟1步驟2newman-report-html的安裝在cmd命令行窗口中輸入“npminstall-gnewman-reporter-html”命令,并按下“Enter”鍵即可安裝newman-reporter-html。cmd命令行窗口如下圖所示。生成測(cè)試報(bào)告的newman命令格式如下。關(guān)于上述命令中使用的參數(shù)介紹如下。-e:該參數(shù)是-environment的縮寫,用于指定測(cè)試環(huán)境的文件。-r:該參數(shù)是--reporters的縮寫,用于指定生成的測(cè)試報(bào)告類型。4.4.4 Postman生成測(cè)試報(bào)告newmanrun集合文件–e測(cè)試環(huán)境的文件–r測(cè)試報(bào)告類型下面通過一個(gè)案例演示測(cè)試報(bào)告的生成,具體操作步驟如下。STEP01創(chuàng)建環(huán)境變量在Postman主窗口中創(chuàng)建博學(xué)谷測(cè)試環(huán)境變量,環(huán)境變量界面如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告STEP02創(chuàng)建集合訪問博學(xué)谷首頁的請(qǐng)求信息如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告STEP02創(chuàng)建集合當(dāng)發(fā)送請(qǐng)求后,在Postman主窗口的下方可以查看訪問博學(xué)谷首頁的響應(yīng)結(jié)果,如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告STEP03導(dǎo)出環(huán)境變量單擊環(huán)境變量界面右上角的“

”圖標(biāo),彈出一個(gè)下拉列表,如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告STEP03導(dǎo)出環(huán)境變量單擊上一頁圖中的下拉列表中的Export選項(xiàng),彈出一個(gè)Selectpathtosavefile對(duì)話框,如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告STEP04導(dǎo)出集合在博學(xué)谷集合名稱處右擊,彈出一個(gè)下拉列表,如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告STEP04導(dǎo)出集合單擊下拉列表中的Export選項(xiàng),彈出一個(gè)EXPORTCOLLECTION對(duì)話框,如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告STEP04導(dǎo)出集合單擊“Export”按鈕后會(huì)彈出Selectpathtosavefile對(duì)話框,如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告STEP05輸入生成測(cè)試報(bào)告的newman命令進(jìn)入“D:\test_report”,打開cmd命令窗口,在該窗口中輸入以下命令。4.4.4 Postman生成測(cè)試報(bào)告newmanrun博學(xué)谷.postman_collection.json-e博學(xué)谷測(cè)試環(huán)境.postman_environment.json-rhtmlSTEP05輸入生成測(cè)試報(bào)告的newman命令雙擊測(cè)試報(bào)告就可以查看訪問博學(xué)谷首頁的詳細(xì)測(cè)試報(bào)告內(nèi)容,如下圖所示。4.4.4 Postman生成測(cè)試報(bào)告實(shí)例:iHRM人力資源管理系統(tǒng)接口測(cè)試4.5

先定一個(gè)小目標(biāo)!了解iHRM人力資源管理系統(tǒng)項(xiàng)目的介紹,能夠說出登錄頁面和員工管理頁面顯示的信息4.5.1 項(xiàng)目介紹iHRM人力資源管理系統(tǒng)是一個(gè)管理員工績(jī)效、入職、離職等信息的項(xiàng)目,該項(xiàng)目包含登錄、組織管理、員工管理、績(jī)效管理等模塊。本實(shí)例只對(duì)iHRM人力資源管理系統(tǒng)中的登錄模塊和員工管理模塊的接口進(jìn)行測(cè)試。iHRM人力資源管理系統(tǒng)的登錄界面和首頁效果如下圖所示。4.5.1 項(xiàng)目介紹

先定一個(gè)小目標(biāo)!熟悉項(xiàng)目接口文檔,能夠歸納登錄模塊和員工管理模塊的接口信息4.5.2 項(xiàng)目接口文檔為了對(duì)iHRM人力資源管理系統(tǒng)中的登錄模塊和員工管理模塊進(jìn)行接口測(cè)試,接下來介紹這兩個(gè)模塊的接口信息。1.

登錄模塊—登錄接口在登錄模塊中,登錄接口的信息具體如下。(1)請(qǐng)求信息請(qǐng)求信息中的請(qǐng)求方法、請(qǐng)求地址和請(qǐng)求頭,分別如下所示。請(qǐng)求方法:POST。請(qǐng)求地址:http:///api/sys/login。請(qǐng)求頭:Content-Type:application/json。4.5.2 項(xiàng)目接口文檔(2)請(qǐng)求體參數(shù)登錄接口的請(qǐng)求體參數(shù)如下表所示。4.5.2 項(xiàng)目接口文檔參數(shù)名稱參數(shù)類型是否必須備注mobilestring是手機(jī)號(hào)(使用手機(jī)號(hào)作為登錄的用戶名)passwordstring是密碼(6位)(3)返回?cái)?shù)據(jù)當(dāng)?shù)卿浗涌谡?qǐng)求成功或失敗時(shí),返回?cái)?shù)據(jù)中的操作狀態(tài)碼及其描述分別如下所示。10000:操作成功!。20001:用戶名或密碼錯(cuò)誤。99999:抱歉,系統(tǒng)繁忙,請(qǐng)稍后重試!。假設(shè)登錄接口請(qǐng)求成功,返回的數(shù)據(jù)如下所示。4.5.2 項(xiàng)目接口文檔{"success":true,"code":10000,"message":"操作成功!","data":"d09899f7-f069-461c-a68c-56e139c87f42"}2.

員工管理模塊—員工管理列表接口在員工管理模塊中,員工管理列表的接口信息具體如下。(1)請(qǐng)求信息請(qǐng)求信息中的請(qǐng)求方法、請(qǐng)求地址和請(qǐng)求頭,分別如下所示。請(qǐng)求方法:GET。請(qǐng)求地址:http:///api/sys/user?page=2&size=1,其中page和size是請(qǐng)求地址中的必填參數(shù),page表示員工管理列表的當(dāng)前頁數(shù),size表示每頁展示的記錄數(shù)。請(qǐng)求頭:Content-Type:application/json、Authorization:token。(2)返回?cái)?shù)據(jù)當(dāng)員工管理列表接口請(qǐng)求成功或失敗時(shí),返回?cái)?shù)據(jù)中的操作狀態(tài)碼及其描述分別如下所示。10000:操作成功!。99999:抱歉,系統(tǒng)繁忙,請(qǐng)稍后重試!。4.5.2 項(xiàng)目接口文檔假設(shè)成功查詢員工管理列表中的第2頁第1條記錄,則返回?cái)?shù)據(jù)如下所示。4.5.2 項(xiàng)目接口文檔{

"success":

true,

"code":

10000,

"message":

"操作成功!",

"data":

{

"total":

17,

"rows":

[

{

"id":

"1066370498633486336",

"mobile":

"12000000693",…….

}

]

}}3.員工管理模塊—添加員工接口在員工管理模塊中,添加員工的接口信息具體如下。(1)請(qǐng)求信息請(qǐng)求信息中的請(qǐng)求方法、請(qǐng)求地址和請(qǐng)求頭,分別如下所示。請(qǐng)求方法:POST。請(qǐng)求地址:http:///api/sys/user。請(qǐng)求頭:Content-Type:application/json、Authorization:token。4.5.2 項(xiàng)目接口文檔添加員工接口的請(qǐng)求體參數(shù)如下表所示。4.5.2 項(xiàng)目接口文檔參數(shù)名稱參數(shù)類型是否必須備注usernamestring是姓名mobilestring是手機(jī)號(hào)workNumberstring是工號(hào)timeOfEntrystring否入職時(shí)間formOfEmploymentstring否聘用形式departmentNamestring否部門名稱departmentIdstring否部門idcorrectionTimestring否轉(zhuǎn)正時(shí)間(3)返回?cái)?shù)據(jù)當(dāng)添加員工接口請(qǐng)求成功或失敗時(shí),返回?cái)?shù)據(jù)中的操作狀態(tài)碼及其描述分別如下所示。10000:操作成功!。99999:抱歉,系統(tǒng)繁忙,請(qǐng)稍后重試!。假設(shè)添加員工接口請(qǐng)求成功時(shí),則返回?cái)?shù)據(jù)如下所示。4.5.2 項(xiàng)目接口文檔{"success":true,"code":10000,"message":"操作成功!","data":{null}}4.

員工管理模塊—查詢員工接口在員工管理模塊中,查詢員工的接口信息具體如下。(1)請(qǐng)求信息請(qǐng)求信息中的請(qǐng)求方法、請(qǐng)求地址、請(qǐng)求頭,分別如下所示。請(qǐng)求方法:GET。請(qǐng)求地址:http:///api/sys/user/target,其中target是請(qǐng)求地址中的必填參數(shù),表示員工id。請(qǐng)求頭:Authorization:token。(2)返回?cái)?shù)據(jù)當(dāng)查詢員工接口請(qǐng)求成功或失敗時(shí),返回?cái)?shù)據(jù)中的操作狀態(tài)碼及其描述分別如下所示。10000:操作成功!。99999:抱歉,系統(tǒng)繁忙,請(qǐng)稍后重試!。4.5.2 項(xiàng)目接口文檔假設(shè)查詢員工接口請(qǐng)求成功時(shí),返回的數(shù)據(jù)如下所示。4.5.2 項(xiàng)目接口文檔{

"success":

t

溫馨提示

  • 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)論