軟件測(cè)試自動(dòng)化中腳本開發(fā)經(jīng)驗(yàn)分享_第1頁(yè)
軟件測(cè)試自動(dòng)化中腳本開發(fā)經(jīng)驗(yàn)分享_第2頁(yè)
軟件測(cè)試自動(dòng)化中腳本開發(fā)經(jīng)驗(yàn)分享_第3頁(yè)
軟件測(cè)試自動(dòng)化中腳本開發(fā)經(jīng)驗(yàn)分享_第4頁(yè)
軟件測(cè)試自動(dòng)化中腳本開發(fā)經(jīng)驗(yàn)分享_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1、腳本測(cè)試特點(diǎn)腳本語(yǔ)言語(yǔ)法簡(jiǎn)單靈活,與效率不是很相關(guān)的部分,使用腳本比較方便。對(duì)于多個(gè)文件的讀寫和控制,有比較成熟的庫(kù),幾行代碼可以解決C、C+需要較多代碼才能實(shí)現(xiàn)的功能。特別是對(duì)多文件的處理,數(shù)據(jù)流動(dòng)和處理比較復(fù)雜的情況。腳本語(yǔ)言的劣勢(shì)在于,缺乏嚴(yán)格的編譯環(huán)節(jié),變量定義,函數(shù)定義等問題發(fā)生概率比較大,會(huì)多制造一些障礙給測(cè)試人員。上帝關(guān)上一扇門,同時(shí)也開啟了另一扇門,解釋性的運(yùn)行方式,使我們很容易在程序中插入測(cè)試代碼,從而靈活的進(jìn)行測(cè)試,對(duì)程序代碼行、函數(shù)、代碼段、腳本,都能在不同的粒度上進(jìn)行控制,測(cè)試 更 加徹底,不易出現(xiàn)漏測(cè)問題。2、打好語(yǔ)言基礎(chǔ)對(duì)腳本的快速測(cè)試,需要基于一定的語(yǔ)言基礎(chǔ),

2、增強(qiáng)對(duì)腳本執(zhí)行的調(diào)試能力:1)sh x執(zhí)行看變量,sh 基本語(yǔ)法檢查2)快速多行注釋,%s,快速注釋多行方法“ << 標(biāo)記 標(biāo)記”3)熟悉awk,shell的基本語(yǔ)法,基本用法4)掌握awk快速對(duì)數(shù)據(jù)的分析能力5)Perl、python 的調(diào)試能力3、如何做到無(wú)漏測(cè)從問題角度出發(fā),看存在哪些類問題,發(fā)現(xiàn)階段最早在?1)歷史漏測(cè)點(diǎn)A)Awk漏測(cè),數(shù)據(jù)測(cè)試不充分,基于構(gòu)造的方法比較困難,(看懂代碼+理解邏輯+異常構(gòu)造)比如awk中的數(shù)據(jù)處理的第一條和最后一條是否符合預(yù)期,awk內(nèi)存占用是否 正常,可優(yōu)化,數(shù)據(jù)的處理結(jié)果是否和預(yù)期一致。B)上線單漏測(cè)復(fù)雜上線單中的驗(yàn)證,上線的時(shí)間點(diǎn)是否合

3、理(非線上運(yùn)行時(shí)間)C)多級(jí)環(huán)境部署漏測(cè)多機(jī)環(huán)境下需要模擬,遠(yuǎn)程登錄執(zhí)行或者scp數(shù)據(jù),用戶之間要有信任關(guān)系,如spiderA到workB的信任關(guān)系,需要在前面加上用戶名,否則ssh B會(huì)有問題。2)歷史bug(可能漏測(cè)點(diǎn))知史而至今,前提是知史,需要對(duì)前面的問題有個(gè)學(xué)習(xí),避免今后工作中出現(xiàn)。3)無(wú)遺漏發(fā)現(xiàn)問題從發(fā)現(xiàn)途徑上,單步執(zhí)行、分塊執(zhí)行、整體執(zhí)行、考慮重復(fù)多次執(zhí)行環(huán)境問題。從多個(gè)層次上對(duì)腳本進(jìn)行測(cè)試和考慮,從細(xì)節(jié)-> 功能-> 整體運(yùn)行維護(hù):A)Sh -<, sh -n單步執(zhí)行解決語(yǔ)法問題、變量問題、文件存在性問題。B)分塊兒執(zhí)行避免語(yǔ)法、邏輯問題、異常處理驗(yàn)證、下載驗(yàn)

4、證、md5驗(yàn)證、數(shù)據(jù)驗(yàn)證C)整體多次執(zhí)行考慮線上是多次運(yùn)行,歷史數(shù)據(jù)維護(hù),會(huì)不會(huì)有硬盤問題,會(huì)不會(huì)自動(dòng)清理歷史文 件,歷史文件的清理是否正確。D)可維護(hù)角度報(bào)警是否合理,是否報(bào)警過多。E)上線階段上線時(shí)間是否合理,是否正在運(yùn)行中,上下游數(shù)據(jù)準(zhǔn)備好的時(shí)間是否有足夠的 時(shí)間緩沖。F)上線檢查對(duì)log進(jìn)行檢查,及時(shí)發(fā)現(xiàn)問題。從以上幾個(gè)角度出發(fā),測(cè)試的過程是完整的,有效地避免了bug中的大部分。測(cè)試難點(diǎn)在于:大awk的測(cè)試,異常測(cè)試、數(shù)據(jù)流程理解和數(shù)據(jù)異常測(cè)試、歷史環(huán)境、復(fù)雜上線單測(cè)試、多機(jī)環(huán)境部署配合測(cè)試。本次只是針對(duì)awk測(cè)試重點(diǎn)進(jìn)行講述,awk如果出問題都是數(shù)據(jù)問題,影響效 果,下面針對(duì)awk的

5、陷阱做了一些總結(jié):Casel :代碼閱讀發(fā)現(xiàn)缺陷,基于邏輯的數(shù)據(jù)檢查,注意第一條和最后一條的 輸出邏輯:16 awk 'BEGINpre_user="" ; check=0 ; dead=0# patternneed checkif(ARGIND=1)dict$1=$2;elset=split($1,a,"/");p1=a1"/"a2"/"p2=a1"/"if(p1 in dict)p=p1;else if (p2 in dict)p=p2;else next;if(check!=0&a

6、mp;&p!=pre_user)print p,check >>"'$3":if(check=dead)20212223242526272930313233343536373839 if(check>=dictp)40 print p,check >>"'$4":41 else print p,check >>"'$5":42 43 check=044 dead=045 46 check+;47 if($3=0) dead+;48 pre_user=p49 50

7、 ' $1 $2Case2 :腳本中dump.sh 調(diào)用filter.awk 時(shí),取不到dump.sh中使用的 shell 變量,DEL_REASON的變量值,導(dǎo)致 從LINKBASE上取到的數(shù)據(jù)經(jīng)filter.awk 處 理后沒有任何數(shù)據(jù)輸出,dead.url_age.$i永遠(yuǎn)為空。Case3 :對(duì)2個(gè)有序文件進(jìn)行 merge,構(gòu)造case的時(shí)候,構(gòu)造文件$1,$2進(jìn) 行merge,如果$1先結(jié)束,會(huì)造成$1的最后一條還 會(huì)不斷打印出來(lái),使文件無(wú) 序,如果$2文件先結(jié)束,則不會(huì)出現(xiàn)該情況,構(gòu)造數(shù)據(jù)驗(yàn)證時(shí)要注意等價(jià)類劃分情 況,保證所有情況都被測(cè)試到。77787980818283848

8、5868788899091錯(cuò)誤代碼:awkBEGINkey_url=""key_all=""ret=1if($2v'$0LDEST_TIME') nexturl=$1url>key_url)while( url>key_url) # 修改為 while(ret>0 &&if(key_all) print key_allwhile(ret=getline line < "'$1'")>0)sp=index(line,"")tmp_url=s

9、ubstr(line, 1, sp-1)if(tmp_url>key_url)92 key_url=tmp_url93 key_all=line94 break95 96 print line97 98 if(ret=O) break99 100 pri nt101 102 END103 if(ret) print lineline104 while(ret=getlineline < "'$1'")# 修改為(ret=getlineline < "'$1'")>0 print105 pri ntl

10、ine106 107 ' $24、加快腳本測(cè)試方法做任何事情,如果想加快,都有一些熟知的方法:1、并行處理;2、借助于工具,自動(dòng)化不需要人工介入的部分;3、加快必須人工部分的速度。如果把上面的基 本方式映射到我們的腳本測(cè)試中:4.1并行執(zhí)行多個(gè)CASE我們可以對(duì)多次運(yùn)行做并行化。對(duì)于腳本類測(cè)試,大多數(shù)是挖掘類,基于一個(gè)比較復(fù)雜的測(cè)試周邊環(huán)境,但是,不會(huì)修改本模塊以外的環(huán)境和數(shù)據(jù)。我們可以利用一個(gè)周邊環(huán)境,部署多個(gè)被測(cè)程序,通過修改conf來(lái)保證運(yùn)行:a)對(duì)同一臺(tái)機(jī)器部署多個(gè)不同目錄(減少搭建周邊環(huán)境)b)對(duì)不同機(jī)器相同路徑部署(減少修改conf)對(duì)不同目錄進(jìn)行不同case運(yùn)行。比如,新

11、舊對(duì)比,性能,功能等同時(shí)進(jìn)行。同 時(shí)對(duì)多個(gè)粒度進(jìn)行測(cè)試,避免因?yàn)槟炒芜\(yùn)行,占用環(huán)境,而堵塞我們的測(cè)試過程。4.2借助工具自動(dòng)化操作步驟,這個(gè)我們自己可以編寫test腳本來(lái)完成,比如性能監(jiān)控,環(huán)境清理等功能。借助于自動(dòng)化通用工具,比如類似編譯器的變量檢查,路徑檢查,函數(shù)接口檢 查等,實(shí)現(xiàn)腳本之間調(diào)用關(guān)系和數(shù)據(jù)依賴關(guān)系的檢查等。對(duì)很多產(chǎn)品線的公共問題,統(tǒng)一處理,這些都是大組、專人來(lái)開發(fā)和維護(hù)。4.3腳本測(cè)試技巧人是靈活的,不是所有的工作都適合自動(dòng)化。腳本測(cè)試設(shè)計(jì)中和代碼邏輯強(qiáng)相 關(guān)的部分,不易自動(dòng)化,因?yàn)樽詣?dòng)化要兼容多種可能性的時(shí)候,太復(fù)雜,而且不能 保證100%的準(zhǔn)確率,還是需要人工參與,比如:?jiǎn)栴}1: if的異常分支,空文件構(gòu)造,數(shù)據(jù)的清空邏輯,數(shù)據(jù)的歷史維護(hù)邏輯, ssh邏輯,如何快速驗(yàn)證?問題2:領(lǐng)測(cè)國(guó)際為了不同粒度的測(cè)試,需要多次運(yùn)行腳本,有些腳本運(yùn)行時(shí) 間很長(zhǎng),是否可以一次運(yùn)行,測(cè)試完所有粒度的功能?上面這個(gè)例子中的一些技巧:A)異常分支,我們可以通過添加語(yǔ)句 mkdir -p a;rm a,來(lái)保證#?的檢測(cè)B)構(gòu)造各種邏輯,或者看代碼,看是否滿足線上對(duì)數(shù)據(jù)邏輯的需求。C)中間數(shù)據(jù)的保留,對(duì)需要長(zhǎng)時(shí)間運(yùn)行的代碼塊兒,插上樁,將結(jié)果cp到其他文件,縮短時(shí)間,后續(xù)修改腳本代碼,利用備份的中間文件多次獨(dú)立運(yùn)行,節(jié)省

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論