范圍檢查經常被用于確保某個數字處在一個特定的范圍之內。通常在訪問數組的時候會進行該檢查,因為當數組下標越界的時候,數據會被寫入其它變量的空間,甚至會覆蓋壓棧的寄存器數值。這樣一來,程序可能會崩潰,或者是導致一些安全漏洞的產生。在Java中,Java虛擬機將在嘗試訪問數組中的元素的時候,自動的進行數組邊界檢查,并且在下標越界的時候引發異常。
范圍檢查的另一個常見用途是在兩種數據類型相互轉換的時候。在構建在.NET Framework上的語言中,超出范圍的強制轉換將引發Invalid Cast Exception類型的異常。
比如將一個32位有符號整數類型的變量強制轉換到一個16位有符號整數類型的變量之前,會檢查這個變量的值是否在-32768~ 32767之間(16位有符號整數可以表示的整數范圍),而不是諸如32768之類的無法表示的數字。2100433B
數組邊界檢查可防止緩沖區溢出的產生。為了實現數組邊界檢查,應當檢查所有對數組的讀寫操作以確保正確的范圍內對數組的操作。數組下標檢查是指在程序中,所有數組下標的表達式的結果在真正被用來訪問某一個特定的元素之前,先把它的值和定義數組時給出的數組上界和下界進行比較。如果一個下標超出了預期的范圍時,那么就引發一個錯誤來阻止進一步的訪問。比如在訪問一個下標范圍是0~9的數組前檢查下標是否也在0~9內,而不是如25之類的越過數組結尾的下標。除了軟件實現的下標檢查之外,VAX架構的計算機擁有一條INDEX匯編指令,可以用來檢查數組的下標是否越界,可以至多提供6個任意VAX編址的地址。B6500和一些相似的伯勒斯計算機則以硬件進行邊界檢查,無論是采用什么語言撰寫的程序。
冗余數組邊界檢查消除是指在程序中刪除被證明是合法的數組訪問所對應的邊界檢查。當數組索引能夠保證在到一之間,則該數組訪問對應的數組邊界檢查被視為完全冗余,可從程序中刪除。如果數組邊界檢查位在循環體中,循環邊界和數組長度都是循環不變量,并且數組索引變量是循環歸納變量,那么可以通過把邊界檢查移出循環體來減少數組邊界檢查的執行次數。這種冗余被稱為部分冗余。
數組邊界檢查導致程序運行時性能的減慢主要有兩個原因一是執行這些邊界檢查操作需要時間開銷。邊界檢查需要得到數組的長度信息,這需要一個訪存操作,而判斷當前的訪問索引是否合法,又需要一個比較操作。如果邊界檢查處在一些頻繁訪問的循環中,那么這些操作的開銷將是非常可觀。二是數組邊界檢查可能會阻止其他的優化機會,比如代碼移動。和嵌套循環優化等 。
在常見的編程語言中,強制進行邊界檢查的有C#、Ada、Haskell、Java、JavaScript、Lisp、PHP、Python、Ruby和Visual Basic。其中C#同時支持“unsafe塊”(不安全代碼塊),即一段暫時關閉邊界檢查、啟用指針以提高效率的代碼塊。這個功能常被用于加速一小段不可能出現越界問題的代碼的執行速度,而不至于破壞整個程序的安全性。除了這些語言,D語言和OCaml也支持自動邊界檢查,但是允許用戶通過編譯器的一個開關選項來選擇是否啟用該功能。差一錯誤,又稱“柵欄錯誤”:一個柵欄被一些柱子分區成10段,柱子的根數應該是11根,而不是10根。然而,有一些編程語言(比如C語言)為了提高速度,從來都不會自動進行邊界檢查,這經常導致差一錯誤(見圖1)和緩沖區溢出的發生。許多程序員認為這些語言為了速度所付出的代價太大了。在1980年圖靈獎講座上,東尼·霍爾講述了他設計包含邊界檢查的ALGOL 60語言時的經歷:該方法的原理主要是在程序運行時,每個含有下標的變量中的下標在每次被使用的時候總是會與變量下標的上界和下界都進行比較。許多年后,我詢問我們的一些客戶是否需要提供一個“在編譯發行版時關閉該功能以保證速度”的選項時,他們都毫不猶豫的勸我們一定不要加入這個功能。因為他們知道下標越界是多常見的事情,并且在實際應用中,偶爾一次沒檢測到的下標越界所帶來的結果便會是災難性的。我注意到即便在1980年,語言的設計者和用戶仍沒有意識到這一點,這令我十分擔心。若是在工程領域的任何一個重要的分支中,沒能注意到這些低級錯誤都是有違常理的。
基礎邊界在哪啊,白色虛線框是笩板基礎邊界還是墊層邊界呢?——:白色虛線是筏板基礎外邊線的吧您看看您的基礎大樣圖
答:路面寬度不包路緣石含路平石,人行道寬度含路緣石和路側石。
你說的是理正的滲流分析模塊吧,我在幾個小型水庫上用過,據我的經驗一般只要“面邊界條件”輸入正確,那么“點邊界條件”可不用輸入,結果沒有影響。如果要非要輸入“點邊界條件”,則可以輸入下游水位與坡面交點,...
格式:pdf
大小:54KB
頁數: 9頁
評分: 4.4
總包工程施工范圍 3 【附件四】 總包工程施工范圍 1、土建專業施工范圍: ........................................................ 4 1.1 土建專業施工范圍: .................................................... 4 1.2 土建總包與各分包項目的工作內容邊界劃分 ................................ 5 1.2.1 與基坑邊坡支護及土方的邊界劃分 .................................. 5 1.2.2 與人工挖孔樁及墩邊界劃分 ........................................ 6 1.2.3 與玻璃幕墻、采光蓬的劃分 ...........................
格式:pdf
大小:54KB
頁數: 9頁
評分: 4.4
總包工程施工范圍 3 【附件四】 總包工程施工范圍 1、土建專業施工范圍: ........................................................ 4 1.1 土建專業施工范圍: .................................................... 4 1.2 土建總包與各分包項目的工作內容邊界劃分 ................................ 5 1.2.1 與基坑邊坡支護及土方的邊界劃分 .................................. 5 1.2.2 與人工挖孔樁及墩邊界劃分 ........................................ 6 1.2.3 與玻璃幕墻、采光蓬的劃分 ...........................
ZnO壓敏電阻的晶粒涂料邊界從結晶的Bi-O變化到無定形相,最終變化為ZnO-ZnO晶粒沒有任何第二相。這種變化看來決定于晶粒邊界的總厚度。
結晶相和無定形相存在于Bi-O相寬度15~50nm處的點所以,采用高分辨率的HREM沿ZnO晶粒邊界從三角結點到無第二相的點處追蹤觀測了Bi—相的形態。Bi偏析區范圍還采用具有能量彌散X衍射光譜的場致發射型TEM進行了精確分析。
邊界值測試 【Boundary value testing】
因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。使用邊界值分析方法設計測試用例,首先應確定邊界情況。通常輸入等價類與輸出等價類的邊界,就是應著重測試的邊界情況。應當選取正好等于,剛剛大于,或剛剛小于邊界的值做為測試數據,而不是選取等價類中的典型值或任意值做為測試數據。
1.定義:邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價類劃分法的補充,這種情況下,其測試用例來自等價類的邊界。
2.與等價劃分的區別
1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。
2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產生的測試情況。
3.邊界值分析方法的考慮:
長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸出范圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。
使用邊界值分析方法設計測試用例,首先應確定邊界情況。通常輸入和輸出等價類的邊界,就是應著重測試的邊界情況。應當選取正好等于,剛剛大于或剛剛小于邊界的值作為測試數據,而不是選取等價類中的典型值或任意值作為測試數據。
4.常見的邊界值
1)對16-bit 的整數而言 32767 和 -32768 是邊界
2)屏幕上光標在最左上、最右下位置
3)報表的第一行和最后一行
4)數組元素的第一個和最后一個
5)循環的第 0 次、第 1 次和倒數第 2 次、最后一次
5.邊界值分析
1)邊界值分析使用與等價類劃分法相同的劃分,只是邊界值分析假定錯誤更多地存在于劃分的邊界上,因此在等價類的邊界上以及兩側的情況設計測試用例。
例:測試計算平方根的函數
--輸入:實數
--輸出:實數
--規格說明:當輸入一個0或比0大的數的時候,返回其正平方根;當輸入一個小于0的數時,顯示錯誤信息"平方根非法-輸入值小于0"并返回0;庫函數Print-Line可以用來輸出錯誤信息。
2)等價類劃分:
I.可以考慮作出如下劃分:
a、輸入 (i)<0 和 (ii)>=0
b、輸出 (a)>=0 和 (b) Error
II.測試用例有兩個:
a、輸入4,輸出2。對應于 (ii) 和 (a) 。
b、輸入-10,輸出0和錯誤提示。對應于 (i) 和 (b) 。
3)邊界值分析:
劃分(ii)的邊界為0和最大正實數;劃分(i)的邊界為最小負實數和0。由此得到以下測試用例:
a、輸入 {最小負實數}
b、輸入 {絕對值很小的負數}
c、輸入 0
d、輸入 {絕對值很小的正數}
e、輸入 {最大正實數}
4)通常情況下,軟件測試所包含的邊界檢驗有幾種類型:數字、字符、位置、重量、大小、速度、方位、尺寸、空間等。
5)相應地,以上類型的邊界值應該在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最長、 空/滿等情況下。
6)利用邊界值作為測試數據
7)內部邊界值分析:
在多數情況下,邊界值條件是基于應用程序的功能設計而需要考慮的因素,可以從軟件的規格說明或常識中得到,也是最終用戶可以很容易發現問題的。然而,在測試用例設計過程中,某些邊界值條件是不需要呈現給用戶的,或者說用戶是很難注意到的,但同時確實屬于檢驗范疇內的邊界條件,稱為內部邊界值條件或子邊界值條件。
內部邊界值條件主要有下面幾種:
a)數值的邊界值檢驗:計算機是基于二進制進行工作的,因此,軟件的任何數值運算都有一定的范圍限制。
b)字符的邊界值檢驗:在計算機軟件中,字符也是很重要的表示元素,其中ASCII和Unicode是常見的編碼方式。下表中列出了一些常用字符對應的ASCII碼值。
c)其它邊界值檢驗
6.基于邊界值分析方法選擇測試用例的原則
1)如果輸入條件規定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數據。
例如,如果程序的規格說明中規定:"重量在10公斤至50公斤范圍內的郵件,其郵費計算公式為……"。作為測試用例,我們應取10及50,還應取10.01,49.99,9.99及50.01等。
2)如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試數據。
比如,一個輸入文件應包括1~255個記錄,則測試用例可取1和255,還應取0及256等。
3)將規則1)和2)應用于輸出條件,即設計測試用例使輸出值達到邊界值及其左右的值。
例如,某程序的規格說明要求計算出"每月保險金扣除額為0至1165.25元",其測試用例可取0.00及1165.24、還可取一0.01及1165.26等。
再如一程序屬于情報檢索系統,要求每次"最少顯示1條、最多顯示4條情報摘要",這時我們應考慮的測試用例包括1和4,還應包括0和5等。
4)如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例。
5)如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例。
6)分析規格說明,找出其它可能的邊界條件。
二.實戰演習
1.現有一個學生標準化考試批閱試卷,產生成績報告的程序。其規格說明如下:程序的輸入文件由一些有80個字符的記錄組成,如右圖所示,所有記錄分為3組:
①標題:這一組只有一個記錄,其內容為輸出成績報告的名字。
②試卷各題標準答案記錄:每個記錄均在第80個字符處標以數字"2"。該組的第一個記錄的第1至第3個字符為題目編號(取值為1一999)。第10至第59個字符給出第1至第50題的答案(每個合法字符表示一個答案)。該組的第2,第3……個記錄相應為第51至第100,第101至第150,…題的答案。
③每個學生的答卷描述:該組中每個記錄的第80個字符均為數字"3"。每個學生的答卷在若干個記錄中給出。如甲的首記錄第1至第9字符給出學生姓名及學號,第10至第59字符列出的是甲所做的第1至第50題的答案。若試題數超過50,則第2,第3……紀錄分別給出他的第51至第100,第101至第150……題的解答。然后是學生乙的答卷記錄。
④學生人數不超過200,試題數不超過999。
⑤程序的輸出有4個報告:
a)按學號排列的成績單,列出每個學生的成績、名次。
b)按學生成績排序的成績單。
c)平均分數及標準偏差的報告。
d)試題分析報告。按試題號排序,列出各題學生答對的百分比。
解答:分別考慮輸入條件和輸出條件,以及邊界條件。給出下表所示的輸入條件及相應的測試用例。
輸出條件及相應的測試用例表。
2.三角形問題的邊界值分析測試用例
在三角形問題描述中,除了要求邊長是整數外,沒有給出其它的限制條件。在此,我們將三角形每邊邊長的取范圍值設值為[1, 100] 。
3.NextDate函數的邊界值分析測試用例
在NextDate函數中,隱含規定了變量mouth和變量day的取值范圍為1≤mouth≤12和1≤day≤31,并設定變量year的取值范圍為1912≤year≤2050 。2100433B
利用溫度邊界層的概念常可使對流換熱溫度場和對流換熱系數的分析求解大為簡化。
流動邊界層和熱邊界層的狀況決定了邊界層內的溫度分布和熱量傳遞過程。
對于層流,溫度呈多項式曲線弄分布,對于紊流則呈冪函數型分布(除液態金屬外),紊流區邊界層貼壁處的層流底層內溫度梯度將明顯大于層流區。
在概述圖中,標繪了局部表面傳熱系數hx沿平板的變化情況,從平板前緣開始,隨著層流邊界層增厚,hx將較快的降低。當層流向紊流轉變后,因紊流傳遞作用增大,hx將明顯高于層流轉變前,隨后,由于紊流邊界層厚度增加,hx再呈緩慢下降之勢。將局部表面傳熱系數沿全板長積分,可得全板平均表面傳熱系數h。 2100433B