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