隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展丸凭,軟件研發(fā)模型逐步完善福扬,軟件交付質(zhì)量越來越受到軟件公司的重視,軟件測試技術(shù)特別是自動(dòng)化測試技術(shù)開始在軟件系統(tǒng)研發(fā)過程中發(fā)揮著越來越重要的作用惜犀。
與傳統(tǒng)的手工測試技術(shù)相比铛碑,自動(dòng)化測試具備了良好的可操作性、可重復(fù)性和高效率等特點(diǎn)虽界,能夠更加全面汽烦、快速地執(zhí)行測試用例,在保證產(chǎn)品質(zhì)量的前提下實(shí)現(xiàn)軟件產(chǎn)品的快速迭代莉御。
(圖片來自于網(wǎng)絡(luò))
關(guān)于自動(dòng)化測試的定義撇吞,本文不再詳細(xì)贅述俗冻。一般來說,自動(dòng)化測試是指:從局部或全部代替人工牍颈,結(jié)合測試工具和測試規(guī)范迄薄,自動(dòng)執(zhí)行測試腳本及提高測試效率的過程。因此煮岁,我們可以將自動(dòng)化測試?yán)斫鉃橐粋€(gè)集成體系讥蔽,在這一體系中包含測試功能的函數(shù)庫、測試數(shù)據(jù)源画机、測試對象標(biāo)準(zhǔn)冶伞,以及各種可重用的模塊。
自動(dòng)化測試相對于手工測試而言色罚,其主要進(jìn)步在于自動(dòng)化測試模型的引入碰缔,自動(dòng)化測試工具是“死”的账劲,它不具備任何想象力戳护。因此,自動(dòng)化測試的好壞瀑焦,完全取決于測試工程師對于測試模型的選擇腌且,性能更高的測試模型元践,會帶來更快的測試速度和更高的測量精確度片酝。
自動(dòng)化測試模型都有哪些京腥?
自動(dòng)化測試發(fā)展至今浪讳,先后產(chǎn)生了五種測試模型:線性模型蚓哩、模塊化驅(qū)動(dòng)模型莉擒、數(shù)據(jù)驅(qū)動(dòng)模型挠唆、關(guān)鍵字驅(qū)動(dòng)模型和行為驅(qū)動(dòng)模型婚脱。
線性模型
通過錄制或編寫腳本粹懒,一個(gè)腳本完成一個(gè)場景(一組完整功能操作)重付,通過對腳本的回放進(jìn)行自動(dòng)化測試。
測試腳本如下圖所示:
從上圖可以看出凫乖,線性測試模型的優(yōu)勢就是每一個(gè)腳本都是獨(dú)立的确垫,任何一個(gè)腳本文件拿出來就能單獨(dú)運(yùn)行;當(dāng)然帽芽,其缺點(diǎn)也很明顯删掀,就是測試用例的開發(fā)與維護(hù)成本很高,這種模式下數(shù)據(jù)和腳本是混在一起的导街,如果數(shù)據(jù)發(fā)生變化就需要對腳本進(jìn)行修改披泪,其用例的復(fù)用性較差。
模塊化驅(qū)動(dòng)模型
將腳本中重復(fù)可復(fù)用的部分拿出來寫成一個(gè)公共的模塊搬瑰,需要的時(shí)候就調(diào)用它款票,這樣可以大幅提高測試人員編寫腳本的效率计福。
測試腳本如下圖所示:
如上圖所示,模塊化驅(qū)動(dòng)模型是將測試腳本中相同的部分代碼獨(dú)立出來徽职,形成模塊或庫象颖,這樣做有兩個(gè)好處:
提高了開發(fā)效率和代碼復(fù)用性,測試人員不用重復(fù)的編寫相同的腳本姆钉,如果提前寫好了一個(gè)測試模塊说订,后續(xù)只需要進(jìn)行調(diào)用即可,不同重復(fù)造輪子潮瓶。
簡化了代碼的維護(hù)工作陶冷,如果測試模塊發(fā)生了變化,只用修改login.py 文件中相應(yīng)模塊的代碼即可毯辅,所有調(diào)用該模塊的腳本不用做任何修改埂伦。
即便如此,模塊化驅(qū)動(dòng)模型仍未能完全實(shí)現(xiàn)將數(shù)據(jù)和用例分離思恐,對后期的維護(hù)工作會產(chǎn)生一定影響沾谜。
數(shù)據(jù)驅(qū)動(dòng)模型
為了解決線性模型和模塊化驅(qū)動(dòng)模型的短板,數(shù)據(jù)驅(qū)動(dòng)模型就此誕生胀莹。該模型會根據(jù)數(shù)據(jù)的變化而引起測試結(jié)果的改變基跑,這顯然是一個(gè)非常高級的概念和想法。簡單地說描焰,該模型是一種數(shù)據(jù)的參數(shù)化呈現(xiàn)媳否,即通過輸入不同的參數(shù)來驅(qū)動(dòng)程序執(zhí)行,輸出不同的測試結(jié)果荆秦。
測試腳本如下圖所示:
該模型的最大優(yōu)點(diǎn)篱竭,就是實(shí)現(xiàn)了測試數(shù)據(jù)和測試腳本分離,不管我們讀取的是數(shù)組步绸、字典掺逼、函數(shù),還是csv靡努、txt 等文件坪圾,我們都可以通過傳遞參數(shù),驅(qū)動(dòng)腳本執(zhí)行惑朦,返回不同的測試結(jié)果兽泄。
關(guān)鍵字驅(qū)動(dòng)模型
這是一種通過關(guān)鍵字的改變而引起測試結(jié)果改變的功能自動(dòng)化測試模型。QTP漾月、robot framework 等都是以關(guān)鍵字驅(qū)動(dòng)為主的自動(dòng)化測試工具病梢,這類工具典型的特征就是具備一套易用的可視化界面,測試人員需要做的就是將測試腳本按照“填表格”的方式填入,并考慮三個(gè)問題就可以了:我要做什么蜓陌? 對誰做觅彰?怎么做?
本文所使用的Selenium IDE 就是一種關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化工具钮热,Selenium IDE 的腳本通常包含:命令(command)填抬、對象(target)和值(value)三部分,測試腳本可直接在瀏覽器中運(yùn)行隧期,就像真正的用戶在操作一樣飒责。
通過上圖的格式去描述不同的測試對象,就可以達(dá)到不同的測試結(jié)果仆潮。關(guān)鍵字驅(qū)動(dòng)模型以對象為出發(fā)點(diǎn)宏蛉,降低了自動(dòng)化測試用例的編寫難度,對于不懂代碼的同學(xué)非常直觀性置,可視化界面拾并,帶來了更高的工作效率和更低的維護(hù)門檻。
行為驅(qū)動(dòng)模型
最后鹏浅,本文將介紹一種在國外非常流行的測試模型——行為驅(qū)動(dòng)模型嗅义,這套模型源自于敏捷開發(fā)方法:行為驅(qū)動(dòng)開發(fā)(Behave Driven Development,簡稱BDD)篡石,即從用戶的需求出發(fā)強(qiáng)調(diào)系統(tǒng)行為芥喇。
通過將BDD借鑒到自動(dòng)化測試中,便產(chǎn)生了行為驅(qū)動(dòng)測試模型凰萨,這種模型通過使用自然描述語言確定自動(dòng)化測試腳本,其優(yōu)點(diǎn)是可使用自然語言編寫測試用例械馆。
測試腳本如下圖所示:
如上圖所示胖眷,用例的寫法基本和功能測試用例的寫法類似,這樣具有良好協(xié)作的益處霹崎。行為驅(qū)動(dòng)測試模型使每個(gè)人都可以參與到開發(fā)測試中珊搀,不僅僅是程序員。該模型下每個(gè)測試場景都是一個(gè)獨(dú)立的行為尾菇,且已有的行為可以被重復(fù)使用境析。
測試報(bào)告如下圖所示:
擴(kuò)展知識
目前在Python中最流行的 BDD 框架是Behave,它與其他基于 Gherkin 的 Cucumber 框架非常相似派诬,當(dāng)然還有其他BDD框架劳淆,比如pytest-bdd和radish等。
在使用Selenium執(zhí)行自動(dòng)化測試時(shí)默赂,需要注意以下幾點(diǎn):
- 查找網(wǎng)頁元素的時(shí)候沛鸵,注意網(wǎng)頁中使用frame的情況,首先要使用browser.switchto.frame("contentFrame")命令進(jìn)入frame中,才能選中所需的元素曲掰。使用之后要記得返回上一級frame疾捍,browser.switchto.parent_frame()。Webmtc主要使用id選擇和xpath獲取元素栏妖,webmtc網(wǎng)頁中class使用的比較少乱豆。
注意頁面刷新之后代碼也會找不到frame,比如呼叫建立之后頁面會刷新吊趾,多點(diǎn)會議創(chuàng)建之后頁面會刷新咙鞍,點(diǎn)擊設(shè)置界面和呼叫界面頁面也會刷新。
以上趾徽,就是這五種自動(dòng)化測試模型的基本介紹
最后续滋,小編想說:我是一名python開發(fā)工程師,整理了一套最新的python系統(tǒng)學(xué)習(xí)教程孵奶,
想要這些資料的可以關(guān)注私信小編“01”即可(免費(fèi)分享哦)希望能對你有所幫助疲酌。