需求來源:在項目中孕蝉,需要對UI進行測試屡律,確保UI邏輯的正確性。在UI邏輯測試中降淮,用例的編寫是一個”勞動密集“型任務(wù)超埋,需要一邊操作,一邊編寫用例的步驟佳鳖,為了能夠清晰準(zhǔn)確的描述操作霍殴,還需要很多輔助描述信息。如果考慮到后期的回歸測試系吩,以及UI修改變更維護来庭,這個事情將嚴(yán)重影響團隊的測試效率。
目標(biāo)
人工操作是不可避免的穿挨,在產(chǎn)品發(fā)布后月弛,人工必須將所有功能都執(zhí)行一次肴盏。如果能夠?qū)⑷斯?zhí)行動作自動轉(zhuǎn)換為用例操作步驟,那么將極大提高測試效率帽衙。事實上叁鉴,已經(jīng)存在一些類似工具,例如比較知名的QTP佛寿。核心概念就是記錄-回放幌墓。
既然已經(jīng)存在了相關(guān)工具,重新設(shè)計的意義何在冀泻?主要有兩大原因:一常侣,現(xiàn)有工具是國外產(chǎn)品,版權(quán)存在限制弹渔,在當(dāng)今國際形式下胳施,存在極大的版權(quán)風(fēng)險;二肢专,現(xiàn)有工具開放性不足舞肆,擴展性差,不適合自身使用需求博杖。
與國外現(xiàn)有工具相比椿胯,本工具將主要滿足以下特點:
- 支持與禪道進行用例管理集成;
- 支持基于圖形剃根、句柄哩盲、文字識別多種方式進行記錄;
- 支持快捷鍵模式切換狈醉;
- 支持快捷鍵添加結(jié)果驗證廉油;
- 支持記錄、回放擴展苗傅,以應(yīng)對不同應(yīng)用場景抒线;
- 支持多端應(yīng)用測試;
- 針對大型項目渣慕,能夠進行多人協(xié)作用例設(shè)計嘶炭;
核心點:
- 擴展性,支持不同執(zhí)行記錄摇庙、回放實現(xiàn)旱物;
- 開放性,能夠與不同項目管理平臺集成卫袒;
- 高效性宵呛,通過快捷鍵將用例設(shè)定操作集成在被測系統(tǒng)使用過程中;
- 多人協(xié)作夕凝;
- 統(tǒng)一性宝穗,實現(xiàn)多端統(tǒng)一户秤,支持桌面、web逮矛、手機APP鸡号、嵌入式。
整體設(shè)計
流程劃分
在記錄-回放模式下须鼎,主要有三個核心流程:執(zhí)行記錄鲸伴、記錄編輯、記錄回放晋控。執(zhí)行記錄汞窗,主要根據(jù)用戶執(zhí)行,自動生成“記錄”赡译,也就是自動化執(zhí)行的腳本仲吏。記錄編輯,是針對自動生成“記錄”的編輯過程蝌焚,目的是刪除記錄中的冗余動作裹唆,提升記錄的魯棒性。記錄回放只洒,是針對記錄的自動執(zhí)行许帐。
其中,執(zhí)行記錄與記錄回放是系統(tǒng)的核心流程红碑,影響了系統(tǒng)的可用性舞吭,記錄編輯影響了系統(tǒng)的易用性。
業(yè)務(wù)概念
在系統(tǒng)測試中析珊,用例主要源于需求,同一個用例可以覆蓋率多條需求蔑穴,同一需求也可以由多條用例覆蓋滿足忠寻。需求與用例之間是一種多對多的關(guān)系。一個用例由多個執(zhí)行步驟組成存和,執(zhí)行步驟是用例的最小組成單元奕剃。在用例描寫中,存在前置條件的設(shè)定捐腿,前置條件可看作一組共用的執(zhí)行步驟纵朋,從這個維度來講,用例完全由執(zhí)行步驟組成茄袖。
在本系統(tǒng)中操软,存在四個業(yè)務(wù)概念:執(zhí)行步驟、執(zhí)行邏輯宪祥、用例聂薪、可變參家乘。執(zhí)行步驟是可被多個用例復(fù)用的基本操作單元。執(zhí)行邏輯是對執(zhí)行步驟的組合藏澳,包含執(zhí)行控制邏輯仁锯,分支、循環(huán)翔悠。用例是執(zhí)行步驟與執(zhí)行邏輯的組合业崖,精確的描述了執(zhí)行過程。可變參代表了執(zhí)行步驟蓄愁、執(zhí)行邏輯双炕、用例中可被修改變化的內(nèi)容,是用例自動化執(zhí)行的核心涝登,在執(zhí)行步驟中雄家,可變參體現(xiàn)在輸入信息的可變,在執(zhí)行邏輯中胀滚,可變參體現(xiàn)在控制邏輯(例如趟济,循環(huán)次數(shù))的可變中。
體系架構(gòu)
頂層架構(gòu)
從目標(biāo)需求(多人協(xié)作)與業(yè)務(wù)邏輯(執(zhí)行步驟復(fù)用)出發(fā)咽笼,系統(tǒng)整體架構(gòu)為C/S架構(gòu)模式顷编,服務(wù)器主要用于測試數(shù)據(jù)(主要指執(zhí)行步驟、用例)管理剑刑,客戶端主要用例產(chǎn)生媳纬、訪問、執(zhí)行記錄數(shù)據(jù)施掏,以及與第三方管理平臺進行數(shù)據(jù)集成钮惠。
頂層數(shù)據(jù)流架構(gòu)
系統(tǒng)與第三方系統(tǒng)集成時,主要的交互數(shù)據(jù)是用例七芭。用例數(shù)據(jù)將以兩種形態(tài)存在素挽,一種是由執(zhí)行邏輯與執(zhí)行步驟生成的執(zhí)行描述文件(包含用例唯一ID,以及執(zhí)行步驟描述)狸驳;另一個是精確的邏輯執(zhí)行文件预明,包含了即時凍結(jié)狀態(tài)(即支持歷史版本使用,當(dāng)然也支持最新版本標(biāo)記使用)的執(zhí)行步驟耙箍、執(zhí)行邏輯撰糠、資源文件等。
用例與第三方平臺是否同步辩昆,由系統(tǒng)使用者決定阅酪。第三方平臺用戶登錄信息,只保存于客戶端本地數(shù)據(jù)中,更換機器后遮斥,需要重新輸入峦失。
系統(tǒng)分層架構(gòu)
系統(tǒng)主要功能集中于客戶端,所以將主要針對客戶端進行細節(jié)闡述术吗。系統(tǒng)將主要構(gòu)建為四層尉辑,從上到下分別為:業(yè)務(wù)層、擴展層较屿、業(yè)務(wù)基礎(chǔ)層隧魄、基礎(chǔ)層。基礎(chǔ)層隘蝎,主要是公共基礎(chǔ)服務(wù)模塊的封裝购啄,例如日志。業(yè)務(wù)基礎(chǔ)層嘱么,是與項目相關(guān)性極大的基礎(chǔ)模塊封裝狮含,例如鼠標(biāo)事件監(jiān)控模塊。擴展層曼振,是針對業(yè)務(wù)基礎(chǔ)層中模塊的擴展几迄,例如基于圖像處理的屏幕對象識別擴展實現(xiàn)。業(yè)務(wù)層,針對業(yè)務(wù)要求冰评,實現(xiàn)記錄-回放映胁。業(yè)務(wù)層,在細節(jié)上甲雅,又被劃分為三個小層解孙,分別為UI層、業(yè)務(wù)擴展層抛人、業(yè)務(wù)邏輯層弛姜。
在系統(tǒng)實現(xiàn)中,業(yè)務(wù)基礎(chǔ)層與擴展層包含的主要模塊有:交互監(jiān)控模塊妖枚、交互控制模塊娱据、對象識別模塊、記錄生成模塊盅惜、記錄執(zhí)行模塊、數(shù)據(jù)管理模塊忌穿。業(yè)務(wù)層包含的主要模塊有:執(zhí)行記錄模塊抒寂、業(yè)務(wù)交互模塊、用例編排模塊掠剑、業(yè)務(wù)擴展模塊屈芜、用例編輯執(zhí)行系統(tǒng)。
關(guān)鍵業(yè)務(wù)操作流程
核心操作流程如下:
- 新建/打開項目;
- 新建用例井佑;
- 選擇/新建属铁、記錄執(zhí)行步驟;
- 重復(fù)3躬翁,直到完成所有執(zhí)行步驟焦蘑;
- 編輯執(zhí)行邏輯(工作流引擎圖形式);
幾個要點說明:
- 選擇一個已經(jīng)存在的執(zhí)行步驟時盒发,設(shè)置可變參后例嘱,自動執(zhí)行該執(zhí)行步驟;
- 在已存在的用例中宁舰,在某執(zhí)行步驟前拼卵,打開/新建執(zhí)行步驟時,執(zhí)行步驟可針對后續(xù)執(zhí)行步驟(一個或多個)設(shè)定插入蛮艰、替換腋腮、分支等操作;
- 在記錄編輯中壤蚜,應(yīng)能單獨執(zhí)行某執(zhí)行步驟即寡,對于快速編輯記錄有重要意義。
關(guān)鍵技術(shù)
在本項目中仍律,核心難點是對象的識別與匹配嘿悬,如何能夠高效、準(zhǔn)確水泉、高魯棒的進行對象識別善涨、匹配,是本項目可用性中最大的影響因素草则。
后注
本文是針對UI自動化工具的一個思考钢拧,是一個開端,既不完整也不完善炕横。一個完整的設(shè)計源内,應(yīng)該具有以下特點:
- 充分的領(lǐng)域調(diào)研;
- 需求驅(qū)動的架構(gòu)設(shè)計份殿;
- 架構(gòu)設(shè)計不僅是空間完整膜钓,還應(yīng)該是時間完整的。
前兩點應(yīng)該沒有疑問卿嘲,很好理解颂斜。針對第三點,空間完整主要指拾枣,架構(gòu)設(shè)計應(yīng)該要包含細節(jié)沃疮,能夠充分展示最終系統(tǒng)的設(shè)計細節(jié)盒让,而不應(yīng)該僅僅是幾個模塊組成、交互圖司蔬,時間完整主要指邑茄,架構(gòu)設(shè)計應(yīng)該指示演進過程。一個復(fù)雜系統(tǒng)俊啼,并不是一下完成所有細節(jié)肺缕,而是經(jīng)過多次迭代,逐步完善的過程吨些。
針對以上不足搓谆,我將在另一篇文章中,進行更加完整的描述豪墅。