核心測(cè)試新人指南.docx_第1頁(yè)
核心測(cè)試新人指南.docx_第2頁(yè)
核心測(cè)試新人指南.docx_第3頁(yè)
核心測(cè)試新人指南.docx_第4頁(yè)
核心測(cè)試新人指南.docx_第5頁(yè)
已閱讀5頁(yè),還剩70頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

此文檔收集于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除核心測(cè)試新人指南31.核心測(cè)試基本概念31.1.核心測(cè)試框架簡(jiǎn)介31.2.TestNG簡(jiǎn)介41.3.持續(xù)集成62.環(huán)境配置82.1.JDK安裝82.2.Oracle安裝92.3.PL/SQL安裝92.4.Ant、Maven、Antx、Svn、Jboss102.5.環(huán)境配置Q&A123.常用測(cè)試工具的使用163.1.TortoiseSVN163.2.Antx193.3.Maven193.4.eclipse213.5.SecureCRT243.6.pl/sql263.7.Tcenter283.8.TestNG324.測(cè)試工具類345.測(cè)試實(shí)例345.1.GUI測(cè)試實(shí)例345.2.核心測(cè)試實(shí)例456.流程及規(guī)范626.1.CQClear Quest常用操作626.2.JIRA常用操作696.3.項(xiàng)目關(guān)鍵時(shí)間點(diǎn)696.4.核心測(cè)試編寫規(guī)范697.其他717.1.有問(wèn)題找誰(shuí)717.2.組內(nèi)學(xué)習(xí)文檔72核心測(cè)試新人指南1. 核心測(cè)試基本概念核心測(cè)試就是核心系統(tǒng)的接口測(cè)試,接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試,接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過(guò)程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。如今的系統(tǒng)架構(gòu)紛繁復(fù)雜,系統(tǒng)間的接口龐雜繁多,傳統(tǒng)的功能測(cè)試已經(jīng)難以滿足系統(tǒng)發(fā)展的需求,迫切需要一種更加有效實(shí)用且可以持續(xù)進(jìn)行的測(cè)試方式來(lái)保證系統(tǒng)的質(zhì)量,接口測(cè)試在這種需求下應(yīng)運(yùn)而生。首先,隨著系統(tǒng)復(fù)雜程度的上升,傳統(tǒng)的測(cè)試方法測(cè)試成本急劇增加,測(cè)試效率大幅下降(根據(jù)淘寶的數(shù)據(jù)模型推算,底層的一個(gè)bug能夠引發(fā)上層的8個(gè)左右bug,而且底層的bug很容易引起全網(wǎng)的宕機(jī)),相反接口測(cè)試能夠提供系統(tǒng)復(fù)雜度上升情況下的低成本高效率的解決方案。其次接口測(cè)試不同于傳統(tǒng)開(kāi)發(fā)的單元測(cè)試,接口測(cè)試是站在用戶的角度對(duì)系統(tǒng)接口進(jìn)行全面高效持續(xù)的檢測(cè)。最后接口測(cè)試是自動(dòng)化并且持續(xù)集成的,這也是為什么接口測(cè)試能夠低成本高收益的根源。1.1. 核心測(cè)試框架簡(jiǎn)介核心測(cè)試框架是基于TestNG和Sofa Test框架之上的,測(cè)試腳本都是以TestNG的方式運(yùn)行,跑腳本之前,TestNG會(huì)先啟用一個(gè)main主線程,利用TestNG的標(biāo)簽通過(guò)反射找到并調(diào)用SetUp方法進(jìn)行一些初始化的工作,用一個(gè)上下文context加載所有的讀取的配置文件中的bean,加載完之后,用數(shù)據(jù)驅(qū)動(dòng)的方式去調(diào)用Test標(biāo)簽所標(biāo)示的方法,從而去跑核心測(cè)試的腳本,結(jié)構(gòu)圖如下所示:1.2. TestNG簡(jiǎn)介TestNG是為了解決Junit過(guò)于簡(jiǎn)單的問(wèn)題而產(chǎn)生的,它與Junit是同一類的框架,兩者不能同時(shí)使用,TestNG相比Junit增強(qiáng)功能如下:l 定義測(cè)試組的能力,每個(gè)測(cè)試方法都可以與一個(gè)或多個(gè)組相關(guān)聯(lián),但可以選擇只運(yùn)行某個(gè)測(cè)試組。l 重新運(yùn)行失敗的測(cè)試,對(duì)于每天都進(jìn)行編譯來(lái)說(shuō)非常有幫助。l 提供了依賴檢查機(jī)制,并可以嚴(yán)格控制執(zhí)行順序。l 可以簡(jiǎn)單的直接進(jìn)行多線程測(cè)試了。l 提供xml方式的參數(shù)化測(cè)試。PS. TestNG的安裝:打開(kāi)eclipse,點(diǎn)擊工具欄上的HelpSoftware Update:然后點(diǎn)擊Add Site,輸入下載TestNG的網(wǎng)址,/eclipse(適用于eclipse3.4版本):在Available Software中就會(huì)有可用的TestNG的安裝,點(diǎn)擊Install:安裝完畢后在eclipse工具欄上點(diǎn)擊WindowsShow ViewsOther,選中Java目錄下的TestNG,即可在eclipse頁(yè)面上看到TestNG的視圖了:1.3. 持續(xù)集成持續(xù)集成是接口測(cè)試實(shí)現(xiàn)全面自動(dòng)化回歸測(cè)試的重要技術(shù)手段。簡(jiǎn)單來(lái)說(shuō),持續(xù)集成就是把寫好的測(cè)試代碼持續(xù)不斷地運(yùn)行起來(lái),并且利用版本控制技術(shù),讓測(cè)試代碼測(cè)試的始終是最新版本的系統(tǒng)接口。核心測(cè)試使用Hudson作為持續(xù)集成的工具,Hudson是在開(kāi)源屆廣泛認(rèn)知的持續(xù)集成服務(wù)器,其支持CVS和SVN作為版本控制工具,支持ANT和MAVEN作為構(gòu)建工具,支持定時(shí)或者特定事件觸發(fā)集成任務(wù),給指定人員發(fā)送錯(cuò)誤郵件等等,并且操作十分簡(jiǎn)單。Hudson自身沒(méi)有持續(xù)集成能力,只是作為一個(gè)整合CVS,SVN,ANT,MAVEN和EMAIL的工具存在。Hudson擁有的特性包括:l 易于安裝-只要把hudson.war部署到servlet容器,不需要數(shù)據(jù)庫(kù)支持。l 易于配置-所有配置都是通過(guò)其提供的web界面實(shí)現(xiàn)。l 集成RSS/E-mail/IM-通過(guò)RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建失敗時(shí)通過(guò)e-mail實(shí)時(shí)通知。l 生成JUnit/TestNG測(cè)試報(bào)告。l 分布式構(gòu)建支持-Hudson能夠讓多臺(tái)計(jì)算機(jī)一起構(gòu)建/測(cè)試。l 文件識(shí)別- Hudson能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個(gè)版本的jar等。l 插件支持-Hudson可以通過(guò)插件擴(kuò)展,你可以開(kāi)發(fā)適合自己團(tuán)隊(duì)使用的工具。核心系統(tǒng)Hudson地址為:/hudson/Hudson的狀態(tài)圖標(biāo)代表的意義:圖像 說(shuō)明 關(guān)注點(diǎn) 不穩(wěn)定(Unstable) 關(guān)注測(cè)試失敗的用例 成功(Success) 不用關(guān)注/關(guān)注修正部分 失敗(Failed) 關(guān)注構(gòu)建失敗的原因 不可用(Disabled) 不必關(guān)注 圖像 說(shuō)明 評(píng)分 最近5次構(gòu)建沒(méi)有失敗的 =80 最近5次構(gòu)建有一次失敗的60-80 最近5次構(gòu)建有兩次失敗的40-60 最近5次構(gòu)建有三次失敗的20-40最近5次構(gòu)建有四次或四次以上失敗的preference-general-content Types-java properties File,改成GBK,點(diǎn)擊update,點(diǎn)擊okl 更改maven本地?cái)?shù)據(jù)倉(cāng)庫(kù)(.m2文件夾)默認(rèn)位置安裝完maven后,系統(tǒng)默認(rèn)的maven數(shù)據(jù)倉(cāng)庫(kù),也就是.m2文件夾會(huì)放在C:Documents and Settings .m2repository位置,因?yàn)槁窂奖容^長(zhǎng),而且包含空格,所以在后期的項(xiàng)目開(kāi)發(fā)中可能會(huì)因?yàn)槟腻e(cuò)誤,為了把這些錯(cuò)誤扼殺在搖籃中,建議大家把maven數(shù)據(jù)倉(cāng)庫(kù)改到某個(gè)磁盤的根目錄下,操作很簡(jiǎn)單:修改setting.xml配置文件把數(shù)據(jù)倉(cāng)庫(kù)位置中間改成要存放的地址即可,記得把注釋去掉!3. 常用測(cè)試工具的使用3.1. TortoiseSVN現(xiàn)在公司的代碼基本都是由SVN來(lái)維護(hù)的,以recon系統(tǒng)為例,在本地磁盤建立目錄recon,在目錄上點(diǎn)擊右鍵,選擇SVN Checkout:輸入流的地址,點(diǎn)擊OK即可(若無(wú)拉代碼的權(quán)限可去CQ上申請(qǐng),詳見(jiàn)CQ申請(qǐng)權(quán)限):若要提交自己的測(cè)試腳本可在recon目錄下,點(diǎn)擊右鍵,選擇SVN Commit:也可在eclipse中選擇要提交的文件,右鍵選擇Team提交:若代碼有了變更,可在目錄下右鍵選擇SVN update來(lái)更新代碼(若無(wú)改動(dòng)pom文件,eclipse里面刷新一下即可,不用重新編譯):3.2. Antx代碼拉下來(lái)之后要進(jìn)行編譯,目前公司有兩類系統(tǒng)并存,一類是Webx系統(tǒng),一類是Sofa系統(tǒng)(區(qū)分兩類系統(tǒng)的方法是Sofa系統(tǒng)在系統(tǒng)根目錄下有pom.xml文件,而Webx系統(tǒng)則是project.xml文件),對(duì)于Webx系統(tǒng)我們需要Antx來(lái)編譯,首先需要在系統(tǒng)目錄下建立perties文件:“干凈”的perites文件可到各系統(tǒng)的stable服務(wù)器上去下載(用secureCRT下載,詳見(jiàn)secureCRT),文件下載后注意要將ject = 你的binary的目錄地址,如:ject = E: /yue.li _int/vobs/binary(注意這里的斜杠跟windows下的路徑是反的)。注:對(duì)于webx項(xiàng)目,下代碼的時(shí)候除了下載本項(xiàng)目,還需要下載binary庫(kù)。建議下載到一個(gè)自定義的公共目錄,供多個(gè)項(xiàng)目配置共用,定期更新。做好以上準(zhǔn)備后,接下來(lái)就可以用antx命令了。命令antx reactor goals=default的作用編譯webx工程。命令antx reactor goals=eclipse的作用是生成eclipse項(xiàng)目文件,接著就可以在eclipse中import所創(chuàng)建的eclipse項(xiàng)目。還可以使用命令antx reactor goals=clean來(lái)清除上次編譯的文件。3.3. Maven相比Webx項(xiàng)目復(fù)雜的配置與操作,Sofa項(xiàng)目則相對(duì)簡(jiǎn)單許多。首先在Maven安裝目錄下的conf目錄下,在setting.xml文件中設(shè)置Maven本地庫(kù)(.m2目錄)的路徑設(shè)置:在項(xiàng)目根目錄(有一個(gè)總控pom.xml的目錄)下,執(zhí)行mvn eclipse:eclipse,這個(gè)命令會(huì)從Maven服務(wù)器庫(kù)下載項(xiàng)目所依賴的jar包,并創(chuàng)建eclipse工程。如果所依賴的jar有更新,但是版本號(hào)沒(méi)有更新,建議刪除本地庫(kù)中相關(guān)包,重新下載(本地庫(kù)中文件隨便刪,每執(zhí)行mvn eclipse:eclipse會(huì)下載)。在Eclipse中導(dǎo)入生成的工程,如果打開(kāi)有紅叉報(bào)錯(cuò),報(bào)錯(cuò)原因是沒(méi)有找到M2_REPO的話,則在項(xiàng)目編譯路徑中添加M2_REPO變量,指向maven下載的repository目錄:3.4. eclipse代碼編譯完畢并生產(chǎn)eclipse文件后,可在eclipse中將其導(dǎo)入,選擇Fileimport:選擇General-Existing Projects into Workspace:然后選擇項(xiàng)目所在的目錄導(dǎo)入即可。l eclipse常用快捷鍵:工欲善其事必先利其器,熟用快捷鍵可減輕我們的工作量,eclipse常用的快捷鍵有:Ctrl+1 快速修復(fù)Ctrl+D: 刪除當(dāng)前行 Ctrl+Alt+ 復(fù)制當(dāng)前行到下一行(復(fù)制增加)Ctrl+Alt+ 復(fù)制當(dāng)前行到上一行(復(fù)制增加)Alt+ 當(dāng)前行和下面一行交互位置Alt+ 當(dāng)前行和上面一行交互位置Alt+ 前一個(gè)編輯的頁(yè)面Alt+ 下一個(gè)編輯的頁(yè)面Alt+Enter 顯示當(dāng)前選擇資源(工程或文件)的屬性Shift+Enter 在當(dāng)前行的下一行插入空行Shift+Ctrl+Enter 在當(dāng)前行插入空行Ctrl+Q 定位到最后編輯的地方Ctrl+L 定位在某行Ctrl+M 最大化當(dāng)前的Edit或View (再按則反之)Ctrl+/ 注釋當(dāng)前行,再按則取消注釋Ctrl+O 快速顯示 OutLineCtrl+T 快速顯示當(dāng)前類的繼承結(jié)構(gòu)Ctrl+W 關(guān)閉當(dāng)前EditerCtrl+K 參照選中的Word快速定位到下一個(gè)Ctrl+E 快速顯示當(dāng)前Editer的下拉列表(如果當(dāng)前頁(yè)面沒(méi)有顯示的用黑體表示)Ctrl+J 正向增量查找(按下Ctrl+J后,你所輸入的每個(gè)字母編輯器都提供快速匹配定位到某個(gè)單詞,如果沒(méi)有,則在stutes line中顯示沒(méi)有找到了)Ctrl+Shift+J 反向增量查找Ctrl+Shift+F4 關(guān)閉所有打開(kāi)的EditerCtrl+Shift+X 把當(dāng)前選中的文本全部變?yōu)樾慍trl+Shift+Y 把當(dāng)前選中的文本全部變?yōu)樾慍trl+Shift+F 格式化當(dāng)前代碼Ctrl+Shift+R 查找文件Ctrl+Shift+T 查找類3.5. SecureCRT測(cè)試腳本在本地跑通后還需要在服務(wù)器上跑一下,在項(xiàng)目中核心系統(tǒng)都有各自的測(cè)試服務(wù)器,以recon為例,我們使用連接服務(wù)器的專用工具secureCRT連上服務(wù)器:連上服務(wù)器后,進(jìn)入這個(gè)目錄:/home/admin/ccbin/記住這幾個(gè)“萬(wàn)能”腳本:mkview.sh:下代碼的腳本;ccupdate.sh:更新代碼的腳本;build.sh:編譯的腳本;deploy.sh:部署的腳本;checkservice.sh:檢查系統(tǒng)是否啟動(dòng)成功的腳本;輸入./mkview.sh下載代碼,先輸入要下的系統(tǒng)名稱,再輸入流的地址:如果代碼有更新,輸入./ccupdate.sh來(lái)更新代碼:下載完畢后輸入./build.sh編譯代碼:編譯成功后輸入./deploy.sh部署代碼:最后輸入./checkservice.sh看部署成功沒(méi):憑這幾個(gè)腳本,你就可以玩轉(zhuǎn)支付寶的服務(wù)器了。當(dāng)然這只是理想情況,在實(shí)際部署服務(wù)器的時(shí)候可能會(huì)遇到各種各樣的問(wèn)題,導(dǎo)致部署失敗,碰到問(wèn)題時(shí)可參考黃河的環(huán)境配置問(wèn)題ppt(見(jiàn)組內(nèi)學(xué)習(xí)文檔),可解決大部分常見(jiàn)的問(wèn)題,若還是部署不成功那就要找運(yùn)維解決了。在服務(wù)器上跑腳本時(shí)如果腳本掛了,不能像在本地一樣debug,必須查看服務(wù)器日志,錯(cuò)誤日志一般在error.log 或common-error.log中,查看日志常用的命令有:vi a.log:用vim打開(kāi)a.log日志;grep “XXX” a.log:在a.log日志文件中查找包括內(nèi)容為XXX的那一行;grep “XXX” a.log | grep “YYY”:可用|連接符搜索含有XXX和YYY的那一行;tail -number a.log:輸出a.log日志倒數(shù)第number行;tail -f a.log:動(dòng)態(tài)的跟蹤a.log日志的變化,實(shí)時(shí)刷新;3.6. pl/sqlplsql可謂是測(cè)試用的最頻繁的工具之一了,下面是開(kāi)發(fā)庫(kù)的用戶名和密碼:開(kāi)發(fā)庫(kù)用戶/密碼PLSQL對(duì)應(yīng)CUSTOMERali88devdb01TRADEali88SETTLECOREali88PAYCOREali88APAYFUNDali99devdb02GOLDENali315ACCCOREali00devdb03ACCTRANSali00APAYAPapayapAPAYACCali88APAYCAcadur4xCREDITcreditAPAYRAraAPAYMKTapaymktaliprodali88schedulerali88schedulerdevali88LEDGERali88mktplusali88APAYBDali88devdb04APAYBPMali88APAYCRMali99BDCRMali88APAYBIZali88DAILYali88APAYSPali88HECLAheclaPACIOLIali77APAYFORUMali66FORUMHISali66JBPMAPAYCTUapayctuAPAYESBali00CTUEVTali88注意:使用plsql時(shí)經(jīng)常會(huì)使用update語(yǔ)句來(lái)鎖表鎖記錄,記住最后要提交操作,不然記錄會(huì)一直鎖住:3.7. TcenterTCenter是在開(kāi)源測(cè)試工具testlink的基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)的,以滿足我們的測(cè)試需求,它主要是一個(gè)測(cè)試管理的工具,地址為:/tcenter/login.php?note=expired用自己的域賬號(hào)登陸后,可在右上方選擇產(chǎn)品名稱:以資金處理平臺(tái)為例,點(diǎn)擊用戶故事(用戶故事是從用戶的角度來(lái)描述用戶渴望得到的功能):Tcenter中的測(cè)試分析是根據(jù)用戶故事文檔來(lái)具體分析的,然后關(guān)聯(lián)到測(cè)試項(xiàng)目,選擇某一項(xiàng)目,創(chuàng)建測(cè)試分析,可用兩張格式創(chuàng)建wiki和html,統(tǒng)一使用wiki:還可以選擇與之關(guān)聯(lián)的其他測(cè)試分析:編輯完測(cè)試分析后還可以創(chuàng)建相關(guān)的測(cè)試用例:勾選關(guān)聯(lián)的測(cè)試分析,創(chuàng)建用例:用例生成后可對(duì)其進(jìn)行編輯:Tcenter的功能遠(yuǎn)遠(yuǎn)不止這么多,詳細(xì)請(qǐng)參看Tcenter操作手冊(cè)。3.8. TestNGTestNG是一個(gè)基于annotation的測(cè)試框架,下面介紹一些常用的annotation:TCList(測(cè)試用例描述,表明該測(cè)試方法有幾個(gè)用例以及用例的描述)屬性:caseid:測(cè)試用例編號(hào);casedesc:測(cè)試用例描述;Test(標(biāo)記一個(gè)類或方法作為測(cè)試的一部分)屬性:dataProvider:這個(gè)測(cè)試方法的data provider的名稱;dependsOnMethods:當(dāng)前依賴的方法列表,自身必須在所依賴的方法之后運(yùn)行;description :當(dāng)前方法的描述;TestNG還有一個(gè)suite(測(cè)試套件)的概念,一個(gè)suite可以包括多個(gè)測(cè)試用例,一個(gè)測(cè)試用例可以包括多個(gè)測(cè)試類,而一個(gè)測(cè)試類中可以定義多個(gè)測(cè)試方法,只需簡(jiǎn)單的配置一個(gè)xml文件即可,如下例:l 一個(gè)suite使用一個(gè)xml文件來(lái)定義 ,該suite可以包含一個(gè)或多個(gè)test且該suite使用標(biāo)簽來(lái)定義;l 一個(gè)test使用標(biāo)簽來(lái)定義,該test可以包含一個(gè)或多個(gè)TestNG類;l 一個(gè)TestNG類就是一個(gè)Java類,它至少包含一個(gè)TestNG注解。一個(gè)TestNg類使用標(biāo)簽來(lái)定義,可以包含一個(gè)或多個(gè)方法;l 一個(gè)測(cè)試方法就是一個(gè)在你的代碼中使用test注解標(biāo)注的java方法;運(yùn)行一個(gè)suite可在該suite上右鍵,點(diǎn)擊Run as-Run Configurations:點(diǎn)擊New launch configuration:選擇好待運(yùn)行的suite后點(diǎn)擊run即可:TestNG是一個(gè)很強(qiáng)大的測(cè)試框架,功能遠(yuǎn)遠(yuǎn)不止這么點(diǎn),進(jìn)一步的學(xué)習(xí)可參看TestNG官方文檔(組內(nèi)文檔里有)。4. 測(cè)試工具類測(cè)試腳本的編寫過(guò)程中,有一些常用的功能比如往數(shù)據(jù)表里插入自己的數(shù)據(jù),刪除數(shù)據(jù),校驗(yàn)數(shù)據(jù)表等等都有一些工具類可以使用,這大大減輕了腳本編寫的工作量,下面主要介紹最常用的兩個(gè)工具類DBUtils和TextData:4.1. DBUtils常用方法:l public static boolean DBCheck(String path, String tableName, String condition) 作用:通過(guò)數(shù)據(jù)對(duì)比文件的路徑,表名,條件,校驗(yàn)單個(gè)文件,默認(rèn)檢驗(yàn)文件第1列 參數(shù)解釋:path:數(shù)據(jù)對(duì)比文件的路徑,path一般是放在數(shù)據(jù)文件的path欄下,腳本啟動(dòng)時(shí)會(huì)自動(dòng)檢測(cè),例如:testres/normal/RegisterAccItemESBService/RegisterAccItemESBServiceNormalTestDBCK.register.FUND_ACC_DEFAULT.csv(數(shù)據(jù)校驗(yàn)文件的命名見(jiàn)核心測(cè)試編寫規(guī)范)tableName:要對(duì)比的表名,就是你要檢查數(shù)據(jù)插入是否正確的表的表名,這個(gè)是放在數(shù)據(jù)對(duì)比文件的第一欄的condition:在數(shù)據(jù)表tableName中的數(shù)據(jù)提取條件,實(shí)際就是SQl語(yǔ)句中select語(yǔ)句的where子句部分,condition需要在腳本中自己寫。 解釋:在數(shù)據(jù)對(duì)比文件中最后一欄可以設(shè)置為“exp”,該方法就是由condition取出的記錄的各字段的值是否與“exp”下的值一致,一致則返回true,不一致則返回false。數(shù)據(jù)庫(kù)對(duì)比文件如圖所示:tablename:要對(duì)比的表名colsName: 表的列名comments:說(shuō)明(可選)flag: 標(biāo)志位,Y表示校驗(yàn)此字段,N表示不校驗(yàn)此字段,R表示校驗(yàn)正則表達(dá)式exp: 期望值l public static boolean DBClean(String sqls, String tables) 作用:清除數(shù)據(jù)庫(kù)記錄,把測(cè)試時(shí)插入數(shù)據(jù)庫(kù)中的記錄在完成測(cè)試之后刪除 參數(shù)解釋:sqls:完整的SQL語(yǔ)句,將完整的delete語(yǔ)句傳入,需要在傳入前寫好,例如:String sql = delete from + tableName + where INSIT_ID = + instID + ;tableName:要?jiǎng)h除記錄的表名,這個(gè)表名是在數(shù)據(jù)對(duì)比文件中的。 解釋:當(dāng)測(cè)試時(shí)在數(shù)據(jù)庫(kù)中插入了測(cè)試數(shù)據(jù),在測(cè)試結(jié)束后應(yīng)該刪除數(shù)據(jù),這時(shí)可使用該方法。需要注意這里的參數(shù),雖然是Strings但是在傳參數(shù) 的時(shí)候依然可以按照String來(lái)傳的,例如:DBUtils.DBClean(new String sql , new String tableName )l public static String getSql(String sql, String conditions) 作用:生成SQL語(yǔ)句函數(shù),可以簡(jiǎn)單快速的拼接SQL語(yǔ)句 參數(shù)解釋:sql:你想要拼接的SQL語(yǔ)句,這個(gè)語(yǔ)句中任何參數(shù)運(yùn)用“?”代替,例如:String aql = “select * from TABLENAME where id = ? and name = ? and age ?”Conditions:具體的條件值,也就是“?”所代替的參數(shù),例如:String conditions = “10000”,”TIGER”,”18”; 解釋:拼接語(yǔ)法:sql = DBUtils.getSql(aql,conditions);l public static ResultSet getQueryResult(String sql, String tableName) 作用:通過(guò)SQL語(yǔ)句查詢,表名為tableName并返回查詢結(jié)果ResultSet。 參數(shù)解釋:sql:完整的SQL查詢語(yǔ)句,可以使用getSql拼裝完成。tableName:要查詢的數(shù)據(jù)表名。4.2. TextDatal public void csvToOracle(String csvFile, String tableName) 作用:將CSV文件里的記錄插入到數(shù)據(jù)表中 參數(shù)解釋:csvFile:CSV文件的路徑名,CSV文件的命名見(jiàn)核心測(cè)試編寫規(guī)范,這里要注意的是CSV文件里的列名要嚴(yán)格等同于表里的列名且順序也要一樣,數(shù)據(jù)都要加上號(hào),例如:即使你要插入的字段為空,也不能空著,填入即可;tableName:要插入記錄的數(shù)據(jù)表名 解釋:在執(zhí)行某些查詢接口的測(cè)試的時(shí)候,為了不依賴表中現(xiàn)有的數(shù)據(jù),可使用該方法自行插入個(gè)性化測(cè)試數(shù)據(jù)來(lái)執(zhí)行查詢接口測(cè)試l public void multiCsvToOracle(String csvFile, String tableName) 作用:將多個(gè)CSV文件里的記錄插入到多個(gè)數(shù)據(jù)表中 參數(shù)解釋:csvFile:多個(gè)CSV文件的路徑名數(shù)據(jù)tableName:要插入數(shù)據(jù)的多個(gè)數(shù)據(jù)表名數(shù)組注意csvFilei與tableNamei一一對(duì)應(yīng)l public void cleanDataByDate(String tableName, String condition) 作用:根據(jù)條件condition來(lái)刪除表名為tableName的時(shí)間晚于當(dāng)前系統(tǒng)時(shí)間的記錄 參數(shù)解釋:tableName:要?jiǎng)h除記錄的數(shù)據(jù)表名condition: SQL語(yǔ)句delete中的where子句部分 解釋:在自己往表里插一些數(shù)據(jù)時(shí),為了后續(xù)刪掉方便,在某些字段會(huì)造一些個(gè)性化的數(shù)據(jù),比如創(chuàng)建時(shí)間設(shè)置為比系統(tǒng)當(dāng)前時(shí)間晚一天,這樣就可以用該方法來(lái)刪除,只需將condition的值設(shè)為創(chuàng)建時(shí)間字段即可;5. 測(cè)試實(shí)例5.1. GUI測(cè)試實(shí)例l 搭建環(huán)境參考畢方所寫的:新版ATS框架開(kāi)發(fā)環(huán)境搭建手冊(cè),寫的非?;A(chǔ)。l IDEA的使用1. 打開(kāi)IDEA如圖1圖 1 IDEA2. 如果要導(dǎo)入工程可點(diǎn)擊File下的open project選項(xiàng),如果新建工程則可點(diǎn)擊File下的new project選項(xiàng),這里我們只介紹導(dǎo)入工程。圖 2 導(dǎo)入工程3. 因?yàn)槲覀兪荱I測(cè)試使用IDEA,所以要打開(kāi)的是test目錄下的.ipr文件,點(diǎn)擊OK。(因?yàn)閁I測(cè)試是黑盒測(cè)試,不需要依賴開(kāi)發(fā)代碼,所以單獨(dú)創(chuàng)建一個(gè)工程即可)圖 3 導(dǎo)入項(xiàng)目24. 我們測(cè)試人員要寫的測(cè)試腳本(即.groovy文件)都放在kmi-test/com.alipay.kmi/guitest/script下。圖 4 腳本文件存放5. 新建一個(gè)測(cè)試腳本做法如下:在KeyManage處右鍵單擊,new-groovy class,命名為test_xiaoman。在圖7中點(diǎn)擊OK。如此創(chuàng)建一個(gè)新類,如圖8所示。圖 5 新建groovy類圖 6 命名類圖 7 生成文件到服務(wù)器圖 8 test_xiaoman類l 運(yùn)行腳本1.在代碼區(qū)域單擊右鍵,選擇Run,即可運(yùn)行這個(gè)腳本了。圖 9 運(yùn)行腳本2.運(yùn)行后,在控制臺(tái)會(huì)產(chǎn)生一些信息,綠條表示運(yùn)行成功。下方會(huì)有一些運(yùn)行期間的信息產(chǎn)生。圖 10 控制臺(tái)信息以上是用IDEA來(lái)寫groovy腳本的一些基礎(chǔ)知識(shí)。5.2. 核心測(cè)試實(shí)例l 寫在前面 腳本跑通不代表要測(cè)試的代碼無(wú)差錯(cuò),有可能是測(cè)試腳本沒(méi)有覆蓋到出問(wèn)題的地方 腳本跑不通不代表測(cè)試的代碼有錯(cuò),有可能是腳本沒(méi)寫正確,設(shè)斷點(diǎn)debug定位問(wèn)題所在,判斷是腳本問(wèn)題還是要測(cè)試代碼問(wèn)題 確定腳本覆蓋到了所有的點(diǎn)后,腳本跑通說(shuō)明要測(cè)試代碼沒(méi)有問(wèn)題編寫一個(gè)合適的測(cè)試腳本的一般流程:l 明確需求測(cè)試的目的就是要找出你要測(cè)的代碼是否有問(wèn)題,開(kāi)發(fā)提交的代碼不會(huì)有語(yǔ)法錯(cuò)誤的,所以重點(diǎn)就放在對(duì)代碼邏輯及功能的測(cè)試上,這就需要我們做如下工作: 明確你要測(cè)試的代碼要實(shí)現(xiàn)的功能 看要測(cè)試的代碼,了解代碼邏輯 找開(kāi)發(fā)溝通l 確定測(cè)試范圍現(xiàn)在很多的代碼都是基于以前的開(kāi)發(fā)代碼開(kāi)發(fā)的,很多時(shí)候都是在調(diào)用原來(lái)已有的代碼,這時(shí)候就要在看開(kāi)發(fā)代碼的基礎(chǔ)上確定你要測(cè)試的代碼模塊和其他模塊的耦合情況來(lái)確定你的測(cè)試范圍。l 用例數(shù)據(jù)準(zhǔn)備用例的數(shù)據(jù)準(zhǔn)備有兩種情況: 異常數(shù)據(jù)準(zhǔn)備 正常數(shù)據(jù)準(zhǔn)備數(shù)據(jù)可采用等價(jià)類劃分和邊界值來(lái)確定,如果對(duì)代碼邏輯了解的話可以根據(jù)要測(cè)試代碼中條件語(yǔ)句以及異常處理語(yǔ)句等會(huì)產(chǎn)生不同運(yùn)行結(jié)果的地方準(zhǔn)備正?;蛘弋惓y(cè)試數(shù)據(jù)。l 測(cè)試腳本編寫一個(gè)完整的測(cè)試腳本應(yīng)當(dāng)包含以下內(nèi)容: 測(cè)試方法準(zhǔn)備 參數(shù)準(zhǔn)備 返回值校驗(yàn) 數(shù)據(jù)庫(kù)校驗(yàn) 數(shù)據(jù)庫(kù)測(cè)試記錄刪除l 下面開(kāi)始一個(gè)腳本的具體編寫過(guò)程:1 環(huán)境工具準(zhǔn)備:Eclipse,TestNG,PLSQL Developer,oracle .0版本(并修改tnsnames.ora文件),killinkcsv編輯CSV文件。環(huán)境配置上的問(wèn)題可參考環(huán)境配置Q&A。2 測(cè)試的代碼通常都在xxx-test-test文件夾下,除了開(kāi)發(fā)要做的單元測(cè)試和冒煙測(cè)試之外,我們測(cè)試人員要寫入的代碼都在src/test/java和src/test/resource兩個(gè)文件夾下。以下所涉及的內(nèi)容測(cè)試腳本都在src/test/java的servicetest下編寫,有關(guān)數(shù)據(jù)相關(guān)都在src/test/resource下。3 以cif中com.alipay.cif.servicetest.mobile接口,UnbindMobileBindingWithPayPasswordNormalTest方法為例介紹腳本編寫過(guò)程。首先編寫用戶故事,進(jìn)行測(cè)試分析,確定測(cè)試的關(guān)注點(diǎn),用例數(shù)和要進(jìn)行操作和查詢的數(shù)據(jù)表。用戶故事:登錄TCenter:/tcenter/index.php,用戶名和密碼為電腦的開(kāi)機(jī)用戶名和密碼,選擇用戶故事,找到對(duì)應(yīng)的項(xiàng)目組,根據(jù)需求建立用戶故事,一般以每個(gè)接口為單位進(jìn)行編寫。在迭代里可以根據(jù)迭代編號(hào)和已有的故事序號(hào)進(jìn)行編寫。不論哪種用戶故事,都要交代清楚需求的背景,具體需求點(diǎn),模型和代碼設(shè)計(jì)實(shí)現(xiàn)的關(guān)鍵邏輯等。用戶故事下面需要對(duì)具體的方法的進(jìn)行測(cè)試分析:統(tǒng)一使用WIKI格式進(jìn)行編輯。測(cè)試分析針對(duì)具體的方法實(shí)現(xiàn)流程,需要操作的數(shù)據(jù)庫(kù)中的表進(jìn)行細(xì)致分析。需要特別注意以下幾點(diǎn)(直接指導(dǎo)用例的設(shè)計(jì)和腳本的編寫):a) 輸入和輸出的描述(輸出尤其注意異常的情況)b) 流程要求的前提條件和在數(shù)據(jù)表中的操作(插入/刪除/更新)c) 測(cè)試關(guān)注點(diǎn):要注意覆蓋盡可能多的情況,異常的情況要仔細(xì)考慮確定了這些也就確定了用例數(shù)和測(cè)試腳本要如何校驗(yàn)該方法是否正確執(zhí)行。4 下面開(kāi)始正式動(dòng)手了,首先是要填寫測(cè)試腳本自動(dòng)生成信息:resource-make-test-properties-easy-F/N.perites。在其中依次填寫接口名稱,函數(shù)名稱,參數(shù)描述,測(cè)試用例信息,要操作和查詢的數(shù)據(jù)表信息。其中F為異常測(cè)試腳本,N為正常測(cè)試腳本。為保證測(cè)試集描述中id為不與其他用例沖突,保持一定順序,可以通過(guò)測(cè)試用例計(jì)劃自動(dòng)生成:/testplan/lib/,有特殊情況要咨詢師傅。用例數(shù)和要校驗(yàn)數(shù)據(jù)的數(shù)據(jù)表通過(guò)前面的分析得到,要用到的數(shù)據(jù)表之間用逗號(hào)隔開(kāi)。寫完后,在Servicetest.util-EasyMakeTest.java-右鍵run as java application-連續(xù)輸入3-生成自動(dòng)化腳本和csv文件,生成后要刷新(F5-切記!)工程。其中3:生成所有文件:腳本和數(shù)據(jù)文件,1:只生成腳本文件,2:只生成數(shù)據(jù)文件。可以根據(jù)需要選擇要生成的文件。下面為生成的腳本文件,NormalTest為正常場(chǎng)景測(cè)試腳本,F(xiàn)uncException為異常場(chǎng)景測(cè)試腳本:下面是生成的數(shù)據(jù)文件,分別在正常和異常兩個(gè)目錄下:5. 在自動(dòng)生成的腳本中之后,開(kāi)始可能會(huì)有錯(cuò)誤import進(jìn)來(lái)的包,這樣的要手動(dòng)刪掉,把沒(méi)有包含進(jìn)來(lái)的包import進(jìn)來(lái),如下圖:(a) Import出錯(cuò)的原因是自動(dòng)生成的腳本用了原來(lái)的框架,現(xiàn)在的腳本基于testNG的,所以要重新引入。將有紅叉的地方刪掉后,將鼠標(biāo)定位到TestLab,TCLlist處,會(huì)出現(xiàn)提示import包,選中即可。也可以用快捷鍵Ctrl+Shift+O。注:TestLab,TCList,Test(dataProvider = CsvDataProvider, description = *),這些都是testNG的一些基本注解,用來(lái)引入用例集合,注入數(shù)據(jù)等。customerId和result 處的錯(cuò)誤是由于參數(shù)沒(méi)有聲明和定義,mobileService這個(gè)接口的測(cè)試腳本,都是以cardNo為參數(shù)的,將customerId改成cardNo就可以了。result是默認(rèn)的執(zhí)行測(cè)試方法返回的結(jié)果,這里要測(cè)的方法是:unbindMobileBindingWithPayPassword(),所以要定義:(b) 默認(rèn)生成的測(cè)試腳本中傳進(jìn)來(lái)的參數(shù)都是string類型,如果需要boolean,long類型需要進(jìn)行修改,如果是其他類型,如枚舉等,則要在程序中手動(dòng)轉(zhuǎn)換。例1:例2:(c) assertTrue是常用的判斷結(jié)果的斷言,判定result.isSuccess()是否為true,即測(cè)試方法是否正常執(zhí)行通過(guò)。另外還可能用assertNotNUll()等斷言進(jìn)行判斷。(d) 對(duì)于異常場(chǎng)景測(cè)試方法:基本改動(dòng)跟正常場(chǎng)景是一樣的,但是由于異常場(chǎng)景測(cè)試會(huì)出現(xiàn)很多參數(shù)為空,為null的情況,所以自動(dòng)生成的腳本會(huì)添加一部分根據(jù)是否為null的判斷,如下圖:(e) 在異常測(cè)試腳本中/TODO:DEL標(biāo)簽內(nèi)的語(yǔ)句可以刪掉,一般使用斷言的assertFalse(),assertNUll()來(lái)測(cè)試,還需要測(cè)試返回的錯(cuò)誤代碼是否正確還有一點(diǎn)需要交代的是,有時(shí)候輸入?yún)?shù)中有密碼,實(shí)際方法用到的是密文,所以用例中的明文傳進(jìn)來(lái)需要用進(jìn)行加密處理,否則會(huì)報(bào)錯(cuò)。下圖中紅框內(nèi)即為加密的過(guò)程。6 經(jīng)過(guò)上述操作測(cè)試腳本和用例框架基本搞好了,下面就是要根據(jù)具體方法進(jìn)行測(cè)試用例編寫和腳本編寫。acts框架按照特定類型注入:所以自己引入的其他類對(duì)象要寫成protected,自己定義的靜態(tài)變量類型:private final static int index對(duì)于會(huì)員核心來(lái)說(shuō),由于查詢的數(shù)據(jù)量比較大,很多接口會(huì)有同步到cache的操作,所以在執(zhí)行方法前需要清除一下緩存,具體要清哪個(gè)緩存要以方法用到的緩存為準(zhǔn):cacheClean(cardNo);/清除minicachetaobaoCacheComponent.remove(CachePrefix.MOBILE_BINDING_INFO.getPrefix()+ cardNo);/清除taobaoCache,參數(shù)為對(duì)應(yīng)的key7 在datacenter中要對(duì)自己的測(cè)試用例備份,防止數(shù)據(jù)庫(kù)中其他人的修改。備份的步驟如下:找到resources下的datacenter新建一個(gè).txt文件,里面寫select語(yǔ)句(查出你要備份的用例在數(shù)據(jù)庫(kù)中的表的信息),然后運(yùn)行util里的DBRecoveryUtil.java方法,刷新目錄可見(jiàn)生成的.xml文件最終通過(guò)ImportDataToDB.importDataFromXml(*.xml),在測(cè)試時(shí)直接在數(shù)據(jù)庫(kù)中插入想要的數(shù)據(jù)。對(duì)于資金核心測(cè)試來(lái)講,需要在測(cè)試后將數(shù)據(jù)庫(kù)還原,這也需要注意。8 test/resource里以testres.FuncExp和testres.normal開(kāi)頭的都是是我們的測(cè)試數(shù)據(jù),分別對(duì)應(yīng)異常用例和正常用例。其中的正常用例csv文件又有兩大類,一類是用例數(shù)據(jù),另一類是要校驗(yàn)的數(shù)據(jù)庫(kù)的數(shù)據(jù)。下圖中紅框內(nèi)的為用例數(shù)據(jù),剩余的為校驗(yàn)數(shù)據(jù)。從命名規(guī)則上也能看出來(lái),以要測(cè)試的方法名稱命名的是用例數(shù)據(jù),帶有DBCK.表名的就是要校驗(yàn)的該表的數(shù)據(jù),注意大小寫及命名規(guī)范(當(dāng)然自動(dòng)生成腳本都會(huì)自動(dòng)生成的,但是當(dāng)有些表遺漏需要添加時(shí)可以考慮手動(dòng)添加)Csv文件可以用killinkcsv軟件打開(kāi)進(jìn)行編輯,caseid是自動(dòng)生成的,description里一定要將你這個(gè)用例的情況進(jìn)行詳細(xì)說(shuō)明,方便以后閱讀和review修改,后面的是參數(shù)列表,根據(jù)你所測(cè)試的方法輸入的參數(shù)個(gè)數(shù)自動(dòng)生成,但是具體內(nèi)容要自己根據(jù)用例填寫,最后面的是數(shù)據(jù)庫(kù)校驗(yàn)的路徑,不用操心會(huì)自動(dòng)生成的(*_*) 。對(duì)于數(shù)據(jù)庫(kù)中要檢驗(yàn)的數(shù)據(jù)一般會(huì)比較多,每個(gè)csv文件里會(huì)對(duì)應(yīng)這個(gè)表的所有字段,字段的名稱是自動(dòng)生成的,只是需要補(bǔ)充字段的數(shù)據(jù),這樣填寫的時(shí)候可以到數(shù)據(jù)庫(kù)里拷貝一下,在csv文件里修改相應(yīng)的字段就可以了。粘貼之后要注意,有些字段在數(shù)據(jù)庫(kù)里是空的,但在csv文件里空字段不能通過(guò)校驗(yàn),所以要手動(dòng)補(bǔ)成null。還有特別說(shuō)明的是,flag字段有很重要的意義:C:表示根據(jù)該字段查詢,N:不校驗(yàn)改字段,Y:校

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論