本文共有3963字,快速閱讀需要大約5分鐘,賞味期限持久。 隨著軟件測試技術(shù)的發(fā)展,人們已經(jīng)從最初的純粹的手工測試轉(zhuǎn)變?yōu)槭止づc自動化測試技術(shù)相結(jié)合的測試方法。近年來,自動化測試越來越受到人們的...
本文共有3963字,快速閱讀需要大約5分鐘,賞味期限持久。
隨著軟件測試技術(shù)的發(fā)展,人們已經(jīng)從最初的純粹的手工測試轉(zhuǎn)變?yōu)槭止づc自動化測試技術(shù)相結(jié)合的測試方法。近年來,自動化測試越來越受到人們的重視,對于自動化測試的研究也越來越多。
背景
項目版本功能日趨增加,系統(tǒng)模塊越來越多,功能趨于完善,此外系統(tǒng)經(jīng)常更新,測試人員無法滿足多模塊的測試需求,測試壓力日漸增大,尤其在做回歸測試時,無法確保每次更新后系統(tǒng)都得到完整的回歸測試。
一、自動化測試基礎(chǔ)知識
什么是自動化測試
1、把人為驅(qū)動的測試行為改成機器執(zhí)行,通過設(shè)計的測試用例,由機器按照測試用例的執(zhí)行步驟對其進行自動操作,輸出結(jié)果,由測試人員進行比較。
2、自動化測試往往通過一些測試工具或框架,編寫自動化測試用例,來模擬手工測試。
3、自動化測試能極大的節(jié)省人力、時間和硬件資源,提高測試效率。
自動化測試的優(yōu)勢
1、自動化測試工具可以根據(jù)需要,準備大量的測試數(shù)據(jù)。
2、可以使用相關(guān)腳本技術(shù)準備大量的測試用例。
3、測試結(jié)果有時需要再進行相應(yīng)的數(shù)據(jù)處理。
4、可以對大量數(shù)據(jù)或數(shù)據(jù)格式進行快速比對。
自動化測試的劣勢
1、相對手工測試,自動化測試對測試人員的能力要求相對較高。
2、自動化測試用例需要根據(jù)版本迭代進行更新,有一定維護成本。
3、不能指望自動化測試去發(fā)現(xiàn)更多新的BUG,自動化測試能發(fā)現(xiàn)的缺陷遠遠比手工測試的少。
4、自動化測試的產(chǎn)出價值往往在于長期的回歸測試,短期內(nèi)發(fā)揮的作用可能不明顯。
5、自動化測試不能提高測試的有效性,只能用于提高測試的效率。
對于自動化測試的誤解
1、有了自動化測試不再需要手工測試。
2、自動化測試對有些測試比如:本地化測試、用戶體驗測試、探索性測試,測試環(huán)境搭建方面并不能完全代替手工測試。
3、自動化測試是對產(chǎn)品的運行,對測試點要有一定的手工測試基礎(chǔ),自動化測試和手動測試相輔相成。
4、自動化測試并不僅指自動化運行測試產(chǎn)品,數(shù)據(jù)處理也是非常重要的一個環(huán)節(jié)。
自動化測試前提條件及原則
1、項目周期長,需求穩(wěn)定近期未變動。
2、前端開發(fā)無需多次修改的頁面,無缺陷遺留的模塊。
3、自動化測試腳本可重復(fù)使用,比較頻繁的回歸測試(由于模塊較多,暫時回歸測試范圍限定為模塊主流程)。
4、手工測試難以實現(xiàn),需要在多平臺上運行相同的測試案例及大量重復(fù)任務(wù)。
5、前期自動化實施應(yīng)避開復(fù)雜度極高的模塊
如何實施自動化測試
1、獲取信息和測試需求分析:總體把握系統(tǒng)架構(gòu)和設(shè)計,分析出系統(tǒng)的測試需求。
2、設(shè)計:設(shè)計測試用例,并且挑選出需要自動化實現(xiàn)的測試用例。
3、實現(xiàn):編寫、調(diào)試和實現(xiàn)測試腳本。
4、執(zhí)行:執(zhí)行腳本的過程,需要不斷分析執(zhí)行過程中的異常。
5、測試結(jié)果分析:分析哪些是Bug,哪些是測試框架本身的問題。
6、維護:自動化測試腳本維護是一個難以解決又必須要解決的問題。
7、總結(jié):在自動化測試過程中總結(jié)自動化實踐的投入產(chǎn)出比。
自動化測試的層次劃分
1、越往上,越接近QA、業(yè)務(wù)/最終用戶,越往下,越接近開發(fā)。
2、越往上,測試執(zhí)行越慢;越往下,測試執(zhí)行越快。
3、越往上,測試成本越高(越耗時,失敗時的信息越模糊,越難跟蹤),越往下,測試成本越低。
二、自動化測試工具和框架
常見的自動化測試的工具
自動化測試工具開發(fā)語言:Java、Python等
基礎(chǔ)測試工具
(1)單元測試:junit(java)、unittest(python)
(2)接口測試:httpclient(java)、restassure(java)、request(python)
(3)UI測試:selenium webdriver( web )、appium(app)
3、常見自動化測試工具
(1)接口測試:Jmeter、soapui、postman
(2)UI測試:katalon、Robotframework、Android
自動化測試腳本技術(shù)
1、線性腳本:錄制、回放
2、結(jié)構(gòu)化腳本:含有控制腳本執(zhí)行的指令,支持順序、選擇和循環(huán)
3、共享腳本:可以被多個測試用例使用,腳本之間可以互相調(diào)用
4、數(shù)據(jù)驅(qū)動腳本: 數(shù)據(jù)驅(qū)動腳本是將測試輸入存儲在獨立的文件中,腳本中只存放控制信息
5、關(guān)鍵字驅(qū)動腳本:關(guān)鍵字驅(qū)動腳本實際上是較重復(fù)的數(shù)據(jù)驅(qū)動技術(shù)的邏輯擴展 ,即測試用例的執(zhí)行步驟(操作,操作對象,操作值)存放在文件中,直接執(zhí)行
自動化測試操作的基本原理
1、接口自動化測試操作
(1)模擬請求 url和報文,準備測試數(shù)據(jù)()抓包獲取接口信息,對接口的一個分析,有文檔或無文檔
(2)模擬客戶端發(fā)送 HTTP請求(get、post)
(3)模擬客戶端從服務(wù)器接收返回報文
(4)驗證返回結(jié)果是否符合預(yù)期
2、UI自動化測試的操作
(1)通過id、name、xpath、cssSelector等方法定位頁面元素(findelement、findelements)
(2)對定位到的頁面元素執(zhí)行相應(yīng)的操作( click、input等)
(3)對操作后出現(xiàn)的結(jié)果和預(yù)期結(jié)果做一個比較( assert )
自動化測試基礎(chǔ)工具原理
1、Selenium(解析前端代碼與控制瀏覽器)
自動化測試的PO模式
1、在PO模式中抽象封裝成一個BasePage類,該基類擁有一個只實現(xiàn)webdriver實例的屬性
2、每一個page都繼承BasePage,通過driver來管理本page中元素,將page中的操作封裝成一個個的方法TestCase依賴page類,實現(xiàn)相應(yīng)的測試步驟
自動化測試框架
1、關(guān)鍵字驅(qū)動
(1)將測試用例分成四個不同的部分。首先是測試步驟(Test Step),二是測試步驟中的對象(Test Object),三是測試對象執(zhí)行的動作(Action),四是測試對象需要的數(shù)據(jù)(Test Data)。
(2)將數(shù)據(jù)與關(guān)鍵字結(jié)合來描述如何執(zhí)行測試。也就是將測試用例腳本中的步驟提取出來,放在獨立的數(shù)據(jù)文件中,變成簡單編寫的方式。這種方法具備數(shù)據(jù)驅(qū)動的優(yōu)勢,同時非編程人員也能建立測試。
(3)關(guān)鍵字驅(qū)動的模式是建立在數(shù)據(jù)驅(qū)動手段之上,關(guān)鍵字驅(qū)動文件包含指令 (關(guān)鍵詞),而不只是數(shù)據(jù)。
(4)這個測試框架可以通過很少的代碼來產(chǎn)生大量的測試用例。同樣的代碼在用數(shù)據(jù)表來產(chǎn)生各個測試用例的同時被復(fù)用。
2、數(shù)據(jù)驅(qū)動
(1)從某個數(shù)據(jù)文件(例如Excel文件、Xml文件、Json文件、數(shù)據(jù)庫等)中讀取輸入測試數(shù)據(jù),然后通過變量傳入編寫的測試腳本中。
(2)數(shù)據(jù)文件的讀取、測試狀態(tài)和所有測試步驟都被編寫進測試腳本里;測試數(shù)據(jù)只包含在數(shù)據(jù)文件中,而不是腳本里,測試腳本只是一個”驅(qū)動”,或者說是一個傳送數(shù)據(jù)的機制。
(3)數(shù)據(jù)驅(qū)動的方法主要用于需要通過不同數(shù)據(jù)來保證測試覆蓋率的場景,比如被測系統(tǒng)業(yè)務(wù)邏輯固定不變或變動較小,即測試用例步驟是固定的,但是所需要的測試數(shù)據(jù)是變化的情況,通常來說,數(shù)據(jù)都是保存在外面文件或數(shù)據(jù)庫中,運行時自動獲取。即測試框架中要支持數(shù),據(jù)與腳本分離,一個測試腳本可以驅(qū)動執(zhí)行多個相似測試場景。
(4)這個框架意圖減少需要執(zhí)行所有測試用例所需要的總的測試腳本數(shù),數(shù)據(jù)驅(qū)動需要很少的代碼來產(chǎn)生大量的測試用例。
三、自動化測試框架的選擇與搭建
1、技術(shù)方案
Selenium(Webdriver) + Python(unittest)+ cx_Oracle + HTMLTestRunner
Selenium的WebDriver是一款開源工具。利用比較簡潔的Python語言進行自動化測試,對于人員的學(xué)習(xí)成本來講比較實用,學(xué)習(xí)時間短,有優(yōu)勢。
Python自帶的unittest單元測試框架可以很方便的實現(xiàn)自動化用例的設(shè)計和執(zhí)行以及自動化用例套件的管理等任務(wù)。Python是純面向?qū)ο蟮恼Z言,后續(xù)也可以過渡到Java + Selenium進行更加豐富的自動化測試;此外,可以選擇Jenkins作為持續(xù)集成服務(wù)器,配合Python+Selenium的方案進行自動化冒煙測試。
此方案采用了Page Object設(shè)計模式,將頁面、用例、數(shù)據(jù)三者分離。這樣可以使測試案例可以更關(guān)注與業(yè)務(wù)而非界面細節(jié),提高測試案例的可讀性;降低代碼冗余,增加方法的復(fù)用性。
2、環(huán)境選擇
根據(jù)測試組自動化測試需求討論結(jié)果,在uat、stage環(huán)境下使用自動化測試技術(shù)做回歸測試。(執(zhí)行前需確保該環(huán)境可正常使用)
由于uat、stage環(huán)境頻繁發(fā)版,影響自動化測試框架調(diào)試及腳本編寫,申請一個穩(wěn)定環(huán)境做調(diào)試及編寫工作。
3、自動化測試流程
(1)選取模塊
(2)選擇用例(主流程用例)
(3)按頁面編寫操作方法
(4)按用例編寫用例流程腳本
(5)按用例編寫數(shù)據(jù)查詢方法
(6)執(zhí)行用例
(7)輸出報告(后期擴展,增加執(zhí)行日志和異常截圖以便跟蹤缺陷)。
綜上,當腳本內(nèi)容編寫結(jié)束并且業(yè)務(wù)需求和測試需求均無更改的時候,執(zhí)行后兩步操作即可。查看報告內(nèi)容,如發(fā)現(xiàn)缺陷,需按用例內(nèi)容重現(xiàn)缺陷并提交至禪道管理系統(tǒng)。
4、后續(xù)維護
(1)業(yè)務(wù)需求變更
當業(yè)務(wù)需求變更時,應(yīng)在執(zhí)行用例時越過變更內(nèi)容用例,變更內(nèi)容上線后按需求變更內(nèi)容對腳本及用例進行相應(yīng)調(diào)整。調(diào)整結(jié)束,需再次執(zhí)行確保用例穩(wěn)定。
(2)被測模塊重構(gòu)
當被測模塊重構(gòu)完成時,需執(zhí)行該模塊自動化測試用例,查看是否正常執(zhí)行,若無問題出現(xiàn)則不需調(diào)整,若出現(xiàn)問題需及時調(diào)試解決。
(3)技術(shù)變更
隨著自動化測試框架的不斷調(diào)優(yōu)、擴展功能,基礎(chǔ)模塊和封裝的頁面等也會隨之變化。進而,自動化測試需要定期執(zhí)行,以保證調(diào)優(yōu)、擴展后框架的穩(wěn)定性,從而達到保障回歸測試的正常進行。
5、資源調(diào)配
(1)環(huán)境:
a、項目環(huán)境與線上項目近似,獨立發(fā)版,版本內(nèi)容相對穩(wěn)定,數(shù)據(jù)庫獨立,不受其它環(huán)境影響。
b、本機環(huán)境,win7&win10 Chrome 72 32bit。
(2)用戶:獨立用戶,權(quán)限盡量調(diào)高,以免由用戶權(quán)限影響訪問某些功能點,減少用例遺漏。
(3)人員:建立自動化測試的組,理想狀態(tài)下3-4個人員,測試開發(fā)、中高級自動化測試工程師、初級自動化工程師。
(4)培訓(xùn):對初級自動化工程師培訓(xùn),設(shè)計的框架以及封裝的驅(qū)動等。
四、自動化測試分階段實現(xiàn)
1、搭建基礎(chǔ)版框架,完成一個模塊的自動化測試demo
采用Page Object設(shè)計模式,對頁面元素,用例流程,數(shù)據(jù)進行封裝隔離,在通用模塊或基礎(chǔ)模塊中對webdriver進行二次封裝,自動生成測試報告以便分析自動化測試執(zhí)行結(jié)果。
2、按基礎(chǔ)版框架,擴展測試范圍
選取適合做自動化測試的功能模塊,按基礎(chǔ)框架思路編寫腳本、用例等,然后對框架做擴展,實現(xiàn)數(shù)據(jù)驅(qū)動、定時執(zhí)行測試,發(fā)送報告郵件等便于使用的非核心功能。
3、覆蓋大多數(shù)模塊的回歸測試
根據(jù)人員等資源的協(xié)調(diào)情況,將自動化測試用例擴展至覆蓋大部分模塊回歸測試的程度。由執(zhí)行自動化測試完成回歸測試,以達到提高回歸測試的效率,降低回歸測試人力要求的目的。
小結(jié)
自動化測試技術(shù)在現(xiàn)代測試技術(shù)中是有一定優(yōu)勢的,但是自動化測試不是在任何情況下都必須的,適當?shù)?、或者是有效成本投入,需要我們在合適的時機引入自動化測試,使手工測試和自動化測試實現(xiàn)完美結(jié)合。
請關(guān)注+私信回復(fù):“測試”就可以免費拿到軟件測試學(xué)習(xí)資料。