《4-喻春萍-微服務架構下的接口自動化測試平臺探索實踐.pdf》由會員分享,可在線閱讀,更多相關《4-喻春萍-微服務架構下的接口自動化測試平臺探索實踐.pdf(38頁珍藏版)》請在三個皮匠報告上搜索。
1、微服務架構下接口自動化微服務架構下接口自動化測試探測試探索實踐索實踐2023 深圳站喻春喻春萍萍10年軟件測試經驗,曾就職于亞信科技有限公司從事移動boss系統測試,目前就職于中郵消費有限公司。作為測試團隊平臺開發組負責人,主要負責測試管理平臺、自動化測試平臺以及測試工具的建設以及運營推廣中郵消費金融 高級測試工程師嘉賓照片2023 深圳站目錄目錄CONTENTS背景介紹1 2 關鍵關鍵能力與能力與效果效果3 未來展望未來展望4 解決思路2023 深圳站1 1背景介紹背景介紹2023 深圳站自動化程度提升,自動化程度提升,同時不再局限于回同時不再局限于回歸場景,但是否解歸場景,但是否解決了所有
2、問題?決了所有問題?統一框架和編碼規范變更度量口徑,驅動自動化覆蓋率提升測試左移,推動測試先行使用自動化實現通過測試管理平臺,實現腳本與案例綁定,統一管理自動化測試演進自動化起到效果有限,管理維自動化起到效果有限,管理維護困難護困難自動化主要用來回歸各項目自動化框架不統一腳本與案例沒有綁定關系2023 深圳站要解決的問題要解決的問題腳 本 有 效 性 與 質 量腳 本 有 效 性 與 質 量雖然統一了框架和編碼規范,但是還是由各個項目組成員按照各自設計自行維護,腳本的有效性與質量無從驗證開 發 與 測 試 技 術 壁 壘開 發 與 測 試 技 術 壁 壘在測試先行中提供給開發的自動化腳本中,因
3、開發與測試之間的技術壁壘,開發無法確認是腳本問題還是代碼問題,必須依賴測試進一步分析,過程中無形增加很多溝通等待時間人 員 能 力人 員 能 力 差 異差 異團隊內各項目人員能力參差不齊,對于能力較差的人員上手困難,導致各項目自動化程度不一,且全靠人工維護,效率低下回 歸 范 圍回 歸 范 圍 不 精 確不 精 確隨著需求不斷迭代,案例越來越多,新需求修改接口后,無法快速定位到受影響的案例,導致回歸范圍不明確,容易導致漏測或過度測接 口 自 動 化 覆 蓋 面接 口 自 動 化 覆 蓋 面微服務架構下,接口眾多,無法從接口層面評估自動化的覆蓋情況,無法識別重要流程上的接口是否自動化全覆蓋202
4、3 深圳站2 2解決思路解決思路2023 深圳站問題分析問題分析開發與測試協作過程效率低效率低下,質量難以保證接口自動化覆蓋面接口多,人工維護部分接口可能漏掉人員能力差異回歸范圍不精確人工實現實現不一,質量差少回歸質量難以保證過度回歸浪費資源,效率低人工維護,效率低下開發與測試技術壁壘2023 深圳站解決思路解決思路自動化自動化智能化智能化實時獲取接口平臺化的接口定義,并根據預設的規則自動生成案例和自動化腳本,無需人工編寫自動化案例執行過程中,異步獲取案例級別的調用鏈與案例形成綁定關系,當代碼變更時,自動推送回歸案例將接口自動化中各要素拆分成原子操作,對各原子操作進行組件化封裝,形成一個標準的
5、組件庫,用戶可以即用即取通過友好的頁面操作對已封裝好的組件提供靈活編排的能力,屏蔽人員能力差異,技術棧差異平臺平臺化化組件化組件化效率提升質量保證2023 深圳站總體解決總體解決方案方案 構建自動化測試能力中心,提供案例自動生成,低代碼平臺和精準測試能力。通過能力中心對用戶進行賦能,來達到效率提升同時保證質量的目標2023 深圳站3 3關鍵關鍵能力與能力與效果效果2023 深圳站關鍵能力關鍵能力-接口案例自動生成接口案例自動生成案例自動生成要素案例自動生成要素邊界值場景正常功能場景出入參異常校驗場景參數組合場景覆蓋的覆蓋的場景場景2023 深圳站關鍵能力關鍵能力-接口案例自動生成接口案例自動生
6、成案例生成規則案例生成規則 -正 常 格 式(根 據 接 口 定 義 以 等 價 類 方式 隨 機 在 范 圍 內 選 一 組)非 正 常 格 式-對 基 礎 數 據 類 型:s t r i n g,i n t e g e r,b o o l e a n 則 設 計 傳 定 義類 型 數 據 和 非 定 義 類 型 數 據-對 其 他 非 基 礎 字 段 類 型,如 a r r a y,則設 計 傳 0 個,傳 1 個,傳 多 個 -必 填 字 段 不 傳 -必 填 字 段 傳“”-必 填 字 段 傳 n u l l、-正 常 傳 值(以 等 價 類 方 式 傳 一 組)-對 于 最 大 長
7、度 的,傳 的 字 段 比 限 制 的 長 度+1 -對 于 固 定 長 度 的,傳 的 長 度 比 固 定 長 度-1,比 固 定 長 度+1 -邊 界 長 度 -正 常 長 度(等 價 類 方 式 隨 機 在 范 圍 內 選 一 組)必 填必 填字 段 長 度字 段 長 度字 段 類 型字 段 類 型字 段 格 式字 段 格 式特 殊 含 義 字特 殊 含 義 字段段ABCDEF枚 舉枚 舉 -正 常 枚 舉(覆 蓋 所 有 枚 舉 值)-非 正 常 枚 舉 -根 據 特 殊 含 義 字 段 庫 的 設 定 的 規 則 生成 對 應 案 例,如 識 別 是 身 份 證 號 字 段,則生 成
8、 1 8 位 身 份 證 號,1 5 位 身 份 證 號 以 及尾 數 為 字 母 的 身 份 證 號2023 深圳站關鍵能力關鍵能力-接口案例自動生成接口案例自動生成案 例 生 成 算案 例 生 成 算法法A對于參數組合案例則調用生成組合場景案例。該工具根據Pairwise算法來生成案例。B數 據 生 成 規數 據 生 成 規則則1.對于非特定含義的字段則利用組件庫內置函數庫來隨機生成數據,如隨機生成整型,隨機生成字符串2.對于有特定含義的字段,則根據內置函數庫對應函數來生成,如生成客戶號,產品號,身份證號,姓名?;蚴褂迷鞌倒S腳本生成案例模板定義好api模板、前置條件,步驟,后置條件以及斷
9、言格式C自 動 化 案 例自 動 化 案 例模 板模 板2023 深圳站關鍵能力關鍵能力-接口案例自動生成接口案例自動生成 根據API模板自動生成的api文件 根據案例模板自動生成自動化案例2023 深圳站關鍵能力關鍵能力-接口案例自動生成接口案例自動生成 自動生成案例是Pytest框架的,每個案例通過裝飾器來說明案例對應的場景,自動生成案例場景包括,參數長度,參數類型,必填參數校驗,枚舉校驗,參數格式校驗以及組合 參數校驗。2023 深圳站關鍵能力關鍵能力-低代碼低代碼平臺平臺需 要 復 雜 的需 要 復 雜 的前 后 置 條 件前 后 置 條 件的 接 口 場 景的 接 口 場 景無 法
10、生 成 多 接無 法 生 成 多 接口 組 合 的 場 景口 組 合 的 場 景案 例案 例校 驗 接 口 業校 驗 接 口 業務 邏 輯 的 斷務 邏 輯 的 斷言 無 法言 無 法 自 動自 動生 成生 成在自動生成案例的基在自動生成案例的基礎上搭建低代碼礎上搭建低代碼平臺平臺 接口案例自動生成能解決部分問題,但并不能解決所有問題,其無法解決的問題有沒其他有替代方案呢?接 口 案 例 自 動 生接 口 案 例 自 動 生成 無 法 解 決 的成 無 法 解 決 的 問問題題2023 深圳站關鍵能力關鍵能力-低代碼低代碼平臺平臺平 臺 使 用平 臺 使 用 流 程流 程 通過頁面編排的形式符
11、合用戶的行為習慣,更直觀更易于理解 沒有技術能力要求,即使沒任何代碼基礎也能使用 通過平臺編排的自動化案例要素都已進行原子化拆分,格式都高度統一,能快速評估案例的有效性 編排的案例都默認與接口形成綁定關系,能很好的評估統計各接口的自動化情況2023 深圳站關鍵能力關鍵能力-低代碼低代碼平臺平臺接 口接 口 組 件組 件支持多種接口協議,http,https,dubbo,kafka,且對于kafka可以自定義是生產者還是消費者1數 據 庫數 據 庫 組 件組 件支持多種多種數據庫類型,包括oracle,mysql,mariadb,pg,hbase,as自 定 義 腳 本自 定 義 腳 本/業 務
12、 組 件業 務 組 件由用戶根據自身需求自定義的腳本或封裝好的業務組件,支持在線編輯調試2內 置 腳 本內 置 腳 本系統自帶的內置函數,如隨機生成數據,日期處理,加解密等。34公 共公 共 流 程 組 件流 程 組 件用戶已經編排配置好的子流程,一次配置,無限復用5邏 輯 控 制邏 輯 控 制 組 件組 件包括循環,條件分支判斷,等待,終止循環等,通過邏輯控制組件,可以實現復雜業務場景的配置6前 置前 置/后 置 組 件后 置 組 件某個案例步驟執行前后需執行的操作7日 志日 志 組 件組 件支持用戶自定義日志輸出,支持調試時實時輸出日志9變 量 抽 取變 量 抽 取 組 件組 件抽取請求參
13、數或返回參數中的字段到臨時變量或全局變量中10斷 言斷 言 組 件組 件預期結果校驗,支持響應碼,響應報文,響應時間,數據庫數據,中間件(redis,kafka)等數據的校驗8豐富的組件庫2023 深圳站關鍵能力關鍵能力-低代碼低代碼平臺平臺組件庫 提供的組件1.支持http、https、dubbo和kafka等多種協議2.如果是kafka接口,可以支持用戶定義生產者還是定義生產者還是消費者消費者,如果定義為消費者,可以設置監聽超時時間,監聽筆數,甚至具體想要監聽的數據3.接口調用的測試數據填充可以填充固定值固定值,通過組組件生成的值件生成的值,造數工廠造數工廠產生的數據或者是用戶批量用戶批量
14、上傳的數據集上傳的數據集前置條件可以是以下類型:1.造數工廠造數工廠:造數工廠的腳本2.數據庫操作:數據庫支持oralce,mysql,mariadb,hbase,as,pg等。3.業務組件業務組件:由各項目組根據系統封裝好的一些業務組件4.內置腳本內置腳本:系統內置的一些腳本5.自定義腳本自定義腳本:用戶自定義的一些腳本,可以提供在線編輯調試的功能6.變量抽取變量抽?。撼槿≌埱髤担▓笪捏w,header)的字段值存在自定義的變量中7.等待時間等待時間:如設置多個前置條件時,可以在兩個前置條件之間設置等待,設置后會等待相應的時間才會執行下一個條件斷言校驗可以是以下類型:1.數據庫數據庫:可以根
15、據用戶自定義的sql數據,查詢出需要校驗數據與預期數據進行比對,-響應碼:校驗返回的響應碼是否符合預期2.響應體響應體:響應體的校驗可以校驗整個響應體,也可以校驗響應體中的某個字段。響應體格式支持text,json,xml,3.業務組件業務組件:直接通過各項目組封裝好的業務組件來檢驗4.中間件數據校驗中間件數據校驗:可以校驗kafka、redis中的數據。當是校驗kafka數據時,需指定topic名稱,以及監聽超時時間等信息。當校驗redis數據時,需指定要校驗的key值5.耗時耗時:校驗接口響應的耗時 前置條件單接口案例編排接口調用后置條件斷言校驗前置條件可以是以下類型:1.造數工廠造數工廠
16、:造數工廠的腳本2.數據庫操作:通過數據庫執行的一些操作,數據庫支持oralce,mysql,mariadb,hbase,as,pg等。3.業務組件業務組件:由各項目組根據系統封裝好的一些業務組件4.內置腳本內置腳本:系統內置的一些腳本5.自定義腳本自定義腳本:用戶自定義的一些腳本,可以提供在線編輯調試的功能6.變量抽取變量抽?。撼槿≌埱髤担▓笪捏w,header)或響應報文的字段值存在自定義的變量中7.等待時間等待時間:如設置多個前置條件時,可以在兩個前置條件之間設置等待,設置后會等待相應的時間才會執行下一個條件單接口案例編排:按照操作粒度可以進行原子化拆分為前置條件、前置條件、接口調用、后
17、置接口調用、后置條件、斷言校驗。條件、斷言校驗。用戶只需對各原子操作進行編排接口形成案例。2023 深圳站關鍵能力關鍵能力-低代碼平低代碼平臺臺串 接 口 場 景串 接 口 場 景公 共 流 程 組 件公 共 流 程 組 件內 置 腳 本 組 件內 置 腳 本 組 件串 接 口 子 場 景串 接 口 子 場 景 1 1邏 輯 控 制 組 件邏 輯 控 制 組 件單 接 口 場 景 用單 接 口 場 景 用例例 2 2單 接 口 場 景 用單 接 口 場 景 用例例 1 1串接口場景用例編排:可以以單接口場景用例為原子操作,與組件庫中的一些組件(如公共流程組件,內置腳本組件,邏輯控制組件等)進行
18、編排組合,形成復雜的串接口場景2023 深圳站關鍵能力關鍵能力-低代碼低代碼平臺平臺執 行 報 告執 行 報 告/日 志日 志04任 務 調 度任 務 調 度03定 時 執 行定 時 執 行02手 工 執 行手 工 執 行01隨著自動化程度的提升,對自動化執行效率的要求越來越高,尤其是版本日時,各系統都在全量回歸,又要求在上線之前必須有結果。為了滿足這種高并發的場景,低代碼平臺對自動化案例執行提供分布式調度的能力。2023 深圳站關鍵能力關鍵能力-精準精準測試測試AB執行成功率與環境穩定性強相關,案例量大的情況下,要全部執行通過需要反復重試執行,耗時無法把控金融行業部分業務場景流程長,執行耗時
19、無法通過平臺能力解決,全量執行時,部分系統案例執行耗時達到24小時以上自 動 化 執 行自 動 化 執 行過 程 的過 程 的 問 題問 題引入過程低代碼平臺提供的任務調度能力只能盡可能去提升大并發執行場景下的執行效率問題,但是無法解決案例本身所需執行耗時問題。因此考慮從案例執行量上突破。目前全量回歸的方案只是為了降低漏測導致的生產事故,但是本質上并不是所有案例都在本次迭代中有改動,如果讓人工去識別挑選需要回歸的案例,則全憑借相關測試的經驗,可能還是會因誤判而導致漏測。有沒更智能有沒更智能的方式自動識別本次迭代改動所涉及的案例?因的方式自動識別本次迭代改動所涉及的案例?因此引入了精準測試,通過
20、增量獲取本次迭代需求此引入了精準測試,通過增量獲取本次迭代需求改動的代碼,然后根據調用鏈路與案例的綁定關改動的代碼,然后根據調用鏈路與案例的綁定關系,反向推斷出需要回歸的案例推送給相關測試。系,反向推斷出需要回歸的案例推送給相關測試。2023 深圳站關鍵能力關鍵能力-精準精準測試測試案例執行服務APM服務案例級別調用鏈數據 traceID在業務交易過程中會一值往下傳遞,traceID相同則認為是同一個交易業務調用鏈。通過往traceID注入案例id的方式,獲取到交易業務調用鏈與案例的綁定關系,這個綁定關系是精準測試的基礎數據源。2023 深圳站關鍵能力關鍵能力-精準精準測試測試方法調用鏈路數據
21、靜態代碼分析工具GitLab倉庫拉取源碼靜態語法樹解析對比生成差異代碼影響鏈路和接口基線版本代碼差異git diff差異代碼所在方法靜態代碼解析案例與鏈路綁定關系受影響案例方法調用鏈路數據:使用靜態語法樹解析工具解析代碼獲取方法調用鏈路數據(包括服務對外接口和整條鏈路的關系)。差異代碼所在方法:對比被測提交與基線提交間的代碼差異,解析獲取迭代版本新增/修改/刪除方法。差異代碼影響鏈路和接口:通過差異代碼所在方法和方法調用鏈路數據獲得本次影響的鏈路和接口。通過影響的鏈路與案例的綁定關系,反向找出受影響的案例2023 深圳站關鍵能力關鍵能力-精準精準測試測試影 響 面影 響 面分 析分 析接口變更
22、后直接提醒對應測試負責人做影響面分析,并推送可能受影響案例接 口 定 義 變 更接 口 定 義 變 更對調用鏈數據進行分析,抽取出接口上下游依賴關系,當下游接口定義發生變更時,提醒上游接口測試負責人做影響面分析,并且推送上游接口關聯的案例下 游 接 口 定 義 變 更下 游 接 口 定 義 變 更通過接口案例關聯的調用鏈數據,當調用鏈中的方法的實現邏輯發生變更時,提醒相關負責人做影響面分析,并進行可能受影響案例推薦接 口 實 現 邏 輯 變 更接 口 實 現 邏 輯 變 更分析調用鏈數據,并計算各鏈路中的熱點調用方法,對負責人推送熱點方法關聯案例。如在測試過程中,相關熱點方法邏輯沒有覆蓋,則進
23、行高風險提醒熱 點熱 點 代 碼 方 法代 碼 方 法 變 更變 更2023 深圳站關鍵能力關鍵能力-精準精準測試測試 案例級別調用鏈,以樹狀形式進行可視化展示,方便大家通過調用鏈數據做影響面分析 精準案例推薦:某系統全量自動化案例2273條,某個迭代需求通過精準案例推薦只需回歸82條,大大減少了回歸工作量2023 深圳站效果效果低代碼平臺屏蔽能力差異,技術棧差異,有效減少開發與測試之間溝通成本,以及人工編寫腳本的時間降低人員技能門檻降低人員技能門檻回歸案例更精準,有效保證測試質量,同時因回歸量少了,自然投入時間就少了,整體效率提升20%精準測試縮小回歸范圍精準測試縮小回歸范圍接口一致性案例和
24、腳本自動生成,無需人工編寫,整體效率提升10%減少人工維護減少人工維護時間時間321提質增效2023 深圳站4 4未來展望未來展望2023 深圳站未來展望未來展望添加標題添加標題添加標題添加標題重點案重點案例例自動自動標識標識.自動自動識別識別冗余冗余案例案例缺陷自動缺陷自動定定位位案例庫不斷增長,是否存在冗余案例?不是所有案例都很重要,怎么從業務角度識別哪些案例是重要的?出現問題還需人工排查,是否可以結合調用鏈自動定位出問題代碼?感謝聆聽感謝聆聽CSDN全球最大的中文開發者社區平臺CSDN全球最大的中文開發者社區平臺CSDN創立于1999年全球編程類網站排名第7(來源:Similarweb 2023.04)注冊用戶超過4300萬,覆蓋90%的中文開發者新媒體矩陣粉絲數量超過3100萬超過1000家企業客戶和合作伙伴目前公司員工近800名,分布在北京、長沙、上海、深圳、杭州、成都等城市,并在美國硅谷常設辦事處旗下品牌旗下品牌專業中文IT技術社區:CSDN.NET多媒體專業出版:新程序員開發者專屬移動APP:CSDN APP代碼托管協作平臺:GitCode代碼工具協同平臺:InsCodeIT人力資源服務:科銳??怂关俗W絡高校IT技術學習成長平臺:高校俱樂部