iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0
Software Development

QA 三十天養成日記系列 第 18

[Day 18][Web 自動化]從零開始,我想建置 Robot framework 專案架構,該如何分配檔案層級?

  • 分享至 

  • xImage
  •  

在很多時候近到公司後,可能會發現已經有前人把專案建置完成,可能有前輩可以手把手教學、可能有留下的完整的文件可以閱讀 等等,這時候熟悉專案就會容易許多。
但其實在很多時候也會遇到 團隊剛成立 或者 技術轉型 階段
就會需要面臨從無到有的建構專案過程,就會需要了解 如何建置專案才是最適合團隊 的情況。


建置專案前你應該要準備

如果今天你是要從無到有的建置自動化框架架構的話

  1. 你會需要足夠了解各大自動化框架的特性及優缺點
  2. 你會需要足夠了解團隊內的技術取向及能力
  3. 你會需要足夠了解團隊內彼此協作方式
  4. 需要整合上述三點並評估是否適合目前團隊

專案整體檔案架構

每間公司建置的專案檔案層級一定都不太一樣
這邊我先列出大致上 Robot framework 檔案層級方向,剩餘可再依照自己團隊內工作方式調整

- 你的專案名稱
    - lib 
        - XXXXX.py
        - keyword_XXXX.robot
        - keyword_XXXX.robot
        - ...
    - res
         - location
             - xpath_XXXX.py
             - ...
        - src
             - XXXXX.json
             - XXXXX.png/jpg/gif
             - ...
    - tests
         - XXXXX.robot
         - ...
    - report
         - log.hmtl
         - output.html
         - report.html
         - screenshot.png
     - init.robot
     - setting.py
     - .gitignore
     - README.md

各檔案層級講解

lib

主要是放各種客製化的 keywords、自製腳本。

客製化的 keywords 名稱前固定加 keywords_ 是為了更好區分所有 .robot
有時候我們會使用搜尋一些 function name 的方式來快速 debug
這時候有檔名有 keywords_ 我就比較可以快速分類出來。

XXXXX.py 為自製腳本
大多是為需要執行特殊的邏輯,主要是測試前的前置動作。
因為有時候有些測試透過 UI 在重新執行跑一次可能會太久,這時候就可以先用 自製腳本 先執行,最後再去測試我們主要驗證的部分。

res

基本上就是放置各種資料來源,這資料夾層級底下的檔案通常是不需要有邏輯。
都是固定資料為主居多。

  • location

    • 主要是放 xpath 的地方,與上方 客製化的 keywords 類似,檔案名稱前面多個 xpath_ 也是為了日後更好找到檔案。
  • src

    • XXXXX.json 可以放一些數據上的假資料,也可以當作是資料緩存的地方(該檔案也可以多個,可依照團隊需求而定)
    • XXXXX.png/jpg/gif 就是放一些固定的圖片,有些測試可能需要上傳圖片之類的。

tests

就是我們常寫測試的地方。
主要都是依照 測試案例 所撰寫的出來測試檔案,基本是都會引用各種 keywords 相組而成。

report

就是專門放測試 log、報表、截圖,都是 robot 執行完後會自動產生的結果。
只是將結果專門放置在同的層級中,會比較好管理。

init.robot

這主要就是放所有的 Library、Resoure、Variables,等於把所有需要引入的東西都放在同一個這個 init.robot 檔案中
然後在各個測試的 .robot 中,直接引入 init.robot
這樣日若需要新增或移除套件時,就統一在這份檔案修改即可
就不需要每個檔案都要更改,增加維護成本。

引入方式大致上如下

*** Settings ***
Library    SeleniumLibrary
Library    BuilInt

Resoure    ./lib/keyword_XXXXX.robot
Resoure    ./lib/keyword_XXXXX.robot

Variables    ./res/location/xpath_XXXXXX.py
Variables    ./res/location/xpath_XXXXXX.py

setting.py

放置全局的共用參數,大多是都固定的參數。
e.g. 測試網址、測試帳號/密碼

.gitignore

就是選擇不要上傳到 git 的檔案。
e.g. 測試報表、假資料、本地安裝的套件 等

README.md

主要可以說明該專案的目的、安裝方式、coding style、執行方式 等等。
想成像是操作手冊也行。


結語

這些層級並不是參考書一樣,只有照著做才是對的,最終還是可能要依照團隊需求而有所改變。
但至少有個範本當參考也是不錯的,也當作是在幫自己釐清一遍。

上方的架構也都是與現在團隊一同討論及參考各種資料而定義出來的
其實也還有蠻多檔案沒打上去的,畢竟不太可能把公司專案 po 上來XDD
但先把大致上的基礎概念整理出來
也希望可以幫助大家

/images/emoticon/emoticon41.gif


上一篇
[Day17][Web 自動化] Robot framework 教學,新手無痛起步!讓你的小專案成為完整體吧!
下一篇
[Day19] [Web 自動化] Robot framework 起手式,快速安裝跟設定
系列文
QA 三十天養成日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言