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

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