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