狄喜鳳
(江南機電設計研究所 貴州省貴陽市 550000)
隨著計算機技術的不斷發展和成熟,軟件產品已經逐漸應用于社會的各個領域,從日常的手機APP 軟件、銀行系統辦公軟件、政府辦公軟件到人工智能機器人、航空航天軟件,均體會到軟件給日常生活和經濟發展帶來了很大的便利性。但是隨著軟件的功能越來越復雜,伴隨著一些軟件的問題出現,暴露出來的有些問題甚至影響到了人類的生命安全,因此人們逐漸意識到需要對軟件進行測試,逐漸提出了軟件測試的概念。
在整個軟件開發過程中,軟件測試作為最后一道防線,軟件測試是保證軟件可靠性的主要方法之一,其目的是發現軟件錯誤,提高軟件產品質量[1,2]。在上世紀80年代IEEE 給出的定義是:“使用人工或自動手段來運行或測定某個系統的過程,其目的在于檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別[3]”。然而隨著社會的不斷發展,人們對于軟件功能的需求越來越多,軟件迭代的周期逐漸縮短導致留給軟件測試的時間越來越少,如何能夠在短時間內進行詳細的測試是值得我們思考的問題。
目前的文獻多是關于自動化測試工具方面的介紹,郝彥文曾提出基于遺傳算法的測試用例自動生成方法[4],方巍提出了借助Selenium 工具對Web 類型軟件進行自動化測試[5],孫寶云構建了基于UML 活動圖的測試用例自動生成軟件系統,實現基于分支覆蓋準則的單元測試用例生成[6],張帆利用基于Eclipse 平臺的自動化測試軟件,進行基于RFT 軟件的Web 界面自動化測試設計及實現[7],基于魏雪卉通過分析嵌入式軟件測試常出現的問題,提出了基于嵌入式軟件配置項測試技術及策略[8],而對界面類軟件測試策略介紹較少,軟件測試的重點在于提高軟件的質量,工具只是輔助測試工作的,因此掌握不同類型軟件的測試功能點是極其重要的。本文以學生信息管理系統為例,介紹界面類軟件的測試策略及著重測試功能點。
學生信息管理系統主要應用于教育系統,針對學校人事處的大量業務處理工作開發設計的管理軟件,用于完成對日常的教育工作中學生成績檔案的數字化管理,是一個教育單位不可缺少的部分,能夠為用戶提供充足的信息和快捷的查詢手段,對于學習的決策者和管理者來說至關重要。隨著國家政策的調整,高等院校不斷進行學生的擴招,給學校的教學管理、學生管理帶來了很大的影響,使用計算機管理學生的信息有著手工管理不可比擬的優點:快速檢索學生信息、存儲量大等,風險也同樣存在,軟件的功能是否正確實現同樣受到了極大的挑戰,當由于軟件的一部分功能出現問題同樣影響其他功能模塊,會導致數據庫內容錯亂、學生信息丟失等,因此對于學生信息管理系統的測試是極其重要的。
軟件的主要功能包含學生信息管理、課程信息管理、學生成績管理、系統權限管理、學生信息查詢、學生成績統計。詳細功能見表1。
為了更好的保證軟件質量和完成軟件測試,在測試過程中要注意幾點原則:
(1)軟件測試的理念應該貫徹在整個軟件的開發過程中,盡可能早的發現和修復軟件缺陷,缺陷發現的時間越晚,耗費的時間和人力成本越高,為了提高軟件的質量,應盡早的對軟件進行測試,降低成本。
(2)將軟件需求作為測試大綱編寫依據和測試用例的設計依據。測試用例通過的標準是預期結果與實際測試結果一致。在測試過程中,要明確預期輸出結果的含義,綜合軟件的各個功能來分析實測結果的正確性,以防漏掉隱藏的軟件錯誤。
(3)要重點考慮異常輸入、非法操作的測試,一般軟件的正常功能測試覆蓋較全,往往忽略異常測試的功能項。一般不熟悉軟件的用戶進行非法操作,如果軟件不能正確處理,輕則導致軟件崩潰,重則導致整個通信的系統崩潰,有時會帶來不可預料的災難,因此測試過程中要充分考慮異常輸入或非法操作測試。
(4)正式測試之前制定測試計劃,避免測試的隨意性。根據被測軟件的功能項、測試環境的穩定性、測試人員、異常用例的實現情況,制定合理的測試計劃,以防盲目測試。
(5)測試過程文檔以及軟件的規范性。測試提交的需求文檔、設計文檔、通信協議版本應為固定版本,測試過程中不再進行變更,當測試人員提出問題后才能進行版本的升級,一方面有利于測試過程的規范性,另一方面保證測試過程中不會因為其他因素而影響到軟件測試的充分性。目前尤其是軍工行業,軟件開發周期較短,時間節點都壓在測試方,軟件邊測邊改已經成為常態,為了保證軟件的質量,本末倒置是不合理的,軟件測試遵循一定的規范性原則是很有必要的。
軟件測試的目的是盡可能發現最多的錯誤。總的來說,軟件測試的流程主要包括靜態測試和動態測試。靜態測試是指不運行被測程序本身,僅通過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性,主要分為文檔審查、靜態分析、代碼審查,動態測試主要是指通過設計輸入輸出用例運行被測程序,檢查運行結果是否與預期結果一致,分析性能指標、容量指標是否滿足文檔需求,主要是根據需求規格說明、研制任務書、軟件設計說明通信協議等相關文檔進行測試大綱的編寫、用例設計及實現。通用的測試策略方法主要為:
(1)文檔審查主要審查軟件需求規格說明、軟件研制任務書、軟件設計說明文檔之間描述的一致性,文檔功能內容描述的準確性和完整性。
(2)靜態分析主要根據編程語言的規則要求,利用工具檢查代碼的控制流分析、數據流分析、接口特性分析、表達式分析是否符合編程規則要求,并逐一確認問題。靜態測試結果可以用于進一步的查錯,減少和避免出現嚴重影響動態測試的問題。
(3)程序度量屬于靜態分析的一部分,一般對最終版本的代碼進行統計,主要是對源程序文件個數、代碼的總行數、空行數、總注釋行數以及注釋率、模塊圈復雜度的平均值和最大值以及圈復雜度過大的比例、函數模塊的平均行數和最大行數以及模塊規模過大的比例進行統計,方便用戶了解代碼的整體情況,對于圈復雜度過大的模塊、模塊規模過大的函數進行調整,以免影響軟件的可讀性,修改部分代碼影響范圍較廣。
(4)代碼審查主要是依據需求文檔,檢查代碼設計結構的合理性、文檔與代碼實現的一致性、代碼邏輯表達的正確性、代碼對國軍標標準的遵循及可讀性。
(5)動態測試是在靜態分析的基礎上進行的,通過分析軟件的功能需求,編寫測試功能點,一個正常用例至少對應一個異常用例,涉及到邊界測試的內容需要考慮當輸入的變量為邊界上、邊界內、邊界外時,軟件的處理情況;涉及到性能時間指標的測試需要考慮進行至少10 次的測量,多次測量求取平均值;涉及到余量指標測試,需要考慮軟件的最大負荷下運行,查看軟件的運行余量;涉及到數據處理測試時,需要考慮軟件計算的結果是否與標準解一致。
(6)回歸測試主要針對動態測試中發現的問題及由于軟件需求更改的部分進行用例的設計,要充分考慮軟件出現的問題位置所影響的測試項,適當的進行用例的增加或重用。回歸測試中修改文檔的問題通過文檔審查的方式實現,修改程序的問題通過動態測試實現。
針對學生信息管理系統界面類軟件的詳細測試策略主要包括:
(1)測試當增加或修改學生的學號重復時,軟件提示錯誤信息;
(2)測試對界面輸入的參數進行限制,年齡、學號、入學年份、課時、學分、成績只能輸入數字,學生信息參數、成績信息、課程信息參數不能為空;
(3)測試當登錄界面的用戶名正確,密碼多字符、密碼少字符、密碼為空時,用戶不能正常登錄。
(1)測試軟件能夠通過界面輸入增刪改學生的基本信息、成績信息、課程信息、登錄使用賬號和密碼,并保存到數據庫中;
(2)測試當增刪改數據庫表中的參數時,軟件能夠讀取并顯示學生的基本信息;
(3)測試當增加或修改數據庫表中的學生信息參數為非法字符時,軟件讀取的信息參數為空;
(4)測試軟件對學生的成績總分、平均分、績點統計的結果與標準解一致;
(5)測試軟件能夠通過關鍵字查詢并從數據庫調出并輸出學生基本信息和成績信息,并按照Excel 表格式導出;
(6)測試學生、教師、用戶能夠通過輸入用戶名和密碼進行登錄,退出系統;
(7)測試用戶具備能夠通過界面修改密碼的功能;
(8)測試軟件能夠設置用戶權限,實現各自的功能。
(1)測試當數據庫未啟動或突然故障,重新啟動軟件能夠保存之前的學生信息;
(2)測試界面按鈕誤操作、快速點擊,不會導致軟件崩潰;
(3)測試同一個學生賬號不能同時登陸兩臺電腦;
(4)測試學生信息管理系統軟件能夠在搜狗、UC 瀏覽器、360 瀏覽器、百度、Goole 瀏覽器使用;
(5)測試軟件能夠登陸的用戶最大人數。
目前不論是生活中、工作中使用到的計算機相關的軟件大部分都有界面顯示,通過界面按鈕操作及界面框輸入實現軟件的功能。目前的界面類軟件不僅僅包括學生信息管理系統軟件,還有一些銀行系統軟件、政府管理軟件、顯示控制軟件、場景設置軟件、軍工軟件等,其他類型的界面軟件測試策略還要考慮以下幾點:
(1)涉及到界面輸入參數進行模型計算時,要考慮與標準解計算的一致性;
(2)局域網軟件之間的信息交互要考慮接口信息是否與協議一致,以及當軟件接收的接口信息報文頭異常、多字節、少字節、校驗和錯誤時,軟件丟棄該數據;
(3)測試軟件的性能時間指標時,多次測量求平均值,作為測試結果;
(4)測試軟件的運行余量指標時,考慮在軟件的最大負荷情況下進行測量;
(5)當軟件包含三維地圖顯示時,要考慮地圖顯示點、線是否與操作一致;
(6)當涉及到導入XML 文件的軟件時,要考慮導入的文件內容為空、后綴錯誤、文件不存在、文件內容的格式錯誤情況;
(7)安全性要求高的軍工界面軟件,要考慮不能同時啟用兩個軟件。

表1:學生信息管理系統功能表
綜上所述,本文針對界面類的軟件測試提出一些著重考慮的測試策略:界面輸入合法性、數據庫讀取、軟件的正常功能、模型計算標準解、地圖視圖顯示軌跡點和線、界面操作保存到數據庫、導入導出文件的格式、接口內容的一致性。不同的界面軟件雖然功能不同,但測試的著重點具有共性,細節需要根據具體的軟件再詳細考慮,盡可能的考慮軟件的異常情況是每一個測試人員的職責。本文提出的測試策略可以適用于航天航空、船舶、學校、政府系統、財務系統以及常用的APP 界面軟件測試,具有一定的應用前景。