引論:我們為您整理了13篇單元測試方法范文,供您借鑒以豐富您的創作。它們是您寫作時的寶貴資源,期望它們能夠激發您的創作靈感,讓您的文章更具深度。
篇1
文獻標識碼:A 文章編號:1672-7800(2015)005-0029-03
作者簡介:劉思思(1985-),女,陜西商洛人,碩士,上海機電工程研究所工程師,研究方向為飛行控制軟件開發、系統集成與驗證;劉迪(1985-),男,黑龍江哈爾濱人,碩士,上海機電工程研究所工程師,研究方向為制導控制系統設計與仿真。
0 引言
在飛行控制軟件(簡稱飛控軟件)開發過程中,單元測試環節必不可少。其中,靜態度量指標可以用專門的工具很方便得出其具體數值,而動態測試雖然也有專門的工具,但編寫測試用例需要花費大量時間和精力。當前,航天多型號開發任務重,迫切需要應用自動化的測試工具軟件來提高動態測試的工作效率。
本文結合飛控軟件的特點,論述通過自動生成測試用例的工具軟件Cantata6.2進行單元動態測試的方法。
1 飛行控制軟件特點
飛控軟件的主要功能是完成相關設備之間的實時信息交互與控制解算,從而實現飛行過程中姿態和位置的控制。飛控軟件主要分為應用層軟件、接口協議層軟件和底層驅動軟件3個部分,軟件架構如圖1所示。
應用層軟件由實現姿態和位置控制的各功能模塊組成;接口協議層軟件主要為飛行控制設備與其它設備之間通信的協議模塊;底層驅動軟件主要由飛行控制設備的接口驅動模塊以及硬件輸入輸出模塊組成。
飛控軟件嵌入在飛控設備中,具有實時性高、時序和邏輯復雜、可靠性高的特點。首先,要確保底層驅動軟件和接口協議軟件的正確性,使得各類信號得以正確傳輸;其次,要確保軟件與控制算法模型的一致性,輸入輸出及解算正確;最后,要確保軟件時序和邏輯的正確性。只有這樣才能保證飛行控制系統正常工作。
2 飛行控制軟件單元測試的意義
對飛控軟件的最小組成單位――函數進行測試的目的在于檢驗其能否正確地實現其功能,滿足性能指標和接口要求。通過語句(SC)、條件(DC)、修正條件判斷(MC/DC)等覆蓋率指標評價程序結構,及早發現軟件代碼中的編碼和邏輯錯誤。
對控軟件來說,被測函數已經完成了編碼和調試,能夠通過編譯和鏈接進行單元測試。此外,不考慮每個模塊與其它模塊之間的關系,為每個模塊設計驅動模塊和樁模塊,每個模塊進行獨立的單元測試,各模塊的單元測試可以并行進行,能夠提高測試效率,也較容易實現100%的覆蓋率指標要求[1]。
3 Cantata6.2測試工具
3.1 Cantata6.2簡介
Cantata6.2采用先進的代碼分析器和AutoTest技術,智能分析被測代碼,掃描代碼的所有可能路徑,根據選定的覆蓋率標準,自動生成滿足100%覆蓋率的測試用例。對全局變量、返回值自動賦期望值,并包含對全局變量、返回值、調用函數參數傳遞等進行檢查。對形參為復雜類型,如結構體指針的情況,能自動生成相應的測試對象,即構造一個結構體數組,將結構體數組的地址賦給形參。自動生成樁函數,在測試工程中替代真實的外部函數。使用Cantata6.2進行單元測試的原理如圖2所示。
用戶可以使用Cantata6.2工具AutoTest選擇相應的覆蓋率規則集,通常航天A級軟件要滿足修正條件判斷(MC/DC)覆蓋率100%,B級軟件要滿足分支判斷(DC)覆蓋率指標100%,C級軟件要滿足語句(SC)覆蓋率指標100%。飛控軟件通常均為A級軟件,選擇DO-178B/ED-12B Level A Coverage規則,自動生成滿足SC、DC、MC/DC3個覆蓋率指標要求的測試腳本文件。
3.2 含有樁函數的測試實例
本文以飛控軟件的指令形成函數模塊為例,檢驗Cantata6.2的動態測試功能。該函數模塊的主要功能是形成穩定控制系統姿態控制等的指令信號。代碼框架如下:
void Instruction (C_INSTRCUTION *C_)
{
……; //定義局部變量
if(C_->fInTT < t1)
{
……; //控制解算
}
else
{
……; //控制解算
Function1(C_);
……;
if(C_-> fInTT < t2) //注①
{
……;
}
else
{
……;
}
……;
}
}
利用Cantata6.2進行動態測試。自動生成10個測試用例并執行完后,語句覆蓋率和分支判斷覆蓋率都沒有達到100%,源代碼中注①處標注的條件判斷的假分支沒有得到執行。于是,手動添加一個測試用例,使得在給定的輸入條件下結構體變量C_-> fInTT的值落在[t2,∞)的區間內,接著重新執行該測試用例,結果還是執行不到該假分支。仔細分析代碼后發現,該分支中的條件判斷表達式中的結構體變量C_-> fInTT的值已被樁函數Function1(C_)修改。
處理方法如下:第一步,在Cantata6.2的調用接口控制界面中,為該樁函數添加一個新的樁函數實例,并手動修改結構體變量C_-> fInTT的值,該數值應大于或等于t2;第二步,在Cantata6.2測試用例界面,將調用序列更改為新的樁函數實例。至此,執行全部11個測試用例之后,滿足語句和分支判斷覆蓋率全達到100%的指標要求。
3.3 編譯器對測試結果的影響
飛行控制軟件的編譯器目前主要使用CCS2.2或CCS3.3,在用Cantata6.2進行單元測試時,CCS被設置為Simulator模式,Cantata6.2會自動調用CCS,執行編譯好的測試中間文件,進而生成測試結果文件。測試過程中,筆者發現對于如下代碼段,Cantata6.2自動生成的測試用例對X自動賦值為0.9999,調用CCS2.2執行用例后,代碼運行的實際路徑與期望路徑不一致,測試結果不能達到100%的分支覆蓋率指標要求。
#define ZEROP 0.00001
void Function2 (void)
{
if(X
{
……;
}
else
{
……;
}
……;
}
筆者分別在CCS2.2和CCS3.3編譯器環境下,驗證了該代碼段的運行情況,最終得出結論如下:①在CCS2.2編譯器下,程序執行真分支,與期望不一致,結果不正確;②在CCS3.3編譯器下,程序執行假分支,與期望一致,結果正確。上述結果表明,不同的編譯器版本影響程序實際執行路徑的正確性。
4 基控軟件的Cantata6.2使用策略
4.1 Cantata6.2使用策略
飛控軟件中包含很多復雜的結構體數據類型,Cantata6.2能夠對結構體類型自動賦值,不用手動一一賦值;而且飛控軟件涉及大量數學計算,Catata6.2的測試腳本是開放的純C代碼,可在其腳本管理器界面或測試腳本中直接修改某個測試用例的變量值,提高測試效率。Cantata6.2測試工具是通用的,而飛控軟件具有其特殊性,就二者的融合使用,筆者總結出如下經驗:
(1)飛控軟件中一般都包含do while(1)的死循環結構,測試時需要將這類死循環放開,測試用例才能執行完畢。
(2)飛控軟件中包含有很多類似“x=x”的賦值操作,本義是在某些特定條件下,x的值不變,測試時要將這類語句注釋起來,否則Cantata6.2會報錯。
(3)當被測函數包含子函數時,Cantata6.2會自動作打樁處理,但樁函數有可能會修改某些全局變量的值,進而導致某個分支始終無法覆蓋。這時,可以在該樁函數的調用接口添加一個樁函數實例,并手動修改該變量的值,再將調用序列更改為新的樁函數實例,如3.2小節所述實例。
(4)飛控軟件作為嵌入式軟件,最終是固化在飛控設備中,構成飛控系統運行。因此,軟件一般都包含對硬件端口地址的操作,如果是從端口輸出數據,測試時需要將這些代碼注釋起來,如果是讀取某個地址的值,則可以自己定義一個變量代替該數值,否則將導致不能自動生成測試用例。
(5)飛控軟件中的控制算法一般都包含有積分計算,開發人員一般習慣定義靜態的局部變量,遇到這種情況時,應該將這些變量移到函數外部定義,否則會導致不能自動生成測試用例。
4.2 測試驅動開發
Cantata6.2測試工具能夠自動生成測試用例,即使不滿足語句、分支判斷、修正條件判斷覆蓋率100%要求,測試人員也能很快根據覆蓋率結果圖示手動添加新的測試用例,使得該用例執行后覆蓋到上一次未覆蓋到的分支。但是,就筆者的使用經驗而言,Cantata6.2對被測代碼的要求比較高,被測代碼要符合標準C要求,其頭文件不能相互嵌套重復引用,否則一個.c文件和其相關的.h文件加載進去就會出現錯誤提示和警告,而且必須將這些錯誤提示解決完并通過編譯后,才能進行下一步生成測試用例的工作。此外,由控軟件具有邏輯復雜、運算量大的特點,要借助Cantata6.2的自動生成測試用例的功能快速完成飛控軟件測試,這也對飛控軟件的代碼質量和框架結構提出了比較高的要求。在飛控軟件框架結構和代碼質量比較高的情況下,可以加載整個.c文件,一次性生成整個.c的全部測試用例,而不用單個函數去建測試工程,從而加快測試速度。筆者總結使用經驗如下:
(1)飛控軟件的自動駕駛儀模塊根據控制系統的模型編寫,模型中包含滾動、偏航、俯仰三通道控制解算算法,該模塊代碼最好拆成3個函數模塊,單個模塊代碼行數要在200行以內,便于測試,代碼結構也更加清晰。
(2)由控軟件的特殊功能需求,同一個函數中包含多個條件表達式“與”或者“或”,再進行邏輯(即if else)判斷的用法非常多,譬如if(條件表達式1&&條件表達式2||條件表達式3),開發人員在編寫代碼時,最好將這些條件表達式的計算在if判斷之前完成,以有利于測試用例能夠正常覆蓋到期望的分支。
(3)依據航天軟件工程化標準要求,飛控軟件的安全關鍵性等級一般為A級,單元測試必須滿足語句(SC)、分支判斷(DC)、修正條件判斷(MC/DC)覆蓋率均達到100%。MC/DC要求每個判定中的每個條件都曾至少一次獨立影響判定結果。由控系統的特殊算法需求,模型中涉及分段函數計算比較多,選擇MC/DC覆蓋率標準后,某些代碼會覆蓋不到。代碼結構如下,斜體加粗部分為未覆蓋到的代碼:
if((x1>x2)&&(x1< (x2+const1)))
{
……;
}
else if( (x1>(x2+ const2))&&(x1< (x2+const3))) //注2:0
{
……;
}
else
{
……;
}
分析上述代碼,筆者認為由于選擇了修正條件判斷覆蓋率標準MC/DC,Cantata6.2認為第一個判斷條件“x1>x2”的假分支不應再包含“x1>(x2+const2)”的判斷條件。類似情況,建議控制系統設計師修改模型文件,或者軟件開發人員優化程序結構。
(4)通過3.3小節中的實例,建議開發人員應該選擇升級版本的編譯器作為開發工具。此外,筆者嘗試了將ZEROP定義為局部變量0.00001,結果程序無論在CCS2.2還是CCS3.3編譯器下,均執行不到期望的正確分支,這對編碼質量提出了較高要求。
5 結語
利用Cantata6.2自動生成測試用例的功能能夠快速完成單元動態測試,促進開發人員提高編碼質量,提高飛控軟件的可移植性和可維護性,滿足當前航天多型號軟件開發和單元測試的工作需求。同時,工具內置的很多規則集能夠幫助測試人員快速定位軟件編碼錯誤和框架問題,進而幫助開發人員更好的優化程序結構,進一步提高航天軟件研制水平。
參考文獻:
[1] 張猛,毛亮.航天嵌入式軟件的單元測試方法探討[J].航天器工程,2006(7):32-35.
[2] 陶幸輝,宋志剛.嵌入式飛控軟件測試方法研究及實踐[J].軟件導刊,2011(8):14-16.
篇2
Abstract This paper systematically introduces three EXCEL cell address representation, which is the in-depth study EXCEL EXCEL and expand knowledge base, but also with specific examples illustrate three address representation features and how to use and so on.
Key words EXCEL; address representation methods; example
單元格地址表示方法是為Excel智能運算服務的,這也是Excel不同于計算器和其他電子表格的地方。使用普通計算器時,需針對不同的數據重復進行計算,即浪費時間又不能發現數據的變化規律。而使用Excel進行計算時,對于相同的運算,不需要重復進行,只要針對不同的應用問題寫出對應的自變量的地址,就可以通過“拷貝”公式的功能得出其他單元格中的結果。所以說,在EXCEL中對公式或函數的“拷貝”是進行智能運算的助手。為此,先綜述一下各種“拷貝”方法。
在EXCEL中“拷貝”操作可以使用通用的拷貝方法,如快捷鍵方法:Ctrl+C 再Ctrl+V;或人們習慣用的拷貝與粘貼兩個圖標方法以及右鍵快捷菜單方法。上述這些“拷貝”方法都需借助剪貼板來進行。若按Ctrl+左鍵拖被選內容,則不需要將拷貝信息事先注入剪貼板,這也是常用的一種拷貝方法。這些通用的拷貝方法對于EXCEL的計算不很方便,當待拷貝的公式單元格較多時,既浪費時間還容易出錯。為此,EXCEL給出一種特殊的拷貝方法:拖公式單元格右下角的(細十字)“填充柄”進行公式或函數的拷貝操作。需要注意的是:這種拷貝方法僅限于相鄰單元間的拷貝,而在EXCEL中我們最需要的恰恰就是相鄰單元格間的快速拷貝方法。
為了能正確地計算出數據庫類型表格中的公式或函數結果,自變量所在的單元格必須使用“相對地址”表示,即用“列標+行號”來表示。如A2表示第一列第二行中的數據,對于一個自變量區域,不必一個一個地寫出來,可以用左上角和右下角單元格地址簡捷地表示,兩者之間用英文的冒號隔開,如A3:D6就表示一個含有16個單元格的矩形區域,在進行公式運算時特別方便。
用“相對地址”表示自變量單元格時的特點是:自變量單元格地址與(因變量)公式單元格的地址在空間布局上看是不變的,不會因為“拷貝”操作而改變。例如,某個單元格中的公式是計算左面3個單元格數據之和,則不論將該公式“拷貝”到哪個單元格中,結果始終是左面3個單元格數據之和。這就是我們在做成績統計時,只要計算出第一個學生的總成績,再向下拖動“填充柄”進行拷貝,就會得到其他同學的總成績的原理。也就是說,用相對地址表示自變量時,自變量的地址始終是跟隨因變量變化而變化的,并計算出其他單元中的結果。單元格的相對地址表示方法普遍適用于成績表、設備表、工資表等數據庫形式的表格統計與計算。
EXCEL單元格地址的第二種表示方法是:絕對地址表示法。所謂“絕對”就是永恒不變的意思,即自變量單元格不會跟隨因變量變化而變化,形象地說,單元格地址被鎖住了。在數據庫計算和其他表格制作時均有應用。
絕對地址表示方法是:在自變量單元格的列標和行號前均加$號。如:一個單元格的絕對表示是$B$4,一個區域的絕對地址表示是$B$4:$D$7。
我們在制作數據表格時,有時需要對自變量進行篩選、比較,例如:在對一個班級學生成績進行排位時,需逐個比較每名學生成績在班級所有同學成績中的位置。其中,單個學生的成績是變化的,須用相對地址表示,而所有學生成績的單元格區域必須是不變的,不能因為學生變化而改變,在Excel中這種不變的自變量或區域采用“絕對地址表示”。在對公式或函數單元格“拷貝”時,用“絕對地址表示”的區域始終保持不變,與“拷貝”無關。
在前面提到的學生成績排位問題中,成績對比區域必須用“絕對地址”表示,與此類似的應用問題很多。雖然我們可以用“排序”圖標來進行,但這種排序方法會破壞原有表格行的位置,這恰恰是我們最不希望看到的。為此,用Excel 的排位函數Rank可以實現在不改變原有數據庫記錄次序的前提下,又能添加一個“排位”字段的功能。應用時的格式為:Rank(變量,變量區域,0或1)。其中,“變量”用相對地址表示,是跟隨因變量變化的,第二個參數“變量區域”是變量大小比較的區域,在排序的過程中必須保持不變,須用“絕對地址”表示。第三個參數是可選參數,可以取0或1,取0時,表示第一個參數(變量)的值越大,排位越靠前,省略該參數時相當于取值為0。若第三個參數取1,則第一個參數(變量)值越小,排位越靠前。
該例是按“總成績”進行排位的,G2中的公式為RANK(F2,$F$2:$F$10)。F列上的數據就是函數中的“變量”,其中F2必須用相對地址表示,在對G2中的公式向下“拷貝”的過程中,F2自動變更為F3、F4、F5一直到F10。第2個參數$F$2:$F$10是“總成績”字段區域,既所有自變量所在的區域,須用絕對地址表示,以保證在對排位函數“拷貝”的過程中這個區域始終保持不變。此公式僅用了兩個參數,省略第三個參數表明:總成績高的排位號在前。拖G2單元格的“填充柄”向下“拷貝”時,單個學生的總成績不斷在變化,而所有學生的總成績區域被“鎖住”,拷貝到最后一個學生,即可快速得到整個“排名”字段。
另外,在實際工作時,某些公式中的常數有可能發生變化。如請假扣款金額、計件工資金額等,當把這些常數直接寫在公式中時,一旦發生金額變化,就需要重新進行計算。最好的方法是在將該常數先放在表格中的某單元格處,而在公式中用該單元格的絕對地址表示,就可以實現在金額變化后,所有應用該金額的地方會自動更新。
EXCEL單元格地址的第三種表示方法是:混合地址表示法。他是介于相對地址和絕對地址表示之間的一種地址表示方法,這種表示方法中的自變量在跟隨因變量變化的過程中受到一定的限制,僅能沿行方向變化或沿列方向變化。這種變量地址表示方法主要用于制作類似于九九乘法表的“交叉數據表”。當一個公式或函數中有多個變量時,提取兩個相互獨立的變量分別放在行和列上,并設定一個變化序列,相當于建立了一個二維的X-Y坐標系。再利用EXCEL的運算特點:相同運算僅計算一次,其他數據通過拷貝得到,就可以快速地制作一個函數F(X,Y)的平面數據表,我們中學用的《常用數學用表》可以利用這種方法快速地制作。
“混合地址”表示方法是僅在列標或行號前加$號。如$D6、A$8。其中,$D6表示Y方向變化的變量,即數據僅限于在D列上變化。A$8表示X方向變化的變量,該數據僅于在第8行上變化。也就是說,前面有$號的行或列,就是被限定變化的區域。
下面以制作兩數和的立方表為例,介紹變量的“相對地址”表示方法在制作“交叉運算表”時的應用。圖2為一最簡單的X-Y 坐標系,自變量分別沿第一行和第一列放置。
篇3
目前行業內對載波通信單元靈敏度的測試方法相當麻煩、簡單、粗略,通常使用固定值衰減法測試。固定值衰減法測試時,需要不斷跟換不同衰減值的衰減單元,操作不便,且一般衰減值都是10的整數倍,如此一來,只能大概判斷載波通信單元接收靈敏度,無法實現精確測試。
程控衰減法就是研究對電力線載波強電信號進行可上位機程控式衰減的一種方法。它的原理就是首先將220V強電與系統隔離開來,提取出被測的載波信號,然后輸入衰減電路,通過程控上位機可以設置0-120db,步進≥1db(最小單位1db)的信號值衰減,載波信號被衰減后,再耦合至電力線,輸出給載波接收設備。最終通過程控衰減器的具體衰減值以及被測載波接收設備是否正常接收到信號,來計算得載波接收設備的靈敏度。
本文采用的程控衰減法是用來精確測試低壓載波通信單元靈敏度測試的一種方法。
1 程控衰減法的電路實現方法
程控衰減法的電路實現就是實現一種程控衰減器,包括了載波隔離濾波電路和通信主板電路、程控上位機,系統框圖如圖1。
1.1 載波隔離濾波模塊電路組成及作用
1.1.1 載波信號隔離電路
通過串聯諧振的方法,濾除非載波信號,通過耦合變壓器將市電220V與載波通信信號隔離開來,保證整個系統的安全性。
1.1.2 濾波電路
由電阻、電容、電感構成串聯諧振以及并聯諧振,起到濾波作用,當需要某載波頻率f的信號時,則需要計算匹配RLC參數,只有該頻率附近的信號可以通過。計算公式是諧振頻率
(1),品質因數
(2),在滿足其他參數情況下,Q越大越好,通過計算插入損耗值計算電阻R的取值。
1.1.3 過零檢測電路
當檢測到50Hz市電正弦波經過零點時,將判斷信息傳送給MCU處理器。因為載波通信是在市電過零點時發送數據,所以過零檢測也是十分重要的。
1.2 通信主板
1.2.1 穩壓集成電路
為整個系統提供穩定、安全的直流電。
1.2.2 衰減電路
內置各種高精度貼片電阻網絡,分別可以實現1db、2db、4db、8db、10db、20db、30db、40db信號衰減,通過不同的電阻網絡導通組合,可以實現對載波信號進行0-120db衰減,具體電阻網絡組合方式由MCU控制。
0-120db衰減值對應電阻網絡選擇組合方式如表1。
從表2看出,選擇電阻網絡的組合方式,可以直接實現0-115db的信號衰減,載加上程控衰減器其他電路固定衰減值5db,通過正確的組合,就能實現0-120db信號衰減。
1.2.3 微型處理器MCU控制電路
地位相當于“大腦”,它處理上位機發送的信息,實現對衰減電路的控制。
程控衰減法的實現依賴上述電路功能的實現。
1.3 程控上位機
通過鍵盤、鼠標就可以對程控上位機進行各種操作,程控上位機可以直觀設置和顯示衰減值,操作簡便、直觀、人性化。
1.4 程控衰減法測試載波通信單元靈敏度框圖
程控衰減法的實現需要依靠程控衰減器,程控衰減器與載波通信單元的連接如圖3所示。
2 測試載波通信單元靈敏度步驟
以下為使用程控衰減法測試載波通信單元靈敏度的步驟:
第一步:根據已知載波頻率,通過計算公式(1)算得出濾波電路中R、L、C具體匹配參數。
第二步:根據匹配參數,做好對應的載波隔離濾波電路模塊,并且將模塊插入對應的位置中。
第三步:通過程控上位機,設置程控衰減器的衰減值為0db,被測載波發送設備發送符合測試標準的載波信號。
第四步:被測載波接收設備能正常接收載波信號,然后通過上位機不斷加大衰減值步進值為-10db。
第五步:假如現在程控衰減值為-70db時載波接收設備能正常接收信號,程控衰減值為-80db時無法接收信號,那么將衰減值從-79db開始按照步進值1db,不斷減小,直到載波接收設備能正常接收信號為止。
第六步: 假如當程控衰減值等于-75db時,載波接收設備剛好能正常接收數據,那么載波通信單元的接收靈敏度等于-75db加上程控衰減器其他電路的固定衰減值-5db,最終得到載波接收設備靈敏度等于-80db。
3 案例分析
為了充分說明該方法,以421KHz載波頻率的載波通信模塊測試為例。根據相關計算公式(1)計算,得出濾波電路中的R、L、C參數如表3。
使用程控衰減法測試421KHz的載波接收設備靈敏度數據記錄如表4。
表4中的輸出衰減值,可以直接通過程控上位機設置并且顯示出來,觀察表4記錄表,可以得出載波接收設備的靈敏度等于-75db加上電路固定衰減-5db,等于-80db。
4 結束語
要實現對不同載波頻率的載波通信單元接收靈敏度的測試,首先通過計算得出載波隔離濾波模塊電路中RLC匹配參數,通過該電路,濾除非測試頻率的信號。然后通過調節合適的信號衰減值,來確定載波通信單元的靈敏度。本文研究了基于程控衰減法測試載波通信單元靈敏度方法,總結出測試載波通信單元靈敏度的測試步驟。通過對421KHz載波頻率的載波通信單元靈敏度測試分析,精確的測試了該模塊的接收靈敏度等于-80db,驗證了該方法的可操作性和有效性。
參考文獻
[1]高鋒,董亞波,等.低壓電力線載波通信中信號傳輸特性分析[J].電力系統自動化.2000
[2]戚國光.基于OFDM的電力線載波通信系統的研究[D].長沙:湖南大學,7-35.
[3]Zho Wen.110dB Voltage controlled attenuator.JournalofMicrow aves,1993(3):127
篇4
二、測量單元的設計方法和步驟
對于精密測量行業來說,長度量的測量技術包括氣動、電感、光學等主要方向,具體到定心機的測量要求,從空間體積、各種測量技術的優缺點等因素的考慮,現階段選擇氣動測量方式比較切合實際。
1)測量原理分析:從零件裝配關系上看,可以將裝配間隙0.015-0.025分解為圖二、圖三所示A、B兩個尺寸配合的結果。A尺寸由曲軸、滾套兩個零件組成,B尺寸由上法蘭、缸體兩個零件組成。定心機就是利用調整上法蘭、缸體兩個零件裝配關系(同軸或偏心)來改變B尺寸的具體量值的方法達到了整體裝配的要求。定心機的測量單元分兩部分組成,分別用于檢測A、B兩個主要尺寸,配用四管(下文解釋)氣動量儀或氣電式電子柱顯示各測量結果。如下圖四是用于B尺寸的氣動測量臺示意圖,圖五是用于測量A尺寸的氣動測量裝置示意圖。A尺寸的氣動測量裝置采用V型塊定位,配用一支接觸式氣動測量頭,裝置設計按常規氣動測量原理的方法設計,相對比較簡單,本文不再贅述。本文重點闡述檢測B尺寸氣動測量臺的檢測原理以及各主要參數的計算方法。
2)B尺寸氣動測量臺的檢測原理:氣動測量臺(見圖四)共配置三路氣路,分別是B、X1、X2三路氣路(另外加上A尺寸的氣路,共用4管氣動量儀顯示)。B氣路用于檢測圖二所示的B尺寸,X1、X2分布于B氣路軸截面90°夾角截面的正反兩處氣路,其作用是為了檢測15°截面垂直方向截面的對稱度,進而保證曲軸、滾套在旋轉狀態下15°方向上是最小間隙,保證壓縮機裝配狀態達到設計要求。X1、X2兩氣路的測量值不具有量值概念,只要求兩量值相等,代表對稱度達到要求。設計氣動測量臺的計算過程主要是為了確定上法蘭測量段尺寸、缸體測量段尺寸、標準件尺寸三處主要參數。
3)下面我以某型號壓縮機的零件具體數據來說明氣動測量臺各參數的確定:
與要求間隙量0.015~0.025mm取平均值0.02mm比較可以得出A尺寸的最大調整量0.037mm,也就是說上法蘭與缸體15°方向裝配的理論偏心量為0.037mm
綜上所述,我們可以得出以下結論:
因理論上技術得出上法蘭相對于缸體的最大偏心量為0.037mm,假設缸體在裝配環節位置是固定的,氣動測量臺上法蘭測量段的尺寸理論上應該比上法蘭內孔最大實體尺寸小0.037×2=0.074mm,另外考慮到以上理論計算的是各個零件的尺寸同時處于極限狀態,這在現實裝配中的概率幾乎為零,同時考慮到上法蘭與曲軸在工作狀態也不可能是無間隙接觸(中間有劑油膜)。現實應用中,測量臺上法蘭測量段的尺寸一般取比上法蘭內孔最大實體尺寸小0.05~0.06mm范圍,新制作測量臺時考慮到測量臺的使用壽命,建議取0.05mm。這個結論應該引起氣動測量臺設計人員的充分理解和重視!
結合以上理論計算和實際因素考慮,針對這種型號壓縮機定心機氣動測量頭的主要參數可確定為:
測量臺上法蘭測量段的尺寸:Φ16.015-0.05=Φ15.965mm,另外根據氣動測量原理中初始間隙(包含插入間隙)的概念,最終確定尺寸為Φ15.965(-0.01/-0.015)。
測量臺缸體測量段的尺寸:缸體在裝配測量時位置相對是固定的,因此只需考慮氣動測量原理中初始間隙(包含插入間隙)的概念,最終確定尺寸為Φ45.998(-0.01/-0.015)。
篇5
中圖分類號: TP306
文獻標識碼: A 文章編號 文章編號: 16727800(2017)002001303
0 引言
在計算機編程中,單元測試[1]是針對程序模塊(軟件設計的最小單位)進行正確性檢驗的測試工作。程序單元是最小的測試部件。在過程化編程中,一個單元就是單個程序、函數、過程等;對于面向對象編程,最小單元就是方法,包括基類(超類)、抽象類或者派生類(子類)中的方法。每個理想的測試案例獨立于其它案例。為測試時隔離模塊,經常使用stubs、mock或fake等測試馬甲程序。單元測試通常由軟件開發人員編寫,用于確保所寫代碼符合軟件需求和遵循開發目標。
運行和調試JavaScript代碼[2]的主要工具是Web瀏覽器,現代的Web瀏覽器一般包含調試JavaScript代碼的控制臺。對于JavaScript代碼,Mozilla Firefox是最適合運行與調試的瀏覽器之一。Mozilla Firefox瀏覽器的插件Firebug是調試JavaScript代碼必不可少的,尤其是涉及到Ajax技術的Web應用。在Mozilla Firefox瀏覽器中安裝好Firebug插件后,JavaScript代碼運行中的錯誤信息、Ajax調用、性能分析結果、命令行執行結果都會顯示在控制臺界面上。Firebug提供了很多手段可以將JavaScript代碼運行中的信息輸出到Firebug控制臺,通過靈活使用控制臺語句可以方便實現對JavaScript代碼的單元測試。
1 JavaScript代碼中控制臺語句使用
在JavaScript代碼中可以使用console.log()方法向控制臺輸出信息。實際上,console.log()方法包含在conosle對象中,而console對象則是由瀏覽器提供的(IE6及以前瀏覽器不支持console對象)。
除了最基本的console.log()方法外,conosle對象還提供了多種方法以便向控制臺輸出不同類型的信息和調試JavaScript代碼。
(1)不同類型輸出方法。
根據信息的不同性質,console對象除了console.log()方法外還有4種輸出信息方法:一般信息console.info()、調試信息console.debug()、警告提示console.warn()和錯誤提示console.error()。
(2)自定義輸出格式。
console對象所有的輸出方法都可以使用printf風格的占位符對輸出內容進行格式化。支持的占位符有字符(%s)、整數(%d或%i)、浮點數(%f)和對象(%o)。
(3)分組輸出。
如果在JavaScript代碼運行過程中需要輸出數據太多,則可以使用分組的方式輸出到控制臺以便查看和分析。conosle對象中的console.group()和console.groupEnd()方法提供了數據分組輸出功能。
(4)輸出指定對象所有屬性和方法。
console.dir()方法可以輸出傳入對象的所有屬性和方法。
(5)顯示頁面對象的HTML代碼。
console.dirxml()方法可以顯示輸入的頁面對象HTML代碼,以便查看和調試。
(6)斷言。
console.assert()方法提供了基本的代碼測試功能。該方法用來判斷一個表達式或變量是否為真,如果不為真,則在控制臺輸出一條相應信息,并且拋出一個異常。
(7)跟蹤方法調用軌跡。
console.trace()方法可以用來追蹤方法的調用軌跡,用來對遞歸方法或調用過程較復雜的方法進行分析。
(8)計時方法。
console.time()和console.timeEnd()方法可以用來記錄并輸出代碼的運行時間。
(9)性能分析方法。
性能分析指分析程序各個部分的運行時間,console.profile()可以用來對JavaScript代碼進行性能分析,找出代碼瓶頸。
2 JavaScript代碼單元測試實現
如果需要測試某些不涉及DOM和CSS操作的JavaScript代碼,用Qunit之類的第三方JavaScript單元測試框架[3]略顯繁瑣,效率不高,這類JavaScript代碼最適合用控制臺語句做單元測試。
例如某項目需要用JavaScript代a實現快速排序[4],具體實現代碼如下:
//swap函數實現元素交換
function swap(list,firstIndex,secondIndex){
var temp = list[firstIndex];
list[firstIndex]= list[secondIndex];
list[secondIndex]=temp;
}
//getMiddle函數獲取中軸點
function getMiddle(list,left,right) {
var pivot = list[Math.floor((right + left)/2)];
var i = left;
var j = right;
while (i
while (list[i]< pivot) {
i++;
}
while (list[j]> pivot) {
j--;
}
if (i
swap(list,i,j);
i++;
j--;
}
}
return i;
}
//quickSort函數以遞歸方式完成快速排序
function quickSort(list,left,right) {
var index;
if (list.length > 1) {
index = getMiddle(list,left,right);
if (left < index - 1) {
quickSort(list,left,index - 1);
}
if (index < right) {
quickSort(list,index,right);
}
}
return list;
}
上述快速排序的實現代碼可以使用控制臺語句中的斷言部分完成測試,具體如下:
//待排序list
var array=[6,2,9,8,1,7];
//預期的結果
var result=[1,2,6,7,8,9];
//測試swap函數
swap(array,1,5);
console.assert(array[1]==7&&array[5]==2,"swap函數錯誤!");
//測試getMiddle函數
var m = getMiddle(array,0,array.length-1);
console.assert(m==5,"getMiddle函數錯誤!");
//測試quickSort函數
quickSort(array,0,array.length-1);
console.assert(array.toString()==result.toString(),"quickSort函數錯誤!");
//單元測試結束
console.info("測試完成!");
通過控制臺語句中的console.assert()方法可以分別測試代碼中的swap函數、getMiddle函數和quickSort函數。如果測試通過,則會看到在控制臺中輸出帶有信息提示圖標的“測試完成!”字樣。
如果其中某一個函數出錯則會有相應提示,如圖1所示。
上述針對快速排序模塊的測試很簡單,測試結果也沒有問題。但是對單元測試來說,這個測試用例太單一和普通了。為了提高測試用例[5]覆蓋率,最好寫一個輔助函數tester來調用被測試代碼和使用控制臺語句輸出結果,具體做法如下:
function tester(name,result,expect){
//使用分組語句輸出測試用例名
console.group(name);
if(result==expect){
//測試通過,信息提示
console.info("通過!");
}else{
//測試失敗,警告提示
console.warn("失敗");
}
//分組結束
console.groupEnd();
}
如果用上述tester函數測試完成快速排序的quickSort函數,可以這樣實現:
//待排序list
var array1=[6,2,9,8,1,7];
//預期的結果
var result1=[1,2,6,7,8,9];
//待排序list2
var array2= [6,2,9,8,1,7,85,12,48,56,78,987,45,
12,-78,45,0,58,96,12.56,12.3,7.36];
//預期的結果2
var result2 = [-78,0,1,2,6,7,7.36,8,9,12,12,12.3,
12.56,45,45,48,56,58,78,85,96,987];
//錯誤結果測試
tester("測試錯誤輸入",1,0);
//測試快速排序
quickSort(array1,0,array1.length-1);
tester("常規測試",array1.toString(),result1.toString());
quickSort(array2,0,array2.length-1);
tester("包含負數與小數測試",array2.toString(),result2.toString());
代碼運行結果如圖2所示。
可使用tester函數添加許多測試用例,并且還能為用例命名,在控制臺中直接顯示每個用例是否通過,同時用不同顏色標記,使結果一目了然。至此一個基本的單元測試就完成了。
3 結語
快速排序算法的JavaScript代碼,靈活使用控制臺語句可快速完成代碼模塊的單元測試,比起專業的第三方JavaScript單元測試框架更高效,學習曲線也不那么陡峭。但是,利用控制臺語句實現JavaScript代碼單元測試主要適用于邏輯代碼,而前端開發很多時候要和UI關聯,雖然UI相關的代碼也可以進行單元測試,但很麻煩,比起邏輯代碼難度大得多。隨著單元測試的普及,尤其是敏捷開發的推動,涌現了許多優秀的JavaScript單元測試框架,如Qunit和Jasmine等,每個都有各自擅長的領域。對于基于JavaScript語言的前端項目單元測試,結合控制臺語句,精心選擇框架,綜合考慮項目實際情況,一定可以寫出合適的測試代碼。
參考文獻:
[1] 張軍,李攀,邢光輝,等.軟件測試的認知誤區和單元測試實戰流程[J].科技創新與應用,2016 (25):120120.
[2] 令芬.JavaScript API自動化測試方案的管理設計與實現[J].電子設計工程,2016,24(2):3537,41.
篇6
(1)建立在標準的基礎上,利用黑盒來進行單元測試,來進行測試。
(2)建立在程序主體產生基礎上,利用白盒檢測系統和程序的邏輯性和合理性。
1 面向程序的單元測試弊端闡述
對于單元測試來說,其自身弊端不能忽視。包括文件性質自身弊端OPEN語句錯誤CLOSE語句錯誤,在緩存時,其緩存內存量和記錄長度不符合,正文編寫錯誤等等問題,會對整個系統的板塊和數據帶來影響。其次,測試錯誤處理現象的發生,也會影響描述正確性無法對錯誤定位,對板塊和系統產生干預。
2 AOP編程闡述
2.1 1AOP編程重要性
AOP編程思想是社會發展的產物,是科學技術和社會經濟發展的產物,具有時代性。對AOP編程思想發展背景進行分析和研究,發現AOP編程思想產生于1997年西方國家召開的編程論壇會議上,西方國家的研究人員,在編程會議中給出AOP編程這一理論思想。
單元檢測,也被叫做板塊檢測,其主要服務對象為軟件系統中的最小板塊,針對系統中最小板塊,來判斷程序中板塊的正確性。軟件開發和設計的不斷發展,增加了軟件的種類和復雜性,增加軟件測試的難度,增加單元測試的復雜性。面對這一發展形勢,為了保證軟件開發有效運作,保證軟件的實際應用性,我國開始對軟件測試和開發方法進行深入研究和分析,在長久的研究工作中,發現AOP編程思想具有實際應用,可以滿足軟件開發要求,滿足單元測試發展目標。站在世界角度來說,增加AOP編程思想關注,對整個世界經濟發展具有重要意義。
3 AOP編程思想在面向對象程序的單元測試應用
AOP編程思想在面向對象程序的單元測試應用,包括在對象程序單元測試應用,在契約的單元測試,獨立單元檢測應用。
3.1 AOP編程思想在面向對象程序單元測試步驟
對于AOP編程思想在面向對象程序應用來說,主要是對程序系統進行簡化,簡化為銀行板塊的模式,來對單元進行測試。AOP編程思想在面向對象程序應用主要包括以下幾點內容。
(1)對系統的代碼進行測試,對存在的與消費有關的信息和數據進行反饋,保證不同數據和信息積分反饋的真實性和準確性。詳細來說,系統代碼檢測主要包含三個不同性質的對象,存錢、消費和取錢主體等等。系統代碼可以對著三個不同主體的信息記錄和代碼件反饋。
(2)可以利用賬戶的優勢,利用ID對使用賬戶和新增加的賬戶展開管庫,保證了主體管理的可持續性,保證管理周期最大化。
(3)transfer具有自身的優勢,這一方法可以展現不同賬戶的信息,增加了和賬戶的聯系性,保證服務的完善性。
3.2 契約的單元測試
在對AOP編程思想在面向對象程序單元測試分析后,發現在利用傳統的銀行代碼中,具有自身的便利性,但是也會存在眾多問題。例如:BankAccount這一系統中,運作形式類別簡單和便捷,但是其卻會在應用過程中,出現數據和參數為零的現象,導致不同使用賬戶的財務為負數形式。面對這一發展現象,可以增加契約檢測力度,來避免這一弊端的產生。契約單元測試主要包括以下兩種形式。
(1)利用JAVA系統來運作。1.4系列是JAVA具有代表性的系列,其具有斷言能力,滿足契約檢測的要求。
(2)對契約形式再次構建,保證設計的合理性和構建的科學性。這一構建工作,主要是針對技術來說,對服務主體對象應用技術展開設計,可以保證單元測試的完整性,保證軟件的實際應用性,提高軟件質量。
3.3 獨立單元檢測
獨立單元的檢測和測試具有自身的優勢,降低了單元測試難度。例如:對于獨立單員中存在遺留的代碼來說,運作和替代具有自身難度,利用傳統的檢測方法,無法保證測試的真實性。在面對這一現象,可以利用AOP編程思想優勢,對獨立單元進行隔離處理,把單元換分為幾個系統和板塊,在一一處理,在保證單元獨立性基礎上,增加了對不同板塊信息了解。其次,也可以利用Mocks這一方法展開測試,增加測試主體的協作性,對獨立單元進行劃分,給予隔離層。辯證來說,Mocks這一方法不具有邏輯性,無法滿足邏輯需求。總的來看,AOP編程思想在獨立單元檢測中具有自身的應用優勢,可以對系統中代碼進行修改,和模仿主體的性能類似,利用ID來查找賬戶的信息,并把測試結果展現在系統中。
4 結束語
AOP編程思想是社會發展的產物,具有自身特點,可以利用賬戶的優勢,利用ID對使用賬戶和新增加的賬戶展開管庫,保證主體管理的可持續性,保證了管理周期最大化。
參考文獻
[1]樓程偉,陳麗紅.關于計算機編程思想與AOP編程思想的研究[J].電腦知識與技術,2015(24):52-53.
[2]謝林.AOP思想在項目中的應用與研究[J].電腦知識與技術,2010(15):4130-4132.
[3]杜玲玲.AOP技術在國庫集中支付系統的應用[J].計算機應用與軟件,2009(03):190-191+204.
[4]趙艷,劉同明.面向方面軟件開發在J2EE企業應用系統中的實現[J].計算機技術與發展,2008(10):225-229.
[5]張永.AOP技術在自助設備運行管理系統中的應用[J].中國金融電腦,2008(08):91.
作者簡介
篇7
近幾年來,單元測試技術已被軟件開發人員應用得十分廣泛,研究表明該技術已經成為最流行的測試技術之一。隨著測試標準的引入和測試技術的發展,測試操作可以通過測試腳本來實現。在一個項目中,測試腳本可以與測試用例相結合,測試用例則可以通過測試用例集來管理,這種方式貫穿于整個項目過程中,甚至可以在后續項目中重用。通過運行測試腳本可以得到代碼覆蓋率等數據,這些數據為改進測試用例提供了根據,并且可以指導開發工作。目前已有一些商用的測試工具,比如Visual Test, C++ Test,這些工具實現了單元測試框架。
然而,嵌入式系統的單元測試不同于桌面應用系統的單元測試,難度也更大。目前應用于嵌入式系統中的單元測試可分為兩種:運行在目標機上的單元測試和運行在仿真環境下的單元測試。由于目標機中有實時中斷、多任務調度等,因此它能為單元測試提供更為真實的測試環境,但同時它也需要開發人員花大量的時間搭建測試環境。而仿真環境下的單元測試主要用于測試系統功能,并且環境相對來說要容易搭建,但它的缺點是它需要隨著軟硬件的升級而不斷的調整。
在嵌入式系統中,由于開發環境的限制,加上缺乏有效的單元測試工具,所以開發者很難進行全面和有效地執行單元測試,只能通過單步調試,斷言等手工方式來做有限的單元測試,而且這些手工的單元測試方式沒有合適的流程去管理,也沒有進入和退出單元測試階段的標準。
這篇文章提出了一種嵌入式系統下基于自動單元測試工具的單元測試框架。這個框架極大地改善了單元測試效率,主要體現在以下的四個方面:①功能選擇策略②定義了單元測試的進入和退出標準③單元測試用例和單元測試用例集的管理④代碼覆蓋率分析。這種框架已經在基于Linux平臺的手機應用Email項目中得到了應用,并發揮了很好的效果,極大的降低了開發成本、有效的縮短了項目開發周期。同時,客戶的滿意度也非常高。
1 傳統的單元測試流程
1所示為傳統開發過程中的單元測試流程。當代碼準備好后,單元測試就開始了。首先,開發人員要設計測試用例,同時需要搭建測試環境,然后開發人員開始在不同的測試環境(目標機和仿真環境)中運行,并收集運行過程中的輸出結果加以分析,以確定是不是所有的測試用例都通過。
由于嵌入式系統的特性,開發人員需要花費大量精力在搭建測試環境上,并且分析測試結果也需要花費很多時間。此外,開發人員也沒有辦法去評估單元測試的代碼覆蓋率,因此這種方式不能保證項目的質量。
另外,重用在軟件項目開發中經常被使用,因為它能給項目帶來很多益處,比較縮短開發周期,降低開發成本等。但是,在傳統的單元測試中,開發人員無法重用測試用例,每一次重用都需要花費同樣的時間和精力去重新測試。
從很多已經完成項目的歷史數據來看,大約30%到40%的問題是屬于邏輯問題,而這些問題應該是能在單元測試階段就可以發現的。隨著開發過程的進行,越在后面階段發現問題,去解決這個問題需要花費的代價(時間和人力)就越大。而且一旦交付給客戶后,如果再出現問題,可能需要付出召回等措施,這也會影響到產品的品牌。因此,一個有效的單元測試是非常必要的。
2 基于自動單元測試工具的測試框架
2.1基本框架
本文在傳統的單元測試流程的基礎上提出一種新的單元測試流程,如圖2所示,它可以改善上文中所提到的傳統測試流程的不足。新流程極大地提高了以下四個方面: ①定義了功能選擇策略,利用最少的資源獲得最好的質量;②定義了單元測試的進入和退出標準,把單元測試標準化。③提供了測試用例和測試用例集的管理機制,提高重用的能力。④引入了一個自動單元測試工具,以減少搭建環境和運行測試的代價。
在新的流程中增加了代碼覆蓋率。借助自動測試工具,在所有測試用例都運行完后,會得到一份關于代碼覆蓋率的報告,包括代碼行覆蓋率,路徑覆蓋率,分支覆蓋率等。傳統的測試流程只能得到一部分這樣的數據,而且需要人工去統計。并且通過對測試用例的管理也實現了重用。
2.2測試功能選擇策略
因為單元測試是一種代碼邏輯驅動的測試方法,所以理解代碼能夠有效地進行單元測試。為了更好地進行單元測試,應該從代碼分析開始著手,根據代碼邏輯和實現來選擇相應的測試功能并設計合理的代碼覆蓋率目標。
新的單元測試流程定義了進入和退出單元測試的標準。進入的基本標準是:代碼已經經過團隊的檢查,一致認為可以開始單元測試。退出的標準包含三個方面:①所有的單元測試用例必須都已執行完畢;②單元測試期間發現的錯誤需要記錄下來,并且與之相關的代碼錯誤應該得到正確地修改;③單元測試報告中應該包含代碼覆蓋率,并達到之前設定的目標。
利用單元測試工具,可以采用測試腳本來描述測試行為。一個測試用例對應一個腳本,包括全局變量、臨時變量以及測試對象所需的類的初始化信息。測試用例由相應的測試項目管理和保存。當代碼發生改變,僅僅需要改變對應的測試用例以實現重用。
基于CppUnit框架的自動單元測試工具可以在目標機和仿真環境中運行,并提供了腳本語言的開發接口用于開發者編寫可運行的測試用例和測試用例集以及基于代碼覆蓋率的分析結果。
3 有效性評估
在新的單元測試流程中,重點是測試用例的設計。通過設計更多的測試用例來達到更高的代碼覆蓋率,這會在很大程度上項目的質量,縮短項目周期。
通過對Email項目的實踐應用,并對比同平臺的其他項目的實際數據可以得到圖3關于在不同開發階段軟件缺陷的分布圖。在采用新流程的Email項目中,更多的問題在單元測試就被發現并解決,因而大大降低了開發成本,縮短了開發周期。
4 結束語
沒有自動測試和代碼覆蓋率的數據,就沒有辦法保證單元測試是否有效。更重要的是現在的單元測試工具已經實現了重復測試,卻還沒有解決連續測試的問題。如果軟件架構通過增量模式進行連續的調整,代碼和測試用例就也需要同步進行調整。單元測試的趨勢會從單一的靜態測試發展為動態的連續測試。
本文提出的新的單元測試流程致力于提高軟件項目質量,降低成本。通過使用自動單元測試工具和對傳統單元測試流程四個方面的提高,新的單元測試流程有效的實現了上述目標。
雖然嵌入式系統是我們討論的重點,但是新的單元測試流程也同樣適用于普通平臺的單元測試,差別只是選擇不同的自動測試工具來滿足不同的平臺。
參考文獻:
[1] C. Pacheco, M. D. Ernst. Eclat. Automatic generation and classification of test inputs. In Proc. 19th ECOOP, pages 504-527, July 2005.
篇8
早在20世紀50年代末期,軟件領域中就出現了迭代模型。通俗的講,迭代模型就是將整個軟件的開發分解成一個個的子特性開發(階段),而針對每個階段內部采用的還是類似瀑布模型的方法。每個迭代是一次完整的經過所有工作流程的過程:需求、分析設計、實施和測試工作流程。每一次的迭代都會產生一個可以的產品,這個產品是最終產品的一個子集。與傳統的瀑布模型相比較,迭代過程具有以下優點:(1)由于每個迭代是整個系統的子系統,相對內容比較單一,各個階段需要傳遞的信息量較小,不需要通過大量的文檔進行傳遞。(2)由于整個開發過程被拆分為獨立的若干階段,用戶在每個階段結束就可以提前看到開發成果。一方面能夠及時對開發中出現的偏差進行糾正;另一方面由于能夠及時看到工作成果,有利于開發人員的效率提升。(3)相對于瀑布模型,迭代模型更加關注對軟件目標、結果的關注,更加注重和最終用戶的互動,以保證開發成果的質量。(4)由于用戶的需求并不能在一開始就作出完全的界定,它們通常是在后續階段中不斷細化的,而迭代模型更能夠適應這種需求的變化。同樣,迭代模型也存在其缺點,那就是對于項目經理和開發團隊的要求更加高,并且需要團隊成員之間更加的信任。因為迭代模型運作對于過程的監控較弱,更加關注面對面的交流與合作。
篇9
軟件測試是指利用相關測試工具,按照一定的測試方案和流程對軟件系統的功能和性能進行測試,對可能出現的問題進行分析、評估,發現開發錯誤并跟蹤,以確保所開發的軟件滿足用戶需求。軟件測試是保證軟件質量的主要手段,是根據軟件開發各階段的規則說明和程序內部結構而精心設計的一批測試用例,并利用這些測試用例運行程序以發現軟件是否存在錯誤的過程,軟件測試的范圍應當包括更廣泛些,除了考慮正確性外,還應關心程序的效率、健壯性等因素。
軟件測試過程包含單元測試、集成測試、確認測試和系統測試四個步驟:
(1)單元測試:對每一個程序單元進行獨立測試,檢查各程序模塊是否正確地實現了預定的功能。
(2)集成測試:把已通過測試的模塊組裝起來,對軟件體系構造的正確性進行測試。
(3)確認測試:檢查已完成的軟件系統是否已滿足了需求規格說明中的各項需求,軟件配置是否完全、正確。
(4)系統測試:將經過確認的軟件系統置入實際的運行環境中,與其它系統成份結合在一起進行測試。
2.單元測試
單元測試又稱模塊測試,是以軟件系統設計的最小單位——程序模塊為對象,進行正確性檢驗的測試工作。單元測試常被看作編碼的附屬品,在代碼被開發、編譯調試、審查后,單元測試用例設計便開始了。進行充分的單元測試,是提高軟件質量,降低研發成本的必由之路。幾乎所有的開發人員都會對每一段代碼做一定程度的單元測試。如果一個模塊要完成多項功能,可以將該模塊看成由幾個小程序組成,對每個小程序分別進行單元測試。如果是關鍵模塊,往往還要做性能測試。
單元測試以詳細設計說明書和源程序清單為依據,常采用白盒測試的用例,輔之以黑盒測試的用例,以尋找模塊內部可能存在的錯誤為目的,主要完成模塊接口測試、局部數據結構測試、路徑測試、錯誤處理測試、邊界測試等任務。
(1) 模塊接口測試
單元測試開始時,要對通過被測模塊的數據流進行測試。包括調用該模塊的輸入參數的正確性、調用其子模塊時提供參數的正確性、全局變量的定義在各模塊中是否一致等。
(2) 局部數據結構測試
包括數據類型的一致性、變量名、變量賦值、全局數據對模塊影響的正確性等檢驗。
(3) 路徑測試
對基本執行路徑和循環進行測試,查找由于錯誤的計算、不正確的比較或不正常的控制流而導致的錯誤。
(4) 錯誤處理測試
檢測對錯誤條件的響應是否正確,錯誤描述是否與實際的錯誤是否相符、是否能夠對錯誤定位、是否易于理解等。
(5) 邊界測試
通過設定邊界值檢測數據流、控制流中等于、大于或小于比較值時出錯的可能性。
在面向過程編程時代,單元測試所說的單元一般是指函數,而在面向對象編程時代,單元測試所說的單元一般是指類。以類作為測試單位,測試的復雜度相對較高,所以目前通常采用的辦法是為軟件開發建立對應的測試工程,為每個類建立對應的測試類,為每個函數建立測試函數測試結構化的局部代碼。
3.單元測試用例的設計
測試用例是指對某特定的軟件系統進行測試任務的描述,它體現了測試的方案、方法和技術,包括測試目標、測試環境、輸入數據、測試步驟、預期結果、測試腳本等,并形成文檔。
測試用例的設計也就是測試需求細化的過程,測試需求分析和測試用例設計是密不可分的,前者是后者的依據,后者是前者的體現。測試用例的設計應與復審相結合,根據相關設計信息設計測試數據,以增大發現錯誤的可能性。
單元測試用例可以選取正確輸入、邊緣數據和錯誤輸入作為測試數據。以系統用戶注冊模塊中出生年、月、日的設置為例,通過等價類劃分法設計測試用例。
篇10
ISO26262標準概述
功能安全標準(ISO26262)是從電子、電氣及可編程器件功能安全基本標準IEC61508派生出來的,主要定位在汽車行業定的電氣器件、電子設備、可編程電子器件等專門用于汽車領域的部件,旨在提高汽車電子、電氣產品功能安全的國際標準。
ISO26262從2005年11月起正式開始制定,經歷了大約6年左右的時間,已于2011年11月正式頒布,成為國際標準。中國也正在積極進行相應國標的制定。
ISO26262主要內容包括:
·提供了汽車生命周期(管理,研發,生產,運行,服務,拆解)和生命周期中必要的改裝活動。
·提供了決定風險等級的具體風險評估方法(汽車安全綜合等級,ASILs)。
·使用ASILs方法來確定獲得可接受的殘余風險的必要安全要求。
·提供了確保獲得足夠的和可接受的安全等級的有效性和確定性措施。
功能安全受研發過程(包括具體要求,設計,執行,整合,驗證,有效性和配置),生產過程和服務流程以及管理流程的影響。
安全事件總是和通常的功能和質量相關的研發活動及產品伴隨在一起。ISO26262強調了研發活動和產品的安全相關方面。
符合性要求
1)如果要宣稱符合ISO26262,那必須是符合其每個要求,除非有如下情況之一:
·根據ISO26262-2中,對不適用的要求進行安全行為的裁剪:
·針對不符合項,提出其說明理由,并對理由根據ISO26262-2進行評估:
2)所有安全行為的輸出物都在ISO26262中有明確的規定。
3)下文中出現的列舉各測試方法的表中,有不同的序號表示方法:
·連續的序號,比如1.2.3:所有的方法應被用于對應的ASIL等級,如果出現所列表中之外的方法背用于測試,則需要進行說明。
·可選的序號,比如1a,1b,1c:可以選擇某個或多個方法進行測試,并優先考慮更高推薦指數的方法。如果多個方法被組合選擇用于測試,則需要進行說明。
4)針對ASIL的各級,表中的每個方法都有對應推薦指數:
·“++”:最高的推薦指數
·“+”:建議使用
·“0”:不建議使用或不需使用
測試概述
ISO 26262-8中的第9節描述了“Verification”的目標、要求和建議、工作輸出等。Verification是用于確保實現與需求的一致性,在安全生命周期的幾個階段中都會用到。包括概念階段、產品開發階段、生成和運營階段。本文主要描述在產品開發階段中的測試環節中,需要用到的各種測試要求和建議。
測試計劃
1)在測試執行前,都需要建立測試計劃,其主要包括幾部分:
·測試范圍:用于測試的產品內容:
·測試方法:用于測試的各種方法:
·測試標準:測試通過或失敗的標準:
·測試環境:如果需要用到各種測試環境,比如仿真環境等,需要進行說明:
·測試工具:用到的各種測試工具:
·出現異常后的對策:
·回歸策略:在測試對象發生變更時,指定其如何進行回歸測試,比如全部回歸、部分回歸、和其他測試案例一起回歸等。
2)測試計劃的制定還需考慮到以下幾個方面:
·測試方法的完整性:
·測試對象的復雜度:
·測試經驗:
·測試技術的成熟性和風險。
測試規格
1)測試規格需要選擇和指定用于測試的方法,并包括測試案例、測試數據和測試對象。
2)每個測試案例需要包括:
·序號:唯一的ID
·測試對象的版本號
·測試對象的條件和配置:針對測試對象的不同配置,需要選擇合理的測試案例進行測試
·測試環境
·輸入值和順序
·期望行為:報刊輸出值、輸出范圍、功能表現等
3)測試案例需要根據測試方法來分類。針對每個測試方法,除了測試案例外,還需考慮以下幾方面:
·測試環境:
·相關性:
·測試資源。
測試執行和測試報告
4)按照上述章節中制定的測試計劃和測試規格,進行測試的執行。
5)針對測試結果,其測試報告需包括以下幾個方面:
·測試對象的ID:
·測試計劃和測試規格的引用:
·測試環境、測試工具、標定數據:
·測試結果和期望值的符合度:
·測試通過或失敗的結論,如果失敗,還需要指明失敗原因和修改建議:
·針對沒有執行的測試案例,說明原因。
ISO26262中的測試階段
ISO26262中涉及到測試的階段共包括“硬件集成和測試”、“軟件集成和測試”、“產品集成和測試”這三部分。下面章節分別介紹這三部分的要求和建議。
硬件集成和測試
ISO26262中“Part 5:ProductDevelopment:HardwareLevel”針對產品開發的硬件部分提出了專門的集成和測試要求和建議。
1 硬件集成和測試需要按照安全計劃和驗證要求來按計劃進行:
2 硬件集成和測試需要按照產品集成和測試計劃來進行:
3 針對變更,需要按照標準規定中的變更管理來對測試策略進行影響分析:
4 測試的設備可以按照國際標準(比如ISO17025)或公司標準來進行標定:
5 硬件集成測試的測試案例需要按照表1的方法進行設計:
6 針對硬件安全需求,硬件集成和測試需要對其安全機制實現的完整性和正確性進行驗證,其方法如表2所不。
7 硬件集成和測試需要按照表3的方法進行外部壓力環境下的魯棒性測試。
軟件集成和測試
軟件單元測試
軟件單元測試是在軟件開發過程中要進行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。ISO26262中規定了其相對應的要求和建議:
1 軟件單元測試需按照“ISO26262-8節9中”的驗證要求來有計劃的定義和執行。軟件單元測試的對象是具體的軟件實現單元,在基于模型的軟件開發過程中,軟件單元測試的對象是其單元模型。
2 軟件單元測試需要按照表4中列的方法進行,以完成以下目標:
·檢查是否符合軟件單元設計的具體要求:
·檢查是否符合軟硬件接口要求:
·檢查功能是否正確實現:
·檢查是否有異常功能:
·檢查軟件實現的魯棒性,比如錯誤處理效率等:
·檢查功能所需資源的完整性。
3 軟件單元測試中的測試案例需要按照下表5中的方法進行分析設計。
4 軟件單元測試中,對于需求的覆蓋度、代碼的覆蓋度都需要進行衡量,具體方法如表6所示。如果覆蓋度不夠,還需要增加其他測試案例。
·代碼的覆蓋度都可以借助一些軟件工具來實現:
·如果是基于模型的開發,其軟件單元測試需要利用類似的模型的結構化覆蓋指標來衡量:
·如果通過代碼的打樁來進行測試覆蓋度的衡量,必須保證打樁的代碼和正常的代碼的執行功能是一致的:
·對于覆蓋度衡量目標,都需要給出一個合理理由來表示其不同的級別,對于無法覆蓋的代碼,可以通過檢查等其他方法來進行驗證。
5 軟件單元測試需要盡可能的在真實的目標環境上執行,如果利用其他環境,則需要評估其與真實環境的差異、源代碼和目標代碼的差異,分析設計測試案例,以便在接下來的測試階段中得到執行。
·測試環境的不同,會導致源代碼或目標代碼的不一致,比如不同處理器的位數不一樣,會導致編譯后的目標代碼不一致。
·如果能利用目標環境中的相同處理器來運行軟件單元測試案例,那是最有效的,但如果不行,則可以用處理器模擬器來代替,否則軟件單元測試只能在開發系統中進行測試。
·軟件單元測試可以在不同的環境中執行,比如模型在環測試(MIL)、軟件在環測試(SIL)、處理器在環測試(PIL)、硬件在環測試(HIL)等。
·在基于模型的開發系統中,軟件單元測試可以在模型級別進行,但模型與代碼的執行比較測試必須要做,以保證模型與自動生成的代碼的結果一致性。
軟件集成和測試
軟件集成和測試主要對實現的各軟件模塊進行集成,并驗證其嵌入式軟件實現是否符合軟件架構設計。該階段的要求和建議如下:
1 軟件集成計劃應該描述層次化的集成單個軟件單元進軟件組件中,直到嵌入式軟件完全集成,并且應該考慮如下:
·軟件集成功能的相互關系:
·軟件集成和軟硬件集成的相互關系。
注意:對于基于模型的開發,可以先集成各模型,然后對集成好的模型進行自動代碼生成以完成整體軟件的集成。
2 軟件集成測試根據ISO26262-8:2011,第9節計劃,定義并且執行。軟件集成測試的測試對象是軟件組件。對于基于模型的開發,測試對象可以是和軟件組件相關的模型。
3 軟件集成測試需要按照表7的方法進行,以完成以下目標:
·檢查集成的軟件是否和軟件架構設計一致:
·檢查集成的軟件是否滿足軟硬件接口規格:
·驗證功能的正確性:
·檢查其魯棒性,比如錯誤檢測、錯誤處理機制的有效性:
·檢查是否有足夠的資源來支持。
4 測試案例需要按照表8中的方法進行分析設計。
5 對于軟件架構級別的需求測試覆蓋度,可以用來衡量測試的完整性,以及用于證明沒有設計之外的功能實現。如果有需要,可以增加新的測試案例,或者提供一個合理的理由說明。
6 為了評估測試案例的完整性,同時確保沒有多余的功能,根據表9列出的指標需要衡量出其結構覆蓋率。如果覆蓋率不夠高,要么需要添加額外的測試案例,或者提供一個合理的理由說明。例如,結構覆蓋率的分析可以用于發現測試案例的不足、無用代碼、無效代碼或者多余功能等。
·結構覆蓋率可以利用工具計算出來。
·如果是基于模型的開發,結構覆蓋率可以通過模型級別的模型結構覆蓋率來統一計算。
7 作為產品的一部分,嵌入式軟件需要被驗證其包含設計的所有功能。如果嵌入式軟件包含了設計之外的功能(比如用于調試的代碼),則這些功能需要被驗證是不影響軟件的安全需求的。如果這些設計之外的功能在真實產品中保證不會被激活執行,那也是符合這個要求的:否則刪除這些功能,也需要按照需求變更流程來統一處理。
8 軟件集成測試需要盡可能地在真實環境中運行,如果不行,則需要評估測試環境與真實環境的差異性,并針對這些差異,在后續的階段的真實環境的測試中設計專門的案例來執行。
·測試環境的不同,會導致源代碼或目標代碼的不一致,比如不同處理器的位數不一樣,會導致編譯后的目標代碼不一致。
·針對各種測試,需要建立合適的測試環境。比如目標處理器的測試環境、仿真處理器的測試環境、開發測試環境等。
·軟件集成測試可以利用模型在環測試(MIL)、軟件在環測試(SIL)、處理器在環測試(PIL)、硬件在環測試(HIL)等測試手段進行測試。
軟件安全需求驗證
本階段的目標是驗證嵌入式軟件符合軟件安全需求,其所規定的要求和建議如下:
1 軟件安全需求的驗證需要制定計劃,定義再執行。
2 為了驗證嵌入式軟件實現了軟件安全需求,表10列了所需的測試環境。注意:已有的測試案例,例如在軟件集成測試階段使用的可以重用。
3 對于軟件安全需求實現的測試需要在目標硬件平臺上完成。
4 軟件安全需求驗證的結果需要考慮下面這些因素來評估:
·和預期結果一致:
篇11
20世紀50年代開始我國已經將砂石樁技術應用到加固地基的施工中,在實踐過程中應用廣泛,技術也日趨成熟,但是效果仍然到不到預期的要求,這是因為在施工中不斷的遇到新的問題。經過多年的施工和實踐積累,今天的砂石樁施工技術已經成為一種相對成熟的地基處理方法。應用的范圍是松散砂土、粉土、填土等地基的處理。砂石樁作用的機理是:利用樁體的密度不斷增加增加對周圍土層的擠壓,在輔以機械振動,實際上增加了周圍土層的密實度,從而提高了地基的承載力。最終達到降低壓縮性,降低、消除液化性的目的。目前,在砂石樁的施工中對于其作用效果的檢測技術也隨著砂石樁的普及而逐步發展完善。因為,對砂石樁處理地基的效果的檢測是保證施工質量的重要手段,如果檢測的方案、測試方法、評價標準等出現偏差,將會給后續施工帶來潛在的風險,本文將在后面對砂石樁的施工、效果檢測、評價等問題進行探討。
一、檢測方法的探討
1 載荷實驗的探討
砂石樁檢測中,載荷試驗是一種主要的形式。其主要反應的是地基的承載力。這種方法是比較直觀的方法,具體的檢測方式通常有三種:一是單樁地基單元測試;二是多樁地基單元測試;三是單樁和樁間土組合單元測試。
(1)單樁地基單元測試
對單樁的單元化測試,具體的操作方法是以一個砂石樁為測試對象,測試處理的單位面積的承載能力。以此反應施工情況。例如,按三角形布樁,一個樁徑為500mm的砂石樁,設計樁距是1.2m,置換率m=0.157,一個樁體所代表的地基平面單元面積為1.25m2。砂石樁的作用方式是一種作用力以柱心向四周發散性遞減的形式。所以周圍的土體密度也是由里向外、由強到弱的規律,因此在單元測試中選用圓形的承載壓板,承壓板的直徑以單樁所代表的單位面積換算出來的。通過換算,上例的等效圓直徑de=1.26m。
單樁測試的優點是:測試對砂石樁所增加的載荷總量小,測試的費用較低。同時也有一定的缺陷:所加載的載荷作用深度有限,一般達到的深度是承壓板的邊長或者直徑的2-3倍。所以在實際當中這種方法適用的地基深度一般不超過5米的情況,或者上軟下硬的地基類型。
(2)多樁地基單元測試
多樁基礎單元測試,就是對多個樁基進行承載測試,具體的就是把多個樁柱連在一起作為一個檢測單元。采用的承壓板一般是圓形、矩形。承壓板的具體尺寸應當根據多樁單元面積進行換算。選擇多少樁數為一個單元,主要從一下兩個方面來看:第一,處理地基的深度。第二,進行砂石樁施工后地基的變形情況。一般,地基的下部沒有軟土層的時候,盡量減少測量單位內砂石樁的數量。具體的方法就是在一定程度上減少了砂石樁所承載的單元測試的面積,進一步減輕了荷載體的承壓重量,最終達到了降低檢測實際成本的目的,
(3)單樁和樁間土組合單元測試
這是一種組合測試的方法,也就是將砂石樁的分布形式、樁徑、樁間距和置換率綜合在一起,以一個樁體為代表,按照它的基本平面面積為計算單元,通過換算得出復合地基承載特征值,這種形式計算過程比較復雜。實踐中,組合測試的承壓板面積較小較小,得出的地基處理深度也不大,一般情況下都用最小值來判定地基承載應力值。
2 對分層測試的探討
(1)標準貫入試驗方法測試
標準貫人實驗法:分層測試砂石樁對砂土和粉土的擠密效果較好,相對的測試砂石樁對粘性土的擠密效果較差。對埋深不同的同一種土層的擠密效果也不盡相同。應用標準貫人實驗方法測試砂石樁對地基的處理效果,首先一定要按照地基土層的分布情況來測試數據,按照不同深度、土層來進行檢測。
(2)重型動力觸探的分層測試
這種方法測試砂石樁體的密實度和承載力,也要按照地基土層的分布情況進行具體的測試和有效數據的統計。從而給出不同土層、不同埋深的檢測結果,然后將結合和標準貫入實驗的分層數據進行統計比照,按照土層得出復合地基承載力的最終檢測結果。
二、評價方法的探討
由于地基處理的目的不同,檢測評價的側重點也應有所不同。
1 對提高承載力的評價
對砂石樁承載力較高的工程中,評價要在全面了解砂石樁處理地基的范圍和深度,土層的性質和樁的分布情況。在此基礎上分析和研究得出地基處理所要達到的承載力指標和變形指標。同時,還要依據載荷試驗的可靠性,再結合標準貫入、動態探試,對整個處理地基面積給予全面正確的承載評價。
2 對消除液化的評價
砂石樁應用的一個主要目的是消除液化,所以對地基的液化評價也是重要的一個指標。首先。需要了解施工場地的液化土分布和等級,按照要求進行設計。因為完全消除液化和部分消除液化對于砂石樁的施工要求是不同的。其次,要了解需要處理地基的深度和抗震需求等。最后,還要在測試階段利用合理的地基測試方法測定地基液化的最終結果。
三、測試評價的實踐經驗
1 合理地制定檢測方案
首先要評價一項工程的質量如何就要選用合理的測定方法,來測量質量是否達標。在砂石樁施工中評定承載力的高低是重要的質量標準,在以承載力為主要指標的工程中,一般依靠載荷測試來作為基礎測定,并輔以動探法為測定方案。而在檢測消除液化為主的工程中應當以標準貫入法測定消除效果,并輔以樁體重型動力觸探和載荷試驗,通過綜合試驗數據來給出最終的結論。不過不論采用什么方案,都要注意合理和經濟兩個要求。
2 恰當地選擇原位測試方法
在地基施工變形要求不高的工程中,盡量采用單樁復合地基載荷測試。在采用載荷和動探對比法或者經驗法測試中應當盡可能的多采用原位測試來增加檢測樣本,減少成本。
3 通過分析給出綜合指
在對砂石樁處理地基測定的時候要給出復合的承載力和變形量、樁體承載力值、樁體密實度、樁間土承載力等基本數據,還要對這些指標進行分析,得出所要達到的承載力指標和變形指標以供后續施工參考。
四、結語
在地基處理的施工過程中務必要控制拔管的高度及其繼振的時間,并嚴格按設計要求進行施工,確保砂石樁質量;同時,砂石樁在施工過程中應對周邊環境和建筑物進行監測,若發現不良影響,應立即采取相應的補救措施;可根據施工場地的工程地質條件適當增大砂石樁的使用比例,這樣既保證了工程質量,進一步縮短了工期,又能取得較好的經濟效益和社會效益。
參考文獻:
[1]高小旺,建筑結構工程檢測鑒定手冊[M],北京:中國建筑工業出版社,2008
篇12
基于Java EE架構的多層軟件中,WEB服務器充當表示層,由STRUS2.0模式的STRUTS架構來實現,應用服務器主要用來架構業務層,實現事務處理和數據處理,數據庫服務器主要實現存儲過程。其架構如圖1所示。
基于以上模型架構的分工,可分成一下幾個步驟:
1)基于WEB服務的測試、應用服務的測試、數據服務的測試,相當與傳統軟件測試的單元測試。
2)WEB服務與應用服務、數據服務的交互測試,相當于傳統軟件測試中的集成測試。
3)三層服務器協同工作時的性能測試,更多的是進行穩定性測試。
1 在各層上的單元測試
根據在圖1的分層,系統的單元測試分成三個單元:WEB服務單元、應用服務單元和數據庫服務單元,其中web服務單元集成了客戶端。
集成了客戶端的WEB服務單元測試主要從一下幾個方面來進行:
1)頁面設計測試
一個WEB系統的頁面應該從實用性和界面的簡潔性兩方面進行測試。實用性主要從功能方面出發,每一個頁面都應該負責完成相應的任務,功能的承載量不能太多也不能沒有;簡潔性主要從界面的設計安排來進行測試,頁面的版式應該符合WEB系統的性質,色彩搭配突出該系統的主題,數據項應該滿足數據收集的需要,同時應該讓各類用戶很容易的使用該系統。
2)連接測試與功能測試
由于各個頁面的連接與頁面的功能是相關聯的,相互連接的兩個頁面之間一定有功能的聯系和交互。根據頁面之間的這種關系,在測試的過程中可采用廣度優先遍歷和深度優先遍歷兩種方式,深度優先遍歷保證功能的連續性,廣度優先遍歷保證功能的完整性。由于Struts 2應用中起作用的業務控制器而是系統生成的Action,所以功能測試的主要方法根據攔截器的原理進行測試,也容易實現。
3)語言設置測試
由于在Java EE開發過程中,中文亂碼問題比較麻煩,在不同的系統中可能更為突出,所以在測試的時候從各個頁面的編碼方式入手。Struts2.0采用國際化配置,在不同的系統中采用相同的國際化配置。開發國際化的應用程序時,有一個功能是必不可少的――讓用戶快捷地選擇或切換語言。在測試的時候站在不同語言用戶的角度進行測試。
應用服務的單元測試主要是對模型層和spring所負責的事務以及hibernate所負責的ORM進行測試,也就是對class類、接口和ORM的操作測試。對于類的測試除了測試基類以外,繼承和多態是測試的重點,其中的關系比較復雜。可以借助JUint工具進行測試。。
數據庫服務器的單元測試主要是調用存儲過程,測試這些存儲是否能夠滿足功能需求,測試的重點是存儲異常的排除,包括字符亂碼問題。
2 集成測試
集成測試是將各個服務器的各個模塊組裝成一個完整的系統或子系統進行測試,測試的重點是服務器之間的接口和服務器內部各模塊之間的接口部分。
在各個服務器通過單元測試的基礎上,需要將三大服務器按照設計要求組裝成系統,在此集成過程中最可能發生的錯誤有:
1)各個模塊、服務器之間的數據傳輸會產生丟失;
2)各個模塊、服務器之間的功能可能產生互相影響;
3)從頁面傳送到數據庫的數據可能產生亂碼;
4)單個模塊的錯誤經過積累以后可能會被放大。
基于以上錯誤的考慮,服務器(三大沒有承載功能的服務器)采用一次性集成,因為這事后續所有功能集成的基礎,通過一個或幾個簡單的貫穿所有路線的實例的運行來最大可能的排除服務器的集成錯誤。對于功能的集成采用增量式集成,從頁面的某一個功能為出發點,經過WEB服務器、應用服務器和數據庫服務器驗證是否得到正確的結果,然后逐一功能的進行測試,直至所有的功能。
特此說明的是,在服務器的一次集成過程中是有先后順序的,應該是應用服務器和數據服務器集成,然后在和WEB服務器集成的由里到外的順序,這樣一方面保證了應用服務器操作數據庫的底層要求,同時也向WEB服務器隱藏了底層的有關數據的操作,突出了應用服務器的“看管”功能。
各個服務器上的集成測試和整個系統的集成測試隨功能的要求漸增進行,也就是所謂的增量模型。應用服務器上的集成涉及到Spring的事務管理和hibernate的ORM實現,模型層可通過HttpUnit和JUnit結合測試,邏輯層Spring采用MockObjet t測試框架來完成測試,SSH框架可spring一mock測試框架進行集成測試。
3 性能測試
性能測試是驗證軟件系統是否能夠達到用戶提出的性能指標,同時發現軟件系統中存在的性能瓶頸,優化軟件,最后起到優化系統的目的。
軟件的性能性能主要有時間性能和空間性能兩種。時間性能主要指軟件的一個具體事務的響應時間,空間性能主要指軟件運行是所消耗的系統資源。在軟件的性能測試中可分為一般性能測試、穩定性測試、負載測試和壓力測試。
一般性能測試是指單個用戶登錄以后,系統主要食物的響應時間和服務器的資源消耗情況。
穩定性測試是指連續運行被測系統,檢查系統運行是的穩定程度。穩定性測試方法比較簡單,采用7*24(7天*24小時)的方式讓系統不間斷的運行。
負載測試是讓系統在壓力忍受極限范圍之內連續運行來測試系統的穩定性。它主要測試系統在臨界狀態下運行是否穩定的一種方法。
壓力測試是指持續不斷的給系統增加壓力直到系統崩潰為止,用來測試系統能夠承受的最大壓力。主要方法是不斷的增加用戶數量,20、30、40、……,直到系統崩潰。
根據以上的測試分類原理,可采用LoadRunner性能測試軟件來進行測試,這種軟件可以預測系統行為和性能,通過模擬成千上萬用戶實施并發負載及實時性能檢測的方式來確認和查找問題,可最大限度地縮短測試時間,優化性能和加速應用系統的周期。
4 結束語
總上所述,基于Java EE架構的多層軟件的測試采用傳統的原理和面向對象的方法和工具進行測試。在測試的過程中手工測試和工具測試應該結合使用,而且工具測試只能是測試的一個補充,不能過多的依賴于測試工具。
參考文獻:
[1] 梅勃.基于J2EE架構的Web應用系統測試方法研究與應用[D].合肥:合肥工業大學,2007.
篇13
單元測試是針對學生在一個單元的知識進行了系統的學習后,進行的一次階段性的檢測。它具有知識范圍小,知識內容少的特點。所以說如何從語言學的角度在有限的范圍內對學生理解和掌握英語語言的程度進行有效地檢測,這是一個技術性的問題。更者,英語單元測試必須在學生已有英語學習的基礎上,對“學生鞏固、擴大基礎知識,發展聽、說、讀、寫的基本技能,培養綜合語言運用的能力”的教學目標起到導向作用。同時,現行英語教材的內容的設計注重了話題、功能、結構、技能和知識相結合的體系,這也必須在單元測試中有所體現。因此,英語單元測試的選題策略是在緊緊地圍繞各個單元教學目標和遵從英語語言習得規律的前提下,注重學生對所學知識的復習鞏固,重視學生如何運用所學的知識。
一、選題要有代表性
在英語教材中,各個單元的知識點是為數不少的,包括語言知識(如詞匯、語法、句型等)和文化知識,也包括已知的知識和未知的知識。雖然教材有計劃地、相對集中地介紹了相關的語言和文化知識,但是為了檢測學生在學習相關的知識后,能否投諸于運用,這就要求命題者在有限的測試題目中容納盡可能多的信息。因此,命題者可以提出若干個預選命題方案,然后借助預測測試的結果,對不同的方案進行橫向或者縱向的比較,再選出具有重點與非重點、能力與非能力、重點與能力等有代表性的題目。通常情況下,代表性的題目包含重點題、典型題以及綜合運用題等,它們可以體現在不同的題型中。但是,命題者不能將語言信息或語言信息的測試的代表性建立在超量(如題目長、生詞多)觀念上。代表性的題目只有在“抓綱務本”的精神指導下,才能作出以點帶面,觸類旁通的效果,才能體現出語言測試的特點。
二、選題要有針對性
在英語教材中,單元教學內容的安排也體現了“秩序漸進、循環反復”的帶有針對性的特點。事實上,對以英語作為第二語言的中學生而言,由于學習策略的效度的差異性,學生往往會對一些知識存在理解上或應用上的缺陷或疑惑,所以命題者的選題要能夠讓學生在一定程度上能借助于測試的手段觀察、發現、探索和研究其自身語言學習上的差異。比如說,當今的中學英語語言測試體系不能體現出學生“說”的能力,所以命題者在選題的過程中,要切合于語用學的實際,參照“任務型”教學活動目標,有意識、有策略地通過單元測試的題型的轉變,將“說”的能力測試融于“聽”的測試中。這樣的單元測試的命題導向就是針對學生之缺,了解學生之愁。還有,命題者要結合教學實際中的學生在平時作業中的“常見病”和“多發病”,選編一些“對癥下藥”的治病題,這也是具有針對性意義的。比如:feel like與would like的用法的差異性就可以成為測試的內容。
三、選題要有靈活性
在英語單元測試中的靈活性是指在一例的題目中容納了多個知識點或能力點的考察,并訓練了學生運用“一題多思”的思維方式。由于當今的英語教學模式側重于“任務型”和“交際型”的活動,這就要求學生具備能在不同層次、不同形式的情景中,綜合應用語言知識完成語言任務的能力;這也就要求測試題目能體現出不同知識點之間縱橫聯系,能檢測學生的綜合分析問題和解決問題的能力。也就是說測試題靈活性要起到影響試題區分指數的作用,這也就有利于指導教師將來的授課行為,有利于培養學生的解題思維。比如說,完形填空的空白就顯示了對兩種語言模式(一者是作者表達自己的思想的語言模式,另一者是讀者根據自己的理解作出的猜測性語言模式)和一種測試意圖(命題者的測試目的),避免了就題論題的俗套。當然,命題的靈活性的特征要體現在與教材關聯性上,并不是指“難”、“偏”、“怪”。
四、選題要有科學性
一份高質量的英語單元測試試卷并不是題目的堆砌,而是建立在科學性和合理性的基礎上的語言信息(包括知識和能力)的檢測。它必須達到鞏固知識和培養能力甚至引導未來教學活動的目的。一個單元的知識體系,在語言知識上要學生追求多方位,在學習能力上對學生講究多層次。所以在英語單元測試中,以此為基礎的單元測試的選題也要體現出以系統性和整體性為內涵的科學性。命題者只有在熟悉教學大綱和課程標準的雙重前提下,才可能使試卷將單元測試的內容有效地包容并形成一定的可行性和可信性的效能,才能促進學生通過英語測試對英語學習的內容進行控制管理,從而有效地學習。同時,科學性也必須體現在量和數的合理分配上。