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

?

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

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

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

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

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

一、前言

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

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

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

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

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

四、實驗過程

(一)編寫程序

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

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

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

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

1.導(dǎo)入Unittest框架與func.py文件中的MyClass類。

import unittest

import func

2.定義mytest單元測試類,其中包括setUp、tearDown以及針對每個測試用例的測試類,以此對func單元進行測試。

class mytest(unittest.TestCase):

def setUp(self):

pass

def tearDown(self):

pass

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

def test1_1(self):

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

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

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

if __name__=='__main__':

unittest.main()

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

import func

x = int(input('請輸入x:'))

y = int(input('請輸入y:'))

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

(二)選擇測試用例

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

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

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

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

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

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

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

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

(三)執(zhí)行程序

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

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

五、結(jié)語

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

參考文獻

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

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

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

[4]管青.沙盤模擬式項目驅(qū)動的軟件工程教學(xué)模式[J].計算機教育.2021,322(10):143-146.

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

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

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

猜你喜歡
單元測試軟件工程
依托工作室的軟件工程實踐教學(xué)研究
基于工程教育認(rèn)證的《軟件工程》課程教學(xué)質(zhì)量建設(shè)研究 
關(guān)于提高軟件工程實踐教學(xué)質(zhì)量的幾點思考
關(guān)于如何創(chuàng)新和完善計算機軟件工程管理的探討
一年級上冊第五單元測試
一年級上冊一、二單元測試
第六單元測試卷
第五單元測試卷
永福县| 临猗县| 安化县| 平顶山市| 济阳县| 侯马市| 沙田区| 武隆县| 康平县| 宁南县| 叶城县| 丽水市| 毕节市| 康马县| 白沙| 堆龙德庆县| 郧西县| 鹰潭市| 马鞍山市| 普洱| 武鸣县| 垦利县| 新民市| 拉萨市| 崇左市| 昆山市| 措勤县| 郯城县| 正宁县| 长寿区| 县级市| 浙江省| 镇巴县| 成武县| 定西市| 永清县| 西华县| 昭平县| 景谷| 那坡县| 开封县|