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