余婧
摘要:Python是人工智能領(lǐng)域重要編程語言之一,是高職計算機(jī)相關(guān)專業(yè)一門新興課程。軟件測試課程理論抽象、實踐操作性較強(qiáng),使用Python為軟件測試課程設(shè)計教學(xué)案例,加深學(xué)生對軟件測試重要概念的理解;同時,使用Python設(shè)計典型的測試用例,培養(yǎng)學(xué)生動手實踐能力,提高教學(xué)效果。
關(guān)鍵詞:軟件測試;Python;課程設(shè)計
中圖分類號:TP311;G712? ? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)02-0095-02
2018年4月,教育部印發(fā)了《高等學(xué)校人工智能創(chuàng)新行動計劃》,提出:加強(qiáng)人工智能領(lǐng)域?qū)I(yè)建設(shè)。推進(jìn)‘新工科建設(shè),形成‘人工智能+X復(fù)合專業(yè)培養(yǎng)新模式。根據(jù)《普通高等學(xué)校高等職業(yè)教育(專科)專業(yè)設(shè)置管理辦法》,教育部確定了“人工智能技術(shù)服務(wù)專業(yè)”為2019年度新增專業(yè)。該專業(yè)人才就業(yè)方向“從事人工智能產(chǎn)品的開發(fā)與測試、數(shù)據(jù)處理、系統(tǒng)運(yùn)維、產(chǎn)品營銷、技術(shù)支持等工作?!备叩嚷殬I(yè)教育階段培養(yǎng)社會應(yīng)用型人才為主,計算機(jī)及相關(guān)專業(yè)在課程設(shè)置、教學(xué)設(shè)計、實訓(xùn)實踐等環(huán)節(jié)應(yīng)積極向人工智能方向靠攏。隨著人工智能行業(yè)的迅速發(fā)展,人工智能主流語言Python語言也成為高等職業(yè)院校人工智能專業(yè)的必修課之一。
在軟件開發(fā)項目中,軟件測試工作量往往占軟件開發(fā)總工作量的40%以上[1]。而在軟件開發(fā)的總成本中,用在測試上的開銷要占30%~50%?!盾浖y試》課程是一門理論抽象、實踐性很強(qiáng)的計算機(jī)專業(yè)課程。課程體系設(shè)計時,應(yīng)融入人工智能的理論及實踐環(huán)節(jié)的操作[2]。
1 基于Python的軟件測試課程教學(xué)目標(biāo)
基于Python的軟件測試教學(xué)實踐課,需要學(xué)生已經(jīng)學(xué)習(xí)并且基本掌握Python語言編譯運(yùn)行、能夠編寫結(jié)構(gòu)化程序代碼、調(diào)用模塊、理解面向?qū)ο蟮乃枷搿?/p>
Python語言有強(qiáng)大的編程能力、良好的可移植性以及豐富的類庫。Python在軟件測試中可以用于編寫測試用例、自動化測試模塊調(diào)用。
在軟件測試課程中,滲透Python語言的模塊調(diào)用、編寫測試用例,使學(xué)生在掌握軟件測試基本測試方法、測試步驟的同時,鞏固已學(xué)的Python知識,并加以應(yīng)用。
2 Python軟件自動化測試
軟件測試課程中,十分重視模塊獨立性,強(qiáng)調(diào)“高內(nèi)聚、低耦合”。在模塊獨立性講解過程中,引入Python語言自帶的測試模塊幫助學(xué)生理解模塊的概念及應(yīng)用。例如,C++語言單元測試由CPPUnit類實現(xiàn),Python語言由PyUnit模塊實現(xiàn)[3]。PyUnit是基于JUnit和XUnit開發(fā)的單元測試框架。該框架提供了統(tǒng)一的方法測試由Python語言開發(fā)的軟件,同時,提供了圖形用戶界面,提高單元測試的可用性。
白盒測試中,根據(jù)測試程度由弱到強(qiáng),分別有:語句覆蓋、判斷覆蓋、條件覆蓋、判斷/條件覆蓋、條件組合覆蓋、路徑覆蓋。Python程序使用Coverage.py工具進(jìn)行代碼覆蓋率測試。該工具提示程序已經(jīng)執(zhí)行的部分,然后對數(shù)據(jù)進(jìn)行分析,確定未被執(zhí)行的代碼。根據(jù)未被執(zhí)行的程序,增加未覆蓋語句的測試用例,提高了軟件測試的質(zhì)量。
3 軟件測試Python實踐課設(shè)計
三角形問題是軟件測試中的一個典型案例,使用Python設(shè)計測試用例具有較強(qiáng)的教學(xué)實踐意義。
3.1 三角形分類程序的測試方案的設(shè)計
讀入三個整數(shù)值代表三角形的三條邊的長度,程序判斷這三個值能否構(gòu)成三角形,如果能夠,則輸出三角形是等邊、等腰或任意三角形的分類信息。綜合使用邊界值分析、等價類劃分和錯誤推測等技術(shù)為此程序設(shè)計測試用例。第一步,確定測試策略。由于被測程序已有明確的要求,判斷能否構(gòu)成三角形,如能構(gòu)成,則再判斷能構(gòu)成等邊、等腰或任意三角形哪一種。首先運(yùn)用黑盒測試法設(shè)計測試用例,然后再用白盒測試法驗證其完整性,必要時再補(bǔ)充測試用例。第二步,在黑盒測試中首先要用等價類劃分法劃分輸入等價類,然后用邊值分析法和錯誤推測法作補(bǔ)充。 測試用例設(shè)計如表1所示:
3.2 三角形問題的分析
三角形問題接受三個整數(shù)a、b和c作為輸入,作為三角形的邊。程序的輸出是:等邊三角形、等腰三角形、不等邊三角形和非三角形。整數(shù)a、b和c必須同時滿足以下條件:f1:a>=1、f2:b>=1、f3:c>=1、f4:a
3.3 三角形問題的Python代碼實現(xiàn)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
flag=False
IsATriangle = False
Step1: Input a,b,c
a = int(input('a='))
b = int(input('b='))
c = int(input('c='))
if (a>=1) and (b>=1) and (c>=1):
flag = True
Step2: Isnot a Triangle?
if (a
IsATriangle = True
Step3: Determine Triangle Type
if flag == False:
print (“輸入有誤,請重新輸入”)
if IsATriangle == False:
print (“非三角形”)
if flag and IsATriangle:
if (a==b) and (b==c):
print (“等邊三角形”)
elif (a!=b)and (b!=c) and (c!=a):
print (“不等邊三角形”)
else:
print (“等腰三角形”)
4 軟件測試Python實踐課教學(xué)效果
如下圖1~圖5,是課堂教學(xué)中學(xué)生使用Python語言完成測試情況,分別是:等邊三角形、等腰三角形、不等邊三角形、非三角形、輸入有誤這五種情況。
教學(xué)過程中,將學(xué)生分成4~5組,每組學(xué)生負(fù)責(zé)其中一組測試結(jié)果。組長組織討論,組內(nèi)同學(xué)協(xié)調(diào)完成一組實驗,并由其中一位同學(xué)代表進(jìn)行總結(jié)或體會分享。學(xué)生動手實踐后體會及總結(jié)主要有以下四點:第一、測試用例設(shè)計的原則,黑盒測試的有效等價類和無效等價類的設(shè)計;第二、Python編程及調(diào)試中遇到的問題;第三、Python語言模塊化在軟件測試中的應(yīng)用;第四、人工智能背景下,軟件測試的新變化。
通過實踐交流學(xué)習(xí),大家對軟件測試用例有了更深刻的了解。比較純理論教學(xué),引入Python實踐環(huán)節(jié),學(xué)生對課程的參與度有所提高,學(xué)生掌握新知識、新技能的興趣較強(qiáng)。
5 結(jié)束語
軟件測試質(zhì)量的高低直接關(guān)系項目的成敗,測試質(zhì)量越高,就能越早發(fā)現(xiàn)問題,減少后期解決問題的成本。Python語言功能強(qiáng)大,具有很好的跨平臺性,可以運(yùn)用于很多領(lǐng)域的測試:數(shù)據(jù)庫測試、網(wǎng)頁測試、性能測試等。
人工智能時代的到來,計算機(jī)專業(yè)軟件測試課程應(yīng)順應(yīng)時代發(fā)展需求,改進(jìn)教學(xué)內(nèi)容、增加教學(xué)實踐環(huán)節(jié),提高學(xué)生的動手實踐能力。
參考文獻(xiàn):
[1] Jorgensen P C. Software Testing[M]. 4 版. 北京: 機(jī)械工業(yè)出版社, 2017.
[2] 朱少民. 軟件測試課程的問題驅(qū)動教學(xué)模式探索[J]. 中國大學(xué)教學(xué), 2018(10):32-36.
[3] 朱少民. 全程軟件測試[M]. 北京: 人民郵電出版社, 2019.
【通聯(lián)編輯:謝媛媛】