隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,軟件研發(fā)模型逐步完善,軟件交付質(zhì)量越來(lái)越受到軟件公司的重視,軟件測(cè)試技術(shù)特別是自動(dòng)化測(cè)試技術(shù)開(kāi)始在軟件系統(tǒng)研發(fā)過(guò)程中發(fā)揮著越來(lái)越重要的作用。
與傳統(tǒng)的手工測(cè)試技術(shù)相比,自動(dòng)化測(cè)試具備了良好的可操作性、可重復(fù)性和高效率等特點(diǎn),能夠更加全面、快速地執(zhí)行測(cè)試用例,在保證產(chǎn)品質(zhì)量的前提下實(shí)現(xiàn)軟件產(chǎn)品的快速迭代。
關(guān)于自動(dòng)化測(cè)試的定義,本文不再詳細(xì)贅述。一般來(lái)說(shuō),自動(dòng)化測(cè)試是指:從局部或全部代替人工,結(jié)合測(cè)試工具和測(cè)試規(guī)范,自動(dòng)執(zhí)行測(cè)試腳本及提高測(cè)試效率的過(guò)程。因此,我們可以將自動(dòng)化測(cè)試?yán)斫鉃橐粋€(gè)集成體系,在這一體系中包含測(cè)試功能的函數(shù)庫(kù)、測(cè)試數(shù)據(jù)源、測(cè)試對(duì)象標(biāo)準(zhǔn),以及各種可重用的模塊。
自動(dòng)化測(cè)試相對(duì)于手工測(cè)試而言,其主要進(jìn)步在于自動(dòng)化測(cè)試模型的引入,自動(dòng)化測(cè)試工具是“死”的,它不具備任何想象力。因此,自動(dòng)化測(cè)試的好壞,完全取決于測(cè)試工程師對(duì)于測(cè)試模型的選擇,性能更高的測(cè)試模型,會(huì)帶來(lái)更快的測(cè)試速度和更高的測(cè)量精確度。
自動(dòng)化測(cè)試模型都有哪些?
自動(dòng)化測(cè)試發(fā)展至今,先后產(chǎn)生了五種測(cè)試模型:線性模型、模塊化驅(qū)動(dòng)模型、數(shù)據(jù)驅(qū)動(dòng)模型、關(guān)鍵字驅(qū)動(dòng)模型和行為驅(qū)動(dòng)模型。為了幫助初入自動(dòng)化測(cè)試行業(yè)的從業(yè)者快速掌握這些測(cè)試模型的基本使用方法,葡萄城公開(kāi)課特別邀請(qǐng)到《Python Web自動(dòng)化測(cè)試入門與實(shí)戰(zhàn)》的作者——楊定佳先生,為我們?cè)诰€解讀“Python 自動(dòng)化測(cè)試全攻略”,通過(guò)示例代碼,詳解這五種自動(dòng)化測(cè)試模型的優(yōu)缺點(diǎn)。
線性模型
通過(guò)錄制或編寫(xiě)腳本,一個(gè)腳本完成一個(gè)場(chǎng)景(一組完整功能操作),通過(guò)對(duì)腳本的回放進(jìn)行自動(dòng)化測(cè)試。
測(cè)試腳本如下圖所示(公開(kāi)課后,可下載完整代碼):
從上圖可以看出,線性測(cè)試模型的優(yōu)勢(shì)就是每一個(gè)腳本都是獨(dú)立的,任何一個(gè)腳本文件拿出來(lái)就能單獨(dú)運(yùn)行;當(dāng)然,其缺點(diǎn)也很明顯,就是測(cè)試用例的開(kāi)發(fā)與維護(hù)成本很高,這種模式下數(shù)據(jù)和腳本是混在一起的,如果數(shù)據(jù)發(fā)生變化就需要對(duì)腳本進(jìn)行修改,其用例的復(fù)用性較差。
模塊化驅(qū)動(dòng)模型
將腳本中重復(fù)可復(fù)用的部分拿出來(lái)寫(xiě)成一個(gè)公共的模塊,需要的時(shí)候就調(diào)用它,這樣可以大幅提高測(cè)試人員編寫(xiě)腳本的效率。
測(cè)試腳本如下圖所示(公開(kāi)課后,可下載完整代碼):
如上圖所示,模塊化驅(qū)動(dòng)模型是將測(cè)試腳本中相同的部分代碼獨(dú)立出來(lái),形成模塊或庫(kù),這樣做有兩個(gè)好處:
- 提高了開(kāi)發(fā)效率和代碼復(fù)用性,測(cè)試人員不用重復(fù)的編寫(xiě)相同的腳本,如果提前寫(xiě)好了一個(gè)測(cè)試模塊,后續(xù)只需要進(jìn)行調(diào)用即可,不同重復(fù)造輪子。
- 簡(jiǎn)化了代碼的維護(hù)工作,如果測(cè)試模塊發(fā)生了變化,只用修改login.py 文件中相應(yīng)模塊的代碼即可,所有調(diào)用該模塊的腳本不用做任何修改。
即便如此,模塊化驅(qū)動(dòng)模型仍未能完全實(shí)現(xiàn)將數(shù)據(jù)和用例分離,對(duì)后期的維護(hù)工作會(huì)產(chǎn)生一定影響。
數(shù)據(jù)驅(qū)動(dòng)模型
為了解決線性模型和模塊化驅(qū)動(dòng)模型的短板,數(shù)據(jù)驅(qū)動(dòng)模型就此誕生。該模型會(huì)根據(jù)數(shù)據(jù)的變化而引起測(cè)試結(jié)果的改變,這顯然是一個(gè)非常高級(jí)的概念和想法。簡(jiǎn)單地說(shuō),該模型是一種數(shù)據(jù)的參數(shù)化呈現(xiàn),即通過(guò)輸入不同的參數(shù)來(lái)驅(qū)動(dòng)程序執(zhí)行,輸出不同的測(cè)試結(jié)果。
測(cè)試腳本如下圖所示(公開(kāi)課后,可下載完整代碼):
該模型的最大優(yōu)點(diǎn),就是實(shí)現(xiàn)了測(cè)試數(shù)據(jù)和測(cè)試腳本分離,不管我們讀取的是數(shù)組、字典、函數(shù),還是csv、txt 等文件,我們都可以通過(guò)傳遞參數(shù),驅(qū)動(dòng)腳本執(zhí)行,返回不同的測(cè)試結(jié)果。
關(guān)鍵字驅(qū)動(dòng)模型
這是一種通過(guò)關(guān)鍵字的改變而引起測(cè)試結(jié)果改變的功能自動(dòng)化測(cè)試模型。QTP、robot framework 等都是以關(guān)鍵字驅(qū)動(dòng)為主的自動(dòng)化測(cè)試工具,這類工具典型的特征就是具備一套易用的可視化界面,測(cè)試人員需要做的就是將測(cè)試腳本按照“填表格”的方式填入,并考慮三個(gè)問(wèn)題就可以了:我要做什么? 對(duì)誰(shuí)做?怎么做?
本文所使用的Selenium IDE 就是一種關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化工具,Selenium IDE 的腳本通常包含:命令(command)、對(duì)象(target)和值(value)三部分,測(cè)試腳本可直接在瀏覽器中運(yùn)行,就像真正的用戶在操作一樣。
通過(guò)上圖的格式去描述不同的測(cè)試對(duì)象,就可以達(dá)到不同的測(cè)試結(jié)果。關(guān)鍵字驅(qū)動(dòng)模型以對(duì)象為出發(fā)點(diǎn),降低了自動(dòng)化測(cè)試用例的編寫(xiě)難度,對(duì)于不懂代碼的同學(xué)非常直觀,可視化界面,帶來(lái)了更高的工作效率和更低的維護(hù)門檻。
行為驅(qū)動(dòng)模型
最后,本文將介紹一種在國(guó)外非常流行的測(cè)試模型——行為驅(qū)動(dòng)模型,這套模型源自于敏捷開(kāi)發(fā)方法:行為驅(qū)動(dòng)開(kāi)發(fā)(Behave Driven Development,簡(jiǎn)稱BDD),即從用戶的需求出發(fā)強(qiáng)調(diào)系統(tǒng)行為。
通過(guò)將BDD借鑒到自動(dòng)化測(cè)試中,便產(chǎn)生了行為驅(qū)動(dòng)測(cè)試模型,這種模型通過(guò)使用自然描述語(yǔ)言確定自動(dòng)化測(cè)試腳本,其優(yōu)點(diǎn)是可使用自然語(yǔ)言編寫(xiě)測(cè)試用例。
測(cè)試腳本如下圖所示(公開(kāi)課后,可下載完整代碼):
如上圖所示,用例的寫(xiě)法基本和功能測(cè)試用例的寫(xiě)法類似,這樣具有良好協(xié)作的益處。行為驅(qū)動(dòng)測(cè)試模型使每個(gè)人都可以參與到開(kāi)發(fā)測(cè)試中,不僅僅是程序員。該模型下每個(gè)測(cè)試場(chǎng)景都是一個(gè)獨(dú)立的行為,且已有的行為可以被重復(fù)使用。
測(cè)試報(bào)告如下圖所示:
擴(kuò)展知識(shí)
- 目前在Python中最流行的 BDD 框架是Behave,它與其他基于 Gherkin 的 Cucumber 框架非常相似,當(dāng)然還有其他BDD框架,比如pytest-bdd和radish等。
-
在使用Selenium執(zhí)行自動(dòng)化測(cè)試時(shí),需要注意以下幾點(diǎn):文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-560739.html
- 查找網(wǎng)頁(yè)元素的時(shí)候,注意網(wǎng)頁(yè)中使用frame的情況,首先要使用browser.switch_to.frame("contentFrame")命令進(jìn)入frame中,才能選中所需的元素。使用之后要記得返回上一級(jí)frame,browser.switch_to.parent_frame()。Webmtc主要使用id選擇和xpath獲取元素,webmtc網(wǎng)頁(yè)中class使用的比較少。
- 注意頁(yè)面刷新之后代碼也會(huì)找不到frame,比如呼叫建立之后頁(yè)面會(huì)刷新,多點(diǎn)會(huì)議創(chuàng)建之后頁(yè)面會(huì)刷新,點(diǎn)擊設(shè)置界面和呼叫界面頁(yè)面也會(huì)刷新。
以上,就是這五種自動(dòng)化測(cè)試模型的基本介紹,在本期公開(kāi)課上,講師除了會(huì)依次演示每一種模型的測(cè)試代碼,還會(huì)針對(duì)Web自動(dòng)化測(cè)試的相關(guān)技術(shù)(包括從自動(dòng)化測(cè)試的基礎(chǔ)到提升、從理論到實(shí)踐、從單個(gè)知識(shí)點(diǎn)到項(xiàng)目運(yùn)用等)進(jìn)行詳細(xì)的解讀,可以幫助自動(dòng)化測(cè)試零基礎(chǔ)的初學(xué)者和希望進(jìn)入自動(dòng)化測(cè)試行業(yè)的開(kāi)發(fā)者快速掌握自動(dòng)化測(cè)試的基本知識(shí),并且具備一定的Web自動(dòng)化測(cè)試開(kāi)發(fā)能力。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-560739.html
正在學(xué)習(xí)測(cè)試的小伙伴可以通過(guò)點(diǎn)擊下面的小卡片
到了這里,關(guān)于五種不同自動(dòng)化測(cè)試模型的基本介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!