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

下載本文檔

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

文檔簡介

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

溫馨提示

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

最新文檔

評論

0/150

提交評論