?
前言
隨著軟體測驗技術的發展,人們已經從最初的純粹的手工測驗轉變為手工與自動化測驗技術相結合的測驗方法,近年來,自動化測驗越來越受到人們的重視,對于自動化測驗的研究也越來越多,
背景
專案版本功能日趨增加,系統模塊越來越多,功能趨于完善,此外系統經常更新,測驗人員無法滿足多模塊的測驗需求,測驗壓力日漸增大,尤其在做回歸測驗時,無法確保每次更新后系統都得到完整的回歸測驗,
一、自動化測驗基礎知識
什么是自動化測驗
1、把人為驅動的測驗行為改成機器執行,通過設計的測驗用例,由機器按照測驗用例的執行步驟對其進行自動操作,輸出結果,由測驗人員進行比較,
2、自動化測驗往往通過一些測驗工具或框架,撰寫自動化測驗用例,來模擬手工測驗,
3、自動化測驗能極大的節省人力、時間和硬體資源,提高測驗效率,
自動化測驗的優勢
1、自動化測驗工具可以根據需要,準備大量的測驗資料,
2、可以使用相關腳本技術準備大量的測驗用例,
3、測驗結果有時需要再進行相應的資料處理,
4、可以對大量資料或資料格式進行快速比對,
自動化測驗的劣勢
1、相比手工測驗,自動化測驗對測驗人員的能力要求相對較高,
2、自動化測驗用例需要根據版本迭代進行更新,有一定維護成本,
3、不能指望自動化測驗去發現更多新的BUG,自動化測驗能發現的缺陷遠遠比手工測驗的少,
4、自動化測驗的產出價值往往在于長期的回歸測驗,短期內發揮的作用可能不明顯,
5、自動化測驗不能提高測驗的有效性,只能用于提高測驗的效率,
對于自動化測驗的誤解
1、有了自動化測驗不再需要手工測驗,
2、自動化測驗對有些測驗比如:本地化測驗、用戶體驗測驗、探索性測驗,測驗環境搭建方面并不能完全代替手工測驗,
3、自動化測驗是對產品的運行,對測驗點要有一定的手工測驗基礎,自動化測驗和手動測驗相輔相成,
4、自動化測驗并不僅指自動化運行測驗產品,資料處理也是非常重要的一個環節,
自動化測驗前提條件及原則
1、專案周期長,需求穩定近期未變動,
2、前端開發無需多次修改的頁面,無缺陷遺留的模塊,
3、自動化測驗腳本可重復使用,比較頻繁的回歸測驗(由于模塊較多,暫時回歸測驗范圍限定為模塊主流程),
4、手工測驗難以實作,需要在多平臺上運行相同的測驗案例及大量重復任務,
5、前期自動化實施應避開復雜度極高的模塊
如何實施自動化測驗
1、獲取資訊和測驗需求分析:總體把握系統架構和設計,分析出系統的測驗需求,
2、設計:設計測驗用例,并且挑選出需要自動化實作的測驗用例,
3、實作:撰寫、除錯和實作測驗腳本,
4、執行:執行腳本的程序,需要不斷分析執行程序中的例外,
5、測驗結果分析:分析哪些是Bug,哪些是測驗框架本身的問題,
6、維護:自動化測驗腳本維護是一個難以解決又必須要解決的問題,
7、總結:在自動化測驗程序中總結自動化實踐的投入產出比,
自動化測驗的層次劃分
1、越往上,越接近QA、業務/最終用戶,越往下,越接近開發,
2、越往上,測驗執行越慢;越往下,測驗執行越快,
3、越往上,測驗成本越高(越耗時,失敗時的資訊越模糊,越難跟蹤),越往下,測驗成本越低,

二、自動化測驗工具和框架
常見的自動化測驗的工具
自動化測驗工具開發語言:Java、Python等
基礎測驗工具
(1)單元測驗:junit(java)、unittest(python)
(2)介面測驗:httpclient(java)、restassure(java)、request(python)
(3)UI測驗:selenium webdriver( web )、appium(app)
常見自動化測驗工具
(1)介面測驗:Jmeter、soapui、postman
(2)UI測驗:katalon、Robotframework、Android
自動化測驗腳本技術
1、線性腳本:錄制、回放
2、結構化腳本:含有控制腳本執行的指令,支持順序、選擇和回圈3、共享腳本:可以被多個測驗用例使用,腳本之間可以互相呼叫
3、資料驅動腳本:資料驅動腳本是將測驗輸入存盤在獨立的檔案中,腳本中只存放控制資訊
4、關鍵字驅動腳本:關鍵字驅動腳本實際上是較重復的資料驅動技術的邏輯擴展 ,即測驗用例的執行步驟(操作,操作物件,操作值)存放在檔案中,直接執行
自動化測驗操作的基本原理
1、介面自動化測驗操作
(1)模擬請求 url和報文,準備測驗資料,抓包獲取介面資訊,對介面的一個分析,有檔案或無檔案
(2)模擬客戶端發送 HTTP請求(get、post)
(3)模擬客戶端從服務器接識訓傳報文
(4)驗證回傳結果是否符合預期
2、UI自動化測驗的操作
(1)通過id、name、xpath、cssSelector等方法定位頁面元素(findelement、findelements)
(2)對定位到的頁面元素執行相應的操作( click、input等)
(3)對操作后出現的結果和預期結果做一個比較( assert )
自動化測驗基礎工具原理
Selenium(決議前端代碼與控制瀏覽器)
自動化測驗的PO模式
1、在PO模式中抽象封裝成一個BasePage類,該基類擁有一個只實作webdriver實體的屬性
2、每一個page都繼承BasePage,通過driver來管理本page中元素,將page中的操作封裝成一個個的方法TestCase依賴page類,實作相應的測驗步驟

自動化測驗框架
1、關鍵字驅動
(1)將測驗用例分成四個不同的部分,首先是測驗步驟(Test Step),二是測驗步驟中的物件(Test Object),三是測驗物件執行的動作(Action),四是測驗物件需要的資料(Test Data),
(2)將資料與關鍵字結合來描述如何執行測驗,也就是將測驗用例腳本中的步驟提取出來,放在獨立的資料檔案中,變成簡單撰寫的方式,這種方法具備資料驅動的優勢,同時非編程人員也能建立測驗,
(3)關鍵字驅動的模式是建立在資料驅動手段之上,關鍵字驅動檔案包含指令 (關鍵詞),而不只是資料,
(4)這個測驗框架可以通過很少的代碼來產生大量的測驗用例,同樣的代碼在用資料表來產生各個測驗用例的同時被復用,
2、資料驅動
(1)從某個資料檔案(例如Excel檔案、Xml檔案、Json檔案、資料庫等)中讀取輸入測驗資料,然后通過變數傳入撰寫的測驗腳本中,
(2)資料檔案的讀取、測試狀態和所有測驗步驟都被撰寫進測驗腳本里;測驗資料只包含在資料檔案中,而不是腳本里,測驗腳本只是一個“驅動”,或者說是一個傳送資料的機制,
(3)資料驅動的方法主要用于需要通過不同資料來保證測驗覆寫率的場景,比如被測系統業務邏輯固定不變或變動較小,即測驗用例步驟是固定的,但是所需要的測驗資料是變化的情況,通常來說,資料都是保存在外面檔案或資料庫中,運行時自動獲取,即測驗框架中要支持數,據與腳本分離,一個測驗腳本可以驅動執行多個相似測驗場景,
(4)這個框架意圖減少需要執行所有測驗用例所需要的總的測驗腳本數,資料驅動需要很少的代碼來產生大量的測驗用例,
三、自動化測驗框架的選擇與搭建
1、技術方案
Selenium(Webdriver) + Python(unittest)+ cx_Oracle + HTMLTestRunner
Selenium的WebDriver是一款開源工具,利用比較簡潔的Python語言進行自動化測驗,對于人員的學習成本來講比較實用,學習時間短,有優勢,
Python自帶的unittest單元測驗框架可以很方便的實作自動化用例的設計和執行以及自動化用例套件的管理等任務,Python是純面向物件的語言,后續也可以過渡到Java + Selenium進行更加豐富的自動化測驗;此外,可以選擇Jenkins作為持續集成服務器,配合Python+Selenium的方案進行自動化冒煙測驗,
此方案采用了Page Object設計模式,將頁面、用例、資料三者分離,這樣可以使測驗案例可以更關注與業務而非界面細節,提高測驗案例的可讀性;降低代碼冗余,增加方法的復用性,
2、環境選擇
根據測驗組自動化測驗需求討論結果,在uat、stage環境下使用自動化測驗技術做回歸測驗,(執行前需確保該環境可正常使用)
由于uat、stage環境頻繁發版,影響自動化測驗框架除錯及腳本撰寫,申請一個穩定環境做除錯及撰寫作業,
3、自動化測驗流程
(1)選取模塊
(2)選擇用例(主流程用例)
(3)按頁面撰寫操作方法
(4)按用例撰寫用例流程腳本
(5)按用例撰寫資料查詢方法
(6)執行用例
(7)輸出報告(后期擴展,增加執行日志和例外截圖以便跟蹤缺陷),
綜上,當腳本內容撰寫結束并且業務需求和測驗需求均無更改的時候,執行后兩步操作即可,查看報告內容,如發現缺陷,需按用例內容重現缺陷并提交至禪道管理系統,
4、后續維護
(1)業務需求變更
當業務需求變更時,應在執行用例時越過變更內容用例,變更內容上線后按需求變更內容對腳本及用例進行相應調整,調整結束,需再次執行確保用例穩定,
(2)被測模塊重構
當被測模塊重構完成時,需執行該模塊自動化測驗用例,查看是否正常執行,若無問題出現則不需調整,若出現問題需及時除錯解決,
(3)技術變更
隨著自動化測驗框架的不斷調優、擴展功能,基礎模塊和封裝的頁面等也會隨之變化,進而,自動化測驗需要定期執行,以保證調優、擴展后框架的穩定性,從而達到保障回歸測驗的正常進行,
5、資源調配
(1)環境:
a、專案環境與線上專案近似,獨立發版,版本內容相對穩定,資料庫獨立,不受其它環境影響,
b、本機環境,win7&win10 Chrome 72 32bit,
(2)用戶:獨立用戶,權限盡量調高,以免由用戶權限影響訪問某些功能點,減少用例遺漏,
(3)人員:建立自動化測驗的組,理想狀態下3-4個人員,測驗開發、中高級自動化測驗工程師、初級自動化工程師,
(4)培訓:對初級自動化工程師培訓,設計的框架以及封裝的驅動等,
四、自動化測驗分階段實作
1、搭建基礎版框架,完成一個模塊的自動化測驗demo
采用Page Object設計模式,對頁面元素,用例流程,資料進行封裝隔離,在通用模塊或基礎模塊中對webdriver進行二次封裝,自動生成測驗報告以便分析自動化測驗執行結果,
2、按基礎版框架,擴展測驗范圍
選取適合做自動化測驗的功能模塊,按基礎框架思路撰寫腳本、用例等,然后對框架做擴展,實作資料驅動、定時執行測驗,發送報告郵件等便于使用的非核心功能,
3、覆寫大多數模塊的回歸測驗
根據人員等資源的協調情況,將自動化測驗用例擴展至覆寫大部分模塊回歸測驗的程度,由執行自動化測驗完成回歸測驗,以達到提高回歸測驗的效率,降低回歸測驗人力要求的目的,
小結
自動化測驗技術在現代測驗技術中是有一定優勢的,但是自動化測驗不是在任何情況下都必須的,適當的、或者是有效成本投入,需要我們在合適的時機引入自動化測驗,使手工測驗和自動化測驗實作完美結合,另特意為各位同學準備了一份13G的超實用干貨自學資源,涉及的內容非常全面,涵蓋功能測驗、Linux資料庫、Python編程語言,介面測驗、UI自動化測驗、性能測驗......包括軟體學習路線圖,50多天的上課視頻、16個突擊實戰專案(滿足你對測驗經驗的需求),80余個軟體測驗用軟體,37份測驗檔案,70個軟體測驗相關問題,40篇測驗經驗級文章,上千份測驗真題分享,還有2023軟體測驗面試寶典,還有軟體測驗求職的各類精選簡歷,希望對大家有所幫助…這些都在我的軟體測驗學習交流群里:110685036
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550443.html
標籤:其他
