版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
03十月202315_軟件安全測試03八月202315_軟件安全測試1質(zhì)量保證活動是軟件開發(fā)過程中重要的環(huán)節(jié),而軟件測試是軟件質(zhì)量保證的關鍵手段。實際上,軟件測試的工作量,在軟件開發(fā)過程中占據(jù)較大的一部分,測試做得好,會大大降低維護的成本。測試的主要目標是找到軟件中存在的錯誤,并加以排除,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。隨著應用的廣泛,軟件的安全性也就越來越成為軟件的關鍵質(zhì)量指標,因此,針對安全問題的測試又顯得更為重要。本章主要針對安全測試和評審問題進行概述,首先講解了軟件測試的概念、目的、意義和方法,然后闡述了針對安全問題的軟件測試,并對這些測試方法進行了一些分類。質(zhì)量保證活動是軟件開發(fā)過程中重要的環(huán)節(jié),而軟件測試是軟件質(zhì)量215.1軟件測試概述15.1軟件測試概述315.1.1軟件測試的概念IEEE對軟件測試給出的定義是:“使用人工或者自動手段來運行或測定某個系統(tǒng),其目的在于檢測該系統(tǒng)是否滿足規(guī)定的需求,或者弄清楚預期的結(jié)果與實際結(jié)果的差別?!?,因此,軟件測試,實際上是為了發(fā)現(xiàn)軟件中的錯誤,并在交付用戶使用前解決這些錯誤,這幾乎成為一個公認的概念。這里的“錯誤”,實際上是一個廣義的概念,初學者往往會將其理解為“編碼錯誤”,實際上,能夠引起軟件錯誤的因素很多,絕不僅僅是編碼方面的原因,包括很廣泛的內(nèi)容:15.1.1軟件測試的概念IEEE對軟件測試給出的定義是:4軟件的需求分析者曲解了用戶的需求,測試時發(fā)現(xiàn)實現(xiàn)的流程和用戶的敘述不一樣;軟件的設計者在設計時沒有考慮某些現(xiàn)場因素,導致軟件在真實環(huán)境下測試時無法正常運行;軟件編碼者粗心大意,將某些邏輯流程寫錯,使得程序得不到料想的結(jié)果;等等。軟件的需求分析者曲解了用戶的需求,測試時發(fā)現(xiàn)實現(xiàn)的流程和用戶515.1.2軟件測試的目的和意義由此可見,軟件測試的根本目標是盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。GrenfordJ.Myers曾對軟件測試的目的提出過以下觀點:測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案;成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。15.1.2軟件測試的目的和意義由此可見,軟件測試的根本目6不過,我們并不能說,軟件測試效果的評價指標就是查出錯誤的個數(shù),認為查不出錯誤的測試就是沒有價值的測試,這是片面的,因為:沒有發(fā)現(xiàn)錯誤,或者發(fā)現(xiàn)錯誤較少的測試,也是有價值的,可能說明軟件質(zhì)量較高,因此,測試同時也是評定軟件質(zhì)量的一種標準;發(fā)現(xiàn)很多錯誤的測試,不一定是成功的,如果軟件本身質(zhì)量較低,那么不能通過發(fā)現(xiàn)錯誤的個數(shù)越多,來得出軟件剩下的錯誤越少的結(jié)論;當前發(fā)現(xiàn)的錯誤越多,可能剩下的錯誤也很多。不過,我們并不能說,軟件測試效果的評價指標就是查出錯誤的個數(shù)7從另一角度講,通過軟件測試找到錯誤,我們除了能夠解決錯誤外,還可以通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,幫助軟件的生產(chǎn)者發(fā)現(xiàn)當前軟件開發(fā)過程中的缺陷,以便及時改進;另外,通過對錯誤進行分析,也可以幫助測試人員設計出更加有針對性的測試方法,提高測試工作的效率和效果。軟件測試的意義主要體現(xiàn)在:減少軟件中錯誤:通過軟件測試可以發(fā)現(xiàn)軟件中存在的錯誤,通過完全地修改這些錯誤,可以減少軟件中錯誤,提高軟件的可靠性;評估軟件的綜合性能:通過軟件測試,對發(fā)現(xiàn)的錯誤進行分析和統(tǒng)計,可以評估軟件綜合性能。當然,即使軟件測試沒有發(fā)現(xiàn)任何錯誤,也可以作為評估軟件綜合性能的手段;等等。從另一角度講,通過軟件測試找到錯誤,我們除了能夠解決錯誤外,815.1.3軟件測試方法從實際項目的測試工作劃分,軟件測試工作可以劃分為以下幾個過程:單元測試:對用軟件的每一個程序單元進行測試,檢查各個程序模塊的正確性;并配合適當?shù)拇a審查;集成測試:把已測試過的模塊組裝起來,以便發(fā)現(xiàn)與接口有關的問題,如:數(shù)據(jù)模塊間傳遞、模塊組合性能、模塊調(diào)用性能等;確認測試:檢查軟件是否滿足了需求規(guī)格說明書中的各種需求,以及軟件配置是否完全、正確;該測試又叫做驗收測試,目的是驗證軟件的有效性;系統(tǒng)測試:把已經(jīng)通過驗收的軟件,放入實際運行環(huán)境中運行;用戶記錄在測試過程中遇到的一切問題,定期報告給開發(fā)者。15.1.3軟件測試方法從實際項目的測試工作劃分,軟件測試9這幾個測試過程,從軟件開發(fā)生命周期的一開始就應該執(zhí)行,因此,測試在軟件工程中的地位如圖所示:這幾個測試過程,從軟件開發(fā)生命周期的一開始就應該執(zhí)行,因此,10軟件測試的方法,可以有很多種分類,第一種分類是靜態(tài)測試方法和動態(tài)測試方法。1:靜態(tài)測試方法。該方法中,不實際運行被測試的軟件,對軟件進行分析、檢查和審閱,來尋找邏輯錯誤。主要工作包括:對需求規(guī)格說明書、軟件設計說明書、源程序做檢查和審閱;檢查以上工作是否符合標準和規(guī)范;通過結(jié)構(gòu)分析、流圖分析等方法,指出軟件缺陷;對各種文檔進行測試;等等。軟件測試的方法,可以有很多種分類,第一種分類是靜態(tài)測試方法和11靜態(tài)測試是軟件開發(fā)中十分有效的質(zhì)量控制方法之一。該方法特別是在軟件開發(fā)生命周期的早期和中期階段非常有效。此時,由于程序還沒有編出來,可以直接運行的代碼尚未產(chǎn)生,此時又必須對設計的一些思路進行檢查或者審核,因為初期的工作的質(zhì)量可能直接關系到軟件開發(fā)的成本,因此,在這些階段,可以大量采用靜態(tài)測試方法。靜態(tài)測試主要靠人工來完成,不過,近些年來,也開發(fā)了不少自動化的工具,進行計算機輔助測試,但是,短期內(nèi)想要實現(xiàn)其測試的自動化,難度較大。靜態(tài)測試的質(zhì)量更多地依賴于測試的組織和測試者的水平,定性地分析軟件質(zhì)量的情況居多,具有一定的局限性。靜態(tài)測試是軟件開發(fā)中十分有效的質(zhì)量控制方法之一。該方法特別是122:動態(tài)測試法。動態(tài)測試和靜態(tài)測試不同,在測試的過程中,實際運行軟件,檢測軟件的動態(tài)行為和運行結(jié)果的正確性。動態(tài)測試包括兩個基本要素:一是被測軟件;二是在軟件運行過程中的輸入數(shù)據(jù),每一次測試需要的測試數(shù)據(jù)叫做測試用例。因此,動態(tài)測試一般在軟件編碼階段完成之后進行。動態(tài)測試由于其比較強的錯誤檢測能力,受到了廣泛的采用。動態(tài)測試的過程是:設計一個測試用例,輸入到程序中;看預期結(jié)果和實際運行結(jié)果是否一樣;得出最后結(jié)論。動態(tài)測試方法中,其最大的難度是測試用例的設計,因為如果要進行窮舉性測試,完全是不可能的。2:動態(tài)測試法。13另一種分類方法是從對程序內(nèi)部結(jié)構(gòu)的可見性來分,分為黑盒測試和白盒測試。1:黑盒測試方法。黑盒測試又稱為功能測試。用該方法進行測試時,被測程序被當做一個黑盒,測試者無需知道程序內(nèi)部結(jié)構(gòu),只需要知道程序的輸入、以及輸出是否和預期輸出相符。用例設計方法有:等價類劃分法;邊界值分析法;因果圖法;等等。另一種分類方法是從對程序內(nèi)部結(jié)構(gòu)的可見性來分,分為黑盒測試和142:白盒測試方法。白盒測試又稱結(jié)構(gòu)測試或邏輯驅(qū)動測試。用該方法進行測試時,測試者必須了解被測程序的內(nèi)部結(jié)構(gòu),根據(jù)被測程序的內(nèi)部構(gòu)造設計測試用例。在白盒測試的過程中,需要測試用例的設計對被測程序的結(jié)構(gòu)做到一定程度的覆蓋。常見的測試用例設計方法有:基本路徑法;條件測試法;循環(huán)測試法;等等。將軟件測試劃分為靜態(tài)測試和動態(tài)測試,與劃分為黑盒測試和白盒測試,是沒有矛盾的,兩種方法互相滲透。一般情況下,靜態(tài)測試只利用白盒測試法,動態(tài)測試則使用了黑盒測試與白盒測試;從另一個角度說,黑盒測試一般都是用于動態(tài)測試,而白盒測試一般可以用于靜態(tài)測試和動態(tài)測試。2:白盒測試方法。1515.2針對軟件安全問題的測試15.2針對軟件安全問題的測試1615.2.1軟件安全測試的必要性安全測試,在充分考慮軟件安全性問題的前提下進行的測試,普通的軟件測試的主要目的是:確保軟件不會去完成沒有預先設計的功能,確保軟件能夠完成預先設計的功能。但是,安全測試更有針對性同時可能采用一些和普通測試不一樣的測試手段,如攻擊和反攻擊技術(shù)。因此,實際上,安全測試實際上就是一輪多角度、全方位的攻擊和反攻擊,其目的就是要搶在攻擊者之前盡可能多地找到軟件中的漏洞.以減少軟件遭到攻擊的可能性。15.2.1軟件安全測試的必要性安全測試,在充分考慮軟件安17安全測試基于軟件需求說明書中關于安全性的功能需求說明,測試的內(nèi)容主要是:軟件的安全功能實現(xiàn)是否與安全需求一致。通常情況下,軟件的安全需求包括:數(shù)據(jù)保密和完整可用;通信過程中的身份認證、授權(quán)、訪問控制;通信方的不可抵賴;隱私保護、安全管理;軟件運行過程中的安全漏洞;等等。
安全測試基于軟件需求說明書中關于安全性的功能需求說明,測試的18以一個Web網(wǎng)站為例。需要考慮的問題參見表15-1。以一個Web網(wǎng)站為例。需要考慮的問題參見表15-1。19因此,軟件安全測試和一般的測試具有很大的區(qū)別。一般測試主要是確定軟件的功能能否達到,如果沒有達到,就進行修改,其任務具有一定的確定性。但是,安全測試主要是檢查軟件所達到的功能是否安全可靠,需要證明的是軟件不會出現(xiàn)安全方面的問題,如:數(shù)據(jù)篡改;非授權(quán)訪問;遭受DoS攻擊;等等。因此,軟件安全測試和一般的測試具有很大的區(qū)別。一般測試主要是2015.2.2軟件安全性測試的過程軟件的安全測試,一般根據(jù)設計階段的威脅模型來實施。在第一章我們講到,安全問題,應該從設計階段就開始考慮,設計要盡可能完善。并提出了采用威脅建模的方法來在軟件設計階段加入安全因素的考量。威脅建模過程一般如下:1:在項目組中成立一個小組,該小組中的人員是項目組中對安全問題比較了解的人;2:站在安全角度,分解系統(tǒng)的安全需求需求;3:確定系統(tǒng)可能面臨的威脅,將威脅進行分類,可以畫出威脅樹;4:選擇應付威脅或者緩和威脅的方法;5:確定最終解決這些威脅的技術(shù)15.2.2軟件安全性測試的過程軟件的安全測試,一般根據(jù)設21既然在設計階段,就將系統(tǒng)可能出現(xiàn)的一些安全問題寫在文檔里面了,因此,安全性測試也應該是基于這些內(nèi)容。因此,軟件安全測試的過程可以分為以下幾個步驟:1:基于前面設計階段制定的威脅模型,設計測試計劃。該過程一般基于威脅樹,以第一章畫出的針對用戶口令安全問題威脅樹為例,如圖15-2所示:
既然在設計階段,就將系統(tǒng)可能出現(xiàn)的一些安全問題寫在文檔里面了22測試計劃就可以基于口令安全所可能遭受的各個攻擊進行制定。
軟件安全測試課件232:將安全測試的最小組件單位進行劃分,并確定組件的輸入格式。實際上,和傳統(tǒng)的測試不同,威脅模型中,并不是所有的模塊都會有安全問題,因此,我們只需將需要安全測試的某一部分程序取出來進行測試,將安全測試的最小組件單位進行劃分。此外,每個組件都提供了接口,也就是輸入,在測試階段,測試用例需要進行輸入,這就必須將每個接口的輸入類型、輸入格式等都列出來,便于測試用例的制定。這些輸入如:2:將安全測試的最小組件單位進行劃分,并確定組件的輸入格式。24Socket數(shù)據(jù);無線數(shù)據(jù);命令行;語音設備;串口;HTTP提交;等等。Socket數(shù)據(jù);253:根據(jù)各個接口可能遇到的威脅,或者系統(tǒng)的潛在漏洞,對接口進行分級。在該步驟中,主要是確定系統(tǒng)將要受到的威脅的嚴重性,將比較嚴重的威脅進行優(yōu)先的測試,這個嚴重性的判斷,應該來源于威脅模型??梢酝ㄟ^很多方法對接口受到的威脅性進行分級,文獻2中推薦了一種積分制方法,對各個接口可能受到的各種威脅進行積分,最后累加,優(yōu)先測試那些分數(shù)排在前面的接口。3:根據(jù)各個接口可能遇到的威脅,或者系統(tǒng)的潛在漏洞,對接口進264:確定輸入數(shù)據(jù),設計測試用例。每一個接口可以輸入的數(shù)據(jù)都不相同,由于安全測試不同于普通的測試,因此還要更加精心地設計測試用例。有時候還要精心設計輸入的數(shù)據(jù)結(jié)構(gòu),如隨機數(shù)、集合等的設計,都要必須是為安全測試服務的。在測試用例的設計過程中,必須要了解,安全測試實際上是對程序進行的安全攻擊,因此,不但數(shù)據(jù)本身需要精心設計,測試手段也要精心設計。如在對緩沖區(qū)溢出的測試中,必須精心設計各種輸入,從不同的方面來對程序進行攻擊。4:確定輸入數(shù)據(jù),設計測試用例。27表15-2為Web網(wǎng)站中可以設計的測試用例(這里省去具體的輸入,僅列出測試的手段)。表15-2為Web網(wǎng)站中可以設計的測試用例(這里省去具體的285:攻擊應用程序,查看其效果。用設計的測試用例來攻擊應用程序,使得系統(tǒng)處于一種受到威脅的狀態(tài),來得到輸出。6:總結(jié)測試結(jié)果,提出解決方案。本過程中,將預期輸出和實際輸出進行比較,得出結(jié)論,寫出測試報告,最后提交相應的人員,進行錯誤解決。5:攻擊應用程序,查看其效果。29以上是測試的過程,近年來,關于安全性測試,還研究出了一些成果,借計算機來進行自動的測試,這些成果主要包括以下幾種:1:用形式化方法進行安全測試。該方法用用狀態(tài)遷移系統(tǒng)描述軟件的行為,將軟件的功能用計算邏輯和邏輯演算來表達,通過邏輯上的推理和搜索,來發(fā)現(xiàn)軟件中的漏洞。2:基于模型的安全功能測試。在該方法中,首先對軟件的結(jié)構(gòu)和功能進行建模,生成測試模型,然后利用測試模型導出測試用例。該方法的成功與否,取決于建模的準確性,對身份認證、訪問控制等情況下安全測試比較適用。常用模型有:UML模型;馬爾可夫鏈模型;等等。
以上是測試的過程,近年來,關于安全性測試,還研究出了一些成果303:基于輸入語法進行測試。接口的輸入語法,定義了軟件接受的輸入數(shù)據(jù)的類型、格式等。該類方法中,首先提取被測接口的輸入語法,如命令行、文件、環(huán)境變量、套接字,然后根據(jù)這些語法,生成測試用例。此類測試方法比較適用于被測軟件有較明確的接口語法的情況,范圍較窄。4:采用隨機方法進行測試。該方法又稱為模糊測試,將隨機的不合法數(shù)據(jù)輸入到程序中,有時候能夠發(fā)現(xiàn)一些意想不到的錯誤,在安全性測試中越來越受到重視。軟件測試本來是軟件工程中研究比較活躍的一個分支,針對安全測試的研究也收到較多學者的重視。有關一些安全測試方面的最新進展,讀者可以參考相關文獻。3:基于輸入語法進行測試。31比較熱門的方向包括:權(quán)限系統(tǒng)的自動測試;形式化方法對測試用例的表達;分布式環(huán)境下的測試;云計算環(huán)境下的測試;等等。比較熱門的方向包括:3215.3安全審查15.3安全審查33安全審查是指對軟件產(chǎn)品進行安全方面的人工檢查,是軟件質(zhì)量保證的一個重要環(huán)節(jié),主要包括:代碼的安全審查;配置復查;文檔的安全審查;等等。
本節(jié)針對這幾個問題進行講解。
安全審查是指對軟件產(chǎn)品進行安全方面的人工檢查,是軟件質(zhì)量保證3415.3.1代碼的安全審查代碼的審查,是審查小組人工測試源程序的過程,而代碼的安全審查,則是針對威脅模型中表達的一些安全問題進行的審查。代碼的安全審查,是一種非常有效的程序安全驗證技術(shù),在代碼的安全審查過程中,首先要組建一個代碼的安全審查小組,最好由如下人員組成:組長,應該是一個很有能力的程序員;程序的設計成員;程序的編寫成員;程序的測試成員。15.3.1代碼的安全審查代碼的審查,是審查小組人工測試35代碼安全審查的步驟如下:
小組成員先研究設計說明書,力求理解軟件的設計,然后重點針對威脅模型進行討論;由設計者介紹威脅模型中的一些細節(jié);程序的編寫者逐個模塊地解釋是怎樣用程序代碼解決威脅模型中提出的解決方案的;對照安全程序設計常見錯誤,分析審查程序;發(fā)現(xiàn)錯誤時,記錄錯誤,繼續(xù)審查。
代碼安全審查的步驟如下:3615.3.2配置復查軟件配置,實際上是指軟件需求規(guī)格說明、軟件設計規(guī)格說明、源代碼等的總稱,配置復查實際上是軟件驗收測試的重要內(nèi)容。配置復查的目的,需要保證如下內(nèi)容:軟件配置的所有成分都齊全;軟件配置質(zhì)量符合要求;文檔與程序完全一致;具有完成軟件維護所必須準備的細節(jié);使用手冊的完整性和正確性;等等。軟件配置復查的過程中,必須仔細記錄發(fā)現(xiàn)軟件安全測試過程中的安全遺漏或錯誤,并且適當?shù)匮a充和改正。15.3.2配置復查軟件配置,實際上是指軟件需求規(guī)格說明、3715.3.3文檔的安全審查文檔在軟件工程中非常重要。對于用戶來說,軟件事實上就是文檔,因此,文檔是影響軟件質(zhì)量的決定因素,有時候可以說,文檔比程序代碼更重要。在文檔中,關于安全問題的描述不能忽視,必須進行審查。軟件系統(tǒng)的文檔可以兩類:1:用戶文檔。用戶文檔主要描述系統(tǒng)功能和使用方法,而并不關心這些功能是怎樣實現(xiàn)的。用戶文檔是用戶了解系統(tǒng)的第一步,它應該能使用戶獲得對系統(tǒng)的準確的初步印象。用戶文檔至少應該包括下述5方面的內(nèi)容:15.3.3文檔的安全審查文檔在軟件工程中非常重要。對于38功能描述,說明系統(tǒng)的功能;安裝文檔,說明怎樣安裝這個系統(tǒng),怎樣對系統(tǒng)進行配置,使其適應特定的運行環(huán)境;使用手冊,說明如何使用這個系統(tǒng),這是一個比較重要的文檔,用戶應該可以通過這個文檔學會系統(tǒng)的使用,有時候,需要通過豐富例子,圖文并茂地表達這些問題;參考手冊,詳盡描述軟件中提供給用戶使用的所有系統(tǒng)設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年長沙文創(chuàng)藝術(shù)職業(yè)學院單招職測考試題庫及答案1套
- 2026年閩南理工學院單招職業(yè)技能測試題庫附答案
- 2026年阜陽科技職業(yè)學院單招職業(yè)傾向性考試題庫附答案
- 護理質(zhì)量與患者滿意度
- 2026年電子商務企業(yè)場景化問題解決能力測試
- 2026年化妝品生產(chǎn)設備的清潔與保養(yǎng)以6S為標準的試題集
- 2026年工業(yè)制造操作心理適應性測試題目
- 2026年化學實驗室安全操作知識試題
- 2026年心理學考研模擬試卷及答案解析
- 2026年護士執(zhí)業(yè)考試護理學基礎與臨床實踐題庫
- 2026屆湖北省武漢市高三元月調(diào)考英語試卷(含答案無聽力原文及音頻)
- 2026年黑龍江林業(yè)職業(yè)技術(shù)學院單招職業(yè)技能筆試備考試題含答案解析
- 生物實驗室安全管理手冊
- 網(wǎng)絡安全與輿情培訓簡報課件
- 供應商現(xiàn)場審核打分表-評分細則
- 質(zhì)量檢驗部2025年度工作總結(jié)與2026年度規(guī)劃
- 陳世榮使徒課件
- 預防葡萄膜炎復發(fā)護理策略
- 民兵偽裝與防護課件
- 2025至2030中國丙烯酸壓敏膠行業(yè)調(diào)研及市場前景預測評估報告
- 2025年初級經(jīng)濟師考試卷附答案
評論
0/150
提交評論