前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇波動方程范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
關(guān)鍵詞: 瀑布型多重網(wǎng)格方法;矢量有限元;外推;矢量波動方程
中圖分類號:O 24182
文獻標志碼:A文章編號:1672-8513(2011)04-0267-05
A New Cascadic Multi-Grid Method for the Vector Wave Equation
LU Kangmei,LI Chengliang,CAO Yanbin
(School of Mathematics and Computational Science,Guilin University of Electronics Technology,Guilin 541004,China )
Abstract: The vector finite element method,which can effectively avoid the spurious modes,is widely used in the analysis of electromagnetic problems,as is the case in the discrete calculating of the vector wave equation.The finite element extrapolation technique for the eigenvalue problem, which is proposed by Yang Yi-duo,is extended and applied to eigenvalue problems of vector wave equation.In this paper,a new cascadic multi-grid method based on the vector field eigenvalue problem is proposed,based on the extrapolation technique.The numerical results show that the new method is a very accurate and efficient method.
Key words: cascadic multi-grid method;vector finite element;extrapolation;vector wave equation
在微波理論和技術(shù)中,諧振腔本征值問題是最基本的問題之一.很多微波部件和系統(tǒng)的分析與最優(yōu)化設(shè)計又往往以該問題的求解為基礎(chǔ).矢量有限元方法是近10年來在電磁場計算中應(yīng)用比較廣泛的一種方法.只要選擇了合適的矢量基,所考慮結(jié)構(gòu)的內(nèi)部和外部邊界都能夠從數(shù)學(xué)上自然滿足,就能夠很好地解決偽解問題;又因為有限元方法的網(wǎng)格劃分能很好地模擬實際結(jié)構(gòu),因此我們選擇了矢量有限元對諧振腔進行離散計算.
多重網(wǎng)格方法,對于求解由微分方程離散化得到的方程組來說,是目前最快速高效的方法之一,它的求解的工作量可降為O(n)或O(nlnn).因此它在計算電磁場問題上得到了廣泛的關(guān)注,最近一些學(xué)者發(fā)展了基于棱邊元的多重網(wǎng)格算法[1-6].瀑布型多重網(wǎng)格無需粗網(wǎng)格校正,它比一般的多重網(wǎng)格方法計算量減少了,從而提高了計算效率,然而基于棱邊元上的瀑布型多重網(wǎng)格方法的研究還是比較少的,特別是矢量場的本征問題,目前研究的也較少.
外推算法是由林群, 陳傳淼等[7-8]引入到有限元求解偏微分方程,楊一都在文獻[9]中引進了本征有限元外推的一個新技術(shù), 李永明等[10]將有限元外推應(yīng)用到了波導(dǎo)本征問題.本文在其基礎(chǔ)上, 將其推廣應(yīng)用到矢量波動本征問題, 具體的算例表明其可行性和高精度性.
本文結(jié)合外推技術(shù),提出了一種基于矢量場本征問題的瀑布型多重網(wǎng)格方法.數(shù)值算例結(jié)果說明該方法的有效性和實用性.
1 數(shù)學(xué)基礎(chǔ)
對于一個填充相對介電常數(shù)為εr和相對磁導(dǎo)率為μr介質(zhì)的封閉諧振腔體,對應(yīng)的矢量波動方程為
其中ε為精度控制參數(shù). 以上迭代過程簡記為(λj,uj)=NC{(j,j)}.
2.3 外推技術(shù)
定理1 設(shè)剖分是強正規(guī)的, 又設(shè)λ為對應(yīng)于波導(dǎo)本征問題的簡單本征值, 相應(yīng)的規(guī)格化本征函數(shù)u∈C4(Ω), 則本征值外推估計為:
λ=13(4λh/2-λh)+ο(h4).
詳細證明見文獻[9].
類似的,設(shè)某矩形諧振腔在粗矩形剖分單元下計算得到的本征值為λh, 隨后在此粗剖分基礎(chǔ)上加密剖分1次, 再計算得到的本征值為λh/2 ,則根據(jù)定理1 ,此矩形諧振腔本征值可由外推λhw=13(4λh/2-λh)(記為λhw=E(λh/2,λh)),得到更精確的解.
2.4 矢量波動本征問題的瀑布型多重網(wǎng)格算法
對于矢量有限元離散產(chǎn)生的一系列本征方程組Aiui=λiBiui(i=0,1,2,…,l), 若要求解最細網(wǎng)格層l層上本征方程Alul=λlBlul, 我們結(jié)合外推技術(shù)給出如下求解該本征問題的新瀑布型多重網(wǎng)格算法.
由圖2,我們也可以看出隨著網(wǎng)格的加密計算的精度越來越高,從而驗證了算法的快速收斂性,且和一般的瀑布型多重網(wǎng)格方法比較計算精度也提高了很多.
4 結(jié)語
從上述的算法公式,以及矩形諧振腔的諧振頻率計算結(jié)果的分析可以看到,利用瀑布型多重網(wǎng)格方法大大減少了計算量,將外推推廣應(yīng)用到諧振腔本征問題求解精度得到了很大的提高,因此在比較少的單元剖分下便可以較大的提高計算精度.計算過程也比較簡單,易于編程,因此該算法在現(xiàn)代數(shù)值計算中是一種十分實用、簡單、高效的新方法.
參考文獻:
[1]WATANABE K ,IGARASHI H .Robustness of nested multigrid method for edge-based finite element analysis [J]. IEEE Transactions on Magnetics, 2009,45(3):1088-1091.
[2]TSAI C L ,WANG W S .An improved multigrid tcchnique for quasi-TEM analysis of a microstrip embedded in an inhomogeneous anisotropic medium[J].IEEE Trans. Microwave Theory Tech,1997,45(5): 678-686.
[3]WEISS B ,BIRO O .Edge element multigrid solution of nonlinear magnetostatic problems[J]. Comple,2001,20(2):357-365.
[4]SCHINNERL M ,SHOBERL J ,KALTENBACHER M. Nested multigrid methods for the fast numerical computation of 3D magnetic fields[J]. IEEE Trans Magn,2000,36:1539-1542.
[5]WATANABE K ,IGARASHI H ,HINMA T.Comparison of geometric and algebraic multigrid methods in edge-based finite-element analysis[J]. IEEE Transactions on Magnetics,2005,41(5):1672-1675.
[6]金建銘,王建國,葛德彪.電磁場有限元方法[M].西安:西安電子科技大學(xué)出版社,2001:165-186.
[7]陳傳淼,黃云清.有限元高精度理論[M].長沙:湖南科學(xué)技術(shù)出版社,1995:451-492.
[8]李郴良,陳傳淼,許學(xué)軍.基于超收斂和外推方法的一類新的瀑布型多重網(wǎng)格方法[J].計算數(shù)學(xué),2007,37(9):1083-1098.
[9]楊一都.本征值有限元外推的一個新技術(shù)[J].貴州大學(xué)學(xué)報:自然科學(xué)版,1989,6(3):6-11.
【關(guān)鍵詞】鋁箔 加工 排產(chǎn) 優(yōu)化
鋁箔的生產(chǎn),在工藝方面和材料的使用方面要求都比較高。需要的工藝流程復(fù)雜,要經(jīng)過焙鑄、熱軋鑄軋、冷軋、箔材軋制、分切等加工工藝和熱處理過程才能對鋁制品進行加工,工序比較長、難度比較大。鋁箔的生產(chǎn)技術(shù)不斷的發(fā)展使我國在鋁箔方面的消費比例不斷的提高但是鋁箔的生產(chǎn)水平還依然存在很多問題,對于加工方法還有待研究。本文對超薄鋁箔的加工動態(tài)集成排產(chǎn)方法進行研究。
1熱軋問題的使用方法
1.1數(shù)學(xué)規(guī)劃方法
在熱軋的問題上,我們早期使用的方法是數(shù)學(xué)規(guī)劃的方法。數(shù)學(xué)規(guī)劃模型的使用是利用動態(tài)的規(guī)劃方法對離散鋼鐵企業(yè)的優(yōu)化生產(chǎn)問題進行解決的。PVC板生產(chǎn)中的多開工時間調(diào)度問題開發(fā)出了一種TABU搜索啟發(fā)的算法,這種算法的應(yīng)用很大程度上減弱了開工時間的調(diào)度問題。分支界定算法的出現(xiàn)是對無縫鋼管的軋制進行多階段的分批調(diào)度問題的解決。而在軋機、加熱爐、能力損耗和制造成本方面的調(diào)度目標模塊所使用的是分支界定求解的方法。在國外,這幾種方法得到了廣泛的應(yīng)用但是應(yīng)用的時效性受到了限制。
1.2非數(shù)學(xué)規(guī)劃的方法
非數(shù)學(xué)的規(guī)劃方法可以分為兩大類,主要是啟發(fā)式方法和人工智能的方法。啟發(fā)式方法是通過對計算過程和評價指數(shù)的運算在比較短的時間里,有意識的尋找最佳的解決方案。COWLING提出了一種決策系統(tǒng),這種決策系統(tǒng)是以鋼鐵熱軋過程的多模型為依據(jù),利用TSBU的算法對調(diào)度問題進行有效的解決。熱軋調(diào)度問題的簡化是PCVRP的模型,同時提出了基于大規(guī)模鄰域定義的局部搜索方法。模擬退火算法有時候也被用于求解熱軋調(diào)度的相關(guān)問題。
1.3數(shù)學(xué)模型的建立
我國的研究者陳雄創(chuàng)造出了軋制批量計劃問題的數(shù)學(xué)模型,這種數(shù)學(xué)模型分為啟發(fā)式算法和模擬退火算法。我國在熱軋批量計算問題的約束滿意問題進行了處理,對軋熱問題的PCTSP建模和該模蟻群的蒜放方面做出了研究。針對軋熱問題的CVRP建模還提出了混合免疫算法。
上述的這些方法都是軋制生產(chǎn)中的優(yōu)化排產(chǎn)的基本理論和方法。由于我國超薄鋁箔的生產(chǎn)不斷的發(fā)展,生產(chǎn)要求也隨之提高,在排產(chǎn)計劃和熱處理方面要使生產(chǎn)具有動態(tài)性就要根據(jù)具體實際進行任務(wù)的不斷完善和添加,隨時對排產(chǎn)計劃進行調(diào)整,排產(chǎn)的相關(guān)實時性要求和方法要快速的計算,增加可靠性和實用性特點。
2代數(shù)法建模
2.1符號函數(shù)的定義方法
I設(shè)置為鋁卷號,I=1,2...,P。J為設(shè)備的編號,J=1,2,...,M。工藝路線矩形陣R。R是n*m型矩陣,其中元素R表示鋁卷I在加工工藝路線中設(shè)備J所占的順序位。鋁卷號關(guān)系表E%表E中每行代表一個鋁卷號的屬性、各列分別表示物料編碼、爐架號、直徑、計劃開始時間、加工時間、設(shè)備編號、工藝順序號其中物料編碼、設(shè)備編號、工藝順序號、加工時間的數(shù)據(jù)來源于工藝路線矩陣和加工時間矩陣。圖1所示為爐架和鋁卷的幾何尺寸其中a、b、h分別代表爐架的長、寬、高。條件如下所示:
H=h1+h2+h3
r1>r2>....rk rk+1>rk+2>....>rk2k
上排
h1>r1 h2>r1 u1=r1 u2=r1+r2
下排
H3>rk+1 h2>rk+1
圖1.爐架和鋁卷的幾何參數(shù)
2.2第一次排序
第一次排序是對訂單池中的鋁卷進行排序,排序按照重要的程度和緊急的程度進行安排,優(yōu)化的準則體現(xiàn)在評價指數(shù)當中。對調(diào)度問題的NP難度性,要選擇計算量不大,計算時間不長的效果優(yōu)化好的啟發(fā)式目標函數(shù)作為評判的標準。
兼顧能夠?qū)υO(shè)備的使用率提高、合同按照完工率和裝爐系數(shù)等進行多樣性目標的歸集,評價的指數(shù)可以參照鋁卷號和爐架號進行歸類。第一次排序是對任務(wù)中的全部鋁卷進行加工,按照從小到大的順序進行排序。
2.3第二次排序
第二次排序是第一次排序的升級,把第一次排序截取的歸屬于統(tǒng)一最佳的鋁卷進行內(nèi)部的排序,使呂佳能夠安裝更多的鋁卷,這樣能夠節(jié)省熱處理電費。這種方法也被稱為爐次計劃,計劃的步驟主要體現(xiàn)在:
首先,在按照排好的序列中從前向后截取鋁卷直徑之和小于或等于2a最好接近2a的鋁卷子序列。
其次,從這種子序列中對鋁卷進行選擇,每隔一個選取一個,按照鋁卷的直徑大小排列,排列順序是由小到大的排列順序。
最后,將該兩段鋁卷分別擺放在支架的上下兩排,對每個鋁卷的位置是否滿足約束條件進行檢查,如果符合則排產(chǎn)成功,進行下一步,如果沒有成功就要對兩端序列進行保留。截取兩端子序列,在四段中選配評價指數(shù)最小的又能滿足條件的方案。然后輸出鋁卷的兩次排序方式和爐架上的擺放方式。
2.4狀態(tài)賦值
當設(shè)備為退火爐時,設(shè)定編號為K,設(shè)備軋機時設(shè)定編號為J。這種情況下設(shè)備的變量的計算方式主要有三種,分別表示為:
首先,設(shè)備編號為軋制設(shè)備時每一個爐架的第一鋁卷開工時間為上一道熱處理時間與本輪最后一個任務(wù)完成時間的最大值。每一個爐架非第一個鋁卷軋制工序設(shè)備加工最近的鋁卷被上一道工序加工完畢是具有以下公式:
在設(shè)備J沒有加工鋁卷時,鋁卷被上一道程序加工時的公式是:
在這里i表示設(shè)備k加工的上一道鋁卷,熱處理工序的狀態(tài)時間是在當前設(shè)備加工的前一個爐架的結(jié)束時間和當前鋁卷時間的最大值。
3結(jié)語
綜上所述,本文從鋁卷的排產(chǎn)方法、爐架的布置以及生產(chǎn)的調(diào)度方面對超薄鋁箔的生產(chǎn)排產(chǎn)方法進行了研究。按照訂單的需求進行先后的排序,在同一個鋁卷在爐架上的合理排放方式進行了分析。超薄鋁箔具有工藝流程復(fù)雜性的特點,我們要對對象進行合并、分割、集中的特點運用相應(yīng)的代數(shù)方法進行模型的建立以此促進按時完成訂單和節(jié)能減排的一員。
參考文獻:
傳統(tǒng)意義上的世界杯營銷,往往是有實力的大品牌之間的商業(yè)博弈行為,更多的中小企業(yè)大多數(shù)時候只是看客。然而,在今年的南非世界杯期間,我們卻看到了合作營銷的亮點。淘寶商城聯(lián)合中央電視手打造的世界杯營銷新模式,在交叉整合雙方資源的基礎(chǔ)上, “實現(xiàn)了品牌廠商、央視和淘寶商城的三方共贏,讓品牌在電子商務(wù)平臺上發(fā)揮出巨大能量”。淘寶網(wǎng)CFO兼淘寶商城總經(jīng)理張勇表示。
據(jù)悉,在6月11日至7月12日的31天內(nèi),淘寶商城的曲美、九陽、七匹狼、歐莎等數(shù)十家品牌商在世界杯期間購買央視一套、五套的廣告資源,并與央視共同合作一檔電視節(jié)目,在淘寶商城內(nèi)搭建網(wǎng)上世界杯頻道,同時,將央視“球迷狂歡節(jié)”節(jié)目中互動游戲“九宮格射門”與淘寶商城網(wǎng)上世界杯頻道的秒殺活動連接起來。電視節(jié)目中,現(xiàn)場嘉賓所踢中的九宮格球門中的任一品牌,便會在淘寶零點世界杯頻道的秒殺板塊以1元價格秒殺。這種精準的促銷廣告形式。縮短了消費路徑,直接將央視龐大的觀眾群導(dǎo)入到淘寶商城,傳播效果通過網(wǎng)絡(luò)平臺的銷售即刻展現(xiàn)。由此,大品牌可以更好地監(jiān)控投放效果,把握市場需求;小品牌也“登堂入室”,進入了更多消費者的視野。
創(chuàng)新性的合作營銷模式為淘寶商城在世界杯期間締造了銷售神話。據(jù)淘寶數(shù)據(jù)顯示,在過去的31天,3000多萬人次關(guān)注淘寶商城球迷狂歡節(jié),為淘寶帶來2390萬元成交量。淘寶網(wǎng)世界杯相關(guān)產(chǎn)品的交易額更是達到了4390萬元,是史上一個月交易額的44倍。當然,此次活動惠及更多的當屬參與活動的淘寶商城的商家們。600%的點擊增長,60%的銷售增長,讓商家們喜不自禁。
在眾多品牌中,增長最驚人的是奧克斯空調(diào),592%的點擊增長令奧克斯的銷售人員都瞠目結(jié)舌,“在6月就迎來銷售高峰,我們都很吃驚。”銷售增長獲得215%的曲美也樂觀地表示, “我們覺得,這樣的模式不僅是商家遇到盛事時候的有效營銷模式,以后也可以不斷嘗試,說不定還能在實踐中不斷出新。”
一、FLIC文件格式的概述
FLIC文件事實上是對一個靜止畫面序列的描述,連續(xù)顯示這一序列便可在上產(chǎn)生動畫效果。FLIC文件結(jié)構(gòu)簡潔,彈出速度快,雖然每種基色最多只有256級灰度,圖像深度只有8位,但使用起來很方便。
FLIC文件有兩種類型:FLI文件和FLC文件。FLC文是FLI文件的進一步發(fā)展,它采用更高效的壓縮技術(shù),且其分辨率也不僅限于320×200。我們在PC上經(jīng)常使用的FLI文件,因為它和VGA的320×200×256顯示相匹配。
FLIC文件采取的壓縮技術(shù)原理就是僅保存前一幀中改變的部分。這樣占的空間小,彈出速度快。FLIC文件的結(jié)果可分為3個層次:文件層、幀層和塊層。文件層給出了FLIC文件的基本特征。幀層定義了幀的緩沖和塊中塊的數(shù)目。塊層包括塊的大小、類型和實際數(shù)據(jù)。這樣的層次結(jié)構(gòu)很容易實現(xiàn),特別是可以增加塊的類型以滿足新的需要,同時無需涉及原定義。
二、各層頭的結(jié)構(gòu)
1.FLI文件格式的結(jié)構(gòu)定義
①文件頭的結(jié)構(gòu)定義
文件頭長度為80H字節(jié),其C語言結(jié)構(gòu)定義如下
/*flifilehedaerstruct*/
typedefstruct{
unsignedlongfli-size;/*00H:文件總長度*/
unsignedintmagic;/*04H:文件格式,FLC=AF12;
FLI=AF11;*/
unsignedintframes-number;/*06H:FLIC的幀數(shù)*/
unsignedintscreen-width;/*08H:屏幕寬度*/
unsignedintscreen-height;/*0AH:屏幕高度*/
unsignedintunuserd;/*0CH:保留未用*/
unsignedintflags;/*0EH:標志=0003*/
unsignedintspeed;/*10H:幀間播放速度單位*/
unsignedlongnext;/*12H:置為0*/
unsignedlongfrit;/*16H:置為0*/
unsignedcharfli-expand[102];/*1AH:保留作擴展用=0*/
}FLIHEAD;
②幀頭的結(jié)構(gòu)定義
幀頭長度為10H字節(jié),其C語言結(jié)構(gòu)定義如下:
/*framesheaderstruct*/
typedefstruct{
unsignedlongsize-frame;/*00H:幀大小,包括本幀頭*/
unsignedintmagic;/*04H:幀標識字=0F1FAH*/
unsignedintchunks;/*06H:本幀塊數(shù)*/
unsignedcharexpand[8];/*08H:保留未用=0*/
}FRAMESHEAD;
③塊頭的結(jié)構(gòu)定義
塊頭長度為6H字節(jié),其C語言結(jié)構(gòu)定義如下:
/*chunkheaderstruct*/
typedefstruct{
unsignedlongsize-chunk;/*00H:塊大小*/
unsignedtype-chunk;/*04H:塊類型*/
}CHUNKHEAD;
2.FLC文件格式的結(jié)構(gòu)定義
文件頭長度為80H字節(jié),其C語言結(jié)構(gòu)定義如下:
/*flifileheaderstruct*/
typedefstruct{
unsignedlongfli-size;/*00H:文件總長度*/
unsignedintmagic;/*04H:文件格式,FLC=AF12;
FLI=AF11;*/
unsignedintframes-number;/*06H:FLIC的幀數(shù)*/
unsignedintscreen-width;/*08H:屏幕寬度*/
unsignedintscreen-height;/*0AH:屏幕高度*/
unsignedintdepth;/*0CH:圖像深度*/
unsignedintflags;/*0EH:標志=0003*/
unsignedintspeed;/*10H:幀間播放速度單位
FLC=1ms,FLI=1/70s*/
unsignedintreserved-1;/*14H:保留未用*/
unsignedlongcreatetime;
unsignedlongcreator;
unsignedlongupdatetime;
unsignedlongupdater;
unsignedintaspectx;/*創(chuàng)建文件時的顯示屏幕像素大小的縱橫比,VGA320×200
unsignedintaspecty;為6∶5*/
unsignedcharreserved-2[0x26];/*保留未用,=0*/
unsignedlongoffsetframel;/*50H:第一幀畫面相對于文件
開始的偏移*/
unsignedlongoffsetframe2;/*54H:第二幀畫面相對于文件
開始的偏移*/
unsignedcharreserved-3[0x28];/*保留未用=0*/
}FLIHEAD;
FLC的幀頭和塊頭的結(jié)構(gòu)定義和FLI文件格式的定義相同。
每塊的數(shù)據(jù)緊接在FLIC文件頭的后面。對于不同的塊類型有不同的數(shù)據(jù)含義,下面就不同的塊類型分別介紹,這是設(shè)計播放FLIC動畫文件程序的關(guān)鍵之所在。
三、塊類型的含義
FLIC格式文件中的塊類型有許多種,每一種類型都有不同的定義,因此我們必須對每一種類型作出準確的分析。由于動畫格式FLIC圖像文件的塊類型具有極強的可擴展性,在此我們只介紹幾種常見的塊類型。
1.類型04H
為每基色256級灰度的彩色調(diào)色板信息表FLIC-COLOR,其第一個字為需調(diào)色的調(diào)色子塊數(shù)(一個字),緊接其后的是需調(diào)色的相應(yīng)各塊的數(shù)據(jù)定義:
字節(jié)含義
第一字節(jié):跳色數(shù),在本塊中的需要跳過的顏色數(shù)(字節(jié))。
第二字節(jié):調(diào)色數(shù),本塊中有多少種顏色需要改變,當調(diào)色數(shù)為0時指調(diào)256色。初始時當前色號為零。
其后的字節(jié):以三字節(jié)為一組,是需要改調(diào)色的相應(yīng)的RGB值。
通常FLIC圖像文件的頭一幀的第一塊數(shù)據(jù)便是該類型(或0BH類塊)。在程序設(shè)計中我們定義了一個256色的調(diào)色板數(shù)組:
charpalette[768];
用于完成調(diào)色板的初始化工作。
2.類型07H
該類型數(shù)據(jù)以字節(jié)為基礎(chǔ),只適用于.FLC文件,處理對第一幀圖像的改變情況較為適用。它含有本幀圖像對于上與幀圖像的改變部分。
這種塊類型是一種最常用的、最復(fù)雜的塊類型,一般除了第一幀外后面的各幀通常采用這種塊類型進行行數(shù)據(jù)壓縮存儲。它的描述如下:
字節(jié)含義
(1)第一個字:需要改變的行的數(shù)量
(2)第二個字開始:是具體需要改變的數(shù)據(jù)本身。每一行是進行單獨的壓縮的,這種技術(shù)的采用大大壓縮了.FLC文件長度。它的具體定義為:可選字、小塊數(shù)及小塊的值。①可選字:
當高位=11時,低位部分為跳行數(shù)。該字可以有多個,其跳行數(shù)相加。當高位=10時,低位部分內(nèi)容為當前行的最后一個字節(jié)。(作為本行的結(jié)束標志)。②小塊數(shù):當高位=00時,此字表示小塊數(shù)的值。③小塊:第一個字節(jié):跳列數(shù)。第二個字節(jié):小塊類型:當該值為正時:表示要從塊中搬到圖像中的像素(字)個數(shù)N,其后就是N個連續(xù)的像素數(shù)據(jù);當該值為負時:它的絕對值N表示要重復(fù)從塊中搬到圖像中的像素(字)的次數(shù),其后就是那個像素的數(shù)據(jù)
。第三個字節(jié):塊中的圖像數(shù)據(jù)(字)。
3.類型0BH
與類型04H類似,它與VGA的13H模式相匹配。
4.類型0CH
與類型07H類似,但它以字節(jié)為基礎(chǔ),通常用于.FLI文件
字節(jié)含義
(1)第一個字:從屏幕上方開始和上一幀相同的行數(shù)即本幀中第一行要改變的行號。例如:如果有一個改變(運動)僅僅只是在屏幕的底部,那么此時該字值為199(VGA320×200)。
(2)第二個字:需要改變的行的數(shù)量。
(3)第三個字以后:是具體需要改變的數(shù)據(jù)本身。每一行是進行單獨的壓縮的,這種技術(shù)的采用大大壓縮了.FIC文件長度。它的具體定義為:小塊數(shù)及塊的值。
①小塊數(shù):此字表示小塊的個數(shù)值,它是本行中含有小塊的個數(shù)。當小塊數(shù)=0時,說明本行和上一行相同,不用進行重新處理。
②小塊:第一個字節(jié):跳列數(shù)。第二個字節(jié):小塊類型:當該值為正時:表示要從塊中搬到圖像中的像素(字節(jié))個數(shù)N,其后就是N個連續(xù)的像素數(shù)據(jù);當該值為負時:它的絕對值N表示要重復(fù)從塊中搬到圖像中的像素(字節(jié))的次數(shù),其后就是那個像素的數(shù)據(jù)。第三個字節(jié):
塊中的圖像數(shù)據(jù)。
5.類型0DH
該類型沒有數(shù)據(jù),該幀的所有像素值都為0。在實際應(yīng)用中通常它只產(chǎn)生在當用戶使用3DS創(chuàng)建一個新的FLIC文件中的第一幀。
6.類型0FH
該類型用于壓縮圖像,通常只用于第一幀。它采用了Run-Length壓縮方法。該方法與類型07H及0CH中的行數(shù)據(jù)壓縮方法是相似的。只是在該方法中正負號的定義與類型07H和0CH恰好相反。
字節(jié)含義
(1)第一字節(jié)本行中小塊數(shù)。
(2)第二字節(jié)小塊的具體內(nèi)容。
①第一字節(jié):小塊類型:當該值為負時:它的絕對值表示要搬到圖像中的像素(字節(jié))個數(shù),其后就是數(shù)據(jù);當該值為正時,表示要將下一個像素復(fù)制到圖像中的次數(shù),該像素(字節(jié))緊隨其后。
②第二個字節(jié):塊中的圖像數(shù)據(jù)。
7.類型10H
這種類型不進行壓縮,塊中的數(shù)據(jù)個數(shù)一定為圖像的長寬相乘。這種類型在實際應(yīng)用中一般不用。
下面具體討論播放程序的C語言程序設(shè)計方法,本文中的程序是針對.FLI格式的動畫文件而進行的程序設(shè)計。讀者如果要播放.FIC格式的動畫文件,只需根據(jù).FIC文件格式的具體定義,并參照下面的程序設(shè)計方法即可設(shè)計出相應(yīng)的程序。
四、程序設(shè)計
1.第一幀圖像的播放程序
voidFirst-Frame(Video-Mem,fli-fp)
char*Video-Mem;
FILE*fli-fp;
{
intLine-PacketNumber
intSize-Count=0
intScreen-Char;
longSereen-Count=0L;
memset(Video-Mem,0,60000);
do{
Line-PacketNumber=fgetc(fli-fp);
while(Line-PacketNumber--)
{
Size-Count=fgetc(fli-fp);
if((Size-COUNT&0X80)==0X80
{
Size-Count=(256-Size-Count);
while(Size-Count--)
{
Screen-Count++;
Sereen-Char=fgete(fli-fp);
*Video-Mem++=Screen-Char;
}
}
else
{
Sereen-Char=fgete(fli-fp);
while(Size-Count--
{
Screen-Count++;
*Video-Mem++=Sereen-Char;
}
}
}
}while(Screen-Count<64000);
}
2.FLI后續(xù)各幀圖像的播放程序
voidOther-Frame(Video-Mem,Fli-fp,Update-LineNumber)
char*Video-Mem;
FILE*Fli-fp;
intUpdate-LineNumber;
{
intSize-Count=0,Skip-Col=0;
intUpdate-LineCount=0;
intScreen-Char;
intNumber-Packet;
char*Video-p;
while(Update-LineCount<Update-LineNumber)
{
Video-p=Video-Mem;
Number-Packet=fgetc(Fli-fp)
Update-LineCount++;
while(Number-Packet--)
{
Skip-Col=fgete(Fli-fp);
Video-Mem=Video-Mem+Skip-Col;
Size-Count=fgetc(Fli-fp);
if((Size-Count&0x80)==0x80)
{
Size-Count=256-Size-Count;
Screen-Char=fgetc(Fli-fp);
while(Size-Count--)*Video-Mem++=Sereen-Char;
}
else
{
while(Size-Count--){
Screen-Char=fgetc(Fli-fp);
*Video-Mem++=Screen-Char;
}
}
}
Video-Mem=Video-p+320;
}
}
3.播放程序的調(diào)用及其它幾個子程序
voidTransmit-Fli(Fli-fp)
FILE*Fli-fp;
{
intNUmber-Chunk;
if(fread((unsignedchar*)&header,1,sizeof(FLIHEAD),Fli-fp)
==sizeof(FLIHEAD))
if(header,magie|=0xAF11)
{
printf("NotanFLIfile/n");
exit(0);
}
if(fread((unsignedchar*)*frame-head,1,
sizeof(FRAMESHEAD),Fli-fp)==sizeof(FRAMESHEAD));
if(frame-head,magic=0xF1FA)
{
printf("ReadinganErroeFLIfile\n");
exit(0);
}
if(fread((unsignedchar*)&chunk-head,1,
sizeof(CHUNKHEAD),Fli-fp)==sizeof(CHUNKHEAD));
if(fread(&NUmber-Chunk,1,sizeof(int),Fli-fp)==sizeof(int));
else{
printf("ErrorreadingFli\n");
exit(0);
}
fgetc(Fli-fp);fgetc(Fli-fp);
if(fread(&palette,1,sizeof(palette),Fli-fp)==768);
else{
printf("ErrorreadingFli\n");
exit(0);
}
if(fread((unsignedchar*)&chunk-head,1,
sizeof(CHUNKHEAD),Fli-fp)==sizeof(CHUNKHEAD));
else{
printf("ErrorreadingFli\n");
exit(0);
}
ShowFli-Frame(Fli-fp);
fclose(Fli-fp);
}
voidShowFli-Frame(Fli-fp)
FILE*Fli-fp;
{
longFrame-DataAddress;
intFirst-UpdateLine,End-UpdateLine;
intFrame-Number=2,Adjust-Char=0;
init();
setvgapalette(palette);
First-Frame(MK-FP(0x0a000,0x0),Fli-fp);
Frame-DataAddress=ftell(Fli-fp);
while(Frame-Number<=header,frames-number-1)
{
Frame-DataAddress=ftell(Fli-fp);
Adjust-Char=fgetc(Fli-fp);
if(Adjust-Char|=0)fseek(Fli-fp,-1L,SEEK-CUR);
if(fread((unsignedchar*)&frame-head,1,
sizeof(FRAMESHEAD),Fli-fp)==sizeof(FRAMESHEAD));
if(frame-head,magic|=0xFIFA)exit(0);
if(frame-head,chunks|=0)
{
if(fread((unsignedchar*)&chunk-head,1,
sizeof(CHUNKHEAD),Fli-fp)==sizeof(CHUNKHEAD));
if(fread(&First-UpdateLine,1,sizeof(int),Fli-fp)
==sizeof(int));
else{
printf("ErrorreadingFli/n");
exit(0);
}
if(fread(&End-UpdateLine,1,sizeof(int),Fli-fp)
==sizeof(int));
else{
prinft("ErrorreadingFli/n");
exit(0);
}
Other-Frame(MK-FP(0x0a000,First-UpdateLine*320),Fli-fp,
End-UpdateLine);
}
Frame-Number++;
}
}
voidvideo-init()
{
unionREGSr;
r.x.ax=0x0013;
int86(0x10,&r,&r);
}
voidvideo-text()
{
unionREGSr;
r.x.ax=0x0003;
int86(0x10,&r,&r);
}
setvgapalette(p)
char*p;
{
unionREGSr;
structSREGSsr;
inti;
for(i=0;i<768;++i)*(p+i)=*(p+i)>>1;
r.x.ax=0x1012;
r.x.bx=0;
r.x.cx=256;
r.x.dx=FP-OFF(p);
sr.es=FP-SEG(p);
int86x(0x10,&r,&r,&sr);
【關(guān)鍵詞】NGBOSS QTP 關(guān)鍵字驅(qū)動 自動化測試框架
隨著3G業(yè)務(wù)的開展,三家運營商的競爭不斷深入,NGBOSS系統(tǒng)作為全業(yè)務(wù)時代開展新業(yè)務(wù)的信息支持系統(tǒng),需要快速的實現(xiàn)更新?lián)Q代,以盡早滿足快速發(fā)展的新業(yè)務(wù)需求。在多樣化的新產(chǎn)品不斷出現(xiàn)的同時,由于存在大量的在網(wǎng)用戶,在NGBOSS系統(tǒng)建設(shè)過程中,原有產(chǎn)品模式需要同步支持,因此NGBOSS系統(tǒng)變的越來越復(fù)雜。客戶對移動通信的服務(wù)質(zhì)量提出了更高的要求,而NGBOSS系統(tǒng)的質(zhì)量在一定程度上取決于系統(tǒng)測試的全面程度,在保證測試質(zhì)量的前提下,降低測試成本,提高測試效率,改變以往單純靠人工測試的方法,需要在測試方法上進行改進研究。
本文針對NGBOSS工程建設(shè)中的問題,重點關(guān)注軟件業(yè)務(wù)測試,并通過自動化測試進行常規(guī)業(yè)務(wù)探測,實現(xiàn)系統(tǒng)故障的及時發(fā)現(xiàn),提高客戶的滿意度。
1 自動化測試實施分析
自動化測試是一種把以人為驅(qū)動的測試行為轉(zhuǎn)化為機器自動執(zhí)行的方法。在目前的軟件測試項目實施中,項目團隊為了降低測試成本、提高測試效率,一般用自動化測試代替多重驗證測試和手工測試。但是在軟件項目中,項目管理人員對于自動化測試的認識仍存在一些疑問和誤解,例如任何測試項目都可以自動化;用自動化測試取代手工測試;在趕進度的情況下,緊急實施自動化測試。
自動化測試實施是與軟件開發(fā)并行的一個軟件項目開發(fā)過程,包含需求、設(shè)計、編碼、自動化平臺代碼調(diào)試測試、上線、上線后運行等完整的軟件生命周期。上線前自動化測試項目處于投入階段,在上線后的運行期進行用例編寫、腳本調(diào)試、自動化腳本運行,此時自動化平臺進入效益產(chǎn)出階段。
對于一個完整的定制化的自動化測試平臺工程項目來講,需要項目團隊在實施立項階段考慮自動化開發(fā)成本和產(chǎn)出的效益。只有產(chǎn)生的效益大于實施成本和人工測試的成本時,才有實施自動化測試工程的必要。自動化測試實施的成本包括自動化測試團隊人力成本、軟硬件開發(fā)成本。
假設(shè)成本總計為N,共對x個業(yè)務(wù)進行自動化測試實施。x個業(yè)務(wù)進行手工測試需要人力成本為a。創(chuàng)收的計算方法是:假設(shè)x個業(yè)務(wù)不用自動化,進行手工測試需要人力成本為a,那么當這x個業(yè)務(wù)都用自動化腳本執(zhí)行后,每執(zhí)行一次批量自動化,就節(jié)省成本a。當重復(fù)執(zhí)行M次后,節(jié)省的勞動力成本M*a就是自動化項目的收益,即:M*a>N。因此可通過控制成本,最小化N和增加重復(fù)執(zhí)行次數(shù)M,實現(xiàn)自動化測試實施效益的最大化。
在具體實施時,控制成本的方法一般有:在框架方面簡化框架,以穩(wěn)定為主,能用就好,防止過度開發(fā);在腳本方面,簡潔易開發(fā),同時穩(wěn)定腳本,盡量減小維護成本。創(chuàng)造的效益取決于執(zhí)行次數(shù)和腳本覆蓋率,因此腳本批量執(zhí)行的次數(shù)越多,腳本覆蓋業(yè)務(wù)的比例越大,節(jié)省的人力成本就越多,創(chuàng)造的效益越大。
通過以上分析,可以總結(jié)出適合進行自動化測試的工程項目必須具有的特點包括:一是項目比較成型,測試需求不會頻繁變動,否則腳本維護成本太高;二是項目周期足夠長,可以進行自動化項目開發(fā)和實施;三是腳本會被多次復(fù)用,執(zhí)行的次數(shù)越多,自動化越有意義,否則,就沒有必要開發(fā)自動化。
當一個項目滿足以上特點,成功執(zhí)行自動化測試后,意義是非常明顯的:一是節(jié)省人力成本,提高測試效率;二是自動化測試提供區(qū)別于手工測試的另一種驗收標準,通過自動化測試報告用數(shù)據(jù)說話,并且自動化測試通常能發(fā)現(xiàn)手工測試無法發(fā)現(xiàn)的BUG;三是做手工測試無法做或者很難做的測試,如模擬測試、危險測試。
NGBOSS作為中國移動的新一代業(yè)務(wù)支撐系統(tǒng),前臺業(yè)務(wù)復(fù)雜,涉及個人業(yè)務(wù)、家庭業(yè)務(wù)和集團業(yè)務(wù)等全部業(yè)務(wù)辦理及計費過程。項目實施時間長,上線后會持續(xù)運行3~4年時間,隨著電信行業(yè)競爭的加劇,系統(tǒng)版本更新更加頻繁。以廣東為例,一般每年進行12次常規(guī)性升級,在每次升級后均需要進行常規(guī)業(yè)務(wù)的驗證,若采用自動化測試實施后,可以采用自動化測試腳本進行常規(guī)業(yè)務(wù)探測,降低系統(tǒng)故障率。通過以上分析,在NGBOSS系統(tǒng)中實施自動化測試,可以實現(xiàn)測試效率的提升和測試成本的下降,因此有必要實施自動化測試平臺的建設(shè)。
2 自動化測試構(gòu)建思路
結(jié)合自動化測試實施成本和效益理論的分析,通過對目前常見的自動化測試流程進行研究,提出改進的方案。自動化實現(xiàn)的基本原理均是錄制回放,將錄制出來的腳本進行回放,就實現(xiàn)了自動化執(zhí)行。本文以QTP(Quick Test Professional)進行腳本錄制和回放。下面以QTP為基礎(chǔ),研究適合NGBOSS工程建設(shè)的自動化建設(shè)思路。
傳統(tǒng)的自動化測試流程如圖1所示,是面向過程的線性流程,目前業(yè)內(nèi)最通用。
在這個流程下,業(yè)內(nèi)主要有兩種自動化模式:
(1)錄制回放模式
錄制回放模式的原理是以QTP錄制的VBS腳本為基礎(chǔ),增加代碼控制邏輯,將修改調(diào)試好的VBS腳本返給QTP回放,實現(xiàn)自動化。這種模式,腳本實質(zhì)上是VBS代碼,優(yōu)點是可調(diào)用VBS多種函數(shù),并能使用控制邏輯如if、else、exit、for等。缺點是維護成本較高,頁面、邏輯、數(shù)據(jù)的變更都要遍歷整個腳本,對涉及到的變更進行修改。在這種模式下,自動化流程是直線型的一維模式,邏輯、數(shù)據(jù)全都捆綁在腳本上,導(dǎo)致難以拆分業(yè)務(wù),設(shè)計用例復(fù)雜,最終導(dǎo)致腳本凌亂。
(2)數(shù)據(jù)驅(qū)動模式
數(shù)據(jù)驅(qū)動模式,是在錄制回放模式的基礎(chǔ)上,將數(shù)據(jù)輸入存儲在獨立的數(shù)據(jù)文件中,腳本只存放控制信息,測試時輸入直接從文件中讀取,這樣同一腳本可以運行于不同的測試用例中,實現(xiàn)了腳本與數(shù)據(jù)的分離。這是一種二維模式,腳本和數(shù)據(jù)可分別設(shè)計,業(yè)務(wù)線條變得清晰。但此種模式仍需通過編寫VBS腳本方式實現(xiàn)測試用例的編寫,在涉及到多業(yè)務(wù)系統(tǒng)腳本編寫時,腳本重復(fù)度高,用例編寫需要專業(yè)的自動化測試人員進行。面對NGBOSS業(yè)務(wù)復(fù)雜的情況,重點業(yè)務(wù)一般有50~60項,全部通過VBS腳本實現(xiàn),將帶來自動化測試人力成本的快速提高。因此需要考慮通過降低腳本編寫難度,使一般的手工測試人員經(jīng)過簡單的培訓(xùn)后,即可進行自動化測試用例編寫工作,并實現(xiàn)測試用例編寫人員和專業(yè)測試工具的解耦。
在傳統(tǒng)自動化測試流程基礎(chǔ)上,新建一個分層模型,對自動化過程進行分離、優(yōu)化(如圖2),自下向上分別為模型層、數(shù)據(jù)層、控制層和應(yīng)用層。
(1)模型層是最底層,由測試工具識別的控件對象以及對象的識別腳本構(gòu)成,模型層負責(zé)將控件對象和識別腳本分別組織并以友好的方式提供給數(shù)據(jù)層的標簽庫模塊使用。
1)對象識別腳本在使用QTP錄制時,QTP自動記錄對象并生成測試腳本。該測試腳本包含了對對象的識別、執(zhí)行動作和測試數(shù)據(jù),使得測試腳本難以重用和維護。本文在測試框架模型層中只保留對對象的識別腳本,而把測試數(shù)據(jù)放到數(shù)據(jù)層、執(zhí)行動作放到控制層管理,從而實現(xiàn)了相互之間的分離。
2)控件對象在測試框架模型層中,通過對界面元素的分析(UI分析)并和QTP對象識別機制相映射來組織控件對象。UI分析是從被測系統(tǒng)界面入手,記錄頁面層次并把該頁面中的對象以要素的形式記錄到數(shù)據(jù)庫中,以達到結(jié)構(gòu)化。
(2)數(shù)據(jù)層由標簽庫和測試數(shù)據(jù)庫構(gòu)成,標簽庫保存要素名和識別腳本的映射關(guān)系,測試數(shù)據(jù)庫保存具體的測試數(shù)據(jù)。
1)標簽庫
標簽庫是針對某一個應(yīng)用建立的,它可以通過學(xué)習(xí)而擴展,其中包含了圖形用戶界面交互的完整細節(jié),包括界面和對象。本文通過打標的方式來對具體交互細節(jié)進行封裝:首先利用QTP錄制待測系統(tǒng)的執(zhí)行過程,獲取各測試對象的腳本;然后對錄制腳本進行打標,實現(xiàn)要素名和測試對象的對應(yīng);最后對打標后的腳本進行分解并提取識別腳本和標簽,生成標簽庫。
2)測試數(shù)據(jù)庫
測試數(shù)據(jù)庫提供具體的測試數(shù)據(jù),其中測試數(shù)據(jù)與UI分析得到的測試對象相對應(yīng),每個測試對象根據(jù)系統(tǒng)需要,有不同的業(yè)務(wù)規(guī)則,如果業(yè)務(wù)規(guī)則比較復(fù)雜,則把業(yè)務(wù)規(guī)則分解成最小顆粒。針對每一個最小業(yè)務(wù)顆粒,測試人員至少要準備2組測試數(shù)據(jù),分別為正例和反例:正例是指符合該測試點測試數(shù)據(jù);反例是指不符合該測試點的測試數(shù)據(jù)。執(zhí)行測試時必須保證正例能通過而反例不能通過,否則就說明該處存在BUG。
(3)控制層為自動化測試框架提供了一個控制入口,測試工程師利用控制層實現(xiàn)具體的測試意圖:測試工程師可以對測試的執(zhí)行順序根據(jù)需要進行調(diào)整,使得測試不必按錄制順序回放;可以通過關(guān)鍵字設(shè)置對象的執(zhí)行動作,實現(xiàn)各種操作;并可通過要素名匹配測試數(shù)據(jù)。
(4)應(yīng)用層通過用例描述原語(ASL)具體實現(xiàn)測試的執(zhí)行:ASL首先獲取測試案例的某一控制文件,得到該測試邏輯并解析出測試數(shù)據(jù)標志和標簽;然后通過要素標簽在標簽庫中查找相應(yīng)腳本,匹配測試數(shù)據(jù)庫中測試數(shù)據(jù),組合生成測試工具QTP可以執(zhí)行的腳本;最后調(diào)用測試工具QTP實施自動化測試。
在這個模型下,主要有以下兩種自動化模式:
(1)關(guān)鍵字驅(qū)動模式
關(guān)鍵字驅(qū)動模式是在數(shù)據(jù)驅(qū)動模式基礎(chǔ)上簡化腳本、分離業(yè)務(wù)。通過關(guān)鍵字描述語言,代替VBS代碼語言,將業(yè)務(wù)邏輯從復(fù)雜的代碼行轉(zhuǎn)化成肉眼可見的一個個關(guān)鍵字語言描述行,實現(xiàn)業(yè)務(wù)、腳本和數(shù)據(jù)的分離。
(2)增強型關(guān)鍵字驅(qū)動模式
增強型關(guān)鍵字驅(qū)動模式是在關(guān)鍵字驅(qū)動的基礎(chǔ)上開發(fā)自動化測試輔助平臺,進一步實現(xiàn)腳本和業(yè)務(wù)的分離。這種模式是在已經(jīng)開發(fā)關(guān)鍵字模式的基礎(chǔ)上進行增量精確開發(fā)。
以上四種自動化模式,各有各的優(yōu)缺點。總的來說,自動化技術(shù)和理念越來越先進,自動化開發(fā)成本呈遞增趨勢,自動化維護成本呈遞減趨勢。
從業(yè)務(wù)和自動化開發(fā)綜合考慮:業(yè)務(wù)上,BOSS系統(tǒng)耦合性高、業(yè)務(wù)復(fù)雜,必須要將自動化從復(fù)雜的業(yè)務(wù)中剝離出來;自動化開發(fā)需綜合考慮技術(shù)成熟度、開發(fā)成本、維護成本。
本文采用關(guān)鍵字驅(qū)動模式,而增強型關(guān)鍵字驅(qū)動模式,開發(fā)成本較高。可以先考慮開發(fā)關(guān)鍵字驅(qū)動模式,后面再視具體項目情況考慮是否開發(fā)輔助平臺。下面將重點研究關(guān)鍵字驅(qū)動模式。
關(guān)鍵字驅(qū)動模式的實現(xiàn)思想是通過以關(guān)鍵字為驅(qū)動的腳本來取代QTP的VBS代碼行腳本。下面舉一個百度搜索的例子。
使用QTP錄制一行打開百度的腳本如下:
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and Settings\automind","open"
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "search"
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Click
這是普通模式下的腳本,在關(guān)鍵字驅(qū)動模式下,是要把這種VBS代碼行腳本轉(zhuǎn)化為以關(guān)鍵字為驅(qū)動的直觀的腳本。以目前一種成熟的關(guān)鍵字驅(qū)動模式為例,上面這些VBS代碼行等價于表1的腳本:
在這種模式下,腳本形式為Excel腳本,上面的腳本,使用Open、With、Type、Click四個關(guān)鍵字。這種模式將函數(shù)執(zhí)行封裝成關(guān)鍵字,并以Excel的形式編寫腳本。框架將Excel腳本解析成VBS代碼行,返回給QTP執(zhí)行。
以上舉例展現(xiàn)4個關(guān)鍵字。實際使用過程中,一般有四大類型關(guān)鍵字:一是操作類,用來實現(xiàn)動作執(zhí)行,關(guān)鍵字一般有Wwith、Call Function、Open、OpenApp、Click、DbClick、Type、TypePath、TypeDate、ClickTable、TreeSelect等;二是控制類,用來實現(xiàn)腳本邏輯控制,關(guān)鍵字一般有滿足條件執(zhí)行腳本、跳轉(zhuǎn)、循環(huán)等,如if、else、for、exit等;三是檢查類,對執(zhí)行過程中的對象或者產(chǎn)生的數(shù)據(jù)進行檢查,確保業(yè)務(wù)流程的正確性,如assertSelected、assertNotSelected、assertChecked、GetTableData等;四是數(shù)據(jù)類,連接數(shù)據(jù)庫,執(zhí)行數(shù)據(jù)增刪改查,如Run Sql、Run Sql Select等。
通過關(guān)鍵字驅(qū)動模式進行編寫,可實現(xiàn)如下提升:Excel形式的腳本,通過關(guān)鍵字編寫測試用例,一般熟悉測試的人員即可進行自動化測試用例的編寫;Excel腳本中分information、script和data三個工作薄,information為腳本總體信息,script為腳本控制和執(zhí)行流程,data為數(shù)據(jù)組合;script和data實現(xiàn)腳本控制和數(shù)據(jù)的分離;腳本維護變得更簡單;生成Excel時報告對應(yīng)每一個Excel腳本執(zhí)行行,報告清晰。
3 自動化對開展工程建設(shè)測試的意義
自動化測試的特點,決定了自動化測試無法取代手工測試。自動化測試與手工測試都只是工程測試的一部分。自動化的意義在于:
(1)降低測試成本,提升測試效率
自動化測試可部署在服務(wù)器上,定時晚上執(zhí)行,提升測試效率。假設(shè)自動化測試覆蓋600個業(yè)務(wù),由10個測試人員來執(zhí)行,每人每天可執(zhí)行30個業(yè)務(wù),那么執(zhí)行這600個業(yè)務(wù)一次,需要20人天的人力,10個人要執(zhí)行2天。如果讓自動化測試來執(zhí)行,幾臺服務(wù)器晚上并行執(zhí)行,即可執(zhí)行完畢。也就是說,10個人執(zhí)行600個業(yè)務(wù)1次,可節(jié)省10個人力和2天時間。如果自動化覆蓋的業(yè)務(wù)更多,執(zhí)行的次數(shù)翻倍,節(jié)省的人力和時間將成幾何指數(shù)上升。
(2)為工程測試提供區(qū)別于手工測試的驗收標準
自動化測試與手工測試的出發(fā)點不一樣,從效果看,自動化測試經(jīng)過多次執(zhí)行,會發(fā)現(xiàn)一些手工測試無法發(fā)現(xiàn)的缺陷,彌補手工測試的不足。
事實上,發(fā)現(xiàn)BUG并非自動化的主要作用,甚至可以說,項目測試發(fā)現(xiàn)的BUG越多,自動化測試越難執(zhí)行下去。一般來講,手工測試能發(fā)現(xiàn)70%~80%的BUG,自動化測試能發(fā)現(xiàn)15%~30%的BUG。從BUG分布來講,有交叉重疊部分,也有隱藏的都沒有發(fā)現(xiàn)的部分。自動化能獨立發(fā)現(xiàn)的BUG往往是小概率的,需要重復(fù)執(zhí)行才能出現(xiàn)的隱性BUG。例如,在一次自動化測試執(zhí)行過程中,發(fā)現(xiàn)程序core了一次,根據(jù)記錄的日志,最終定位發(fā)現(xiàn),原來是一起內(nèi)存泄露故障。這種例子非常常見。
(3)回歸測試版本測試
在回歸測試和版本測試中,自動化測試可以得到大量應(yīng)用,可以完全代替手工測試,從而釋放人力。
參考文獻:
[1] 王磊. 關(guān)鍵字驅(qū)動的自動化測試框架設(shè)計與實現(xiàn)[J]. 電子測試, 2010(8): 87-93.
[2] 接卉,蘭雨晴,駱沛. 一種關(guān)鍵字驅(qū)動的自動化測試框架[J]. 計算機應(yīng)用研究, 2009(3).
[3] 李弦,陳恭亮. 基于BOSS系統(tǒng)的業(yè)務(wù)量分析研究[J]. 移動通信, 2010(12): 92-95.