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

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

2023-04-29 21:51:01林喜文李佳佳高鳳毅張淑桐
信息系統工程 2023年6期

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

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

關鍵詞:軟件工程;單元測試;課賽融合;Python

一、前言

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

二、軟件工程教學現狀

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

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

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

四、實驗過程

(一)編寫程序

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

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

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

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

1.導入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的預期值為2

def test1_1(self):

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

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

3.建立main()函數,構造測試集并執行測試。

if __name__=='__main__':

unittest.main()

getResult.py文件中也需要首先導入func.py文件中的MyClass類,再使用input和print函數實現x值和y值的輸入以及a值的輸出。

import func

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

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

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

(二)選擇測試用例

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

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

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

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

4.判定條件覆蓋:能同時滿足判定、條件兩種覆蓋標準的取值;

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

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

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

(三)執行程序

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

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

五、結語

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

參考文獻

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

[2]洪玫,嚴斌宇,余靜.面向學生能力培養的課程教學設計——以軟件工程專業為例[J].中國大學教學.2022,383(7):39-44.

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

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

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

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

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

主站蜘蛛池模板: 亚洲无码在线午夜电影| 欧美色伊人| 亚洲欧美在线综合一区二区三区| 婷婷午夜影院| 干中文字幕| 国产精品成人不卡在线观看| 亚洲成人网在线观看| 这里只有精品免费视频| 久久夜夜视频| 国产精品内射视频| 无码国内精品人妻少妇蜜桃视频| 91极品美女高潮叫床在线观看| 亚洲无线国产观看| 亚洲人成电影在线播放| 日韩午夜福利在线观看| 老司国产精品视频91| 国产成人精品一区二区三区| 国产簧片免费在线播放| 玩两个丰满老熟女久久网| 久久黄色视频影| 她的性爱视频| 国产一区二区三区免费观看| 久久综合色播五月男人的天堂| 伊人久综合| 欧美亚洲一区二区三区导航| 国产精品视频第一专区| 国产免费高清无需播放器 | 国产成人高清精品免费软件| 成人综合在线观看| 欧美日本二区| 免费黄色国产视频| 国产在线精品美女观看| 国产成人精品日本亚洲| 亚洲中文字幕无码mv| 免费又爽又刺激高潮网址| 色婷婷亚洲综合五月| 91娇喘视频| 99re在线观看视频| 三上悠亚一区二区| 欧美激情视频二区| 亚洲天堂啪啪| 无码'专区第一页| 国产麻豆aⅴ精品无码| 40岁成熟女人牲交片免费| 99re66精品视频在线观看| 国产精品视频猛进猛出| 久久久久免费精品国产| 美女无遮挡免费视频网站| 久久特级毛片| 久久无码免费束人妻| 国产一二三区视频| 日本免费a视频| 国产亚洲欧美日韩在线一区| 国产一国产一有一级毛片视频| 久久久黄色片| 蜜桃臀无码内射一区二区三区| 久久久91人妻无码精品蜜桃HD| 欧美亚洲国产一区| 成人综合久久综合| 91视频国产高清| 人人妻人人澡人人爽欧美一区| 爽爽影院十八禁在线观看| 亚洲欧美自拍中文| 欧美黄网在线| 精品精品国产高清A毛片| 色婷婷在线播放| 国产网站在线看| av大片在线无码免费| 国产精品一区在线麻豆| 98精品全国免费观看视频| 亚洲欧美不卡视频| 亚洲人成日本在线观看| 人妻免费无码不卡视频| 免费xxxxx在线观看网站| 免费福利视频网站| 国产日韩欧美精品区性色| 久久亚洲综合伊人| 国产一区在线观看无码| 永久天堂网Av| 亚洲永久色| 亚洲综合欧美在线一区在线播放| 国产一区二区精品高清在线观看|