Python 自動(dòng)化測試全攻略:五種自動(dòng)化測試模型實(shí)戰(zhàn)詳解

隨著移動(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)分享哦)希望能對你有所幫助疲酌。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市了袁,隨后出現(xiàn)的幾起案子朗恳,更是在濱河造成了極大的恐慌,老刑警劉巖载绿,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粥诫,死亡現(xiàn)場離奇詭異,居然都是意外死亡崭庸,警方通過查閱死者的電腦和手機(jī)怀浆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怕享,“玉大人执赡,你說我怎么就攤上這事『睿” “怎么了沙合?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長跌帐。 經(jīng)常有香客問我首懈,道長,這世上最難降的妖魔是什么谨敛? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任究履,我火速辦了婚禮,結(jié)果婚禮上佣盒,老公的妹妹穿的比我還像新娘挎袜。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布盯仪。 她就那樣靜靜地躺著紊搪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪全景。 梳的紋絲不亂的頭發(fā)上耀石,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音爸黄,去河邊找鬼滞伟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炕贵,可吹牛的內(nèi)容都是我干的梆奈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼称开,長吁一口氣:“原來是場噩夢啊……” “哼亩钟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鳖轰,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤清酥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蕴侣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焰轻,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年昆雀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辱志。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忆肾,死狀恐怖荸频,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情客冈,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布稳强,位于F島的核電站场仲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏退疫。R本人自食惡果不足惜渠缕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望褒繁。 院中可真熱鬧亦鳞,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至徒探,卻和暖如春瓦呼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背测暗。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工央串, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碗啄。 一個(gè)月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓质和,卻偏偏與公主長得像,于是被迫代替她去往敵國和親稚字。 傳聞我的和親對象是個(gè)殘疾皇子饲宿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360