成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

巧用自動化測試組合拳保證產品質量

運維 自動化
“如何保證質量”一直是產品或項目過程中關注的焦點,而測試是產品質量把控環節中非常關鍵的部分。本文結合我們的實踐經驗,總結出一套有效的自動化測試組合拳。

 “如何保證質量”一直是產品或項目過程中關注的焦點,而測試是產品質量把控環節中非常關鍵的部分。本文結合我們的實踐經驗,總結出一套有效的自動化測試組合拳。

一、背景

 

我們的測試工作經歷了以下四個階段。
第一階段,產品需求評審完成,開發團隊實現功能開發,然后草草提測,不寫單元測試。測試人員進行人工測試,沒有工具或系統做輔助,測試用例編寫是在excel或腦圖中呈現。這個階段只對業務熟悉,開發只關注功能實現。
第二階段,產品需求評審完成,開發團隊實現功能開發,寫自身功能相關的單元測試,組長review組內代碼。測試方面,依然處于人工檢測功能測試階段,但開始有一些相關的小工具輔助測試。在兩輪或多輪測試情況下,回歸一直是一個問題,還有分支測試完成,主干回歸的過程,測試環境、預發布環境、灰度環境、線上環境等測試回歸效率很低,人工測試在這方面的不足格外明顯。
第三階段,隨著業務的發展產品功能需要快速上線,同時系統技術不斷迭代,質量也面臨著從未有過的挑戰,人肉戰術不是長久之計。在此階段部門做了很多改進,引入和開發了很多測試輔助工具,如項目管理工具、測試用例管理工具、BUG管理工具、自動發布系統、自動打包等。

 

 

  • 搭建測試用例管理工具,方便編寫及后期跟蹤用例。一輪二輪測試人員如何分配;用例狀態的管理是通過、掛起還是失敗,一目了然。 
  • BUG管理工具,主要是給開發和測試人員使用,通過文字和圖片結合的方式描述功能問題,減少了開發和測試的溝通成本。 
  • 項目方面也開發出項目管理工具,方便查看項目狀態和人力資源情況,在項目中做到很好的呈現。 
  • 在此階段我們開始研發UI自動化測試工具,直觀的想法是減少人工測試成本,提高測試效率。 
  • 自動化部署系統讓開發環境、測試環境、灰度環境和線上環境做到很好的隔離,每個階段更清晰,避免相互干擾引起的問題。 
  • APP方面結合Jenkins可以實現自動打包,測試起來做到了開發和測試都以版本控制系統為主。

 

 

第四階段,因為測試往往是最后一個環節,風險較大,“怎么實現降低風險提高人效,測試用例可以復用”變成了我們這個階段的主要工作。之前的流程是開發完成提測,做一次冒煙。因為我們的產品是互聯網金融APP,APP有服務端開發和前端開發,像web、wap、anroid、IOS等渠道,在研發過程中經常會出現以下場景:

 

  • 需求只是項目中的一小部分,測試問產品要不要全量測?產品擔心這次需求的研發會影響到其他部分,就要求全量測試,于是測試的工期會拉得很長,拉長了需求的整個工期。 
  • 測試抱怨開發的BUG多,還有阻塞流程的BUG,需要等待開發解決BUG后才能繼續測試,導致整個測試工期加長。 
  • 手工測試偶有疏忽造成漏測試的點,需求上線后,客戶反饋BUG。

 

產品上線時間有deadline;測試時間長,擠占開發時間;測試人手不夠;測試的準確性達不到要求...要解決這些問題,必然要做自動化測試方案。
針對業務和測試開發同事的特點,我們從單元測試、接口測試、UI自動化測試三個方面做了有效銜接和可持續使用的自動化測試方案。
服務端開發完成,接口測試開始介入。接口測試前期使用一些小工具,會在小工具里寫一些腳本,來方便測試過程中的功能多次回歸檢驗,是否有更好的方式來做這件事,于是我們搭建了接口自動化系統。之前測試是只對UI界面做功能測試,我們現在還實現了單元測試、UI自動化測試、接口自動化測試。
第五階段,測試團隊全部人員轉型測開,部分成員處在人工測試和自動化測試的邊界上,實際上我們一直在做內訓,讓團隊整體能更快地轉型成為一個測試開發團隊。這個階段對成員要求相對較高,主要技術語言是python,還要對基礎的系統架構及運維知識有更多了解,團隊內部正在開發測試項目看板、重寫用例管理工具、升級接口自動化工具等,后期計劃實現APP多設備管理及測試。還有一些測試沒有提到,但也包括在主流程中,比如安全測試、兼容性測試、分辨率測試等。
目前項目的整體流程是這樣的:

 

 

  • 產品通過DM上傳PRD,參與人員熟悉需求。 
  • 開需求分析會議,確定需求最終版。 
  • 需求定稿后,開發人員抽象基礎功能、編寫UI部分,測試人員通過testlink寫測試用例。 
  • 測試用例編寫完需要產品、開發、測試人員做測試用例評審。 
  • 開發人員根據測試用例,編寫自己具體業務的單元測試用例。前端人員和自動化測試人員制定UI自動化測試點,定義好斷言字典和模擬用戶行為的方法名稱,自動化測試人員編寫自動化測試case。 
  • 開發人員開發的同時,接口測試人員根據接口文檔,編寫接口測試用例。 
  • 所有編碼工作完成,開發人員單元測試通過后,進行接口測試驗證,再進行UI自動化測試驗證。UI自動化測試既要測試當前需求點,也要回歸以往的case。 
  • 驗證都通過后,手工測試人員介入。 
  • 手工測試完畢,自動化CASE反復測試通過的情況下,進行上線。

接下來分別介紹團隊在單元測試、服務層自動化測試、UI層自動化測試的具體技術實現。

二、單元測試

 

 

單元測試是對代碼實現邏輯做測試,整體項目環節比較靠前,所以成本最小也最有效,但對開發人員的綜合能力要求較高。

 

 

前端代碼中,用戶交互的部分交給UI自動化測試,而作為業務基礎的類和方法,適用單元測試,我們項目使用測試庫mocha和斷言庫chai,配合開發工具WEBSTORM,可以非常方便地檢測代碼通過性。比如我們開發的公用方法叫tools.js,使用mocha來測試它的文件是tools.test.js,如下圖:

 

巧用自动化测试组合拳保证产品质量

三、UI自動化測試

 

UI自動化測試的目標有兩個:回歸測試和測試準入,也就是開發完畢后,必須通過UI自動化的測試,方可進入手工測試階段,以節省手工測試的工作量,縮短測試工期。
UI自動化測試的難點在于產品多變,而case和UI是強關聯,如果UI變更,就會導致Case失效。如何解決case的穩定性,使之不受UI的影響,成為我們的重要目標。經過反復嘗試,我們選擇了這樣的方案。
測試工具對dom的選取,不再使用ID或者XPATH,而由前端人員在頁面上定義專門用于UI自動化的屬性,測試工具需要的斷言也由前端人員在場景觸發時輸出到頁面中供測試工具抓取。測試工具和前端代碼維護共同的字典,保證雙方取值的正確性。我們在每個頁面都有一個ID名為assertWord的隱藏div,用來存放斷言的值供測試工具抓取,用戶不同操作的時候,會去更改這個值。

 

3.1 拿風險測評頁舉例

 

我們共用的字典如圖:

巧用自动化测试组合拳保证产品质量

進入頁面的時候,會有

巧用自动化测试组合拳保证产品质量

測試工具抓取到riskPage,說明進入到了風險測評頁。當用戶勾選完選項提交問卷后,如果接口返回正確,前端代碼如下:

巧用自动化测试组合拳保证产品质量

我們在彈出結果的時候,去更改assertWord的值,供測試工具斷言。

巧用自动化测试组合拳保证产品质量

巧用自动化测试组合拳保证产品质量

 

 

通過前端給測試工具拋值的方式,做到了case和UI的解耦。我們選擇前端來處理的原因是:UI改變也是前端來做,拋值也是前端來做,同一個人做相比前端和測試兩個人做,避免了溝通產生的疏漏。
另外,對于用戶操作的模擬,有時候測試工具不如前端編寫方便,比如這個風險測評頁面有很多道題目,測試工具要是模擬用戶挨個答題,相當費時間,而前端則只需要很少的代碼就能完成,如圖:

 

 

巧用自动化测试组合拳保证产品质量

所以我們編寫了很多模擬用戶行為的方法,供測試工具調用。

巧用自动化测试组合拳保证产品质量

 

目前UI自動化測試已實現了web平臺化,功能測試人員通過web頁面來組織、編輯、執行RFW(robotFrameWork)測試用例腳本,將測試用例的管理和執行統一到系統中。與傳統的自動化測試相比,支持協同工作、分布式測試執行,提高了測試效率,同時也避免了功能測試人員在本地搭建一系列測試環境。

 

3.2 技術選型

 

1)web框架:Flask
簡述:Flask是一個使用Python編寫的輕量級Web應用框架。
優點:

 

  • 輕巧,相較于大型框架Django,flask更適合小型web項目。
  • 簡潔,不需要復雜的分層和邏輯,框架內建了很多功能。
  • 入門簡單,即便沒有多少web開發經驗,也能很快做出網站。

 

2)分布式任務隊列:Celery
簡述:Celery 是一個分布式隊列的管理工具, 可以用Celery提供的接口快速實現并管理一個分布式的任務隊列。
優點:

 

  • 簡單,熟悉了celery的工作流程后,配置和使用還是比較簡單的。
  • 高可用,當任務執行失敗或執行過程中發生連接中斷,celery會自動嘗試重新執行任務。
  • 快速,一個單進程的celery每分鐘可處理上百萬個任務。
  • 靈活,幾乎celery的各個組件都可以被擴展及自定制。

 

3)測試框架:Robot Framework
簡述:Robot Framework是一個基于Python的、可擴展的關鍵字驅動的測試自動化框架,用于端到端驗收測試和驗收測試驅動開發。
優點:

 

  • 門檻低,通過使用關鍵字驅動測試(KDT)方法簡化了自動化測試過程,方便測試人員創建易讀的測試。
  • 易于擴展,可以自定義測試庫。
  • 功能全面,支持WEB測試、SSH、telnet、API接口多種測試方式。

 

4)UI測試庫:SeleniumLibrary
簡述:SeleniumLibrary是針對Robot Framework開發的Selenium庫,它也是Robot Framework下最流行的庫之一,主要用于編寫Web UI自動化測試。
優點:

 

  • 多瀏覽器支持,包括Firefox、Chrome、IE、Opera、Safari。
  • 多平臺支持,包括Linux 、windows、Mac。
  • 多語言支持,包括Java、Python、ruby、PHP、C#、JavaScript。

 

 

3.3 平臺架構圖

 å·§ç”¨è‡ªåŠ¨åŒ–æµ‹è¯•ç»„åˆæ‹³ä¿è¯äº§å“è´¨é‡

3.4 各個功能模塊

 

 

1)測試數據構造
測試人員可以根據測試需求獲取測試數據,簡化測試步驟提高測試效率。

 

 

巧用自动化测试组合拳保证产品质量

 

 

2)Mock服務切換
該模塊為了滿足一些特殊測試場景,將待測服務調用第三方平臺的請求轉發到Mock server,以此來模擬那些服務,提供數據進行測試。

 

 

巧用自动化测试组合拳保证产品质量

 

 

3)UI測試腳本編輯
腳本的創建與編輯完全是通過頁面操作的,平臺展示頁面清晰、簡潔,支持協同工作。編輯頁面仿照Robot Framework官方的Ride編輯軟件,用類Excel表格的方式創建測試用例,同時支持關鍵字搜索、參數和使用提示,降低測試人員使用平臺門檻。

 

 

巧用自动化测试组合拳保证产品质量

巧用自动化测试组合拳保证产品质量

腳本中使用的關鍵字分為兩種:引用的Library和resource。library為第三方庫,resource為自定義關鍵字集合。Resource關鍵字給我們提供的是一種類似于“函數”概念的用戶自定義機制。我們可以將一些通用的業務過程封裝為一個關鍵字,在編寫測試用例時直接調用。一旦業務過程發生變化,我們只需要更改關鍵字中的業務邏輯即可,而不必更改每個測試用例。編寫自定義關鍵字需要考慮它的健壯性、合理性,所以在任務的分配過程中這部分的編寫都是由具有一定編程思想的測試人員實現的。

巧用自动化测试组合拳保证产品质量

 

 

4)UI測試腳本運行
測試執行需要選擇腳本、測試環境和Mock地址(可選)。運行過程中可以實時查看任務隊列中的執行狀態和歷史任務的測試報告。

 

 

巧用自动化测试组合拳保证产品质量

巧用自动化测试组合拳保证产品质量

3.5 UI自動化測試架構圖

巧用自动化测试组合拳保证产品质量

四、接口測試

 

接口測試主要的作用是提前降低風險,不至于等到APP端開發完成才發現問題,越往后時間成本和開發成本越高,風險越大。在多團隊協作項目工期緊張的情況下,發現較大問題再調整產品需求幾乎是不可能的,此類問題很消耗團隊士氣,團隊被突如其來的問題影響,很容易被打亂節奏。在服務端開發完成提測,服務端測試可以有效攔截到一半左右的問題,很大程度降低風險,提高人效。
在我們的項目中具體實施步驟如下:

 

  • 產品通過DM上傳PRD,參與人員熟悉需求。 
  • 開需求分析會議,確定需求最終版。 
  • 需求定稿后,開發人員抽象基礎功能、編寫UI部分,測試人員寫測試用例。 
  • 測試用例編寫完需要產品、開發、測試人員做測試用例評審。 
  • 開發人員根據測試用例,編寫自己具體業務的單元測試用例。前端人員和自動化測試人員制定UI自動化測試點,定義好斷言字典和模擬用戶行為的方法名稱。自動化測試人員編寫自動化測試case。 
  • 開發人員開發的同時,接口測試人員根據接口文檔,編寫接口測試用例。- 所有編碼工作完成,開發人員單元測試通過后,進行接口測試驗證,再進行UI自動化測試驗證。UI自動化測試既要測試當前需求點,也要回歸以往的case。 
  • 驗證都通過后,手工測試人員介入。 
  • 手工測試完畢,自動化CASE反復測試通過的情況下,進行上線。

 

同樣接口自動化測試也實現了web平臺化,支持自動化測試全流程,覆蓋測試環境管理、測試項目管理、測試腳本開發、測試執行、測試報告生成等流程。平臺具有良好的擴展性、易維護性,支持異步執行、定時任務,能與企業郵件系統集成發送測試報告,同時在項目不斷迭代的過程中,測試用例能彈性調整和復用。

 

4.1 技術選型

 

1)web框架:Django
簡述:最流行的python web框架,采用了MVC的框架模式,提供全套的web開發解決方案。
優點:

 

  • 功能完善,自帶大量的常用工具,可以快速開發。 
  • 開源框架,有完美的文檔支持。 
  • 自帶后臺管理系統,只需要幾行配置和代碼就可以實現一個完整的后臺管理系統。 
  • 路由映射,具有完整強大的路由映射功能,使用正則表達式使路由配置更加靈活、簡潔。 
  • App設計理念,App是可插拔的,不需要了可以直接刪除,對系統整體影響不大。

 

2)分布式任務隊列:Celery
簡述:Celery 是一個分布式隊列的管理工具, 可以用Celery提供的接口快速實現并管理一個分布式的任務隊列。
優點:

 

  • 簡單,熟悉了celery的工作流程后,配置和使用還是比較簡單的。 
  • 高可用,當任務執行失敗或執行過程中發生連接中斷,celery會自動嘗試重新執行任務。 
  • 快速,一個單進程的celery每分鐘可處理上百萬個任務。 
  • 靈活,幾乎celery的各個組件都可以被擴展及自定制。

 

3)測試框架:HttpRunner2.0
簡述:HttpRunner是一款面向 HTTP(S) 協議的通用測試框架,只需編寫維護一份YAML/JSON腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。
優點:

 

  • 繼承Requests的全部特性,輕松實現HTTP(S)的各種測試需求。 
  • 采用YAML/JSON的形式描述測試場景,保障測試用例描述的統一性和可維護性。 
  • 借助輔助函數,在測試腳本中輕松實現復雜的動態計算邏輯。 
  • 支持完善的測試用例分層機制,充分實現測試用例的復用。 
  • 結合Locust框架,無需額外的工作即可實現分布式性能測試。 
  • 極強的可擴展性,輕松實現二次開發和Web平臺化。

 

 

 

4.2 接口自動化平臺架構圖

巧用自动化测试组合拳保证产品质量

4.3 各個功能模塊

 

 

1)項目管理
用例以項目為維度進行管理,可以對項目進行增、刪、改、查。創建項目需要添加一些簡要描述信息,在項目列表頁面可以選擇單個或多個項目運行。

 

 

巧用自动化测试组合拳保证产品质量

 

 

2)模塊管理
按照待測接口所屬功能模塊進行創建,支持模塊的增、刪、改、查。創建模塊必須指定所屬的項目,在模塊列表頁面可以選擇單個或多個模塊運行。

 

 

巧用自动化测试组合拳保证产品质量

 

 

3)用例管理
支持用例的增、刪、改、查,創建的用例必須指定所屬的項目和模塊。用例的整體結構包括局部變量定義、請求響應hook配置、請求接口URL、請求數據、請求Header、接口斷言和接口返回值的抽取

 

 

巧用自动化测试组合拳保证产品质量

巧用自动化测试组合拳保证产品质量

巧用自动化测试组合拳保证产品质量

 

4)配置管理
配置內可定義全局變量和全局hook,支持配置的增、刪、改、查。
5)測試套件
通過測試套件,將服務于同一個測試目的或同一運行環境下的一系列測試用例有機的組合起來。支持測試套件的增、刪、改、查。

 

巧用自動化測試組合拳保證產品質量

巧用自動化測試組合拳保證產品質量

 

6)Json Schema管理
接口測試斷言部分采用Json Schema進行json數據內容校驗。每個接口對應著一個Json Schema的配置。支持增、刪、改、查。

 

巧用自動化測試組合拳保證產品質量

 

 

巧用自動化測試組合拳保證產品質量
7)報告管理
支持測試報告的可持久化存儲,可以在線查看、下載和刪除。報告基于extentreport實現。

 

 

巧用自動化測試組合拳保證產品質量

巧用自動化測試組合拳保證產品質量

8)測試環境管理

 

錄入新的測試環境信息,支持增、刪、改、查。

 

巧用自動化測試組合拳保證產品質量

 

9)用例執行
執行方式分為同步和異步兩種,可以按照項目、模塊、用例和測試套件執行。手動觸發需要選擇運行環境和執行方式,定時任務執行支持添加項目級別和模塊集合,遵循crontab表達式。

 

巧用自動化測試組合拳保證產品質量

巧用自動化測試組合拳保證產品質量

4.4 接口自動化測試架構圖(引自官方文檔)

巧用自動化測試組合拳保證產品質量

【本文是51CTO專欄機構宜信技術學院的原創文章,微信公眾號“宜信技術學院( id: CE_TECH)”】

戳這里,看該作者更多好文

 

 

責任編輯:張燕妮 來源: 宜信技術學院
相關推薦

2022-07-28 09:54:41

Testin

2020-12-15 11:14:55

物聯網工業4.0數據

2014-03-27 09:57:33

BorlandSilk組合

2017-05-31 11:57:17

云計算小鳥云質量

2020-02-26 12:03:36

代碼漏洞產品質量

2022-08-01 15:43:00

性能指標軟件開發

2017-05-26 10:45:49

云計算公有云質量

2019-08-26 10:10:37

物聯網技術數據

2019-08-21 14:08:21

物聯網維護性維護傳感器

2009-06-09 16:44:39

布線產品檢驗

2012-11-05 10:51:08

2013-03-26 10:57:58

H3CCMMI4認證IP網絡設備

2014-08-12 16:38:03

無線網絡Meru

2020-07-08 13:27:59

開源自動化測試框架

2021-07-16 14:12:57

數字化

2009-03-26 08:39:41

微軟Windows 7操作系統

2017-08-29 09:57:26

SaaS產品自動化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区 | 欧美精品在线播放 | 五月天天丁香婷婷在线中 | 久久国产亚洲 | 国产精品国产三级国产aⅴ原创 | 亚洲成人一区二区三区 | 午夜精品视频 | 成人免费大片黄在线播放 | 不卡视频一区二区三区 | 高清欧美性猛交xxxx黑人猛交 | av天天看| 一级黄色片美国 | 国产高清在线视频 | 亚洲欧美中文日韩在线 | 色精品视频 | 91精品国产一区二区三区 | 亚洲黄色国产 | 欧美一区二区三区在线视频 | 正在播放国产精品 | 一区二区免费 | 夜夜摸天天操 | 亚洲综合无码一区二区 | 免费一级毛片 | 中文字幕在线第一页 | 国产一区二区在线91 | av网站免费看 | 日韩av看片| 精品一区在线 | 国产91在线 | 欧美 | 欧美一级在线免费观看 | 91视频免费观看 | 亚洲精品免费视频 | 午夜一区二区三区视频 | 久久天堂网 | 国产2区| 欧美综合一区 | 久久久精品一区 | 国产免费看| 精品三区| 国产精品大片 | 国产精品呻吟久久av凹凸 |