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

        ?

        軟件工程課程中基于課賽融合的教學(xué)實(shí)踐

        2023-04-29 21:51:01林喜文李佳佳高鳳毅張淑桐
        信息系統(tǒng)工程 2023年6期
        關(guān)鍵詞:單元測(cè)試軟件工程

        林喜文?李佳佳?高鳳毅?張淑桐

        摘要:針對(duì)軟件工程課程教學(xué)中出現(xiàn)的重理論、輕實(shí)踐的現(xiàn)狀,從課賽融合的角度,以單元測(cè)試知識(shí)點(diǎn)為例,將全國(guó)職業(yè)院校技能大賽軟件測(cè)試賽項(xiàng)考察的核心技能引入教學(xué)中。但是,軟件工程課程的目的不在于深入學(xué)習(xí)編程技術(shù),而是側(cè)重于如何將工程的思想引入軟件的開(kāi)發(fā)和維護(hù)中。因此,教學(xué)案例要盡量降低對(duì)編程語(yǔ)言和編程技術(shù)的依賴(lài)。根據(jù)以上特點(diǎn),案例設(shè)計(jì)采用Python編程語(yǔ)言,借助海龜編輯器和PyCharm集成開(kāi)發(fā)環(huán)境,力求增加學(xué)生的學(xué)習(xí)動(dòng)力并達(dá)到教學(xué)目的。

        關(guān)鍵詞:軟件工程;單元測(cè)試;課賽融合;Python

        一、前言

        軟件工程課程的教學(xué)實(shí)踐一直致力于培養(yǎng)學(xué)生的軟件開(kāi)發(fā)技能和工程思維能力。在現(xiàn)代軟件開(kāi)發(fā)中,高質(zhì)量的代碼和可靠的軟件系統(tǒng)是至關(guān)重要的,而單元測(cè)試作為軟件測(cè)試的基礎(chǔ),起著至關(guān)重要的作用。通過(guò)單元測(cè)試,開(kāi)發(fā)人員可以確保代碼的正確性、可靠性和健壯性,從而提高軟件的質(zhì)量并減少后期維護(hù)成本。為了改進(jìn)軟件工程課程的教學(xué)實(shí)踐,采用了基于課賽融合的教學(xué)方法,將單元測(cè)試作為一個(gè)重要的教學(xué)內(nèi)容進(jìn)行深入學(xué)習(xí)和實(shí)踐。通過(guò)將理論知識(shí)與實(shí)際項(xiàng)目結(jié)合起來(lái),學(xué)生可以親身參與到軟件開(kāi)發(fā)過(guò)程中,并在實(shí)踐中學(xué)習(xí)單元測(cè)試的重要性和實(shí)際應(yīng)用。

        二、軟件工程教學(xué)現(xiàn)狀

        軟件工程是計(jì)算機(jī)類(lèi)專(zhuān)業(yè)高年級(jí)的一門(mén)必修課程。該課程綜合性很高,立足于軟件開(kāi)發(fā)全生命周期(見(jiàn)圖1),將學(xué)過(guò)的各個(gè)課程有機(jī)融合在一起,因此在教學(xué)中容易給學(xué)生留下“知識(shí)面廣、知識(shí)點(diǎn)淺”的印象。這種重點(diǎn)不明確、過(guò)度強(qiáng)調(diào)理論知識(shí)的教學(xué)模式會(huì)極大損害學(xué)生的學(xué)習(xí)積極性[1]。針對(duì)以上現(xiàn)狀,有關(guān)軟件工程的課程改革研究層出不窮,但無(wú)一例外都倡導(dǎo)理論與實(shí)踐結(jié)合、案例式教學(xué)的思想。不同于任何一門(mén)編程類(lèi)課程,軟件工程課程的側(cè)重點(diǎn)在于如何將工程的思想引入軟件的開(kāi)發(fā)和維護(hù)中。知識(shí)、技術(shù)、工具是手段,最終目的是在有限的資源下按計(jì)劃完成特定目標(biāo)。因此,在開(kāi)展軟件工程課程的實(shí)踐教學(xué)時(shí),過(guò)度深入某個(gè)特定的技術(shù)點(diǎn)并不利于達(dá)到課程目標(biāo)。在選擇軟件工程教學(xué)案例時(shí),既需要滿足本課程側(cè)重點(diǎn),也需要遵循特定的學(xué)習(xí)方法[2]。

        三、基于課賽融合的單元測(cè)試案例設(shè)計(jì)

        在軟件生命周期中,軟件測(cè)試是保證軟件質(zhì)量的重要手段,其中,單元測(cè)試負(fù)責(zé)對(duì)最小的功能模塊進(jìn)行驗(yàn)證[3]。研究表明,單元測(cè)試能發(fā)現(xiàn)約80%的軟件缺陷,因此,單元測(cè)試在軟件開(kāi)發(fā)過(guò)程中的重要性不言而喻。本文中,單元測(cè)試教學(xué)案例參考2022年全國(guó)職業(yè)院校技能大賽“軟件測(cè)試”賽項(xiàng)(以下簡(jiǎn)稱(chēng)“國(guó)賽”)任務(wù)二題目1,但是進(jìn)行了以下適應(yīng)性調(diào)整:一方面,“國(guó)賽”中要求使用Java語(yǔ)言的JUnit框架,為適應(yīng)軟件工程課程的特點(diǎn),不刻意追求編程技術(shù)難度,在實(shí)際教學(xué)要求中調(diào)整為使用Python語(yǔ)言的Unittest框架;另一方面,“國(guó)賽”中項(xiàng)目二題目1只要求滿足語(yǔ)句覆蓋,但是在單元測(cè)試的教學(xué)范圍中還包括判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋以及路徑覆蓋,因此在教學(xué)要求中追加后幾種覆蓋方式[4]。

        四、實(shí)驗(yàn)過(guò)程

        (一)編寫(xiě)程序

        為完成本案例,首先使用PyCharm創(chuàng)建項(xiàng)目unitTest,此時(shí)項(xiàng)目下會(huì)自動(dòng)創(chuàng)建__init__.py文件。此外,func.py文件中用來(lái)保存實(shí)現(xiàn)圖2中所示流程圖功能的函數(shù)getRes(x, y);__init__.py文件中用來(lái)編寫(xiě)針對(duì)func.py單元的測(cè)試代碼;getResult.py文件用來(lái)實(shí)現(xiàn)完整的輸入、輸出的功能。還需要在該項(xiàng)目下創(chuàng)建文件func.py和getResult.py,項(xiàng)目整體文件結(jié)構(gòu)見(jiàn)圖3。

        由于軟件工程課程的目的不在于深入學(xué)習(xí)編程技術(shù),為消除學(xué)生對(duì)Python編程語(yǔ)言的依賴(lài),因此在定義func.py文件中的函數(shù)getRes(x, y)時(shí),引入海龜編輯器來(lái)完成[5]。海龜編輯器是面向國(guó)內(nèi)Python學(xué)習(xí)者的一款編程學(xué)習(xí)工具。其界面友好,可以讓用戶以搭積木的方式來(lái)學(xué)習(xí)Python,能有效提高學(xué)習(xí)興趣,降低編程的枯燥感。此外,由于其積木模式和代碼模式可以任意轉(zhuǎn)換,也保證了Python代碼編程的專(zhuān)業(yè)度。

        海龜編輯器界面用不同的顏色區(qū)分積木類(lèi)型,為實(shí)現(xiàn)getRes(x, y)的函數(shù)定義,依次用到了函數(shù)、控制、運(yùn)算、變量中的不同積木。其主框架是使用了一塊大的“如果—否則”積木,并在其中嵌入兩塊小的“如果—否則”積木。要注意的是,需要在變量中創(chuàng)建變量a,用來(lái)保存函數(shù)返回值[6]。通過(guò)積木的拖動(dòng)以及匹配不同積木之間凹凸接頭,可以很容易得到getRes(x, y)的積木模式,如圖4所示。將積木模式切換為代碼模式,就可以得到getRes(x, y)的Python代碼,這部分代碼可以直接復(fù)制到func.py文件中。

        __init__.py文件使用Unittest單元測(cè)試框架對(duì)func.py文件中定義的getRes(x, y)函數(shù)進(jìn)行測(cè)試,代碼分為三個(gè)部分,具體如下:

        1.導(dǎo)入U(xiǎn)nittest框架與func.py文件中的MyClass類(lèi)。

        import unittest

        import func

        2.定義mytest單元測(cè)試類(lèi),其中包括setUp、tearDown以及針對(duì)每個(gè)測(cè)試用例的測(cè)試類(lèi),以此對(duì)func單元進(jìn)行測(cè)試。

        class mytest(unittest.TestCase):

        def setUp(self):

        pass

        def tearDown(self):

        pass

        #測(cè)試用例1_1,x和y的輸入為85和65,a的預(yù)期值為2

        def test1_1(self):

        self.assertEqual(func.getRes(85,65),2,'test1_1 success')

        '''其他測(cè)試用例的輸入及預(yù)期值均可參考test1_1在下方定義測(cè)試類(lèi)'''

        3.建立main()函數(shù),構(gòu)造測(cè)試集并執(zhí)行測(cè)試。

        if __name__=='__main__':

        unittest.main()

        getResult.py文件中也需要首先導(dǎo)入func.py文件中的MyClass類(lèi),再使用input和print函數(shù)實(shí)現(xiàn)x值和y值的輸入以及a值的輸出。

        import func

        x = int(input('請(qǐng)輸入x:'))

        y = int(input('請(qǐng)輸入y:'))

        print('a=', func.getRes(x, y))

        (二)選擇測(cè)試用例

        單元測(cè)試包括語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋以及路徑覆蓋等六種類(lèi)型。其含義分別為:

        1.語(yǔ)句覆蓋:使程序中每個(gè)語(yǔ)句至少執(zhí)行一次;

        2.判定覆蓋:使每個(gè)判定的真假分支都至少執(zhí)行一次;

        3.條件覆蓋:使每個(gè)判定的每個(gè)條件的可能取值至少執(zhí)行一次;

        4.判定條件覆蓋:能同時(shí)滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)的取值;

        5.條件組合覆蓋:使程序中所有判定的條件組合至少執(zhí)行一次;

        6.路徑覆蓋:使程序中每條路徑至少執(zhí)行一次。

        在充分解釋以上覆蓋原理后,學(xué)生將為本案例選擇測(cè)試用例,測(cè)試用例的選擇及其結(jié)果將按照表1的格式進(jìn)行填寫(xiě)。

        (三)執(zhí)行程序

        首先,執(zhí)行g(shù)etResult.py文件,確保程序可以從鍵盤(pán)得到x值和y值的輸入,并得到輸出的a值,控制臺(tái)的輸入、輸出界面見(jiàn)圖5。

        接下來(lái)執(zhí)行__init__.py文件對(duì)func單元進(jìn)行測(cè)試。例如,為滿足語(yǔ)句覆蓋選擇了3個(gè)測(cè)試用例,在PyCharm執(zhí)行后得到圖6所示界面,測(cè)試結(jié)果均為綠色對(duì)號(hào),說(shuō)明3個(gè)測(cè)試用例均通過(guò)。為滿足條件覆蓋選擇了3個(gè)測(cè)試用例,執(zhí)行后得到圖7所示界面,測(cè)試結(jié)果中出現(xiàn)黃色的叉號(hào),說(shuō)明有測(cè)試用例沒(méi)有通過(guò)。這時(shí)候需要檢查被測(cè)單元的代碼或者測(cè)試用例的選擇以及預(yù)期結(jié)果是否正確[7]。

        五、結(jié)語(yǔ)

        為提高軟件工程課程授課效果,本文以單元測(cè)試知識(shí)點(diǎn)為例設(shè)計(jì)了一個(gè)教學(xué)案例。其中融入了全國(guó)職業(yè)院校技能大賽軟件測(cè)試賽題,以達(dá)到在教學(xué)中將理論與實(shí)踐相結(jié)合的目的。由于軟件工程側(cè)重點(diǎn)在于將工程的思想引入軟件的開(kāi)發(fā)和維護(hù)中,并不是一味追求編程技術(shù)的難度,而是為了在有限的資源下,借助知識(shí)、技術(shù)、工具,按計(jì)劃完成特定目標(biāo)。本案例的設(shè)計(jì)可以讓學(xué)生在學(xué)習(xí)過(guò)程中掌握單元測(cè)試知識(shí),熟悉Python編程技術(shù),了解海龜編輯器和PyCharm工具。

        參考文獻(xiàn)

        [1]楊波,許福,李冬梅,等.針對(duì)軟件工程課程的人工智能實(shí)驗(yàn)案例設(shè)計(jì)[J].計(jì)算機(jī)教育.2022,333(9):202-206.

        [2]洪玫,嚴(yán)斌宇,余靜.面向?qū)W生能力培養(yǎng)的課程教學(xué)設(shè)計(jì)——以軟件工程專(zhuān)業(yè)為例[J].中國(guó)大學(xué)教學(xué).2022,383(7):39-44.

        [3]郭永平,馬巧梅,龍飛,等.沉浸式軟件工程專(zhuān)業(yè)實(shí)訓(xùn)課程設(shè)計(jì)與實(shí)踐[J].計(jì)算機(jī)教育.2022,331(7):175-179.

        [4]管青.沙盤(pán)模擬式項(xiàng)目驅(qū)動(dòng)的軟件工程教學(xué)模式[J].計(jì)算機(jī)教育.2021,322(10):143-146.

        [5]蔣虹,祁小明.Python起步教學(xué)的有效策略探討[J].中國(guó)現(xiàn)代教育裝備.2023,402(0):43-45+49.

        [6]張?zhí)K,楊元峰,陸公正.軟件測(cè)試中單元測(cè)試案例教學(xué)實(shí)踐[J].電腦知識(shí)與技術(shù).2020,16(13):132-135.

        [7]趙春霞,曹莉,趙營(yíng)穎.基于“項(xiàng)目導(dǎo)向+任務(wù)驅(qū)動(dòng)”的課程教學(xué)模式研究——以軟件工程課程為例[J].科技視界.2021,365(35):46-47.

        猜你喜歡
        單元測(cè)試軟件工程
        依托工作室的軟件工程實(shí)踐教學(xué)研究
        基于工程教育認(rèn)證的《軟件工程》課程教學(xué)質(zhì)量建設(shè)研究 
        關(guān)于提高軟件工程實(shí)踐教學(xué)質(zhì)量的幾點(diǎn)思考
        關(guān)于如何創(chuàng)新和完善計(jì)算機(jī)軟件工程管理的探討
        一年級(jí)上冊(cè)第五單元測(cè)試
        一年級(jí)上冊(cè)一、二單元測(cè)試
        第五單元測(cè)試卷
        第六單元測(cè)試卷
        九九精品国产亚洲av日韩| 色综合视频一区中文字幕| 18禁无遮挡无码网站免费| 国产资源精品一区二区免费| 国产精品人成在线765| 一区二区三区国产在线视频| 国产揄拍国产精品| 伊人久久中文大香线蕉综合| 日韩高清av一区二区| 亚洲成人福利在线视频| 色播亚洲视频在线观看| 亚洲欲色欲香天天综合网| 亚洲二区三区在线播放| 国产偷国产偷亚洲综合av| 国产xxxxx在线观看| 97久久精品人人妻人人| 精品国产一区二区三广区| 精品国产一区二区三区av| 美女视频黄的全免费视频网站| 国产精品福利小视频| 亚洲天堂无码AV一二三四区| 久久精品国产69国产精品亚洲| 色综合av综合无码综合网站| 天美麻花果冻视频大全英文版 | 日本中文一区二区在线| 无码乱人伦一区二区亚洲一| 精品免费人伦一区二区三区蜜桃| h动漫尤物视频| 国产白浆一区二区三区佳柔| 邻居少妇张开腿让我爽了一夜| 中文字幕无码av激情不卡| 色婷婷狠狠97成为人免费| 精品亚洲国产日韩av一二三四区| 狠狠人妻久久久久久综合蜜桃| 亚洲国产中文在线二区三区免| 一区二区三区在线观看日本视频| 手机免费在线观看av网址 | 亚洲国产日韩精品综合| 麻豆精品一区二区综合av| 久久综合九色综合欧美狠狠| 亚洲AV无码国产精品久久l|