文/秦怡
大數據是指無法在一定時間范圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化力的海量信息,在運行方面具有數據量龐大、數據種類繁多、數據價值量密度較低以及數據運行和處理的速度十分快等基礎特征。目前,大數據已經應用在各行業領域,由此設計的硬件產品種類也越來越繁多,隨著科學技術以及大數據的不斷發展,應用范圍的拓寬形成的軟件系統的發展規模也在不斷擴大。不僅具有高度的復雜性特征,還囊括了較廣范圍的數據集合,在這樣的大數據應用環境下,軟件系統的平穩運行需要以軟件測試技術作為支撐,因此,形成了具有獨特優勢特征的軟件檢測技術來保證軟件系統的高質量運行。
從軟件的發展歷程來看,軟件的開發歷經了完全編碼階段、構建化階段、服務階段以及大數據云計算階段等四個階段。其中,服務化程度的軟件隨著用戶需求的持續化拓展過程,導致軟件在測試過程中的難度加大。
(1)完全編碼階段,這是軟件設計和開發的初級階段,該階段運行過程中的基礎特征是從代碼編寫的初級階段,為系統提供良好的數據庫程序,并由開發人員掌握形成良好的可測試性。能夠在這一階段實現對軟件的基礎監測功能。
(2)構建化階段,該階段的運行是在開發組織系統的數據類庫基礎上,通過自身的業務特點形成具有一系列可復用價值的業務組件,但這些組件基本都是在本地運行,系統耦合度也比較高,測試人員也可以很容易的掌握這些組件,但只能對其運行結構進行跟蹤測試,不能對其內核進行長期的測試和有效的跟蹤。
(3)服務階段。該階段的運行過程需要將調用形成的本地組件間接轉換為遠程服務,并結合外部服務的掌握情況來運行,但該階段缺乏對服務情況的整體認識和全面把握,僅僅能通過服務的輸入和輸出來掌握服務的情況,測試工作相對來說困難一些,變得更為復雜和不透明。
(4)大數據云計算階段,數據規模龐大,因此,從系統的數據庫中進行價值信息的有效篩選顯得至關重要,傳統的軟件系統在運行過程中無法實現對數據的提取、分析以及整理和共享過程。
軟件開發需要架構在PASS上,而測試人員對PASS服務內部結構很難深入了解,很大程度上加大了軟件測試的困難程度,從而使得測試更加復雜。
對于傳統的測試,是通過控制器的使用對本地的服務器進行多方面的協調,進而將協調形成的服務請求發送至服務器終端進行測試的。這種傳統的測試方法比較適用于服務器及系統構成較少的傳統計算機軟件系統,但在現階段的大數據背景下,大數據應用的發展規模和使用數量在急劇增加,由此形成的多種多樣的計算機服務器也在迅速增長,軟件系統的設計直接影響了服務器運行的安全穩定和發展方向。傳統軟件測試技術在使用過程中無法滿足隨之上漲的用戶訪問量,到導致壓力測試存在一定的風險。云架構用來緩解這種風險具有一定的可操作性,但在長久的服務器應用和發展過程中會給軟件測試帶來嚴重的困難。
Boris Beizer在1990年提出了軟件測試的殺蟲劑效應。該效應是基礎病毒傳播理論形成的,即軟件測試的種類及數量越多,該軟件在運行過程中對病毒的免疫能力越強,就像傳統的農藥殺蟲劑一樣,長期的利用一種農藥進行殺蟲,長期下來,該地區的害蟲會在體內形成抗藥性,導致殺蟲劑作用效果逐漸降低。在軟件開發和發展的過程中,通過在前期和中期階段對這種軟件缺陷進行有效的驗證和排查,能夠充分形成軟件內部的屬性組成,進而提高這些構件對系統病毒的免疫力,提升軟件運行的安全穩定效能。因此,這一殺蟲劑效應的生成能夠有效推動軟件測試技術不斷向前發展,進而形成具有良好抵抗能力和發展性能的全面綜合的系統化處理技術。殺蟲劑效應的出現能夠提升和完善目前的軟件測試技術,形成具有完善和較高抵抗能力的軟件系統。
通過以上分析,可以看出軟件測試現在面臨的一系列挑戰,如何針對這些問題提出切實可行的解決方案,讓軟件測試更好的為軟件系統提供服務,已經是迫在眉睫的事情了。
傳統的軟件測試過程中,常用的測試方法有如下幾類:
(1)靜態與動態測試。無需運行軟件的測試方法是靜態測試,主要檢查部分代碼以及文檔;需要運行軟件的測試方法為動態測試,通過實際的輸出結果和預期結果的對比來判定程序的正確性。
(2)白盒與黑盒測試。白盒測試又稱為結構測試,依據程序內部邏輯結構來對程序進行測試;黑盒測試又稱為功能測試,無需考慮代碼,只需注重輸入數據和輸出數據。
(3)單元測試、集成測試、系統測試和驗收測試。根據測試的不同階段,由不同的測試人員負責執行不同的測試用例,將軟件從最初的一個模塊一步步地集成為最終的軟件系統,并通過最終的用戶測試。
在大數據背景下,單一的測試方法不能完全滿足測試要求,難以把控或檢測出軟件的缺陷。因此,多元化的軟件測試技術的發展和應用是必須的。從三個方面來改進軟件測試技術,一是對傳統測試方法進行改造,二是在測試過程中根據軟件系統實際需要,綜合使用多種測試方法;三是利用新的軟件開發技術來創新軟件測試方法。只有這樣,面對日益復雜的軟件環境,測試技術才能及時跟上,才能讓最終的軟件產品質量得以保證。
隨著信息時代的飛速來臨,以大數據為基礎的云計算和人工智能等信息化技術的發展十分迅速,與此同時形成的多種軟件操作系統也為軟件測試技術的發展帶來了全新的發展機遇。軟件化測試過程中的智能技術主要體現在兩個方面,首先,對數據的合法性監測及規范性要求;其次,對數據輸出樣本的持續性分布檢測,以及對設計方案的評判標準進行評定。大數據的發展形勢能夠游戲哦啊解決不同輸入輸出流量之間的差異問題,從而實現數據間轉換操作的規范性,推動軟件測試技術不斷向前發展。
智能構建的云平臺技術能夠為軟件測試提供完整和安全的測試環境、工具以及程序流程,不僅能夠充分節約時間,還能夠引導測試人員將業務重點集中到軟件測試的程序設計和實踐上來,從而形成良好的拓展伸縮環境,減少測試出現的風險幾率和時間。如阿里巴巴的云上企業級一站式智能研發協同平臺和華為的Cloud IDE,都集成了軟件測試的功能和模塊。同時,這些平臺運行過程中的一些質量和安全問題也需要通過軟件測試技術來不斷完善和發展,因此,目前的軟件測試技術主要是集中在性能分析、異常反應處理以及緊急容災處理等相關的安全性能方面。
在軟件測試過程中,往往存在一些無效數據或者無意義的數據,這些數據形成的無效測試用例會直接或者間接的影響測試效果,甚至可能會對所測的軟件系統有潛在的破壞作用。因此,要全面提高測試數據的有效性和準確性,以此來確保軟件測試過程的質量,盡量避免或者降低由于數據問題而導致的測試效果不盡如人意的現象。
除此之外,提升軟件測試數據的有效性和準確性還需要軟件測試人員進一步強化對軟件業務領域知識的學習。只有深入理解了業務渠道和業務流程,掌握了業務知識,才能模擬設計出真實而有效的測試用例和測試數據,在源頭上杜絕問題數據的發生,保持測試數據的有效性和準確性,讓測試效果達到最好的目標。
大數據的發展趨勢下,層出不窮的各種各樣的新技術,為軟件測試技術帶來了一定的挑戰,但同時,也推進了軟件測試技術的不斷優化和提升。針對軟件測試技術在應用中遇到的一些問題,通過發展多元化的軟件測試技術、運用智能化手段構建面向云計算的自動化測試環境以及提升軟件測試數據的有效性和準確性,使得軟件測試技術在軟件行業中繼續維持重要的地位,進而推動計算機軟件行業的持續發展。