馬曉丹 王忠 范青剛 陳菁
[摘 要] 隨著軍用軟件設計復雜度和質量要求的不斷提高,對軍隊院校傳統的程序設計基礎課教學提出了新的要求。為使學生的程序設計過程規范化,有必要在基礎教育中提高他們的軟件測試能力。本文闡述了以基礎課程內容為基礎,引入和滲透軟件測試思想和技術的解決思路。
[關鍵詞] 程序設計基礎課;測試;融合
[作者簡介] 馬曉丹(1985—),女,寧夏銀川人,碩士,講師,研究方向為軟件工程與測試。
[中圖分類號] G642.0? ? [文獻標識碼] A? ? [文章編號] 1674-9324(2020)26-0270-02? ? [收稿日期] 2020-02-09
隨著計算機技術的高速發展,現代軍事裝備中計算機軟件的應用比以往更加廣泛而深入,軟件開發中出現缺陷的幾率也越來越高,而軍用軟件的廣泛應用又對軟件質量提出了更高的要求。因此,現實需求對軍用軟件開發人員的素質也提出了更高的要求。
程序設計基礎是對實際編程要求很強的基礎課程,要求學員既要學好語言語法知識,又要通過大量的實際操作掌握編程的技巧技能。而目前程序設計基礎的內容相對缺乏相應的測試和應用背景知識,使得這門課的實用意義大大下降。本文從測試理論與程序設計基礎相結合的角度,討論如何引導學員從測試和應用的角度來解決程序中遇到的開發與設計的問題。
一、根據軍用軟件的設計和開發需求改變現有的教學理念
隨著軍用軟件規模的不斷擴大、軟件的質量和可靠性越來越受到重視的背景下,軟件測試的內涵和外延也隨之愈加復雜起來。學員軟件測試能力的提升對于應對實際崗位的需求具有巨大的實際意義,需要我們通過如下主要措施改變現有的教學理念:
1.培養學員學習軟件測試技術的興趣。在教授計算機程序設計類課程過程中,應有意識地讓學員了解軟件測試在整個軟件工程中的重要性,教給學員實際可用的軟件測試知識,并讓學員了解當前軍用軟件在軟件實際測試中采用的標準,使學員學習起來具有明確的目的性,同時也能提高學員的學習熱情。
2.讓學員在學習基礎課程過程中積極應用測試技術。在不改變程序設計基礎原有教學體系內容的情況下,同時采用融合的方式滲透軟件測試技術的基礎知識和理論,并對編寫的小程序進行簡單的測試。
二、常用測試技術與程序設計基礎課程中知識點相融合的研究[2]
1.可以將軟件測試技術中的白盒測試技術融入程序設計基礎課中選擇、循環的知識體系之中。白盒測試技術也稱結構測試或邏輯驅動測試,主要目的是測試程序的內部結構是否邏輯正確,在程序設計基礎課程中,語法講解主要對應的是順序結構、選擇結構和循環結構,在講解三個基本結構的時候可以將白盒測試中的邏輯覆蓋和語句覆蓋的思想融入其中,使學生明白什么是代碼走查,以及代碼走查的意義,培養編寫完一個簡單功能的代碼段之后進行邏輯上的自我檢錯的編程習慣。根據覆蓋目標的不同和覆蓋源程序語句的詳盡程度,邏輯覆蓋又可分為由弱到強的語句覆蓋、判定覆蓋、條件覆蓋、條件/判定覆蓋、條件組合覆蓋等,路徑覆蓋可以在教學中根據一個實際的選擇結構、循環結構的例子,來教授學員各種覆蓋測試的含義和用例的編寫。
2.可以將軟件測試技術中的黑盒測試思想中的等價劃分技術、邊界值分析技術融合在程序調試和正確性驗證的學習之中。黑盒測試又叫功能測試、數據驅動測試或基于需求規格說明書的功能測試。該類測試注重于測試軟件的功能性需求,檢查程序的功能是否符合它的功能說明。這種視角的測試方法能更好、更真實地從用戶角度來考察被測系統的功能性需求實現情況。常見的方法是等價類劃分、邊界值分析、因果圖分析和錯誤猜測。可以通過采用比較基本的等價劃分和邊界值分析兩種思想選取測試不同種類的數據,測試程序是否在所有情況下都可以正常運行,并引導學員明白利用等價劃分技術分析數據的意義所在,明白程序的健壯性評價指標的正確含義。
3.可以將軟件測試技術中的單元測試與程序設計基礎中的有關于函數章節相結合,把程序設計中的函數認為是一個模塊,毫無疑問,一個函數應該完成一個獨立的功能。編寫完一個函數之后,應該對之進行函數功能的測試,也可認為是單元測試,確認這個函數的正確性,然后再進行下一個函數的編寫。
4.可以將軟件測試技術中的集成測試與程序設計基礎課中文件的概念相結合。可以將程序設計基礎中的若干個函數模塊組成一個文件進行單元測試,確認本模塊的正確性之后,和其他函數模塊進行逐個集成,學習集成測試的相關知識。
5.可以將軟件測試技術中的功能測試與程序設計基礎課中的軟件需求相結合。集成所有文件和資源后,參照功能需求手冊進行功能測試,由假定的用戶人員完成驗收測試。完成完整的測試流程后,在不同分組中分別扮演開發人員和用戶,每個組都要以用戶的視角和身份測試運行其他小組的程序,確認程序是否良好地實現了軟件需要。
最終達到使學員在編寫程序時充分融入軟件測試意識,即在進行軟件開發和程序編寫時注重技術文檔的書寫。在對國軍標解讀之后,建立良好的編程風格和習慣,養成編程的可讀性、代碼注釋率、縮進等規范化意識,以用戶的視角提出對不合理數據進行軟件測試,通過這種測試有助于全面提高了學員綜合應用能力與創新思維。在實踐的教學效果上,能夠觀察到學員在代碼書寫、流程圖表示規范化上取得了比較滿意的效果。
三、學員測試思想和基本技能的培養
為了進一步引導學員從軟件測試的角度解決和完善程序設計,提高學員的綜合素養,在常用測試技術與程序設計基礎課程中知識點相融合的過程中,應當注意以下幾個習慣的培養。
1.拋開開發者心態,以用戶的視角對待功能開發。在開發和測試的過程中應該以第三方用戶的角度,培養自己對用戶需求的感知。做好需求分析是有效開發的第一步,在實際開發中應盡可能多地和用戶溝通實際的應用需求,并且在分組測試中盡可能地觀察其他小組對功能不夠清晰的用戶使用軟件的方法及遇到的問題,多從用戶的角度去考慮問題,更全面地考慮程序設計的任務。
2.嚴肅對待分組測試中的代碼缺陷。在分組測試中,各小組要正確面對其他小組開發軟件中出現的軟件缺陷,開發人員應該學會及時地與測試或用戶進行溝通,以便實現對錯誤的定位和加以更正,從而獲得具有實際應用價值的項目體驗,從別人如何找到代碼缺陷的過程中學到更多關于軟件測試指標的評價意義,以提高自己的觀察力。
3.注意開發過程中的文檔開發的規范化。在完整的測試流程的體驗中可以讓學員體會到文檔開發的重要性,認識到合乎規定需求的說明書、規格說明書對整個項目測試驗收的重要性。在開發過程中養成良好的開發習慣及代碼編寫風格,重視代碼注釋率對小組協同溝通工作的重要性,初步理解國軍標的相關規定,這對以后的實際開發工作具有重要意義。
4.測試的過程應以發現軟件的缺陷為主要目的。要讓學員明白軟件測試主要是通過各種手段找出軟件中潛在的錯誤和缺陷,以提高軟件的質量和可靠性。因此,軟件測試的主要目的是為了發現軟件的錯誤和缺陷,而錯誤和缺陷的更正則會提升我們對軟件質量的信心。
5.積極運用測試方法和技巧。在進行測試設計的時候,無論是使用等價類劃分還是邊界值,使用邏輯覆蓋還是語句覆蓋,都是有效的設計方法。在實際的開發和測試過程中,要有意識地培養學員積累不同測試方法所適用的場合,不斷積累經驗并嘗試找到更有創造性的方法。
四、結束語
程序是構成軟件的主要組成部分,程序的規范性、正確性、健壯性等問題關系到整個軟件的質量。軟件開發和程序設計是一個完整的過程,而不只是代碼編寫。要讓學員意識到代碼編寫只是軟件開發的一個小部分,在程序設計的基礎理論課程中應該培養學生編程能力的同時加強對軟件測試能力的滲透培養,增強對軟件和程序的宏觀認識,解決學員在實際開發工作中存在的編碼不規范、文檔不完善的問題。
參考文獻
[1]馬紅星,張洋.軍用軟件自動化測試與質量監督的探討[J].電子產品可靠性與環境試驗,2018(6).
[2]劉舒婷.軟件測試思維在“程序設計基礎”教學中的培養初探[J].中國校外教育,2016(3).
Research on Integration of Testing Thinking in Program Design Basis Course in Military Academies
MA Xiao-dan,WANG Zhong,FAN Qing-gang,CHEN Jing
(Rocket Force University of Engineering,Xi'an,Shaanxi 710025,China)
Abstract:With the increasing complexity and quality requirements of military software design,new requirements have been raised for the traditional teaching of Program Design Basis course in military academies.In order to standardize students' program design process,it is necessary to improve the software testing ability in basic education.Based on the content of basic course,this article elaborates on the solutions of introducing and integrating software testing ideas and technologies.
Key words:Program Design Basis course;testing;integration