Python 自動化測試全攻略:五種自動化測試模型實戰詳解

隨著移動互聯網的發展,軟件研發模型逐步完善,軟件交付質量越來越受到軟件公司的重視,軟件測試技術特別是自動化測試技術開始在軟件系統研發過程中發揮著越來越重要的作用。

與傳統的手工測試技術相比,自動化測試具備了良好的可操作性、可重復性和高效率等特點,能夠更加全面、快速地執行測試用例,在保證產品質量的前提下實現軟件產品的快速迭代。

(圖片來自于網絡)

關于自動化測試的定義,本文不再詳細贅述。一般來說,自動化測試是指:從局部或全部代替人工,結合測試工具和測試規范,自動執行測試腳本及提高測試效率的過程。因此,我們可以將自動化測試理解為一個集成體系,在這一體系中包含測試功能的函數庫、測試數據源、測試對象標準,以及各種可重用的模塊。

自動化測試相對于手工測試而言,其主要進步在于自動化測試模型的引入,自動化測試工具是“死”的,它不具備任何想象力。因此,自動化測試的好壞,完全取決于測試工程師對于測試模型的選擇,性能更高的測試模型,會帶來更快的測試速度和更高的測量精確度。

自動化測試模型都有哪些?

自動化測試發展至今,先后產生了五種測試模型:線性模型、模塊化驅動模型、數據驅動模型、關鍵字驅動模型和行為驅動模型。

線性模型

通過錄制或編寫腳本,一個腳本完成一個場景(一組完整功能操作),通過對腳本的回放進行自動化測試。

測試腳本如下圖所示:

從上圖可以看出,線性測試模型的優勢就是每一個腳本都是獨立的,任何一個腳本文件拿出來就能單獨運行;當然,其缺點也很明顯,就是測試用例的開發與維護成本很高,這種模式下數據和腳本是混在一起的,如果數據發生變化就需要對腳本進行修改,其用例的復用性較差。

模塊化驅動模型

將腳本中重復可復用的部分拿出來寫成一個公共的模塊,需要的時候就調用它,這樣可以大幅提高測試人員編寫腳本的效率。

測試腳本如下圖所示:

如上圖所示,模塊化驅動模型是將測試腳本中相同的部分代碼獨立出來,形成模塊或庫,這樣做有兩個好處:

提高了開發效率和代碼復用性,測試人員不用重復的編寫相同的腳本,如果提前寫好了一個測試模塊,后續只需要進行調用即可,不同重復造輪子。

簡化了代碼的維護工作,如果測試模塊發生了變化,只用修改login.py 文件中相應模塊的代碼即可,所有調用該模塊的腳本不用做任何修改。

即便如此,模塊化驅動模型仍未能完全實現將數據和用例分離,對后期的維護工作會產生一定影響。

數據驅動模型

為了解決線性模型和模塊化驅動模型的短板,數據驅動模型就此誕生。該模型會根據數據的變化而引起測試結果的改變,這顯然是一個非常高級的概念和想法。簡單地說,該模型是一種數據的參數化呈現,即通過輸入不同的參數來驅動程序執行,輸出不同的測試結果。

測試腳本如下圖所示:

該模型的最大優點,就是實現了測試數據和測試腳本分離,不管我們讀取的是數組、字典、函數,還是csv、txt 等文件,我們都可以通過傳遞參數,驅動腳本執行,返回不同的測試結果。

關鍵字驅動模型

這是一種通過關鍵字的改變而引起測試結果改變的功能自動化測試模型。QTP、robot framework 等都是以關鍵字驅動為主的自動化測試工具,這類工具典型的特征就是具備一套易用的可視化界面,測試人員需要做的就是將測試腳本按照“填表格”的方式填入,并考慮三個問題就可以了:我要做什么? 對誰做?怎么做?

本文所使用的Selenium IDE 就是一種關鍵字驅動的自動化工具,Selenium IDE 的腳本通常包含:命令(command)、對象(target)和值(value)三部分,測試腳本可直接在瀏覽器中運行,就像真正的用戶在操作一樣。

通過上圖的格式去描述不同的測試對象,就可以達到不同的測試結果。關鍵字驅動模型以對象為出發點,降低了自動化測試用例的編寫難度,對于不懂代碼的同學非常直觀,可視化界面,帶來了更高的工作效率和更低的維護門檻。

行為驅動模型

最后,本文將介紹一種在國外非常流行的測試模型——行為驅動模型,這套模型源自于敏捷開發方法:行為驅動開發(Behave Driven Development,簡稱BDD),即從用戶的需求出發強調系統行為。

通過將BDD借鑒到自動化測試中,便產生了行為驅動測試模型,這種模型通過使用自然描述語言確定自動化測試腳本,其優點是可使用自然語言編寫測試用例。

測試腳本如下圖所示:

如上圖所示,用例的寫法基本和功能測試用例的寫法類似,這樣具有良好協作的益處。行為驅動測試模型使每個人都可以參與到開發測試中,不僅僅是程序員。該模型下每個測試場景都是一個獨立的行為,且已有的行為可以被重復使用。

測試報告如下圖所示:

擴展知識

目前在Python中最流行的 BDD 框架是Behave,它與其他基于 Gherkin 的 Cucumber 框架非常相似,當然還有其他BDD框架,比如pytest-bdd和radish等。

在使用Selenium執行自動化測試時,需要注意以下幾點:

- 查找網頁元素的時候,注意網頁中使用frame的情況,首先要使用browser.switchto.frame("contentFrame")命令進入frame中,才能選中所需的元素。使用之后要記得返回上一級frame,browser.switchto.parent_frame()。Webmtc主要使用id選擇和xpath獲取元素,webmtc網頁中class使用的比較少。

注意頁面刷新之后代碼也會找不到frame,比如呼叫建立之后頁面會刷新,多點會議創建之后頁面會刷新,點擊設置界面和呼叫界面頁面也會刷新。

以上,就是這五種自動化測試模型的基本介紹

最后,小編想說:我是一名python開發工程師,整理了一套最新的python系統學習教程,

想要這些資料的可以關注私信小編“01”即可(免費分享哦)希望能對你有所幫助。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。