許禛
摘 要:隨著我國信息技術(shù)的不斷發(fā)展,使得應(yīng)用軟件的規(guī)模以及數(shù)量也都得到了一定程度的增加。軟件安全問題也隨著得到了一定程度的增加。通過基于缺陷模式的軟件測試技術(shù)來對軟件質(zhì)量進(jìn)行測試,其具備有使用簡單以及效率高的應(yīng)用特點,并能夠?qū)浖膽?yīng)用質(zhì)量起到良好的測試效果,從而保障相關(guān)軟件的應(yīng)用性能。本文主要就基于缺陷模式的軟件測試技術(shù)進(jìn)行了研究分析。
關(guān)鍵詞:缺陷模式;軟件測試技術(shù);檢測器
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-2064(2018)06-0025-02
在軟件的應(yīng)用過程中還容易出現(xiàn)各種軟件安全問題,因此如何提升以及保障軟件的應(yīng)用質(zhì)量也就成為了互聯(lián)網(wǎng)行業(yè)中所需要重點關(guān)注的一個問題。相關(guān)研究表明,在進(jìn)行軟件開發(fā)的過程中,其測試成本需要占到總成本的30%~50%左右,而一些對運行穩(wěn)定性要求很高的關(guān)鍵軟件,其測試費用還要更高,這也就需要對現(xiàn)有的軟件測試技術(shù)進(jìn)行必要的改進(jìn)。
1 軟件檢測技術(shù)簡析
在對軟件的應(yīng)用質(zhì)量進(jìn)行檢測時,還需要就動態(tài)分析以及靜態(tài)分析兩部分來進(jìn)行,其中動態(tài)分析主要指的是根據(jù)該軟件的實際應(yīng)用情況,來進(jìn)行多組極限測試數(shù)據(jù)的設(shè)計,并在測試軟件的實際運行過程中來進(jìn)行軟件缺陷的尋找。靜態(tài)分析主要是進(jìn)行源程序的掃描,然后對一些可能存在的軟件缺陷進(jìn)行尋找。較之于動態(tài)分析而言,靜態(tài)分析其具備有運行成本低、容易實現(xiàn)以及不需要依賴特定的運行環(huán)境等優(yōu)勢,因此說靜態(tài)分析這一軟件質(zhì)量檢測方式能夠使得軟件開發(fā)的成本得到大幅度的降低,并能夠促進(jìn)我國互聯(lián)網(wǎng)行業(yè)的進(jìn)一步發(fā)展。
此外怎樣進(jìn)一步加強軟件產(chǎn)品的可靠性,也就需要相關(guān)的軟件研發(fā)人員進(jìn)行充分的重視。軟件缺陷作為影響到軟件應(yīng)用可靠性的一項重要指標(biāo),相關(guān)的軟件項目部門需要通過減少軟件的模式倆使得該應(yīng)用軟件的可靠性得到提升。近年來我國的計算機信息處理技術(shù)得到了較大程度的提升,其所需的內(nèi)存以及外庫容量也得到了迅速的增加。在這一形式下,軟件的互聯(lián)網(wǎng)系統(tǒng)中的重要性也就得到了一定程度的提升,并需要通過進(jìn)一步加強軟件測試技術(shù)經(jīng)濟性以及有效性的模式,來使得我國的互聯(lián)網(wǎng)行業(yè)得到更進(jìn)一步的發(fā)展[1]。
2 常見軟件安全質(zhì)量問題
2.1 代碼安全問題
(1)XSS攻擊:XSS也就是跨站腳本攻擊,多由攻擊者們在Web頁面中插入惡意腳本代碼,導(dǎo)致了用戶在進(jìn)行該網(wǎng)頁的瀏覽過程中,就會直接執(zhí)行嵌入在Web之中的腳本代碼,并對用戶造成惡意攻擊。(2)SQL注入:該代碼安全問題主要是通惡意攻擊者將一些特殊的輸入?yún)?shù)傳入到Web應(yīng)用程序之中,并多是SQL語法中的組合,并能夠?qū)粽咚胍母黜棽僮鬟M(jìn)行執(zhí)行。導(dǎo)致SQL注入這一安全問題發(fā)生的主要原因在于應(yīng)用程序未能夠?qū)τ脩魝冚斎氲臄?shù)據(jù)進(jìn)行嚴(yán)格細(xì)致的過濾,并導(dǎo)致整個軟件系統(tǒng)都被非法數(shù)據(jù)所入侵[2]。
2.2 常見的代碼質(zhì)量問題
(1)空指針引用:這一常見動態(tài)內(nèi)存錯誤經(jīng)藏出現(xiàn)了組程序的設(shè)計語言之中,指針變量也多是代指地址、靜態(tài)變量以及地址單元這三個要素。當(dāng)出現(xiàn)空指針引用問題之后,也就會導(dǎo)致一些引用故障的發(fā)生,嚴(yán)重情況下甚至還會導(dǎo)致整個應(yīng)用軟件系統(tǒng)出現(xiàn)崩潰的問題,并使得該應(yīng)用軟件的使用可靠性得到一定程度的威脅。(2)未能夠?qū)ο到y(tǒng)資源進(jìn)行及時有效的釋放:通常在對軟件進(jìn)行開發(fā)的過程之中還需要進(jìn)行調(diào)用系統(tǒng)以及處理器資源的調(diào)用,但是開發(fā)者如果在進(jìn)行軟件開發(fā)的過程中未充分重視這一問題,并未曾對資源進(jìn)行釋放,也就會導(dǎo)致該軟件系統(tǒng)所需要承載的負(fù)載越來越重,甚至還會導(dǎo)致系統(tǒng)崩潰等問題的發(fā)生,并使得該軟件的應(yīng)用可靠性得打大幅度的降低,因此在進(jìn)行軟件開發(fā)的過程中,還需要相關(guān)的技術(shù)人員能夠充分重視資源回收問題。
3 軟件測試過程中的靜態(tài)分析
3.1 靜態(tài)分析技術(shù)
對代碼進(jìn)行靜態(tài)分析時,其能夠在不運行代碼這一基礎(chǔ)上來對程序代碼進(jìn)行一定的掃描分析處理,并能夠?qū)φ麄€系統(tǒng)代碼的可靠性、安全性以及維護(hù)性能等應(yīng)用指標(biāo)進(jìn)行合理的分析。隨著我國信息技術(shù)的不斷發(fā)展,使得靜態(tài)分析技術(shù)也開始朝著模擬執(zhí)行的方向進(jìn)行發(fā)展,對于一些原本需要動態(tài)測試才能夠發(fā)現(xiàn)的軟件缺陷也能夠起到良好的分析效果,比如抽象解釋以及符號執(zhí)行等等,并能夠應(yīng)用數(shù)學(xué)約束求解工具來進(jìn)行路徑約減的模式,從而給后續(xù)的分析工作提供足夠度的理論支撐[3]。
(1)詞法分析生成token流:詞法分析是軟件編譯工作之中的重要基礎(chǔ),該該過程中能夠?qū)λ械脑闯绦蛞约白址M(jìn)行讀入,并能夠完成構(gòu)成源程序的所有字符流的掃描工作。在此基礎(chǔ)上應(yīng)用構(gòu)詞規(guī)則來進(jìn)行單詞的有效識別,可以說應(yīng)用Lex等工具來實現(xiàn)語法分析程序的自動生成。此外借助于語法分析還能夠完成各種單詞的掃描以及識別處理,對于識別之后的單詞還能夠進(jìn)行有效的定性處理。現(xiàn)階段多是通過自動生成以及手工生成的模式來進(jìn)行詞法的有效分析。(2)語法分析生成抽象語法樹:在完成語法分析工作之后,也就能夠進(jìn)行抽象語法樹的構(gòu)建,這樣也就能夠完成各項單詞序列的合理組合,然后直接將單詞序列組合成各項語法短句。因此說通過語法分析生成抽象語法樹的模式來進(jìn)行源程序正確性的合理描述。(3)語義分析:進(jìn)行語義分析的目的在于對結(jié)構(gòu)上各項的正確性進(jìn)行必要的審查處理,并對審查源程序是否存在語義錯誤來進(jìn)行有效的判斷,此外語義分析階段還需要就代碼生成階段來完成各類型信息的收集工作。比如在進(jìn)行語義類型審查的過程之中,還需要就其各個算符是否具備有語言規(guī)范允許的運算對象進(jìn)行有效的審查,并能夠在語句不符合語言規(guī)范的情況下報告錯誤。一旦出現(xiàn)了編譯程序需要應(yīng)用數(shù)組下標(biāo)模式來報告錯誤的情況時,因為其二目運算是實施在一個實型對象下面,也就能夠直接進(jìn)行編譯程序的整形轉(zhuǎn)換處理,并將其轉(zhuǎn)換為實型來進(jìn)行源程序錯誤的分析。
3.2 缺陷模式
軟件缺陷主要指的是一種在軟件中所存在的,并無法被接受或者不被期望的偏差。因此當(dāng)軟件在某些特定的條件下進(jìn)行運行的過程中,也就容易出現(xiàn)一系列的軟件故障,并導(dǎo)致該軟件的應(yīng)用可靠性難以得到有效的保障??梢哉f軟件缺陷多是通過靜態(tài)的形式存在于軟件的內(nèi)容中,也是在軟件開發(fā)過程之中因為人為失誤所造成的一些錯誤結(jié)果?,F(xiàn)階段軟件缺陷的例子還有著數(shù)組下標(biāo)不對、異常處理方法存在錯誤等等。
缺陷模式則主要指的是程序中經(jīng)常性會發(fā)生的一些錯誤一缺陷所呈現(xiàn)出來的特定規(guī)律,并多是由具備有一定領(lǐng)域程序設(shè)計經(jīng)驗的人員或者由測試人員來進(jìn)行總結(jié)的。本次研究主要就對下述缺陷代碼的例子進(jìn)行了分析研究[4]。
在該代碼中存在有低效判斷字符串為空這一缺陷行為,對該代碼的缺陷可以描述為在判斷字符為空的情況下,應(yīng)用length方法跟屬性來進(jìn)行判斷的過程中,觀察其判斷長度是否為0。
就該缺陷代碼進(jìn)行分析,發(fā)現(xiàn)導(dǎo)致缺陷出現(xiàn)的原因主要是較之于equals方法的字符串判斷速度不足,借助于str.length()==0模式來對字符串進(jìn)行判斷的過程中,能夠?qū)ζ涫欠駷榭諄磉M(jìn)行有效的判斷,這也就說明了匹配的靜態(tài)分析方法主要是對代碼缺陷的差異性進(jìn)行分析,并在此基礎(chǔ)上對特定的缺陷模式來進(jìn)行總結(jié)。
4 實驗方案
本次研究之中主要應(yīng)用了Findbugs開源軟件來作為實驗工作,并應(yīng)用這一靜態(tài)分析工具來對JAR文件進(jìn)行檢查,并能夠通過將字節(jié)碼跟一組缺陷模式進(jìn)行對比的模式來發(fā)現(xiàn)一些可能存在的問題。通過該靜態(tài)分析工具的應(yīng)用,還能夠在不運行該軟件程序的基礎(chǔ)上來進(jìn)行軟件功能的有效分析,并能夠通過Visitor模式來進(jìn)行程序意圖的合理確定。一般主要是通過以下三個步驟來進(jìn)行軟件的有效測試[5]。
(1)首先需要應(yīng)用常見的軟件缺陷進(jìn)行分析,抽象出相應(yīng)模式后來應(yīng)用專門的檢測器來進(jìn)行檢測處理。在該過程中多是通過Findbugs源碼來實現(xiàn)的。(2)進(jìn)行現(xiàn)有多個檢測器的打包處理,并在完成檢測器的處理工作之后直接生成Findbugs插件,通過將該插件集成在eclipes上面的模式來起到良好的檢測效果。(3)應(yīng)用生成之后的插件來對需要測試的軟件進(jìn)行有效的檢測
5 實驗結(jié)果簡析
根據(jù)上述的實驗步驟來得出相應(yīng)的實驗結(jié)果,在結(jié)果中表明該軟件中存在有23個軟件問題,其檢測結(jié)果也具備有一定的可信度,通常將High confidence作為高可信度,并且通過Normal confidence來表示一般可信度。
對具體的實驗結(jié)構(gòu)進(jìn)行分析,發(fā)現(xiàn)該項目之中存在有非常明顯的缺陷問題,并存在有SQL注入以及資源無法有效釋放等嚴(yán)重的問題。此外在該軟件項目之中,其字符串判斷過程中也有著一定的邏輯錯誤??尚哦茸鳛樵撥浖y試過程中的重要指標(biāo),可以借助于人工檢查的模式來使得高可信度的缺陷分析中有效避免誤報的情況,但是對于一般可信度問題,還有可能存在有一定的誤報情況,這也就要求對現(xiàn)有的軟件測試技術(shù)進(jìn)行不斷的優(yōu)化與完善,并借此來降低誤報率比較大這一問題的發(fā)生。這樣才能夠使得軟件檢測的效果得到有效的提升,并能夠?qū)浖?yīng)用過程中存在的缺陷進(jìn)行合理迅速的尋找以及糾正[6]。
6 結(jié)語
本文主要借助于基于缺陷模式的軟件測試技術(shù)來進(jìn)行了實例驗證研究,并檢測出了一些軟件的常見質(zhì)量問題,但是該軟件測試技術(shù)中還存在有一定的不足之處,并需要將誤報問題的解決作為一項重要工作。只有對現(xiàn)有的軟件測試技術(shù)進(jìn)行不斷的優(yōu)化與完善,才能夠取得良好的軟件性能檢測效果,并有效降低我國的軟件測試成本,促進(jìn)互聯(lián)網(wǎng)行業(yè)得到更進(jìn)一步的發(fā)展。
參考文獻(xiàn)
[1]陳睿,楊孟飛.基于編碼規(guī)則的中斷數(shù)據(jù)訪問沖突檢測方法[J].空間控制技術(shù)與應(yīng)用,2017,(3):59-65.
[2]梁曉兵,崔寶江,趙兵等.基于統(tǒng)一缺陷模式集的源碼缺陷與二進(jìn)制代碼缺陷協(xié)同分析技術(shù)研究[C].2013:458-472.
[3]孔軍,吳偉明,谷勇浩,等.基于缺陷模式匹配的靜態(tài)源碼分析技術(shù)研究[J].軟件,2016,(11):146-149.
[4]李北星,常鑫.基于電力軟件缺陷模式的代碼檢測技術(shù)研究[J].山東工業(yè)技術(shù),2017,(22):135.
[5]胡蕓,胡國祥,胡世港,熊曾剛.嵌入式軟件缺陷的自動定位技術(shù)實現(xiàn)[J].現(xiàn)代電子技術(shù),2017,(18):79-82.
[6]寧華,陳永政,張正龍.軟件測試技術(shù)及工具[J].現(xiàn)代企業(yè)教育,2014,(10):590.