QTP自动化测试框架的基础知识
1. 什么是自動(dòng)化測(cè)試框架?
假定你有一個(gè)活,需要構(gòu)建許多自動(dòng)化測(cè)試用例來測(cè)試這個(gè)應(yīng)用程序。當(dāng)你對(duì)這個(gè)應(yīng)用程序完成自動(dòng)化測(cè)試后,你對(duì)自己創(chuàng)建腳本應(yīng)該有什么期望嗎?你難道不想要-
- 腳本應(yīng)該按照預(yù)期的來執(zhí)行而且沒有發(fā)生任何問題
- 腳本和流程應(yīng)該會(huì)被很容易的理解
- 腳本是容易維護(hù)的
所有以上觀點(diǎn)需要一個(gè)合適的自動(dòng)化測(cè)試框架才能被實(shí)現(xiàn)
一個(gè)自動(dòng)化測(cè)試框架是一個(gè)規(guī)范或者是約束,你需要讓測(cè)試腳本遵從一些規(guī)則來完成上面提到的3點(diǎn)內(nèi)容,這些規(guī)則或者綱要如下,比如
- 指定一些目錄結(jié)構(gòu)用來存儲(chǔ)對(duì)應(yīng)的測(cè)試用例,函數(shù)庫,對(duì)象庫和數(shù)據(jù)表格
- 決定數(shù)據(jù)表格格式,比如數(shù)據(jù)表個(gè)應(yīng)該怎么組織,腳本是怎么訪問這些數(shù)據(jù)表格的
- 遵循正確的代碼標(biāo)準(zhǔn),并且要在代碼里有備注,以便別人能看懂你的代碼
- 盡可能把一些能復(fù)用的代碼封裝成為函數(shù),以便在發(fā)生變化的時(shí)候只需要修改很少的一部分
在創(chuàng)建測(cè)試腳本的時(shí)候始終遵循你設(shè)置的準(zhǔn)則,這樣可以創(chuàng)建一個(gè)包含所有你曾經(jīng)有針對(duì)性的功能的自動(dòng)化測(cè)試框架
框架的類型分別如下:
2. 在QTP使用的不同類型的框架
?
?
3. QTP里的線性框架
線性框架是你一步一步在測(cè)試流程里寫測(cè)試腳本。在這樣的框架類型中,你不需要?jiǎng)?chuàng)建任何函數(shù),所有的測(cè)試步驟都是從上到下線性的順序來寫。假如你有一個(gè)測(cè)試用例,它是按照 Login->Create->Order->Logout的流程來走,那么測(cè)試腳本就會(huì)按照如下圖所寫一樣:
3.1 在線性框架里的組件和工作流
以下圖形展示了關(guān)于QTP線性框架的組件和典型的工作流
?
在這里每個(gè)測(cè)試用例都有它自己的對(duì)象庫并且腳本里的數(shù)據(jù)都是hardcode
?
3.2 線性框架的優(yōu)勢(shì):
- 不需要自動(dòng)化的專業(yè)知識(shí),你只需要錄制和回放的方法就能用來創(chuàng)建腳本
- 快速和容易的方式來創(chuàng)建測(cè)試腳本
- 由于腳本是按照從上到下的順序來寫的,所以框架流程理解起來比較容易
3.3 線性框架的缺點(diǎn):
- 重用代碼的唯一方式是不斷的復(fù)制和粘貼,從而導(dǎo)致大量冗余的代碼
- 由于腳本里數(shù)據(jù)都是hardcode,同一個(gè)測(cè)試用例不能被不同的測(cè)試數(shù)據(jù)所驅(qū)動(dòng)
- 由于代碼在許多地方都是重復(fù)的,所以一旦有地方發(fā)生變化就需要修改很多地方
4. 關(guān)于QTP的模塊框架
模塊框架就是把所有的測(cè)試用例首先要分析下找出可以復(fù)用的流程的一個(gè)方法。然后把所有可以復(fù)用的流程放進(jìn)函數(shù)里封裝起來存儲(chǔ)在外部文件中,當(dāng)需要的時(shí)候可以在腳本里調(diào)用這些函數(shù)。考慮以下2個(gè)測(cè)試用例。
a)Login>Create Order>Logout.
b)Login>Search Order>Logout.
在這里登錄和登出是可以復(fù)用的流程。那么這些流程就被封裝起來保存在外部函數(shù)庫里。測(cè)試腳本應(yīng)該看起來像這樣
?
4.1 模塊框架的組件和工作流
?
為了可以使用外部庫文件里的函數(shù),庫文件首先需要和測(cè)試用例關(guān)聯(lián)起來。這樣測(cè)試用例就可以調(diào)用庫文件里的函數(shù)了
?
4.2 模塊框架的優(yōu)點(diǎn):
- 由于復(fù)用的函數(shù)只需要?jiǎng)?chuàng)建一次,測(cè)試腳本就只需要調(diào)用所需要的函數(shù),而不需要重新再寫一遍函數(shù)里的內(nèi)容,那么創(chuàng)建起來就快一點(diǎn)
- 由于代碼的復(fù)用,創(chuàng)建測(cè)試用例所花的功夫也會(huì)縮短
- 如果復(fù)用的函數(shù)里發(fā)生任何改變,只需要改變一個(gè)地方就會(huì)影響到調(diào)用它的所有測(cè)試用例,因此維護(hù)起來也會(huì)很容易
?
4.3 模塊框架的缺點(diǎn):
- 由于腳本里的數(shù)據(jù)還是hardcode,所以還是不能實(shí)現(xiàn)不同的測(cè)試數(shù)據(jù)運(yùn)行同一個(gè)腳本
- 需要花費(fèi)額外的時(shí)間來分析測(cè)試用例識(shí)別出那些是可以復(fù)用的
- 創(chuàng)建和維護(hù)函數(shù)庫需要好的編程知識(shí)
?
5. QTP的數(shù)據(jù)驅(qū)動(dòng)框架
在數(shù)據(jù)驅(qū)動(dòng)框架里,測(cè)試腳本里的數(shù)據(jù)不在是hard-code。相反,數(shù)據(jù)是被存儲(chǔ)在一些外部文件里。測(cè)試腳本需要首先連接到外部數(shù)據(jù)源,然后從數(shù)據(jù)源里解析這些數(shù)據(jù)。大部分時(shí)間,我們一般都會(huì)使用Excel表格用來存儲(chǔ)數(shù)據(jù)。其它的經(jīng)常使用的外部數(shù)據(jù)源是:文本文件,XML文件,數(shù)據(jù)庫以及一個(gè)外部文件以上的組合
?
5.1 數(shù)據(jù)驅(qū)動(dòng)框架的組件和流程
?
5.2 數(shù)據(jù)驅(qū)動(dòng)框架的優(yōu)點(diǎn):
- 由于數(shù)據(jù)與測(cè)試腳本是分離的,可以實(shí)現(xiàn)同一個(gè)腳本用不同的數(shù)據(jù)可以運(yùn)行多次
- 測(cè)試數(shù)據(jù)的更改不會(huì)影響到測(cè)試腳本,反之亦然
?
5.3 數(shù)據(jù)驅(qū)動(dòng)框架的缺點(diǎn):
- 連接到數(shù)據(jù)源并讀取里面的數(shù)據(jù)是需要額外的努力和相關(guān)專業(yè)的知識(shí)
- 需要用額外的時(shí)間來選擇使用那種外部數(shù)據(jù)源,并且要決定外部數(shù)據(jù)源里的數(shù)據(jù)應(yīng)該怎么被存儲(chǔ)或是組織
?
?6. QTP的關(guān)鍵字驅(qū)動(dòng)框架
在關(guān)鍵字驅(qū)動(dòng)框架里,你可以創(chuàng)建一些關(guān)鍵字以及相關(guān)聯(lián)的一些方法和函數(shù)。然后你創(chuàng)建一個(gè)函數(shù)庫,它里面包含一個(gè)讀取關(guān)鍵字的邏輯,然后調(diào)用相關(guān)的動(dòng)作。
關(guān)鍵字驅(qū)動(dòng)框架有許多不同的形式,其中一個(gè)解釋如下:
6.1 關(guān)鍵字驅(qū)動(dòng)框架的組件
- 數(shù)據(jù)表格或者Excel表格包含了關(guān)鍵字和需要執(zhí)行特定流程或者動(dòng)作的步驟
- 一個(gè)函數(shù)庫里包含一些函數(shù),這些函數(shù)可以讀取Excel里每行數(shù)據(jù),然后把他轉(zhuǎn)換為QTP可以識(shí)別的格式(也就是QTP腳本),然后最終執(zhí)行它。比如,函數(shù)庫讀取Excel里的第一行數(shù)據(jù),然后把他轉(zhuǎn)化為----Browser(“Title”).Page(“Title”).WebEdit(“UserName”).Set “user1”
- 對(duì)象庫在這個(gè)框架里不是必須的,如果你不想用對(duì)象庫的話,可以用描述性編程
6.2 關(guān)鍵字驅(qū)動(dòng)框架的工作流
6.3 關(guān)鍵字驅(qū)動(dòng)框架的優(yōu)點(diǎn):
- 關(guān)鍵字和函數(shù)庫變成完全通用的,因此對(duì)于不同的應(yīng)用可以很容易的被重用
- 所有復(fù)雜的邏輯都添加到函數(shù)庫里了。一旦庫文件被準(zhǔn)備好,在Excel表格里寫測(cè)試腳本將變得很容易
?
6.4 關(guān)鍵字框架的缺點(diǎn):
- 需要花很多時(shí)間在初始化創(chuàng)建函數(shù)庫上,關(guān)鍵字驅(qū)動(dòng)框架的優(yōu)勢(shì)只有在它被長(zhǎng)時(shí)間使用的時(shí)候才能被充分體現(xiàn)出來
- 創(chuàng)建復(fù)雜的關(guān)鍵字函數(shù)庫需要很強(qiáng)的編程技術(shù)
- 對(duì)于新人想快速理解框架是有點(diǎn)困難
?
7. QTP的混合框架
混合框架的意思是上面提到的一些框架的組合,基于需求,你可以合并以上框架的任何功能來組合成你需要的混合框架的版
有許多不同的方式來創(chuàng)建混合框架。讓我們一起看看混合框架中其中一種的結(jié)構(gòu)和工作流程
?
7.1 關(guān)鍵字驅(qū)動(dòng)框架的組件
- 驅(qū)動(dòng)腳本:它是一個(gè)VBS腳本文件,他是運(yùn)行測(cè)試腳本的入口點(diǎn)
- 批處理表格:批處理表格包含了有已經(jīng)自動(dòng)化的所有測(cè)試用例列表,并且還包含一個(gè)叫做Execute的列名,它的值是"Yes"和"No".驅(qū)動(dòng)腳本會(huì)讀取這個(gè)表格,然后執(zhí)行被標(biāo)記為"Yes"的測(cè)試用例
- 每個(gè)測(cè)試用例是被分割成不同的業(yè)務(wù)流程。因此當(dāng)這個(gè)用例包含的業(yè)務(wù)流程都被執(zhí)行時(shí)候,這個(gè)用例才算被完全的執(zhí)行
- 上面所說的是構(gòu)成混合框架的主要組件,像函數(shù)庫,數(shù)據(jù)表,對(duì)象庫,配置文件等其它一般的組件也是混合框架的一部分
?
7.2 混合框架的工作流
?
7.3 混合框架的優(yōu)點(diǎn):
- 這個(gè)框架最大優(yōu)點(diǎn)就是你可以用到其他框架最好的功能
7.4 混合框架的缺點(diǎn):
- 該框架是非常復(fù)雜的,需要具備很好的編程知識(shí)和經(jīng)驗(yàn)來從頭到尾的構(gòu)建混合框架
?
8. QTP的業(yè)務(wù)流程測(cè)試(BPT)框架
把測(cè)試用例分成多個(gè)流程,每個(gè)流程都用業(yè)務(wù)流程組件(Business process component)來腳本化的一個(gè)框架。當(dāng)一個(gè)具體的測(cè)試用例所包含的組件都已經(jīng)準(zhǔn)備好以后,你可以在QC里按照你們的業(yè)務(wù)邏輯來連接這些組件從而組成一個(gè)BPT的測(cè)試用例,然后就可以執(zhí)行它
8.1 BPT框架的組件:
- 應(yīng)用程序區(qū)域:它作為一個(gè)容器用來存儲(chǔ)業(yè)務(wù)流程組件和其他相關(guān)的項(xiàng),比如函數(shù)庫,對(duì)象庫等等。
- 業(yè)務(wù)流程組件:就像Action和函數(shù)是用來存儲(chǔ)可以復(fù)用的腳本一樣,BPT框架有業(yè)務(wù)流程組件,該組件包含了一個(gè)動(dòng)作所對(duì)應(yīng)的腳本
- 以上提到的2個(gè)組件在BPT框架里是非常有用的,而其它就是一些標(biāo)準(zhǔn)的組件,比如函數(shù)庫,對(duì)象庫,數(shù)據(jù)表等等。這些所有組件組成了BPT框架
?
8.2 BPT框架的工作流
?
8.3 BPT框架的優(yōu)點(diǎn):
- BPT可以讓非技術(shù)業(yè)務(wù)專家可以使用業(yè)務(wù)組件快速創(chuàng)建測(cè)試用例
- 許多功能,比如組件鏈接&數(shù)據(jù)參數(shù)化,這些都是來自BPT內(nèi)置的功能。有了這些功能,你不需要花費(fèi)額外的時(shí)間來寫實(shí)現(xiàn)這些功能的代碼
?
8.4 BPT框架的缺點(diǎn)
- BPT框架只能在QC里使用
- 如果你想為了你的測(cè)試腳本用BPT框架,需要為該框架支付額外的費(fèi)用
轉(zhuǎn)載于:https://www.cnblogs.com/testermark/p/3517824.html
總結(jié)
以上是生活随笔為你收集整理的QTP自动化测试框架的基础知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring-mybatis 抽取 ba
- 下一篇: 纪伯伦:我曾七次鄙视我的灵魂