日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

API測(cè)試

 幸福的落葉@ing 2010-10-31
一、 API測(cè)試簡(jiǎn)介
API測(cè)試與其他測(cè)試一樣,首先要做的是把測(cè)試環(huán)境搭建好,各種必須的配置文件都準(zhǔn)備完畢,在開(kāi)始測(cè)試之前確保服務(wù)器上的程序是可測(cè)的(有必要的話可以尋求研發(fā)幫助).
API測(cè)試除了要測(cè)試功能以外還要測(cè)試接口。一個(gè)API或者函數(shù)可以作為一個(gè)單元,對(duì)這個(gè)單元進(jìn)行單元測(cè)試,你可以用黑盒方法,也可以用白盒方法。黑盒方法就是不去看這個(gè)單元的實(shí)現(xiàn)代碼,只根據(jù)這個(gè)單元的功能說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例并進(jìn)行測(cè)試。測(cè)試的時(shí)候你可能需要寫(xiě)一點(diǎn)簡(jiǎn)單的代碼來(lái)做數(shù)據(jù)準(zhǔn)備,然后去調(diào)用需要測(cè)試的接口,一般也需要寫(xiě)一些代碼來(lái)接收或者驗(yàn)證被測(cè)單元的輸出是否正確;白盒測(cè)試方法就是你通過(guò)分析被測(cè)單元的實(shí)現(xiàn)代碼,根據(jù)不同的測(cè)試策略(如分支覆蓋或者邏輯覆蓋等)來(lái)設(shè)計(jì)測(cè)試用例并作相應(yīng)的測(cè)試。平臺(tái)產(chǎn)品的需求很多是來(lái)自網(wǎng)站,簡(jiǎn)而言之,平臺(tái)產(chǎn)品提供API供網(wǎng)站研發(fā)使用。我們需要測(cè)的就是這些暴露出來(lái)的API,確保這些API在功能上沒(méi)有缺陷。
API測(cè)試和一般手工測(cè)試在測(cè)試原理上是一樣的。
例如在aranda-1.1中有這樣一個(gè)需求,用戶能在線刪除自己的圖片。很簡(jiǎn)單,正常測(cè)試流程中,我們一般這樣做,在頁(yè)面上傳一個(gè)普通圖片,然后選中該圖片,點(diǎn)擊刪除,最后去驗(yàn)證該圖片是否被正常刪除.但是在aranda-1.1中,只能看到接口,沒(méi)有前臺(tái)頁(yè)面上傳文件,故需要寫(xiě)一點(diǎn)代碼來(lái)模擬這個(gè)過(guò)程:
public void testDeleteImage() throws Exception {
1 String path = "D:\\temp\\test.jpg";
2 this.fileCache = new FileCache(getImageFile(path));
3 ArandaFileRef imageRef =arandaFileService.createFile("src/source.jpg",
4 true, new MemoryInputStreamWrapper(fileCache));
5 assertTrue(imageRef.delete());     //true
6 assertFalse(imageRef.exists());   //true
}
上面的測(cè)試代碼中,第1,2,3,4行代碼所做的事情就是上傳一個(gè)圖片,第5行去調(diào)用需測(cè)試的接口,并驗(yàn)證結(jié)果,第6行驗(yàn)證圖片是否已經(jīng)被真的刪除。
二、 明確哪些是需要測(cè)試的API
研發(fā)的代碼中可能實(shí)現(xiàn)了很多API, 首先必須明確哪些需要測(cè),哪些不必要測(cè); 哪些這個(gè)迭代不測(cè),下一個(gè)迭代再測(cè); 有一些接口是可能就直接調(diào)用另外一個(gè)接口,這些接口有沒(méi)有必要測(cè)等。這些問(wèn)題最好在提交測(cè)試之前根據(jù)需求和計(jì)劃跟研發(fā)溝通清楚, 這些沒(méi)有確定清楚直接導(dǎo)致漏測(cè)接口或者測(cè)了沒(méi)必要的接口(無(wú)用功) 。
三、 明確每個(gè)API實(shí)現(xiàn)的功能和設(shè)計(jì)TC
在確定了哪些接口需要測(cè)試之后,就必須明確每個(gè)接口實(shí)現(xiàn)的功能及接口的參數(shù)、返回值的意義等。理解這些接口參數(shù)的含義,這些參數(shù)將是設(shè)計(jì)TC的維度。采用黑盒測(cè)試的方法,等價(jià)類(lèi)劃分,邊界值分析,錯(cuò)誤推測(cè)等常用方法均可使用。簡(jiǎn)單的說(shuō),這些參數(shù)可以看成一個(gè)一個(gè)輸入框,類(lèi)似網(wǎng)頁(yè)手工測(cè)試一樣,將準(zhǔn)備數(shù)據(jù)輸入即可。用黑盒的方法來(lái)為API設(shè)計(jì)TC和網(wǎng)頁(yè)手工測(cè)試很類(lèi)似,無(wú)非就是把參數(shù)看成輸入框而已。但是API測(cè)試在設(shè)計(jì)TC的時(shí)候還可以“偏白”一點(diǎn),就是直接去看接口的實(shí)現(xiàn)的代碼,特別是一些異常情況的處理,一般程序在異常處理上總是相對(duì)于正常情況要脆弱一些,然后對(duì)前面用黑盒的方法設(shè)計(jì)好的TC進(jìn)行一些補(bǔ)充。
值得注意的是,1)TC設(shè)計(jì)的時(shí)候盡量詳細(xì),粒度盡量的小,測(cè)試代碼都是類(lèi)似的,可能僅僅是傳入的參數(shù)不一樣,而測(cè)試校驗(yàn)的工作是計(jì)算機(jī)做的,所以一般情況下針對(duì)某個(gè)接口,10個(gè)TC和20個(gè)TC跑的花費(fèi)是差不多的,但是測(cè)試粒度方面和代碼覆蓋率方面可能就增加了不少。2)TC也是要進(jìn)行維護(hù)的,在測(cè)試執(zhí)行階段,如果發(fā)現(xiàn)需要補(bǔ)充TC,最好不要在現(xiàn)有的測(cè)試代碼上改,要新加代碼,同時(shí)在TC文檔中也同步更新。如果是TC的缺陷,才去修改對(duì)應(yīng)的代碼,并在TC文檔中做更新。3)在設(shè)計(jì)TC文檔的時(shí)候,測(cè)試步驟的粒度最好能夠細(xì)到每一步需要調(diào)用哪個(gè)函數(shù)或接口,有點(diǎn)類(lèi)似偽代碼的風(fēng)格,這樣在寫(xiě)代碼的時(shí)候就不用怎么思考,僅僅去實(shí)現(xiàn)它。
四、 依TC寫(xiě)代碼
在aranda-1.1中,每個(gè)測(cè)試類(lèi)去繼承AbstractDependencyInjectionSpringContextTests,SpringContextTest是 junit的擴(kuò)展。注入需要的類(lèi)(spring IoC),然后按照TC上的測(cè)試步驟的描述,一步步完成代碼的實(shí)現(xiàn),照葫蘆畫(huà)瓢就行。開(kāi)始運(yùn)行調(diào)試??梢詤⒁?jiàn)下面的例子(圖1和圖2連起來(lái)),TC文檔可以寫(xiě)在javadoc里面。(注:寫(xiě)代碼最好了解一下spring IoC和Junit)。

圖1:一些初始化

圖2:依TC寫(xiě)代碼


附:Debug及eclipse快捷鍵
調(diào)試方式:打斷點(diǎn)
1.Step Into (also F5) 跳入
2.Step Over (also F6) 跳過(guò)
3.Step Return (also F7) 執(zhí)行完當(dāng)前method,然后return跳出此method
如果一行有很多方法,
當(dāng)?shù)谝淮伟碏5鍵就跳入這一行第一個(gè)方法,F6一步一步調(diào)試,F7跳出這方法.
當(dāng)?shù)诙伟碏5鍵就跳入這一行第二個(gè)方法,F6一步一步調(diào)試,F7跳出這方法.
以此類(lèi)推.想進(jìn)入這一行第幾個(gè)方法,就按幾次F5和F7.
詳細(xì)參見(jiàn):http://www.ibm.com/developerworks/cn/opensource/os-ecbug/index.html?S_TACT=105AGX52&S_CMP=techcto

Eclipse快捷鍵:
Ctrl+1 快速修復(fù)(最經(jīng)典的快捷鍵,就不用多說(shuō)了)
Ctrl+D: 刪除當(dāng)前行
Ctrl+Alt+↓ 復(fù)制當(dāng)前行到下一行(復(fù)制增加)
Ctrl+Alt+↑ 復(fù)制當(dāng)前行到上一行(復(fù)制增加)
Alt+↓ 當(dāng)前行和下面一行交互位置(特別實(shí)用,可以省去先剪切,再粘貼了)
Alt+↑ 當(dāng)前行和上面一行交互位置(同上)
Alt+← 前一個(gè)編輯的頁(yè)面
Alt+→ 下一個(gè)編輯的頁(yè)面(當(dāng)然是針對(duì)上面那條來(lái)說(shuō)了)
Alt+Enter 顯示當(dāng)前選擇資源(工程,or 文件 or文件)的屬性
Shift+Enter 在當(dāng)前行的下一行插入空行(這時(shí)鼠標(biāo)可以在當(dāng)前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在當(dāng)前行插入空行(原理同上條)
Ctrl+Q 定位到最后編輯的地方
Ctrl+L 定位在某行 (對(duì)于程序超過(guò)100的人就有福音了)
Ctrl+M 最大化當(dāng)前的Edit或View (再按則反之)
Ctrl+/ 注釋當(dāng)前行,再按則取消注釋
Ctrl+O 快速顯示 OutLine
Ctrl+T 快速顯示當(dāng)前類(lèi)的繼承結(jié)構(gòu)
Ctrl+W 關(guān)閉當(dāng)前Editer
Ctrl+K 參照選中的Word快速定位到下一個(gè)
Ctrl+E 快速顯示當(dāng)前Editer的下拉列表(如果當(dāng)前頁(yè)面沒(méi)有顯示的用黑體表示)
Ctrl+/(小鍵盤(pán)) 折疊當(dāng)前類(lèi)中的所有代碼
Ctrl+×(小鍵盤(pán)) 展開(kāi)當(dāng)前類(lèi)中的所有代碼
Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來(lái)代替)
Ctrl+Shift+E 顯示管理當(dāng)前打開(kāi)的所有的View的管理器(可以選擇關(guān)閉,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所輸入的每個(gè)字母編輯器都提供快速匹配定位到某個(gè)單詞,如果沒(méi)有,則在stutes line中顯示沒(méi)有找到了,查一個(gè)單詞時(shí),特別實(shí)用,這個(gè)功能Idea兩年前就有了)
Ctrl+Shift+J 反向增量查找(和上條相同,只不過(guò)是從后往前查)
Ctrl+Shift+F4 關(guān)閉所有打開(kāi)的Editer
Ctrl+Shift+X 把當(dāng)前選中的文本全部變味小寫(xiě)
Ctrl+Shift+Y 把當(dāng)前選中的文本全部變?yōu)樾?xiě)
Ctrl+Shift+F 格式化當(dāng)前代碼Ctrl+Shift+P 定位到對(duì)于的匹配符(譬如{}) (從前面定位后面時(shí),光標(biāo)要在匹配符里面,后面到前面,則反之)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多