国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件測(cè)試中單元測(cè)試案例教學(xué)實(shí)踐

2020-07-04 02:13張?zhí)K楊元峰陸公正
電腦知識(shí)與技術(shù) 2020年13期
關(guān)鍵詞:單元測(cè)試軟件測(cè)試案例教學(xué)

張?zhí)K 楊元峰 陸公正

摘要:?jiǎn)卧獪y(cè)試是軟件測(cè)試過(guò)程中必不可少的一個(gè)環(huán)節(jié)。作為《軟件測(cè)試工具應(yīng)用》課程的一個(gè)教學(xué)單元,在單元測(cè)試教學(xué)設(shè)計(jì)中,分析了單元測(cè)試的教學(xué)定位、學(xué)情和教學(xué)目標(biāo)。結(jié)合黑盒測(cè)試用例設(shè)計(jì)方法和白盒測(cè)試用例設(shè)計(jì)方法,通過(guò)設(shè)計(jì)不同的案例,討論了JUnit單元測(cè)試、被測(cè)代碼100%覆蓋率以及JDBC GUI程序的單元測(cè)試的在教學(xué)中的實(shí)現(xiàn)。

關(guān)鍵詞:案例教學(xué);軟件測(cè)試;單元測(cè)試;JUnit

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

文章編號(hào):1009-3044(2020)13-0132-04

高職教育的培養(yǎng)目標(biāo)是復(fù)合型專業(yè)技術(shù)人才,培養(yǎng)學(xué)生不僅具有豐富的專業(yè)知識(shí),更要有較強(qiáng)的實(shí)踐動(dòng)手能力、技術(shù)創(chuàng)新能力和可持續(xù)發(fā)展的能力。在專業(yè)技能培養(yǎng)方面要和企業(yè)實(shí)際工作要求相結(jié)合,通過(guò)各種實(shí)踐教學(xué)保障學(xué)生獲得充分的專業(yè)知識(shí)和專業(yè)技能,能夠順利地適應(yīng)新工作崗位的要求,具備較高的職業(yè)素養(yǎng)和技術(shù)水平。

軟件測(cè)試是軟件質(zhì)量保障的重要手段之一,而單元測(cè)試是軟件測(cè)試過(guò)程中必不可少的一個(gè)測(cè)試階段。單元測(cè)試是對(duì)軟件中的最小的可測(cè)試單元進(jìn)行檢查和驗(yàn)證。單元測(cè)試可以由測(cè)試工程師來(lái)完成也可以由程序開發(fā)工程師來(lái)完成。從企業(yè)對(duì)人才的要求來(lái)看,單元測(cè)試技術(shù)是學(xué)生將來(lái)從事不管是開發(fā)還是測(cè)試,都必須掌握的基本技術(shù)。

執(zhí)行單元測(cè)試有助于幫助開發(fā)人員理清業(yè)務(wù)邏輯思路,提高代碼質(zhì)量,降低bug出現(xiàn)率。在開發(fā)端執(zhí)行單元測(cè)試,可以減少錯(cuò)誤反饋時(shí)間,提高工作效率。當(dāng)我們使用單元測(cè)試工具來(lái)編寫測(cè)試代碼時(shí),這些測(cè)試代碼將協(xié)同源代碼一起進(jìn)行保存和維護(hù),當(dāng)軟件版本升級(jí)時(shí),這將大大降低新版本軟件測(cè)試的工作量,使得代碼維護(hù)更容易并提升代碼質(zhì)量。

針對(duì)不同的類型的軟件應(yīng)用,可以采用不同的單元測(cè)試工具。在教學(xué)中我們選用JUnit工具進(jìn)行教學(xué),幫助學(xué)生掌握單元測(cè)試的基本思想和基本做法。

1單元測(cè)試教學(xué)設(shè)計(jì)

基于JUnit的單元測(cè)試教學(xué)是本?!盾浖y(cè)試工具應(yīng)用》課程的一個(gè)教學(xué)單元。該課程依據(jù)軟件測(cè)試過(guò)程,將教學(xué)內(nèi)容分為:需求分解、測(cè)試計(jì)劃撰寫、測(cè)試管理、基于JUnit的單元測(cè)試、自動(dòng)化測(cè)試、性能測(cè)試、測(cè)試報(bào)告撰寫等教學(xué)單元。課程總課時(shí)80課時(shí),課程教學(xué)內(nèi)容設(shè)計(jì)如圖1所示。

基于JUnit的單元測(cè)試屬于《軟件測(cè)試工具應(yīng)用》課程的一個(gè)教學(xué)單元。在學(xué)習(xí)本課程前,學(xué)生應(yīng)掌握面向?qū)ο驤AVA程序開發(fā)的基本思想,會(huì)編寫JAVA邏輯代碼,會(huì)編寫基于JDBC數(shù)據(jù)庫(kù)訪問(wèn)的GUI應(yīng)用程序,并在同步學(xué)習(xí)JavaWeb開發(fā)課程。通過(guò)本單元的學(xué)習(xí),希望學(xué)生能夠掌握單元測(cè)試基本概念,理解單元測(cè)試的目的、意義以及工作過(guò)程。能夠針對(duì)不同類型的被測(cè)程序采用合適的黑盒、白盒用例設(shè)計(jì)方法,通過(guò)縝密的邏輯分析來(lái)設(shè)計(jì)測(cè)試用例,以達(dá)到全面的代碼測(cè)試覆蓋率。使用JUnit工具將用例寫成測(cè)試代碼,執(zhí)行測(cè)試。通過(guò)測(cè)試代碼預(yù)置bug使得學(xué)生在單元測(cè)試執(zhí)行過(guò)程中體會(huì)和掌握缺陷報(bào)告和缺陷跟蹤管理部分的工作內(nèi)容。

通過(guò)案例教學(xué)使得學(xué)生能夠熟練掌握使用JUnit進(jìn)行單元測(cè)試,培養(yǎng)學(xué)生縝密的邏輯分析和用例設(shè)計(jì)能力以及細(xì)心、耐心的工作態(tài)度。單元測(cè)試學(xué)情和教學(xué)目標(biāo)分析如圖2所示。

2教學(xué)過(guò)程設(shè)計(jì)

基于JUnit的單元測(cè)試教學(xué)分成4個(gè)教學(xué)步驟,層層深入,開展教學(xué),具體的教學(xué)過(guò)程設(shè)計(jì)方案如表1所示。第一步講解單元測(cè)試的概念和基本原理,講解JUnit各語(yǔ)法的作用和使用方法,使得同學(xué)們能夠看懂和理解JUnit代碼。

第二步以NextDay程序單元測(cè)試為案例,引入算法類程序的單元測(cè)試方法。NextDay程序用于返回指定日期的下一個(gè)日期。在進(jìn)行測(cè)試用例設(shè)計(jì)教學(xué)時(shí),使用該案例進(jìn)行基于等價(jià)類分析法、邊界值分析法、錯(cuò)誤推測(cè)法的黑盒測(cè)試用例設(shè)計(jì),以及基于邏輯覆蓋和獨(dú)立路徑分析的白盒測(cè)試用例設(shè)計(jì),在教授單元測(cè)試時(shí),指導(dǎo)學(xué)生使用JUnit將這些測(cè)試用例寫成單元測(cè)試代碼。在完成本部分內(nèi)容授課后,可以給學(xué)生提供一些更復(fù)雜的應(yīng)用案例,引導(dǎo)學(xué)生理解和學(xué)會(huì)算法類程序的單元測(cè)試,實(shí)現(xiàn)分層次教學(xué)引導(dǎo)。

第三步以房產(chǎn)信息管理模塊單元測(cè)試為案例,講解白盒測(cè)試用例設(shè)計(jì)方法和實(shí)現(xiàn),配合EclEmma插件,編寫測(cè)試代碼,實(shí)現(xiàn)被測(cè)代碼100%的測(cè)試覆蓋。使得學(xué)生在整個(gè)測(cè)試過(guò)程中提高源代碼白盒分析水平,提高自己的測(cè)試代碼編寫能力。

第四步以顧客信息管理模塊單元測(cè)試為案例,講解分層數(shù)據(jù)庫(kù)應(yīng)用程序的單元測(cè)試方法。該案例是一個(gè)java GUI應(yīng)用程序,采用Mysql數(shù)據(jù)庫(kù),程序?qū)崿F(xiàn)了顧客信息的添加、修改、刪除和查詢功能。窗體應(yīng)用程序的單元測(cè)試主要是針對(duì)程序dao層的添加、修改、刪除和查詢接口(interface)編寫JUnit單元測(cè)試代碼并執(zhí)行測(cè)試。

通過(guò)以上教學(xué)步驟層層遞進(jìn),教會(huì)同學(xué)們從一般算法到窗體應(yīng)用程序的JUnit單元測(cè)試代碼編寫和執(zhí)行。

3NextDay教學(xué)案例設(shè)計(jì)

NextDay程序是測(cè)試學(xué)習(xí)經(jīng)典程序,該程序?qū)崿F(xiàn)的功能是用戶輸入一個(gè)有效日期,由程序返回該日期的下一天的日期。例如2020/2/28的下一天是2020/2/29。被測(cè)程序由6個(gè)類組成,分別是:Nextday、CalendarUnit、Day、Month、Date、Year。根據(jù)黑盒測(cè)試用例設(shè)計(jì)方法設(shè)計(jì)測(cè)試用例舉例,首先進(jìn)行等價(jià)類分析,劃分出有效等價(jià)類和無(wú)效等價(jià)類,然后根據(jù)邊界值分析法確定每個(gè)等價(jià)類邊界值的內(nèi)點(diǎn)、上點(diǎn)和離點(diǎn),將這些分析寫成測(cè)試用例,最后再加上閏年、閏月等特殊數(shù)據(jù)完成用例設(shè)計(jì)。

測(cè)試用例代碼舉例如圖3所示,testNextDay函數(shù)中實(shí)現(xiàn)了日邊界nextday合法數(shù)據(jù)的測(cè)試代碼,測(cè)試了大月、小月和閏月的日期邊界nextDay函數(shù)返回值是否正確。testDateValid函數(shù)中測(cè)試了程序是否對(duì)非法的日期進(jìn)行處理。2個(gè)測(cè)試函數(shù)的執(zhí)行結(jié)果如圖4所示。在授課過(guò)程中要求同學(xué)們把年、月、日的邊界,有效日期和無(wú)效日期均編寫相應(yīng)的測(cè)試用例代碼并執(zhí)行。通過(guò)該部分的教學(xué)引導(dǎo)同學(xué)們掌握J(rèn)Unit單元測(cè)試的一般做法,在課外習(xí)題中補(bǔ)充難度更大的算法案例,來(lái)實(shí)現(xiàn)分層教學(xué),鞏固學(xué)習(xí)成果。

4房產(chǎn)信息管理模塊案例設(shè)計(jì)

房產(chǎn)信息管理模塊程序使用HashMap來(lái)保存房屋數(shù)據(jù),實(shí)現(xiàn)房產(chǎn)信息的添加、修改、刪除和查詢。教學(xué)中要求根據(jù)白盒測(cè)試用例設(shè)計(jì)方法設(shè)計(jì)測(cè)試用例,編寫和執(zhí)行JUnit代碼并統(tǒng)計(jì)代碼覆蓋率。白盒測(cè)試用例設(shè)計(jì)方法主要有邏輯覆蓋法和獨(dú)立路徑分析法。源程序代碼測(cè)試覆蓋率統(tǒng)計(jì)使用EclEmma插件生成JUnit覆蓋率測(cè)試報(bào)告來(lái)實(shí)現(xiàn)。房產(chǎn)信息管理模塊由3個(gè)類和1個(gè)接口構(gòu)成,其類圖結(jié)構(gòu)如圖5所示。

在對(duì)該模塊進(jìn)行測(cè)試的時(shí)候,設(shè)計(jì)測(cè)試用例配合EclEmma插件實(shí)現(xiàn)對(duì)測(cè)試代碼的全覆蓋。如圖6所示為測(cè)試用例舉例,該測(cè)試用例實(shí)現(xiàn)了對(duì)新增房產(chǎn)信息、修改房產(chǎn)信息、判斷是否已經(jīng)存在、根據(jù)房產(chǎn)編號(hào)查詢房產(chǎn)信息、顯示所有房產(chǎn)信息、根據(jù)房產(chǎn)價(jià)格查詢房產(chǎn)信息、刪除房產(chǎn)信息等功能的測(cè)試。

這是一個(gè)測(cè)試用例的示范,根據(jù)白盒測(cè)試方法進(jìn)一步補(bǔ)充設(shè)計(jì)用例以達(dá)到100%的被測(cè)代碼覆蓋率。如圖7所示為源代碼測(cè)試覆蓋率截圖。在執(zhí)行測(cè)試的時(shí)候會(huì)碰到一些問(wèn)題,例如有的代碼難以被覆蓋到,最后發(fā)現(xiàn)該代碼本身邏輯上就有問(wèn)題,屬于永遠(yuǎn)都不會(huì)被執(zhí)行到的代碼,那么應(yīng)該把這些代碼去掉或者重寫。在測(cè)試中還有一些異常處理代碼可能較難被測(cè)試覆蓋,這時(shí)可能做不到100%的代碼覆蓋率,需要根據(jù)具體情況進(jìn)行分析。在執(zhí)行測(cè)試的時(shí)候,使用EclEmma插件會(huì)將沒(méi)有被覆蓋到的代碼標(biāo)紅色顯示,這非常有助于改善和提高測(cè)試用例以獲得更好的測(cè)試效果。

5顧客信息管理模塊教學(xué)案例設(shè)計(jì)

顧客信息管理模塊是一個(gè)Java GUI應(yīng)用程序,數(shù)據(jù)存放在Mysql數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)客戶信息的添加、修改、刪除和查詢。被測(cè)系統(tǒng)程序結(jié)構(gòu)如圖8所示,程序運(yùn)行界面如圖9所示。該程序由bean、dao、db、gui4個(gè)包構(gòu)成:bean包中存放實(shí)體類;dao包中存放客戶類添加、修改、刪除的接口interface和接口實(shí)現(xiàn)類;db包中存放JDBC數(shù)據(jù)庫(kù)連接對(duì)象;gui包中存放各窗體JFrame代碼。

在教學(xué)中,顧客信息管理模塊的JUnit測(cè)試主要實(shí)現(xiàn)對(duì)于顧客信息添加、修改、刪除的Dao層進(jìn)行的測(cè)試,測(cè)試思路和執(zhí)行步驟設(shè)計(jì)如表2所示。首先在JUnit測(cè)試代碼中生成Custom-erDAOImp類的對(duì)象,調(diào)用各個(gè)interface實(shí)現(xiàn)方法,實(shí)現(xiàn)相應(yīng)功能,然后測(cè)試代碼通過(guò)jdbc連接,直接去數(shù)據(jù)庫(kù)表查詢相關(guān)數(shù)據(jù)進(jìn)行比對(duì),來(lái)驗(yàn)證interface的功能有沒(méi)有正確實(shí)現(xiàn)。表2列舉了各個(gè)interface的測(cè)試設(shè)計(jì)。

例如在測(cè)試deleteCustomer時(shí),先刪除編號(hào)為1的客戶信息,再根據(jù)編號(hào)1查詢客戶,根據(jù)是否能查到來(lái)判斷根據(jù)編號(hào)刪除客戶功能是否正確。在測(cè)試getAllCustomer時(shí),先根據(jù)CustomerDAO對(duì)象獲得所有客戶List的size,再通過(guò)JDBC去數(shù)據(jù)庫(kù)中查詢所有客戶數(shù)目的總數(shù),比較2個(gè)數(shù)目是否一致來(lái)判斷該功能是否正確。當(dāng)然客戶數(shù)目一致不代表所有數(shù)據(jù)是一致的,也可以修改代碼為按序查出所有客戶對(duì)象后,逐個(gè)比較數(shù)據(jù)內(nèi)容。

6結(jié)語(yǔ)

在教學(xué)過(guò)程中,根據(jù)人才培養(yǎng)目標(biāo),分析學(xué)生特點(diǎn),在單元測(cè)試教學(xué)模塊中以案例教學(xué)方法改進(jìn)教學(xué)效果。在學(xué)生已具備基本的測(cè)試知識(shí)后,以3個(gè)教學(xué)案例覆蓋各知識(shí)技能點(diǎn),使用NextDay教學(xué)案例教學(xué)教會(huì)學(xué)生黑盒用例設(shè)計(jì)和實(shí)現(xiàn)方法,學(xué)習(xí)算法類程序的單元測(cè)試方法;使用房產(chǎn)信息管理模塊案例教學(xué)教會(huì)學(xué)生白盒用例設(shè)計(jì)方法和分析方法,實(shí)現(xiàn)被測(cè)代碼100%覆蓋率;使用顧客信息管理模塊教學(xué)案例教學(xué)教會(huì)學(xué)生分層數(shù)據(jù)庫(kù)應(yīng)用程序的單元測(cè)試方法。三個(gè)案例層層深入,涉及知識(shí)點(diǎn)和技能點(diǎn)全面,在實(shí)際教學(xué)中取得了良好的教學(xué)效果。

猜你喜歡
單元測(cè)試軟件測(cè)試案例教學(xué)
基于OBE的軟件測(cè)試課程教學(xué)改革探索
EXCEL和VBA實(shí)現(xiàn)軟件測(cè)試記錄管理
關(guān)于軟件測(cè)試技術(shù)應(yīng)用與發(fā)展趨勢(shì)研究
案例教學(xué)在機(jī)械創(chuàng)新設(shè)計(jì)課程中的應(yīng)用
馬克思主義基本原理概論課案例教學(xué)的幾點(diǎn)思考
軟件測(cè)試工程化模型及應(yīng)用研究