999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺析自動售貨機程序測試

2015-05-30 10:48:04佘鳳
軟件工程 2015年11期

佘鳳

摘 要:本文主要針對一個實際問題—自動售貨機程序,進行分析、設計測試用例,并使用JUnit單元測試工具實現測試。

關鍵詞:自動售貨機程序;單元測試;JUnit

中圖分類號:TP273 文獻標識碼:A

1 引言(Introduction)

自動售貨機處理單價為5角錢的飲料。程序流程圖如圖1所示。功能如下:

(1)若投入5角錢或1元錢的硬幣,按下“橙汁”或“啤酒”按鈕,則送出相應飲料。

(2)若售貨機沒有零錢,則顯示“零錢找完”的紅燈亮,此時再投入一元硬幣并按下按鈕后,不送出飲料并且退出1元硬幣。

(3)若有零錢找,則顯示“零錢找完”的紅燈滅,送出飲料并退還5角硬幣。

圖1 程序流程圖

Fig.1 Program flow chart

2 問題分析(Problem analysis)

自動售貨機業務中共有五個條件和五個結果,如表1所示。

表1 自動售貨機原因和結果

Tab.1 Automatic vending machine cause and result

編號 原因 編號 結果

C1 售貨機有零錢找 E1 零錢找完:當售貨機中沒有零錢的時候就有亮紅燈

C2 投入1元硬幣 E2 退還1元硬幣:投入1元且售貨機中沒有零錢可找的時候

C3 投入5角硬幣 E3 退還5角硬幣:投入1元且售貨機中有零錢可找的時候

C4 按下橙汁按鈕 E4 送出橙汁飲料

C5 按下啤酒按鈕 E5 送出啤酒飲料

使用因果圖法,它能夠生成沒有重復性的且發現錯誤能力強的測試用例,而且對輸入、輸出同時進行了分析,考慮輸入的組合以及輸出對輸入的依賴關系。畫出因果圖,如圖2所示。

圖2 因果圖

Fig.2 Cause and effect diagram

中間狀態是導出結果的進一步原因。中間狀態如表2所示。

表2 中間狀態

Tab.2 Intermediate state

編號 中間狀態 操作

11 應該找5角錢零錢狀態 投入1元硬幣且按下飲料按鈕

12 選商品狀態 按下“橙汁”或“啤酒”按鈕

13 能夠找5角錢零錢狀態 應找5角零錢并且售貨機有零錢找

14 錢已付清 錢已付清

3 自動售貨機程序測試(The vending machine

program test)

JUnit用于開發人員進行單元測試,適合一邊編程,一邊測試,可盡早糾正編程錯誤,減小糾正代價。根據因果圖分析程序,有14種測試情況,設計測試數據,使用JUnit工具進行自動售貨機程序測試。

說明:售貨機程序初始化時:Beer:10;OrangeJuice:10;5 Cents:10;1 Dollar:10說明:5C代表5角錢,1D代表1元錢,Beer代表啤酒,OrangeJuice代表橙汁。

(1)各資源均有剩余,用戶投幣5角,選擇啤酒。

public void testOperation1() {

String expectedResult = "Input Information\n" +"Type:Beer;Money:5 Cents;Change:0\n\n" +"Current State\n" +"Beer:9\n" +"OrangeJuice:10\n" +"5 Cents:11\n" +"1 Dollar:10";

assertEquals(expectedResult, obj.operation("Beer", "5C"));

}

(2)各資源均有剩余,用戶投幣5角,選擇橙汁。

public void testOperation2() {

String expectedResult = "Input Information\n"+"Type:OrangeJuice;Money:5 Cents;Change:0\n\n" +"Current State\n"+"Beer:10\n"+"OrangeJuice:9\n" +"5 Cents:11\n" +"1 Dollar:10";

assertEquals(expectedResult, obj.operation("OrangeJuice", "5C"));

}

(3)各資源均有剩余,用戶投幣1元,選擇啤酒。

public void testOperation3() {

String expectedResult = "Input Information\n"+ "Type:Beer;Money:1 Dollar;Change:5 Cents\n\n" +"Current State\n"+"Beer:9\n"+"OrangeJuice:10\n" +"5 Cents:9\n" +"1 Dollar:11";

assertEquals(expectedResult, obj.operation("Beer", "1D"));

}

(4)各資源均有剩余,用戶投幣1元,選擇橙汁。

public void testOperation4() {

String expectedResult = "Input Information\n"+"Type:OrangeJuice;Money:1 Dollar;Change:5 Cents\n\n" +"Current State\n" +"Beer:10\n" +"OrangeJuice:9\n" +"5 Cents:9\n" +"1 Dollar:11";

assertEquals(expectedResult, obj.operation("OrangeJuice", "1D"));

}

(5)沒有零錢,用戶投幣1元,選擇啤酒。

public void testOperation5(){

SaleMachine obj=new SaleMachine(0,10,10,10);

String expectedResult ="Failure Information\n"+"Change Shortage";

assertEquals(expectedResult, obj.operation("Beer", "1D"));

}

(6)沒有零錢,用戶投幣1元,選擇橙汁。

public void testOperation6(){

SaleMachine obj=new SaleMachine(0,10,10,10);

String expectedResult="Failure Information\n"+"Change Shortage";

assertEquals(expectedResult, obj.operation("OrangeJuice", "1D"));

}

(7)沒有啤酒,用戶投幣5角,選擇啤酒。

public void testOperation8(){

SaleMachine obj=new SaleMachine(10,10,0,10);

String expectedResult="Failure Information\n"+"Beer Shortage";

assertEquals(expectedResult, obj.operation("Beer", "5C"));

}

(8)沒有啤酒,用戶投幣1元,選擇啤酒。

public void testOperation7(){

SaleMachine obj=new SaleMachine(10,10,0,10);

String expectedResult="Failure Information\n"+"Beer Shortage";

assertEquals(expectedResult, obj.operation("Beer", "1D"));

}

(9)沒有橙汁,用戶投幣5角,選擇橙汁。

public void testOperation9(){

SaleMachine obj=new SaleMachine(10,10,10,0);

String expectedResult="Failure Information\n"+"OrangeJuice Shortage";

assertEquals(expectedResult, obj.operation("OrangeJuice", "5C"));

}

(10)沒有橙汁,用戶投幣1元,選擇橙汁。

public void testOperation10(){

SaleMachine obj=new SaleMachine(10,10,10,0);

String expectedResult="Failure Information\n"+"OrangeJuice Shortage";

assertEquals(expectedResult, obj.operation("OrangeJuice", "1D"));

}

(11)各資源均有剩余,用戶投幣錯誤,選擇啤酒。

public void testOperation11(){

String expectedResult="Failure Information\n"+"Money Error";

assertEquals(expectedResult, obj.operation("Beer", "1C"));

}

(12)各資源均有剩余,用戶投幣錯誤,選擇橙汁。

public void testOperation12(){

String expectedResult="Failure Information\n"+"Money Error";

assertEquals(expectedResult, obj.operation("OrangeJuice", "1C"));

}

雖然在實際情況中不會有除啤酒和橙汁以外的選擇,但是為了測試單元模塊的所有輸入輸出情況,需要編寫檢測飲料類型的測試用例。

(13)各資源均有剩余,用戶投幣5角,選擇可口可樂。

public void testOperation13(){

String expectedResult="Failure Information\n"+"Type Error";

assertEquals(expectedResult, obj.operation("Coca-cola", "5C"));

}

(14)各資源均有剩余,用戶投幣1元,選擇可口可樂。

public void testOperation14(){

String expectedResult="Failure Information\n"+"Type Error";

assertEquals(expectedResult, obj.operation("Coca-cola", "1D"));

}

運行測試,查看測試結果。綠色表示測試通過,只要有一個測試未通過,會顯示紅色并列出未通過測試的方法。測試結果如圖3所示。

圖3 測試結果圖

Fig.3 Test result chart

4 結論(Conclusion)

單元測試是驗證代碼行為是否滿足預期的有效手段之一。不可否認,做測試是件很枯燥無趣的事情,而一遍又一遍的測試是讓人生畏的工作。單元測試工具JUnit使這一切變得簡單藝術起來。JUnit是Java中知名度最高的單元測試工具。JUnit設計非常小巧,但能卻非常強大。本文主要針對一個實際問題,編寫基于JUnit的單元測試用例;并在JUnit環境下設計并執行測試用例。實現自動售貨機程序的測試。

參考文獻(References)

[1] 于艷華,王素華.軟件測試項目實戰[M].北京:電子工業出版

社,2013.

[2] 武劍潔,陳傳波,肖來元.軟件測試技術基礎[M].武漢:華中科

技大學出版社,2014.

[3] 呂云翔,王洋,肖咚.軟件測試案例教程[M].北京:機械工業出

版社,2015.

作者簡介:

佘 鳳(1976-),女,碩士,軟件設計師,講師.研究領域:

軟件測試.

主站蜘蛛池模板: 亚洲国产欧美自拍| 亚洲视频四区| 国产主播在线一区| 成人夜夜嗨| 欧美色图第一页| 久久久久久久久亚洲精品| 国产一区二区在线视频观看| 精品一区二区三区视频免费观看| 99久久精品免费看国产免费软件| 欧洲成人在线观看| 91视频国产高清| 茄子视频毛片免费观看| 日日噜噜夜夜狠狠视频| 久久国产高潮流白浆免费观看| 国产另类乱子伦精品免费女| 亚洲国产成人久久精品软件| 久久精品日日躁夜夜躁欧美| 一级黄色网站在线免费看| 小说区 亚洲 自拍 另类| 91在线一9|永久视频在线| 亚洲大尺码专区影院| 伊人大杳蕉中文无码| 色噜噜在线观看| 国产精品分类视频分类一区| 亚洲精品国产综合99| 亚洲性一区| 国产女人在线视频| 欧美另类图片视频无弹跳第一页| 制服丝袜一区二区三区在线| 国产在线精品香蕉麻豆| 免费看黄片一区二区三区| 无码精油按摩潮喷在线播放| 99re热精品视频中文字幕不卡| 欧美色丁香| 久久精品免费看一| 国产美女无遮挡免费视频| а∨天堂一区中文字幕| 在线无码av一区二区三区| 美女被狂躁www在线观看| 国产原创自拍不卡第一页| 午夜国产理论| 伊人久久大线影院首页| 扒开粉嫩的小缝隙喷白浆视频| 国产91熟女高潮一区二区| 网久久综合| 色亚洲成人| 国产一区二区三区在线观看视频| 日韩欧美在线观看| 97国产精品视频人人做人人爱| 国产簧片免费在线播放| 欧美国产综合视频| 久久这里只有精品2| 亚洲无码高清一区| 国产精品嫩草影院视频| 亚洲成av人无码综合在线观看| 免费激情网址| 制服丝袜无码每日更新| 久久99热这里只有精品免费看| 黄片一区二区三区| 国产成人亚洲欧美激情| 91系列在线观看| 日本欧美精品| av一区二区无码在线| 美女国产在线| 国产熟睡乱子伦视频网站| 免费激情网站| 91九色视频网| 福利在线不卡| 亚洲高清资源| 国语少妇高潮| 色综合中文综合网| 国内精自线i品一区202| 国语少妇高潮| 先锋资源久久| 国产欧美另类| 国产精品永久免费嫩草研究院| 91av国产在线| 国产aⅴ无码专区亚洲av综合网| 国产人成在线观看| 中文一级毛片| 亚洲人成网址| 91探花在线观看国产最新|