文/牛宇飛,中國人民大學
軟件產業在近幾年的發展十分迅速,越來越多大型軟件得到了開發和應用,而在軟件的開發中軟件測試是重要的部分,軟件規模逐漸增大也使軟件的測試問題日益顯著。在現階段人們對軟件有著很強的依賴性,人們對高可信度的軟件測試也是十分需求,良好軟件的測試技術也是高可信度軟件性能保證,而軟件測試技術現狀和發展趨勢如何,就是本文主要研究的內容。
所謂軟件測試,主要是按照軟件開發的各個階段具有規格的說明以及程序內部的結構來進行設計出一組測試的數據,借助這些測試的數據進行程序的運行,從而來發現出程序存在的錯誤。按照測試數據的設計方法不同,可以將軟件測試分成結構測試以及功能測試等,其中結構測試過主要是測試者通過進行程序語句、邏輯以及分支實施各種覆蓋性的測試,來對其不同點進行程序實際狀態的檢查,保證實際狀態同預期狀態具有一致性。這種軟件測試主要目的是為了進行錯誤的發現,對已經測試的過程實施有效評估,類保證其軟件產品具有良好的性能和質量,實現軟件開發中的質量保障。對于軟件測試來說,一般是通過獨立性產品的評測中心進行負責,并嚴格遵守軟件測試的流程和標準,進行測試計劃以及測試方案的制定,后進行測試,同時對測試的數據進行全面準確的記錄與分析,按照回歸測試的實際情況進行測試報告的整理,通過測試主要為了證明其程序存在錯誤,但不能保證其程序不會存在錯誤。
對于軟件測試來說,主要可分成人工測試以及計算機測試等。盡管測試為軟件開發獨立的階段,而測試工作涉及到了設計、分析和編程各環節,在實際的測試環節中,主要可以分成單元測試、構件測試、確認測試以及系統測試等四個階段。
在軟件中,軟件單元為其最基礎的部分,對于PB所開發客戶機或者服務器類軟件的系統,其一個窗口、菜單、函數和報表等都可當作是軟件的單元,同時對單元測試也是軟件測試基礎和前提。這種單元測試有被稱作是模塊的測試,主要對軟件最小的設計單元進行模塊的測試,測試目的是為了對模塊內部存在錯誤進行檢查,并對這些錯誤進行修改促進程序的良好運行。在進行單元的測試中,主要包括模塊接口、局部的數據結構、程序的異常、路徑以及邊界的條件等部分測試。其中模塊接口的測試主要是借助測試用例以及輸出的結果情況,來對輸出的結果正確性進行判斷;局部數據的結構測試主要是對模塊局部的數據結構進行檢查,對其錯誤來源進行掌握;路徑的測試主要是設計一定具有代表測試的用例,對模塊路徑進行覆蓋,對其邏輯情況進行全面的判定,對程序中邏輯性錯誤進行掌握;程序異常的測試主要是對程序中隱藏性錯誤以及異常性現象進行檢查;邊界條件的測試主要是對檢測的數據范圍最大值以及最小值進行判斷,并對n次的循環語句其第n次的執行情況等進行掌握。
完成全部單元的測試后,再實施構件測試,同時其又被稱作是綜合性測試。把已經經過單元測試的單元根據相應要求進行組合并實施測試,對單元間接口存在的問題進行判斷和掌握。在檢測中,需要相關人員對單元內部的細節全面熟悉,并要求其從高層次對整個系統進行觀察,在構件測試中主要通過黑盒法進行。
所謂確認測試,主要是在客戶需求的基礎上來對軟件功能以及性能等進行驗證。這種測試主要通過用戶來參加進行測試,測試也主要采取黑盒法。在用戶使用和測試系統中,為了促進他們能夠更好的發現軟件中存在的問題,還可以通過α測試以及β測試等。其中α測試主要為用戶參與到開發場所進行測試,通過用戶對程序的使用中發現相應的錯誤,這些錯誤也會由開發人員進行記錄,并將其當做修改依據;β測試主要為用戶使用中對主觀問題實施記錄,如用戶對界面是否滿意,則用戶就可以對此類問題進行記錄,并向開發人員進行反饋,后開發人員就能夠對軟件實施有效的修改,促進其更好的滿足人們需求。
在軟件測試中,最后環節為系統測試,全部開發以及測試的過程于此過程進行集中并生成相應功能軟件。在此環節主要是針對系統軟件準確性和完整性等實施測試,進行測試的內容主要涉及功能的確認、運行、強度、恢復以及安全性等測試。在系統測試中,需要測試人員主要包括測試組的成員以及用戶等共同組成,此系統測試在開發的完成前以及交付用戶之前來實施,此階段主要是通過黑盒法來實施測試。
對于軟件測試的方法來說,主要可以分成黑盒測試與白盒測試、靜態測試與動態測試等。
所謂黑盒測試,又被稱作功能性和數據驅動的測試等,其是在已知性軟件所具有功能基礎條件下,來對程序的功能性進行檢查,看其按照需求規格的說明書相關規定能夠正常的使用,同時判斷其功能和性能等是否滿足要求標準。實施黑盒的測試中,僅僅按照其規格的說明來對軟件進行檢查就可以了,是不需要對代碼進行考察的,主要是自用戶的角度來實施軟件的測試。此種測試方法主要目的是對軟件功能正確性以及完整性進行檢查,對其人機交互以及數據訪問的錯誤等進行檢測,同時對軟件的行為、性能、初始化、終止過程等進行檢測,看其是否存在錯誤。在進行黑盒測試中,首先要按照規格的說明書進行測試用例的生成,后進行測試的執行,并對覆蓋的標準進行分析,按照所得的結果進行結論的得出。
所謂白盒測試,又被稱作結構性以及邏輯驅動性的測試等,和黑盒測試比較,實施白盒測試中會把程序執行情況的表現以及編碼的意圖實施對比,對軟件的內部設計以及程序實現十分關注,其測試的依據為代碼以及設計的文檔等,這也就為嚴格的定義以及數學分析等提供有效支持,實現對軟件的精準評價。
靜態測試主要為人工代碼的檢查、軟件的度量、程序的結構分析以及自動編程的規則檢查等內容。在進行靜態測試中,要按照需求規格和軟件設計的說明書、流程圖的分析以及源程序的結構分析等,來對軟件實施檢查、分析與測試,并不對測試軟件進行實際性運行,通過這種方式一般能夠查找30%-70%部分邏輯性設計的錯誤情況。此種方式是需要進行程序的運行的,就可以檢查出代碼內存在的缺陷,并對程序內代碼實施評估,還能夠通過人工來進行操作,充分發揮出人自身邏輯上的思維優勢以及測試方面的經驗特點,實現對問題的批量檢查和發現,還能夠直接對缺陷以及錯誤位置進行定位。
所謂動態測試,主要涉及覆蓋測試的分析以及運行錯誤的檢測等,它主要是借助運行的軟件對軟件動態性的行為以及運行的結果準確性進行測試。此種測試方法包括被測程序以及測試數據等兩基礎性要素,一定要生成相應測試的數據來進行被測程序的運行,來對程序實際運行情況以及動態數據等進行掌握,并借助測試的數據來對測試的質量進行分析和判斷。
用戶對界面效果以及風格等都比較關注,界面也直接對系統使用性產生影響,則就需要根據用戶實際需要來實施系統界面設計,讓用戶進行界面的選擇,通過共同投票方式來對不同界面的使用效果進行比較,還可以讓用戶進行系統界面體驗來提出相應的反饋意見,根據用戶的要求來對系統實施修改。在系統訪問功能測試中,需要將性能測試于最重要系統的服務端進行設置,對系統訪問量進行測試,并對系統訪問能力進行持續性的提高。在進行訪問功能測試中,其系統一定要具備同時有大量用戶進行訪問的承載能力,且要對系統相應的速度進行測試,可以采取模擬訪問的測試形式,來對訪問功能進行測試。
在進行Web系統安全功能的測試中,主要涉及到傳遞信息以及儲存信息等安全性,傳遞信息主要主要是依據信息網絡,就需要做好信息的加密工作,在此環節中的安全測試,主要就是于不了解密碼情況下來進行解密處理,存儲信息就是于服務器內進行信息的存儲,對數據庫的安全性訪問要求比較高,要求其能夠有效對系統外訪問進行針對性的屏蔽,對此環節的測試主要是通過各種類型不同的方式來對數據庫進行訪問,來判斷和掌握系統對數據庫訪問的屏蔽情況和效果。在進行系統兼容性的測試中,Web系統在信息發布后,其系統會遭受各種用戶訪問的影響,這就要求系統面臨各種各樣的操作系統類型,對此環節進行系統的測試,主要就是滿足各不同操作的系統可以對相同內容的訪問,還能保證操作系統的正常順暢運行,在進行測試中只需要借助各不同操作的系統對系統進行訪問就可以了,保證測試中系統具有良好的運行狀態。
我國在現階段軟件測試發展中,技術水平并不是很成熟,還也存在很多方面因素的制約,隨著不斷的發展,軟件測試會不斷朝著規范化以及技術自動化等放線發展。未來軟件測試中會滲透到軟件開發各個環節中,同時還具有事前預防與事前控制的作用,對傳統的軟件缺陷實現合理規避,提升軟件綜合性效益。對軟件測試的過程以及方法進行分析,其測試代碼往往是比較麻煩的,且規范化方面也存在一定的問題,這就需要對測試的過程與方法進行不斷的改進和優化。近年來,信息科技技術的發展十分迅速,這也為軟件測試提供了良好的技術條件,隨著越來越多的軟件開發現代化技術不斷的出現,也有效帶動了軟件測試的現代化發展。自動化就是新時期背景下對軟件檢測提出的新要求,通過在軟件測試中使用自動化技術,就能夠有效的減輕測試人員工作的負擔和工作量,同時促進軟件測試能夠朝著高效率以及智能化的方向發展,這也是軟件測試未來主要的發展趨勢。
新時期下軟件設計與測試要求是越來越嚴格,而現場性可編程的門陣列技術(FPGA)逐漸得到了開發,其在最新模塊化的儀器中也有所使用,即FPGA自定義性儀器。由于FPGA具有著高性能以及可重復性配置的特性,軟件設計師都想擁有一種軟件級確定性以及并行性儀器,比如,實時系統的仿真以及高速內存的測試等,這些都可以通過FPGA保證響應實時性以及高速數據的流出與流入,同時FPGA中IP核也為工程師自主知識的產權算法進行良好的契機提供,因此其具有很好的發展價值,未來也會十分重視對其技術的研究。
現階段半導體的器件朝著復雜化方向發展,對于高級片上系統以及封裝系統來說,和基于矢量器件的測試相比,其需要功能測試更加的復雜,且如今器件功能不是借助簡單性并行的數字接口來實現的,更多通過高速串行的總線以及無線協議實施輸出,因此這就需要測試設備以及器件間可以于指定周期內實現高速激勵以及響應的測試。這種復雜測試也推動了協議感知誕生,此模仿器件能夠真實的對環境進行使用,并根據器件預定方式實施器件針對性的測試以及驗證,因此,其具有很好的發展潛力。
綜上所述,軟件測試是軟件開發中的重要部分,其對軟件的功能與性能有著重要的保障作用,經過不斷的研究,軟件測試也取得了很大的技術進步,為了促進其更好的應用,提高測試的質量與效率,還需要對其技術不斷進行探索,這也是其行業發展中需要重點研究的內容。