Selenium Web Driver自動化測試(java版)系列下半部分(34) - 用數(shù)據(jù)驅(qū)動搭建測試框架雛形(7) - 測試框架雛形總結

前幾篇我們模擬了一個測試框架的雛形,用的是Human Resources System測試網(wǎng)站:

重申一遍,框架的設計多種多樣也拜,只要能夠滿足一致性、復用性和擴展性就可以了趾痘。這篇我們就來總結一下寫完的框架慢哈。和開發(fā)一個軟件一樣,自動化測試項目的完成也需要經(jīng)歷好幾個步驟永票。雖然每個公司都有自己的計劃和安排卵贱,但大體情況都差不多。我簡單歸納如下:

你看瓦侮,完成一個項目需要合理規(guī)劃艰赞,并不是直接拿來就編程佣谐,寫代碼之前還有好幾步要做肚吏。首先狭魂,項目分析斋泄。其實項目分析的過程就是熟悉應用以及確定測試模塊的過程炫掐。Hrsystem是一個網(wǎng)站應用募胃,打開后默認來到登錄頁面痹束。登錄頁面上有員工代號祷嘶,密碼烛谊,登錄按鈕晒来。我們可以用三個模擬員工登錄:

便選擇一個登錄進去直接跳轉(zhuǎn)到主頁(Home)湃崩。主頁上有一個員工頭像以及一段歡迎辭攒读。導航欄有四項薄扁,分別指向當前主頁(Home)邓梅,員工信息(Employee),員工工時表(Timesheet)匣距,以及網(wǎng)上商城(OnlineStore)毅待。再簡單瀏覽一下網(wǎng)站尸红。點擊Employee來到員工信息頁面外里,它里面記錄了每一個員工的代號(Employee Code)、姓名(Employee Name)疙咸、最近登錄日期(Last Login Date)撒轮,以及該員工是否還在該公司(Active)题山。代號姓名不用說了;對于Last Login Date來說慨菱,只要你一登錄,最近登錄日期就會變成今天协饲;有些員工離職了或調(diào)走了就不再是Active了茉稠。

接下來點擊timesheet跳轉(zhuǎn)到員工工時表而线,員工的每一條工作記錄都會存在此表中。Roster Date,Roster Start和Roster End指的領導排的班次况凉,也就是計劃上班的日期和時間闷营。Actual Start和Actual End指的是實際上下班的時間速蕊。Comments指的是根據(jù)Roster和Actual的對比提示該員工是否遲到或早退(大部分老板都愛搞這個)。

點擊OnlineStore來到網(wǎng)上商城竿奏,琳瑯滿目的商品绿语,只可惜全是假的。雖然都是假的,但還都有標價泌神。點擊某商品的buy按鈕就會彈出一個頁面讓你選擇顏色材質(zhì)個數(shù),然后就可以放入購物車結賬。

瀏覽了一遍網(wǎng)站蒋失,我們也就知道了它的某些功能。通常情況下導航欄中不同的項目代表不同的功能,是個天然的模塊分割器煮落,所以我也是按導航欄來給測試點分模塊殖蚕。項目的測試點分為四個模塊:

我們的框架中暫時只有登錄模塊和員工模塊,剩下的兩個模塊大家有興趣可以去寫寫,我就不做演示了摘刑。

第二步谭胚,測試用例整理灾而。我們有四個模塊,每個模塊都有幾個需要測試的功能橙困。因為只是演示凡傅,我只挑選了幾個有代表性的測試點作為test case像捶,實際項目中或許老板會讓你面面俱到盡可能覆蓋周全亚隅。Test case如下懂鸵,一般會寫在Excel表里:

每個test case的具體步驟如下:

EmpLogin(登錄):
1. 正常登錄(用戶名/密碼輸入正確)

  1. 打開網(wǎng)站行疏;
  2. 輸入用戶名匆光;
  3. 輸入密碼终息;
  4. 點擊登錄按鈕(斷言點:登錄成功,用戶名與網(wǎng)頁顯示一直時表示登錄成功)贞让;
  5. 點擊退出按鈕(斷言點:退出成功周崭,登錄按鈕再次出現(xiàn)表示退出成功)。

2. 非正常登錄(用戶名/密碼錯誤)

  1. 打開網(wǎng)站喳张;
  2. 輸入用戶名续镇;
  3. 輸入密碼;
  4. 點擊登錄按鈕(斷言點:登錄失敗销部,出現(xiàn)” usercode or password is incorrect”表示登錄失敗)摸航。

3. 非正常登錄(用戶名/密碼為空)

  1. 打開網(wǎng)站
  2. 輸入用戶名;
  3. 點擊登錄按鈕(斷言點:登錄失敗舅桩,彈出對話框”Please enter password”表示登錄失敗)酱虎。

Employee(員工信息):
1. 員工登錄后最后登錄時間字段正確

  1. 打開網(wǎng)站;
  2. 輸入用戶名江咳;
  3. 輸入密碼逢净;
  4. 點擊登錄按鈕;
  5. 登錄成功后在導航欄上點擊Employee(斷言點:登錄員工Last Login Date應與數(shù)據(jù)庫時間均顯示為當天)。

Timesheet(工時表):
1. 按員工姓名搜索工時表

  1. 打開網(wǎng)站爹土;
  2. 輸入用戶名甥雕;
  3. 輸入密碼;
  4. 點擊登錄按鈕胀茵;
  5. 登錄成功后在導航欄上點擊Timesheets社露;
  6. 輸入員工姓名;
  7. 點擊查詢(斷言點:返回被查詢員工的工時表琼娘,且數(shù)量正確峭弟。當工時表上員工姓名和查詢字段一致,并且記錄數(shù)的xpath與期望一致即為查詢正確)脱拼。

2. 查看員工遲到早退

  1. 打開網(wǎng)站瞒瘸;
  2. 輸入用戶名;
  3. 輸入密碼熄浓;
  4. 點擊登錄按鈕情臭;
  5. 登錄成功后在導航欄上點擊Timesheets(斷言點:Roster Time和Actual Time進行對比,具體寫case時細講)赌蔑;

OnlineStore(網(wǎng)上商城):
1. 查看物品被添加到購物車

  1. 打開網(wǎng)站俯在;
  2. 輸入用戶名;
  3. 輸入密碼娃惯;
  4. 點擊登錄按鈕跷乐;
  5. 登錄成功后在導航欄上點擊OnlineStore;

你也可以按照我提供的測試用例來完成工時表和網(wǎng)上商城兩個模塊的開發(fā)趾浅。

第三步愕提,框架選擇(framework selection)。我們用的是Selenium來寫潮孽,這個沒什么疑問揪荣。有些公司基于Selenium自己又開發(fā)新的框架工具,做得比較好的Robot Framework(用Python)往史,Watir(用Ruby)等等仗颈。前三步雖然沒什么技術要求,但它幫你確定了測試模塊和范圍椎例,合理規(guī)劃了整個項目挨决,地位也很重要。

第四步是項目結構定位订歪。我們不斷地在修改加工框架脖祈,最后修成了現(xiàn)在這個樣子:

結構包括以下幾層:

Managers(測試中樞層):最高層,負責測試用例執(zhí)行刷晋、選擇盖高、以及設置測試環(huán)境慎陵,比如用什么driver,打開哪個網(wǎng)站喻奥,執(zhí)行哪些test case席纽。涉及的包是com.testalliance.hrsystem.managers;

Tests(測試用例層):第二層撞蚕,里面包含每個test case以及它們執(zhí)行過程润梯。涉及的包有com.testalliance.hrsystem.tests.login,com.testalliance.hrsystem.tests.employee甥厦。你會發(fā)現(xiàn)我就是按照項目分析得出來的模塊來命名每一個tests子包纺铭;

Page Object(業(yè)務邏輯層):第三層,里面裝了為實現(xiàn)某個功能而寫的方法刀疙,比如登錄(login)舶赔,跳轉(zhuǎn)(navigate),查看(view)等等庙洼,以及該功能實現(xiàn)過程所需要的操作顿痪,也就是關鍵字镊辕,比如點擊(click)油够,輸入(enter),斷言點(verify)征懈。涉及的包是com.testalliance.hrsystem.pageobj石咬;

Obj Repository(Object聲明層):第四層,里面存儲了所有網(wǎng)頁元素的聲明卖哎,在com.testalliance.hrsystem.objrepository中鬼悠;

Utility(功能/應用層):第五層,指的是除業(yè)務邏輯層之外的功能性方法亏娜,比如讀寫文件焕窝、數(shù)據(jù)庫連接、截圖维贺、email測試結果等等它掂。

雛形的結構差不多就是這樣,大家可以根據(jù)自己的需要自行調(diào)整溯泣,方便自己的框架虐秋。總之垃沦,聽你老板的客给。

之后就是寫代碼、代碼檢查和支付了肢簿,基本上就沒什么說的了靶剑。你可以在我們這個框架的基礎上繼續(xù)加工蜻拨,比如用log4j抓運行信息,或是制作一個小的報告桩引,或是重新設計配置文件滿足更高的要求官觅。當然,在修改框架之前我說過阐污,市面上已經(jīng)有很多公司設計了測試框架休涤,它們的功能遠比我寫的這個更豐富、更強大笛辟,大家有空可以去研究研究功氨,相信有了這幾篇的幫助,理解一個框架應該不成問題了手幢。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捷凄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子围来,更是在濱河造成了極大的恐慌跺涤,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件监透,死亡現(xiàn)場離奇詭異桶错,居然都是意外死亡,警方通過查閱死者的電腦和手機胀蛮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門院刁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人粪狼,你說我怎么就攤上這事退腥。” “怎么了再榄?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵狡刘,是天一觀的道長。 經(jīng)常有香客問我困鸥,道長嗅蔬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任窝革,我火速辦了婚禮购城,結果婚禮上,老公的妹妹穿的比我還像新娘虐译。我一直安慰自己瘪板,他們只是感情好,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布漆诽。 她就那樣靜靜地躺著侮攀,像睡著了一般锣枝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兰英,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天撇叁,我揣著相機與錄音,去河邊找鬼畦贸。 笑死陨闹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的薄坏。 我是一名探鬼主播趋厉,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胶坠!你這毒婦竟也來了君账?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤沈善,失蹤者是張志新(化名)和其女友劉穎乡数,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闻牡,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡净赴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了澈侠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劫侧。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哨啃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情写妥,我是刑警寧澤拳球,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站珍特,受9級特大地震影響祝峻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扎筒,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一莱找、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嗜桌,春花似錦奥溺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽相满。三九已至,卻和暖如春桦卒,著一層夾襖步出監(jiān)牢的瞬間立美,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工方灾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留建蹄,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓裕偿,卻偏偏與公主長得像躲撰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子击费,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容