背景
攜程機票從2018年年中正式引入BDD,至今已3年多,成為內部首選的敏捷開發技術。
是一套基于BDD模式的前端UI自動化測試框架,提供了一系列開箱即用的工具和完善的文檔,現在逐步穩定,成為機票內部首選的BDD-UI-測試框架。
為什么開源
本文將從特性介紹、環境搭建、使用幫助、自定義擴展、持續集成、發版計劃這幾個方面對框架進行介紹。
特性
使用你能夠完成大部分的手機端自動化操作,以下是一些幫助入門的特性描述:
環境搭建使用pip安裝框架,過程中會自動安裝所需的 依賴包
pip3 install flybirds
在Mac/Linux系統下,需要手動賦予adb可執行權限
flybirds create
快速上手運行演示
為了幫助使用,項目創建時,會生成中英文的、iOS演示,方便用戶參考。
features/test/
features/test/android
features/test/android/cn/everything.feature
features/test/android/en/everything.feature
features/test/ios
features/test/ios/cn/everything.feature
features/test/ios/en/everything.feature
以“”為例
執行命令 adb , 檢查設備列表中是否包含測試設備
開始運行
cd {PATH_TO_PROJECT_FOLDER}
flybirds run -P features/test/android
框架會通過中配置的自動下載測試包并安裝(請確保手機已經打開”允許安裝未知來源“ )
運行結果如下
11 features passed, 0 failed, 0 skipped, 0 untested
23 scenarios passed, 0 failed, 0 skipped, 0 untested
117 steps passed, 0 failed, 0 skipped, 0 undefined, 0 untested
Took 5m21.300s
=====================================================================================
Multiple Cucumber HTML report generated in:
/Users/test/my_first_project/report/7eb9162a-9d42-4fde-a5d7-d8d4bca7a8d8/index.html
=====================================================================================
接下來,了解下更多項目細節
項目結構目錄
基礎目錄結構如下
文件文件包含用戶動作,行為特征描述及預期結果的文本,行為特征部分使用語言編寫。
文件,也稱為功能文件,有兩個目的:文檔和自動化測試。
以關鍵字開頭(“功能”、“場景”、“場景大綱”、“當”、“而且”、“那么”……), 文件中的任何位置都允許使用注釋行。
功能() 是被測試功能的一些合理的描述性標題,由場景組成。他們可以選擇有一個描述、一個背景和一組標簽。
背景() 由一系列類似于場景的步驟組成。它允許您向功能的場景添加一些上下文。在此功能的每個場景之前執行。
場景() 標題應該是被測試場景的合理描述性標題,由一系列給定條件的步驟組成
場景大綱( ) 包含功能的詳細描述,可以有一組預期條件和結果來配合您的場景步驟
以下是中文例子
以下是英文例子
step語句模板以下列出了部分模版 | 更多模版查閱語句模板語義
跳轉到 []
跳轉到指定的url地址
等待 [] 秒
等待一段時間
頁面渲染完成出現元素 []
進入新的頁面時檢查指定元素是否渲染完成
點擊 []
點擊指定屬性的元素
在 [] 中輸入 []
在指定選擇器中輸入字符串
向 [] 查找 [] 的元素
向指定方向查找指定屬性的元素
全屏向 [] 滑動 []
全屏向指定方向滑動指定距離
存在 [] 的文案
檢查頁面中存在指定的字符串
存在 [] 的元素
檢查頁面中存在指定屬性的元素
元素 [] 消失
檢查頁面中指定屬性的元素在指定時間內消失
全屏截圖
保存當前屏幕圖像
開始錄屏
開始錄制視頻
結束錄屏
結束錄制視頻
安裝APP []
安裝APP
啟動APP []
啟動APP
Hooks
用戶可在以下文件中定義hooks
pscript/dsl/step/hook.py
標簽(Tags)可以使用tag標記不同的場景,方便有選擇性的運行。
下面是一個例子
運行有特定tag的場景ui自動化測試框架對比,多個用逗號隔開
flybirds run -T tag1,tag2
‘-’開頭表示運行不包含某tag的場景
flybirds run -T -tag
運行前檢查
請確保配置的測試設備能夠正常連接
設備連接 Q&A
iOS設備連接 Q&A
下載安裝測試包
運行參數
在終端輸入以下內容來查看運行項目時支持的操作
flybirds run --help
配置參數
提供了豐富的配置項 | 幫助文檔
必須配置項: 。
連接IOS設備時,需要額外配置、。
報告()報告包含匯總和功能()、場景()的執行結果,對于失敗的場景(),報告中會展示當時的屏幕圖像和視頻, 下面是一個例子。
自定義step語句模板
在編寫的過程中,可能會遇到提供的公共語句不能滿足自身項目的需求,需要自定義語句。比如:需要對接某個內部工具API,此時需要用到自定義語句功能。
自定義語句功能會用到,如果你不了解這門編程語言,也不必要太擔心,因為只會使用到最基礎的語法,這并不會太難。
使用方法
進入項目目錄"/dsl/steps"新建.py文件來編寫自定義語句在/steps/steps.py中該.py文件
示例代碼如下
對于團隊內部通用的自定義功能,可以考慮創建一個 ,支持動態加載,命名包含“--”即可。
自定義框架擴展
理論上BDD-UI- 可以適用在所有端,比如:APP、Web、小程序。
框架的插件式設計模式,保留了良好的擴展,當前版本只開放了APP端支持,未來會逐步開放更多,下面是兩個例子供大家參考。
增加web端擴展
在.下添加自己的web包添加web對應的實現。比如page.py,.py,如果需要增加其他的插件實現類ui自動化測試框架對比,只需要在類中添加對應的名稱。在.event下添加自己的web包。在event.web包下重寫或者新增類,比如重寫run事件可以在.event.web下面添加"run.py",具體實現邏輯可參照已有的run.py。在項目配置文件".json"配置 .值為"web"。
修改當前APP端擴展
其他語種支持
可以支持40幾種語言,在以下文件中增加公共方法的語言配置即可。
flybirds/core/dsl/globalization/i18n.py
示例代碼如下
持續集成
cli提供的命令行執行模式,可以非常方便加入各種持續集成工具.
以為例:
# Inside the jenkins shell command
cd {PATH_TO_PROJECT_FOLDER}
# Run
flybirds run -P ./features/test/everything.feature
cp -R reports $WORKSPACE
發版計劃
我們將按照 版本控制規范進行發版。逐步新增功能和代碼優化,非常歡迎您加入到我們的共建計劃中,在 上提出您的寶貴建議,以及在使用時遇到的一切問題,我們也會對此每周進行一次小版本的迭代。您也可以在這里給我們精神支持,點上一顆 Star。