流河建偉
不管是在少兒編程軟件,還是在傳統(tǒng)編程語(yǔ)言的判斷語(yǔ)句中,邊界的判斷都是特別容易出錯(cuò)的地方。
什么是邊界呢?邊界就是程序判斷的臨界點(diǎn)。比如:百分制中輸入得分判斷是否及格,大于60分就及格,否則不及格。
程序如圖1:
因?yàn)?0分是確定是否及格的標(biāo)準(zhǔn),所以這里的60就是程序判斷的臨界點(diǎn)——邊界。如果不認(rèn)真,寫成圖2的代碼,當(dāng)我們輸入60時(shí),程序就會(huì)說(shuō)不及格,判斷就會(huì)出現(xiàn)錯(cuò)誤(圖2)。
程序判斷的錯(cuò)誤往往發(fā)生在輸入或輸出范圍的邊界上,而不是出現(xiàn)在輸入范圍的內(nèi)部。如何防止這種問(wèn)題發(fā)生呢?除了要求在編程時(shí)仔細(xì)認(rèn)真,還須應(yīng)用科學(xué)的測(cè)試方法,這種方法就叫作邊界值分析法。
邊界值分析法就是對(duì)輸入或輸出的邊界值進(jìn)行測(cè)試的一種測(cè)試方法。首先確定邊界,然后選取“正好等于”“剛剛大于”“剛剛小于”邊界的值作為測(cè)試數(shù)據(jù)。這就需要用邊界值分析法。如上面的例子,在Scratch編程的詢問(wèn)框中分別依次輸入60(正好等于)、61(剛剛大于)、59(剛剛小于)三個(gè)值進(jìn)行測(cè)試。
1. 輸入60和61的時(shí)候程序顯示“及格”。
2. 輸入59的時(shí)候顯示“不及格”。
3. 再隨機(jī)地輸入幾個(gè)分?jǐn)?shù),比如:輸入23,顯示“不及格”。輸入98顯示“及格”。輸入66,顯示“及格”。
4. 輸入102,顯示“及格”。輸入-1,顯示“不及格”。我們是不是又發(fā)現(xiàn)了新的問(wèn)題?百分制是沒(méi)有102分的,得分也不會(huì)有負(fù)數(shù)。所以,邏輯中的相關(guān)數(shù)值就是邊界,邏輯的上限(100)和下限(0)也是邊界。
通過(guò)這個(gè)例子,我們確定了三個(gè)邊界,即60、0、100。需要重新編寫代碼并測(cè)試(圖3)。
現(xiàn)在我們找到0、60、100三個(gè)邊界。對(duì)應(yīng)“正好等于”“剛剛大于”“剛剛小于”的值,對(duì)應(yīng)0的測(cè)試數(shù)據(jù)應(yīng)為-1、0、1,對(duì)應(yīng)60的測(cè)試數(shù)據(jù)應(yīng)為59、60、61,對(duì)應(yīng)100的測(cè)試數(shù)據(jù)為99、100、101。
下面就具體用邊界值分析法進(jìn)行測(cè)試。
1. 輸入-1,程序返回“分?jǐn)?shù)不能小于0”,輸入0,返回“不及格”,輸入1返回“不及格”。
2. 輸入59,返回“不及格”,輸入“60”,返回“及格”,輸入61,返回“及格”。
3. 輸入99,返回“及格”,輸入100,返回“及格”,輸入101,顯示“分?jǐn)?shù)不能大于100”。
4. 再隨機(jī)找?guī)讉€(gè)分?jǐn)?shù)進(jìn)行測(cè)試。輸入-120,顯示“分?jǐn)?shù)不能小于0”。輸入56,顯示“不及格”。輸入83,顯示“及格”。輸入180,顯示“分?jǐn)?shù)不能大于100”?,F(xiàn)在,輸入內(nèi)容之后,輸出內(nèi)容和我們預(yù)想的一樣,證明我們的程序?qū)斎敕謹(jǐn)?shù)的判斷是正確的。
寫完作業(yè)后,經(jīng)過(guò)檢查,并改正錯(cuò)誤,才能交給老師??荚囎鐾暝囶},經(jīng)過(guò)檢查,改正錯(cuò)題,才能保證得到更高的分?jǐn)?shù)。編寫完程序后的檢查,就是軟件測(cè)試。軟件測(cè)試能最大限度地減少程序的Bug。不管是傳統(tǒng)的軟件開(kāi)發(fā),還是少兒編程,軟件測(cè)試都是軟件開(kāi)發(fā)中不可缺少的環(huán)節(jié)。
歡迎關(guān)注他的微信公眾號(hào):Scratch入門到精通