流河建偉
不管是在少兒編程軟件,還是在傳統編程語言的判斷語句中,邊界的判斷都是特別容易出錯的地方。
什么是邊界呢?邊界就是程序判斷的臨界點。比如:百分制中輸入得分判斷是否及格,大于60分就及格,否則不及格。
程序如圖1:

因為60分是確定是否及格的標準,所以這里的60就是程序判斷的臨界點——邊界。如果不認真,寫成圖2的代碼,當我們輸入60時,程序就會說不及格,判斷就會出現錯誤(圖2)。

程序判斷的錯誤往往發生在輸入或輸出范圍的邊界上,而不是出現在輸入范圍的內部。如何防止這種問題發生呢?除了要求在編程時仔細認真,還須應用科學的測試方法,這種方法就叫作邊界值分析法。
邊界值分析法就是對輸入或輸出的邊界值進行測試的一種測試方法。首先確定邊界,然后選取“正好等于”“剛剛大于”“剛剛小于”邊界的值作為測試數據。這就需要用邊界值分析法。如上面的例子,在Scratch編程的詢問框中分別依次輸入60(正好等于)、61(剛剛大于)、59(剛剛小于)三個值進行測試。
1. 輸入60和61的時候程序顯示“及格”。
2. 輸入59的時候顯示“不及格”。
3. 再隨機地輸入幾個分數,比如:輸入23,顯示“不及格”。輸入98顯示“及格”。輸入66,顯示“及格”。
4. 輸入102,顯示“及格”。輸入-1,顯示“不及格”。我們是不是又發現了新的問題?百分制是沒有102分的,得分也不會有負數。所以,邏輯中的相關數值就是邊界,邏輯的上限(100)和下限(0)也是邊界。
通過這個例子,我們確定了三個邊界,即60、0、100。需要重新編寫代碼并測試(圖3)。

現在我們找到0、60、100三個邊界。對應“正好等于”“剛剛大于”“剛剛小于”的值,對應0的測試數據應為-1、0、1,對應60的測試數據應為59、60、61,對應100的測試數據為99、100、101。
下面就具體用邊界值分析法進行測試。
1. 輸入-1,程序返回“分數不能小于0”,輸入0,返回“不及格”,輸入1返回“不及格”。
2. 輸入59,返回“不及格”,輸入“60”,返回“及格”,輸入61,返回“及格”。
3. 輸入99,返回“及格”,輸入100,返回“及格”,輸入101,顯示“分數不能大于100”。
4. 再隨機找幾個分數進行測試。輸入-120,顯示“分數不能小于0”。輸入56,顯示“不及格”。輸入83,顯示“及格”。輸入180,顯示“分數不能大于100”。現在,輸入內容之后,輸出內容和我們預想的一樣,證明我們的程序對輸入分數的判斷是正確的。
寫完作業后,經過檢查,并改正錯誤,才能交給老師。考試做完試題,經過檢查,改正錯題,才能保證得到更高的分數。編寫完程序后的檢查,就是軟件測試。軟件測試能最大限度地減少程序的Bug。不管是傳統的軟件開發,還是少兒編程,軟件測試都是軟件開發中不可缺少的環節。
歡迎關注他的微信公眾號:Scratch入門到精通