?

軟件測試課程教學的問題與思考

2009-06-19 05:53辜萍萍
中國現代教育裝備·高教 2009年9期
關鍵詞:軟件測試學習方法教學

辜萍萍

摘 要:本文分析并總結了大學本科計算機科學與技術專業和軟件工程專業學生在軟件工程課程學習中存在的若干問題,提出一些值得嘗試的解決方法和建議,對學生提高學習效率及青年教師改進教學質量兼具現實的指導意義。

關鍵詞:軟件測試 教學 學習方法

在人們愈加注重質量與效率的當今社會,軟件產品的質量自然備受IT行業與所有用戶的關注。軟件測試雖然只是軟件開發工作中的一部分,卻是控制軟件質量的重要手段,在國內也是逐漸興起的產業。統計數據表明[1],目前該領域需要大量技術型與管理型人才,由此,越來越多高校在計算機系低年級開設軟件工程的基礎上,將軟件測試獨立成一門課程在高年級開設。但是,由于該課程兼具理論性與實踐性,加之認識偏差與學習方法存在一些問題,對于計算機專業與軟件工程專業的高年級學生而言,要很好地掌握相關原理與技術也并非易事。本文結合筆者的工作實際,討論了教學過程中發現的問題,并提出相應的解決辦法與學習建議,希望能提高學生學習與教師教學的質量和效率。

一、認識上存在偏差

軟件測試直到大學三年級才開設,雖然學生在之前的學習中已經接觸了軟件工程相關理論知識,但是畢竟缺乏對軟件測試系統的學習,因此他們對軟件測試領域各方面工作的認識難免是模糊不清的,甚至存在誤解。這些錯誤的觀點主要可以歸納為以下4類:

1.測試軟件不如開發軟件重要,很難得到重視,相關的工作崗位相對低等,前途比較渺茫。

2.軟件測試就是在高頻率使用軟件過程中尋找BUG(錯誤),這樣的工作沒有編寫程序的煩惱,遠比開發軟件容易地多,如果待測的軟件是游戲軟件,那就更加其樂無窮。

3.軟件測試是軟件生命周期中最后一個階段的工作,在軟件開發完成之后才能夠測試。

4.既然找錯誤是軟件測試人員的任務,那么如果測試完成的軟件在真正用戶使用時仍然無法滿足他們需求,則說明該軟件沒有完全測試,應該歸咎于測試人員。

對于這些不正確的認識,我們不能完全否定,因為從中可以看出學生對軟件測試工作具有一定的積極性和較強的責任心,這正是他們應該具備的且難能可貴的素質。當然,更重要的是在教授相關原理及方法之前就應該澄清他們對軟件測試的誤解并加以糾正。因此,筆者依據權威網站公布的近幾年軟件測試從業人員的調查報告[2],在開學的第一堂課上就讓學生們及時了解當前的行業動態:軟件測試是IT行業新興領域,越來越得到業界的重視且需要大量技術型與管理型人才,所以,學習該門課程的重要性與必要性毋庸置疑。同時,在第一章節關于軟件測試概述的授課中,可以有的放矢地用舉例子、擺事實最通俗易懂的方式闡明正確觀點。例如,針對他們認為的軟件可以完全測試這一說法,就使用如圖1所示的反例證明完全測試是不現實的[2]。當然,僅僅利用前幾節課的講解很難讓學生完全改變看法,填鴨式的灌輸過程必然遭到質疑。所以,完整透徹的糾正過程是貫穿在整個學期的教學之中的。換言之,學生只有通過系統地學習軟件測試相關內容之后才會更加正確并深刻地認識軟件測試。

二、先行課的掌握不足

學生在之前幾年的學習中已經接觸了許多基礎課程,包括離散數學、程序設計、軟件工程等,而這些恰恰是學習軟件測試必備的先修課程。但是,從上課的表現來看,學生對這些課程中一些重要的知識掌握不足,導致對新課的學習倍感吃力從而影響學習的興趣和信心。主要表現為:

1.數學底子薄

軟件測試中黑盒測試用例的設計方法大都以數學知識為依據的,例如,其中的等價類劃分法與邊界值分析法對應著集合論與函數知識、決策表驅動分析法與因果圖法對應著命題邏輯知識。學生的數學基礎不夠扎實,因此,在介紹每一種新方法時需要花費一定時間復習相應的數學知識,否則,學生只能知其然不知其所以然,盡管老師費盡唇舌,學生也難以透徹地理解更難以靈活地運用方法。

2.代碼分析能力弱

科學合理的軟件測試流程是從軟件需求分析階段開始就一直伴隨著軟件生命周期而分步驟進行的。在與代碼開發并行的單元測試階段,便需要對代碼進行檢查和測試。這就要求學生既要懂得測試的技術又要具備分析代碼結構的能力,甚至能夠自己編寫測試驅動程序。所以,當寫代碼成為學生的絆腳石時,他們就無法輕易地掌握該階段軟件測試的方法。

3.缺乏軟件工程背景知識

軟件測試是近幾年在軟件工程這個大環境下成長起來的,因此與軟件工程體系有著千絲萬縷的聯系。例如,軟件測試的對象是隨著進度的發展而改變的,從需求分析階段開始一直到軟件編寫整合完成,測試的重點相應地從軟件需求說明書向軟件的功能和性能轉變。同時,軟件測試在不同的軟件開發模式下具有不同的特點。所以,如果學生對軟件工程背景知識模糊不清,那么將來就很難在軟件開發各階段采用恰當的測試手段。

因此,鑒于學生的這種情況,為了讓他們更易于接受新方法新知識,必須在上新課前給他們做適當的復習,可這樣勢必直接影響教學進度。所以,筆者認為,這個溫故而知新的過程應該留給學生在課前自行完成,即每次在結束一個知識點的教學時,提前將下一節新課內容所涉及的基礎知識布置給學生作為預習的內容,從而提高每一堂新課的聽課效率。

三、缺乏對工程化知識的學習興趣

高年級的同學對技術的學習往往是摩拳擦掌的,而對于理論性較強的工程化知識就有些無動于衷了。因為,具體的技術往往可以是現學現用的,比如對具體的軟件功能可以練習編寫適當的測試用例,而教材中關于軟件測試流程、軟件測試團隊等工程化內容的描述難免讓學生覺得抽象且教條化,但是,這些知識無不是前人根據多年的工作經驗總結得出的心得和體會,確是一筆寶貴的財富。而且,以往手工作坊式的軟件開發已逐步被規范的工程化運作模式所替代,只有在這些工程化知識的指導下才能更有效地發揮所學技術以適應當代的工作需求。所以,如何重新點燃學生對這些內容的學習熱情便是我們作老師必須思考的一個問題。筆者在教學中嘗試采用以下兩種方法提高學生學習積極性:

1.結合多媒體使用的引導式教學

始終采用課堂講授的方式,勢必效果欠佳。若適當采用引導式教學,設計“提問——解決方法——再提問”的方式讓學生參與,用問題去激發學生思考,啟發他們如何解決問題,以此加深他們對經驗方法的理解程度。例如,在講解軟件測試的第一個步驟——制定測試計劃的過程中,先給學生設定一個情境,假設他們要準備一場認證考試,或是展開一次遠足旅行,那么要做哪些準備工作。這樣的問題很容易促使學生暢所欲言,也活躍課堂氣氛。當學生提到在制定計劃時要對意料不到的事有所準備時,正好可以引出在制定測試計劃中同樣要識別和防范風險的問題,接下來就可以順水推舟進一步提問他們,在測試過程中又會有哪些風險,如果學生無法馬上找到問題的突破口的話,就先給出部分參考答案開闊他們的思路,再讓他們繼續補充,由此也可以鍛煉他們舉一反三的能力。最后,再給出完整的參考答案。同時,采用幻燈片動畫效果動態地演示該過程,如圖2所示。

2.設計實踐項目

為了讓學生能切身體驗工程化知識的指導作用,筆者根據學生總體的能力水平,設計了規模適中的實踐項目,要求他們現學現用,完成從制定測試計劃到評估測試的全過程。例如,在制定測試計劃中,除了上述的識別風險問題,學生還需要承擔資源規劃與進度安排等實際問題。同時,對于所有提交的文檔結果都要求他們按照工程化的模版撰寫,從而養成良好的學習和工作習慣。通過項目的鍛煉,學生分析問題和解決問題的能力會逐漸得到提高。

四、團隊意識較薄弱

一般情況下,軟件項目的開發并非個人獨立可以完成的,而是需要軟件開發團隊中每個成員的溝通與協作來共同作業。同樣,軟件測試也需要團隊分工合作。在單元測試階段,常常由編寫代碼的人員本身動態測試自己的代碼段,但是之后的集成測試、系統測試就應該由專業的測試人員來完成,而最后的驗收測試則由軟件的最終用戶來實施。因此,團隊協作意識是軟件測試人員必備的基本素質。然而,當代學生身上存在著一個普遍問題,就是以自我為中心,缺乏集體觀念,在團體中出現離群現象的也不少,這樣對自身將來參加軟件開發工作特別不利。因此,要培養出高素質的軟件測試人員,就應該在課程教學中融入團隊意識教育,設置一些必要的環節來提高學生的團隊協作能力及人際溝通與交流能力。

所以,在布置實踐項目時,并不要求學生獨立完成任務,而是以雙人或多人組隊搭檔的方式共同合作。從開發代碼開始就明確分工,除了單元代碼段的動態測試由各自獨立完成,其余的部分由隊員交換檢查。這樣勢必增加學生在團隊中相互溝通與協作的機會,培養學生情感領域的品質,也遵從了軟件測試中應避免只由本人檢查自己的程序的原則從而高效地執行軟件測試過程。

參考文獻

[1]2007首屆中國軟件測試從業人員調查報告[DB/OL].www.51testing.com,2007

[2]陳文濱,朱小梅.軟件測試技術基礎[M].北京:清華大學出版社,2008. 7-8

猜你喜歡
軟件測試學習方法教學
軟件測試方向人才培養“1+X”融合研究
大數據背景下軟件測試技術的發展
“自我診斷表”在高中數學教學中的應用
關于 Web 應用系統的軟件測試的研究
在遺憾的教學中前行
小學音樂快樂學習的三種方法
高中數學教學方法淺析
論高中物理電路知識的學習方法及解題思路
小學語文低段識字教學的意義及學習方法
計算教學要做到“五個重視”
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合