QTP的那些事--终极项目脚本设计思路及其测试查询功能的一些实际项目体会
1,采用importdatable將外部的excel數(shù)據(jù)加載到對(duì)應(yīng)的datatable中;
2,實(shí)際項(xiàng)目中可能不會(huì)讓我們?nèi)ピO(shè)置數(shù)據(jù)庫(kù)的檢查點(diǎn)來(lái)校驗(yàn)數(shù)據(jù),而且校驗(yàn)的數(shù)據(jù)比較復(fù)雜,就拿我們基本的手工測(cè)試來(lái)說(shuō)。我們?cè)跍y(cè)試查詢條件的時(shí)候也是不去考慮數(shù)據(jù)庫(kù)底層的查詢結(jié)果的,我們關(guān)注的僅是查詢的結(jié)果中有沒有查詢到結(jié)果,查詢的結(jié)果中有沒有我們的查詢條件中的值;
3,針對(duì)以上情況,涉及思路如下:
3.1 所有的查詢條件設(shè)計(jì)成相當(dāng)于MVC模式 中的VO層,也就是我們的輸入層數(shù)據(jù),然后將對(duì)應(yīng)的錄制的查詢腳本都參數(shù)化為我們datatable中對(duì)應(yīng)的字段;
3.2 判斷檢查查詢的實(shí)際結(jié)果,實(shí)際結(jié)果我這里就沒有坐那邊復(fù)雜的處理,就簡(jiǎn)單的是做了一個(gè)判斷,如下:
思路其實(shí)很簡(jiǎn)單,就是得到對(duì)應(yīng)的webtable中的innnertext屬性中所有的文本查詢結(jié)果,然后再獲取datatable中所有的查詢條件,將所有的查詢條件與innertext中內(nèi)容比較一下,查看是否有對(duì)應(yīng)的數(shù)據(jù),如果有的話,那么就寫上我們的實(shí)際的測(cè)試結(jié)果(查詢到數(shù)據(jù)),如果沒有查詢到數(shù)據(jù)就寫上(沒有結(jié)果)。
? 這里的判斷結(jié)果只存在兩種情況,其他的復(fù)雜的情況沒有考慮。
Browser(“browser").Page(“page").Sync'得到實(shí)際的測(cè)試執(zhí)行結(jié)果set listtab=Browser(“browser").Page(“page").Frame("frmae").WebTable("合計(jì)")writerow=datatable.LocalSheet.GetCurrentRow+1If listtab.Exist(1) Thenlistresult=listtab.GetROProperty("innertext")End Ifprint "當(dāng)前的行"&writerowIf listtab.Exist(10) Then For index=1 to datatable.LocalSheet.GetParameterCountindexres=datatable.LocalSheet.GetParameter(index) '獲得對(duì)應(yīng)的參數(shù)數(shù)據(jù)if instr(1,listresult,indexres,1)>0 thendatatable.LocalSheet.GetParameter("實(shí)際結(jié)果").Value="查詢到結(jié)果"'寫到excel中結(jié)果'writeExcelDatas(filename, sheetindex, x, y, values)writeExcelDatas "result",1,writerow,20,"查詢到結(jié)果"elsedatatable.LocalSheet.GetParameter("實(shí)際結(jié)果").Value="沒有結(jié)果"writeExcelDatas "result",1,writerow,20,"沒有結(jié)果"end ifNextelsedatatable.LocalSheet.GetParameter("實(shí)際結(jié)果").Value="沒有結(jié)果"writeExcelDatas "result",1,writerow,20,"沒有結(jié)果"End If'執(zhí)行測(cè)試結(jié)果,預(yù)期值與實(shí)際值的比較expectvalue=trim(datatable.LocalSheet.GetParameter("期望結(jié)果"))actualvalue=trim(datatable.LocalSheet.GetParameter("實(shí)際結(jié)果").RawValue)If expectvalue=actualvalue Thendatatable.LocalSheet.GetParameter("測(cè)試結(jié)果").Value="PASS" writeExcelDatas "result",1,writerow,21,"PASS"elsedatatable.LocalSheet.GetParameter("測(cè)試結(jié)果").Value="Failed"writeExcelDatas "result",1,writerow,21,"Failed"End If'執(zhí)行用例結(jié)束后的通知。。。If datatable.GetCurrentRow=runiteration ThenreportProgress "當(dāng)前action用例執(zhí)行完畢.....",5End If
?
?
?
?
小結(jié)一下:
?
(我覺得用QTP設(shè)計(jì)自動(dòng)化腳本的時(shí)候,首先要考慮的是這個(gè)模塊相當(dāng)于是增刪改查中的那個(gè)模塊,然后再針對(duì)不同模塊進(jìn)行相關(guān)的處理)
1,其實(shí)所有的自動(dòng)化腳本來(lái)說(shuō),跟開發(fā)一樣的概念,對(duì)于增刪改查這些功能模塊,及其流程操作來(lái)說(shuō)。
1.1 QTP做的最好的就是增,保存一條信息的功能,這個(gè)可以用于流程操作或者是針對(duì)系統(tǒng)測(cè)試入手的時(shí)候,進(jìn)行系統(tǒng)環(huán)境的數(shù)據(jù)準(zhǔn)備工作;
1.2 QTP支持的對(duì)應(yīng)刪,改這些操作其實(shí)跟增的功能差不多,也是比較的容易;
1.3 然后就是查的模塊:
我對(duì)于這個(gè)模塊很是糾結(jié),想到了許多種處理的方式。下面主要介紹針對(duì)于查詢功能數(shù)據(jù)的一些測(cè)試方法:
我將查詢模塊的功能分成了兩種形式,一種是聯(lián)動(dòng)數(shù)據(jù)的信息查詢,一種就是直接從數(shù)據(jù)庫(kù)中校驗(yàn)數(shù)據(jù)的查詢;
先說(shuō)第一種:
聯(lián)動(dòng)數(shù)據(jù)的信息查詢
意思就是這里的查詢數(shù)據(jù)的結(jié)果,我們可以通過(guò)后臺(tái)的數(shù)據(jù)庫(kù)查詢到對(duì)應(yīng)的數(shù)據(jù),但是我們也可以通過(guò)在系統(tǒng)的其他模塊查詢到該對(duì)應(yīng)的數(shù)據(jù)是否正確與否;
對(duì)于這種情況,我的考慮是你從別的地方將所對(duì)應(yīng)的數(shù)據(jù)先取出來(lái),放到excel或者是txt文件中,最好是txt,excel讀取文件中速度還是很慢的,比較麻煩在查詢的將對(duì)應(yīng)查詢結(jié)果與你放在excel或者是txt中的內(nèi)容對(duì)比一下,就可以知道你的查詢結(jié)果的正確與否了;
直接從數(shù)據(jù)庫(kù)中校驗(yàn)數(shù)據(jù)的查詢
?意思就是這里的查詢數(shù)據(jù)不依賴與其他的模塊中數(shù)據(jù),是完完全全從數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表查詢到的;
對(duì)于這種情況,我的考慮就是按照上面的方式進(jìn)行操作;
上面設(shè)計(jì)的這種查詢方式,有些缺點(diǎn)就是查詢時(shí)候如果數(shù)據(jù)比較多,就腳本校驗(yàn)的比較的慢。關(guān)于這個(gè)問(wèn)題,我會(huì)在后續(xù)中進(jìn)行解決。。。。暫時(shí)先不進(jìn)行處理。
轉(zhuǎn)載于:https://www.cnblogs.com/alterhu/archive/2012/05/30/2526000.html
總結(jié)
以上是生活随笔為你收集整理的QTP的那些事--终极项目脚本设计思路及其测试查询功能的一些实际项目体会的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ubuntu重置面板
- 下一篇: 纯CSS无hacks的跨游览器多列布局(