1. 程式人生 > >提高你的Java程式碼質量吧:危險的邊界

提高你的Java程式碼質量吧:危險的邊界

一、分析

在單元測試中,有一項測試叫做邊界測試(也有叫做臨界測試),它能避免出現:數字越界使檢驗條件失效

如果一個方法接受的是Int型別的引數,那一些三個值是必須的:0、正最大、負最大、其中正最大和負最大是邊界值,如果這三個值都沒有問題,方法才是比較安全可靠的。

二、場景

某生產的電子產品非常暢銷,需要提前30天預訂才能搶到手,同時它還規定了一個會員可擁有的最多產品數量,方式囤積壓貨肆意加價。

程式碼如果如下

public class Clinet{ 
    //一個會員擁有的最多數量 
    pubilc final static int LIMIT = 2000; 
    public static void main(String[] args){ 
        //會員當前擁有的產品數量 
        int cur = 1000; 
        Scanner input = new Scanner(System.in); 
        System.out.println("請輸入需要預訂的數量:"); 
        while(input.hasNextInt()){ 
            int order = input.nextInt(); 
            //當前擁有的與準備訂購的產品的數量之和 
            if(order > 0 && order + cur <= LIMIT){ 
                System.out.println("你已經成功預訂的" + order + "個產品"); 
            }else{ 
                System.out.println("超限額,預訂失敗!"); 
            } 
        } 
    } 
} 

業務邏輯非常簡單,但是經過自動化測試兩小時後,出現了異常的結果

請輸入要需要預訂的數量:2147483647

你已經成功預訂的2147483647個產品!

看著2147483647這個數字很眼熟,它是int型別的最大值。當如數order是2147483647時,order+cur就超越了int的範圍,結果是-2147482649,orfer+cur<2000與order>0的條件就成立了。故由於:數字越界使檢驗條件失效。

三、建議

在測試過程中,必須要注意臨界測試的重要性。避免越界導致的問題,保證程式的的安全可靠

新技術,新未來!歡迎大家關注“1024工場”微信服務號,時刻關注我們的最新的技術訊息!
(甭客氣!盡情的掃描或者長按!)