亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺析自動(dòng)售貨機(jī)程序測(cè)試

        2015-05-30 10:48:04佘鳳
        軟件工程 2015年11期
        關(guān)鍵詞:單元測(cè)試

        佘鳳

        摘 要:本文主要針對(duì)一個(gè)實(shí)際問(wèn)題—自動(dòng)售貨機(jī)程序,進(jìn)行分析、設(shè)計(jì)測(cè)試用例,并使用JUnit單元測(cè)試工具實(shí)現(xiàn)測(cè)試。

        關(guān)鍵詞:自動(dòng)售貨機(jī)程序;單元測(cè)試;JUnit

        中圖分類號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A

        1 引言(Introduction)

        自動(dòng)售貨機(jī)處理單價(jià)為5角錢的飲料。程序流程圖如圖1所示。功能如下:

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

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

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

        圖1 程序流程圖

        Fig.1 Program flow chart

        2 問(wèn)題分析(Problem analysis)

        自動(dòng)售貨機(jī)業(yè)務(wù)中共有五個(gè)條件和五個(gè)結(jié)果,如表1所示。

        表1 自動(dòng)售貨機(jī)原因和結(jié)果

        Tab.1 Automatic vending machine cause and result

        編號(hào) 原因 編號(hào) 結(jié)果

        C1 售貨機(jī)有零錢找 E1 零錢找完:當(dāng)售貨機(jī)中沒(méi)有零錢的時(shí)候就有亮紅燈

        C2 投入1元硬幣 E2 退還1元硬幣:投入1元且售貨機(jī)中沒(méi)有零錢可找的時(shí)候

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

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

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

        使用因果圖法,它能夠生成沒(méi)有重復(fù)性的且發(fā)現(xiàn)錯(cuò)誤能力強(qiáng)的測(cè)試用例,而且對(duì)輸入、輸出同時(shí)進(jìn)行了分析,考慮輸入的組合以及輸出對(duì)輸入的依賴關(guān)系。畫出因果圖,如圖2所示。

        圖2 因果圖

        Fig.2 Cause and effect diagram

        中間狀態(tài)是導(dǎo)出結(jié)果的進(jìn)一步原因。中間狀態(tài)如表2所示。

        表2 中間狀態(tài)

        Tab.2 Intermediate state

        編號(hào) 中間狀態(tài) 操作

        11 應(yīng)該找5角錢零錢狀態(tài) 投入1元硬幣且按下飲料按鈕

        12 選商品狀態(tài) 按下“橙汁”或“啤酒”按鈕

        13 能夠找5角錢零錢狀態(tài) 應(yīng)找5角零錢并且售貨機(jī)有零錢找

        14 錢已付清 錢已付清

        3 自動(dòng)售貨機(jī)程序測(cè)試(The vending machine

        program test)

        JUnit用于開發(fā)人員進(jìn)行單元測(cè)試,適合一邊編程,一邊測(cè)試,可盡早糾正編程錯(cuò)誤,減小糾正代價(jià)。根據(jù)因果圖分析程序,有14種測(cè)試情況,設(shè)計(jì)測(cè)試數(shù)據(jù),使用JUnit工具進(jìn)行自動(dòng)售貨機(jī)程序測(cè)試。

        說(shuō)明:售貨機(jī)程序初始化時(shí):Beer:10;OrangeJuice:10;5 Cents:10;1 Dollar:10說(shuō)明: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)沒(méi)有零錢,用戶投幣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)沒(méi)有零錢,用戶投幣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)沒(méi)有啤酒,用戶投幣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)沒(méi)有啤酒,用戶投幣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)沒(méi)有橙汁,用戶投幣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)沒(méi)有橙汁,用戶投幣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)各資源均有剩余,用戶投幣錯(cuò)誤,選擇啤酒。

        public void testOperation11(){

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

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

        }

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

        public void testOperation12(){

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

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

        }

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

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

        public void testOperation13(){

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

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

        }

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

        public void testOperation14(){

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

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

        }

        運(yùn)行測(cè)試,查看測(cè)試結(jié)果。綠色表示測(cè)試通過(guò),只要有一個(gè)測(cè)試未通過(guò),會(huì)顯示紅色并列出未通過(guò)測(cè)試的方法。測(cè)試結(jié)果如圖3所示。

        圖3 測(cè)試結(jié)果圖

        Fig.3 Test result chart

        4 結(jié)論(Conclusion)

        單元測(cè)試是驗(yàn)證代碼行為是否滿足預(yù)期的有效手段之一。不可否認(rèn),做測(cè)試是件很枯燥無(wú)趣的事情,而一遍又一遍的測(cè)試是讓人生畏的工作。單元測(cè)試工具JUnit使這一切變得簡(jiǎn)單藝術(shù)起來(lái)。JUnit是Java中知名度最高的單元測(cè)試工具。JUnit設(shè)計(jì)非常小巧,但能卻非常強(qiáng)大。本文主要針對(duì)一個(gè)實(shí)際問(wèn)題,編寫基于JUnit的單元測(cè)試用例;并在JUnit環(huán)境下設(shè)計(jì)并執(zhí)行測(cè)試用例。實(shí)現(xiàn)自動(dòng)售貨機(jī)程序的測(cè)試。

        參考文獻(xiàn)(References)

        [1] 于艷華,王素華.軟件測(cè)試項(xiàng)目實(shí)戰(zhàn)[M].北京:電子工業(yè)出版

        社,2013.

        [2] 武劍潔,陳傳波,肖來(lái)元.軟件測(cè)試技術(shù)基礎(chǔ)[M].武漢:華中科

        技大學(xué)出版社,2014.

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

        版社,2015.

        作者簡(jiǎn)介:

        佘 鳳(1976-),女,碩士,軟件設(shè)計(jì)師,講師.研究領(lǐng)域:

        軟件測(cè)試.

        猜你喜歡
        單元測(cè)試
        圓錐曲線單元測(cè)試卷
        “三角形”單元測(cè)試卷
        “整式的乘法與因式分解”單元測(cè)試題
        “勾股定理”單元測(cè)試題
        “整式的乘法與因式分解”單元測(cè)試卷(提高卷)
        《一次函數(shù)》單元測(cè)試題
        《一次函數(shù)》單元測(cè)試題
        一年級(jí)語(yǔ)文下冊(cè)第五單元測(cè)試
        一年級(jí)上冊(cè)第五單元測(cè)試
        一年級(jí)上冊(cè)一、二單元測(cè)試
        亚洲AV无码一区二区水蜜桃| 国产午夜毛片v一区二区三区| 日本高清视频www| 色偷偷88888欧美精品久久久| 亚洲专区欧美| 91在线无码精品秘 入口九色十| 一级内射免费观看视频| 人妻 丝袜美腿 中文字幕| 人人澡人人澡人人看添av| 国产精品国产三级国产an| 中日韩字幕中文字幕一区| 毛片在线视频成人亚洲| 亚洲av日韩av女同同性| 人妻 日韩精品 中文字幕| 亚洲an日韩专区在线| 国产av大片久久中文字幕| 日韩人妻无码精品一专区二区三区| 国产精品熟女视频一区二区| 日本在线视频网站www色下载| 一区二区三区精品婷婷| 国产极品少妇一区二区| 伊人久久大香线蕉av一区| 人妻精品久久中文字幕| 国产一区二区三区护士| 一色桃子中文字幕人妻熟女作品 | 美女高潮黄又色高清视频免费| 免费无码成人av在线播| 久久国产高潮流白浆免费观看| 亚洲一区二区日韩专区| 亚洲av午夜福利精品一区二区| 亚洲AV无码精品色欲av| 国成成人av一区二区三区| 亚洲中文字幕无码av永久| 精品性高朝久久久久久久| 国产一级片内射在线视频| 日韩精品在线视频一二三 | 亚洲av午夜福利精品一区二区| 手机在线免费av资源网| 亚洲av日韩专区在线观看| 亚洲一区二区在线视频播放| 日本免费视频一区二区三区|