班雪 韓軍 黃明炯 史建軍 王宇恒
摘 要:軟件的測(cè)試環(huán)節(jié)做的好與壞,決定了整個(gè)工程的成敗。從軟件測(cè)試和軟件可靠性理論入手,對(duì)現(xiàn)有的軟件可靠性技術(shù)進(jìn)行研究分析從中發(fā)現(xiàn)一些問(wèn)題就是軟件測(cè)試的主要目的。與此同時(shí)要總結(jié)出現(xiàn)有可靠性模型的特點(diǎn)并分析出現(xiàn)有可靠性模型所存在的局限性與不足,以方便后續(xù)開(kāi)發(fā)程序中注意存在的問(wèn)題。
關(guān)鍵詞:芻議測(cè)試 軟件工程 應(yīng)用
中圖分類(lèi)號(hào):TP311.56 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-8882(2014)10-120-01
一、軟件測(cè)試是屬于開(kāi)發(fā)階段最后一段時(shí)間的主要工作。需要對(duì)軟件進(jìn)行全方位的測(cè)試,以確保軟件在上線(xiàn)運(yùn)營(yíng)時(shí)不會(huì)出現(xiàn)影響正常功能使用上的問(wèn)題。軟件測(cè)試時(shí)一項(xiàng)非常重要的工作,也是軟件工程中一個(gè)重要的環(huán)節(jié)。軟件測(cè)試是在軟件投入運(yùn)行前,對(duì)軟件需求分析,設(shè)計(jì)規(guī)格說(shuō)明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。常見(jiàn)的測(cè)試方法有黑盒測(cè)試與白盒測(cè)試等。軟件工程中的測(cè)試,必須要用正確的方法,才能提高效率并且行之有效的解決整個(gè)開(kāi)發(fā)過(guò)程中的問(wèn)題,并且能為后期的維護(hù)提供最大的便利。而我們最經(jīng)常用到的測(cè)試方法就是黑盒測(cè)試與白盒測(cè)試。例如我們?cè)谧鰓eb程序的黑盒子測(cè)試時(shí)會(huì)經(jīng)常使用一些Fuzzing工具去進(jìn)行一些壓力的測(cè)試,有時(shí)候也會(huì)進(jìn)行一些安全性的比如跨站腳本攻擊的測(cè)試、SQL注入攻擊的測(cè)試、跨域提交漏洞的測(cè)試等等注入此類(lèi)在不知道程序源代碼情況下的Fuzzing技術(shù)都屬于黑盒測(cè)試的范疇。用黑盒測(cè)試發(fā)現(xiàn)程序中的錯(cuò)誤,必須在所有可能的輸入條件和輸出條件中確定測(cè)試數(shù)據(jù),來(lái)檢查程序是否都能產(chǎn)生正確的輸出,但這是不可能的。科研中大部分的黑盒測(cè)試都可以通過(guò)編寫(xiě)代碼來(lái)實(shí)現(xiàn)全自動(dòng)化的安全測(cè)試,這樣可以解放人的不斷重復(fù)性勞動(dòng),是一種在做黑盒測(cè)試中最常見(jiàn)的方式。把測(cè)試對(duì)象看做一個(gè)透明的盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。通過(guò)在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致,這就是白盒測(cè)試。白盒測(cè)試又稱(chēng)為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試。軟件人員使用白盒測(cè)試方法,主要想對(duì)程序模塊進(jìn)行如下的檢查:對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次;對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都至少測(cè)試一次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。白盒測(cè)試是一種比較容易找出軟件編碼中存在的嚴(yán)重問(wèn)題的方式,他通過(guò)通讀源代碼,來(lái)發(fā)現(xiàn)整個(gè)工程中存在的一些邏輯漏洞,或者一些危險(xiǎn)函數(shù)的利用。有時(shí)候也可以通過(guò)監(jiān)測(cè)輸入數(shù)據(jù)與輸出數(shù)據(jù)的中間流程來(lái)發(fā)現(xiàn)是否存在輸入未過(guò)濾或者輸出不合法等問(wèn)題。我們以PHP腳本語(yǔ)言問(wèn)例,當(dāng)前很多的WEB端軟件工程多是用PHP開(kāi)發(fā)完成,而PHP語(yǔ)言存在的危險(xiǎn)函數(shù)和危險(xiǎn)變量則多達(dá)幾十個(gè)如果稍有使用不慎,就會(huì)造成較為嚴(yán)重的安全漏洞。在PHP的設(shè)置中register_globals = Off,PHP在進(jìn)程啟動(dòng)時(shí),會(huì)根據(jù)register_globals的設(shè)置,判斷是否將$_GET、$_POST、$_COOKIE、$_ENV、$_SERVER、$REQUEST等數(shù)組變量里的內(nèi)容自動(dòng)注冊(cè)為全局變量。
二、軟件測(cè)試在軟件工程中的現(xiàn)實(shí)意義。由于目前我國(guó)軟件產(chǎn)業(yè)的現(xiàn)狀,存在多個(gè)開(kāi)源或者非開(kāi)源項(xiàng)目均曾經(jīng)爆出過(guò)較為嚴(yán)重的安全漏洞問(wèn)題。如下是國(guó)內(nèi)某著名開(kāi)源軟件工程中存在的一個(gè)存儲(chǔ)型跨站腳本攻擊的代碼。 數(shù)據(jù)庫(kù)系統(tǒng)是應(yīng)用較為廣泛的多用戶(hù)共享資源,具有通用、獨(dú)立、冗余少、安全、完整的特性,因此,在進(jìn)行數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)時(shí)應(yīng)采用軟件工程的方法。主要是對(duì)數(shù)據(jù)管理、庫(kù)結(jié)構(gòu)設(shè)計(jì)與建立、系統(tǒng)設(shè)計(jì)、語(yǔ)言的選擇與設(shè)計(jì)、實(shí)用程序的編寫(xiě)、功能模塊的設(shè)計(jì)等方面應(yīng)用軟件工程的理論和方法。在進(jìn)行這些設(shè)計(jì)的需求階段,應(yīng)確定對(duì)軟件的設(shè)計(jì)方法、所使用的描述工具、目標(biāo)實(shí)現(xiàn)、推廣使用等方面進(jìn)行論證,然后根據(jù)用戶(hù)和系統(tǒng)要求,進(jìn)行包括上述功能的軟件設(shè)計(jì)、輸入輸出設(shè)計(jì)、用戶(hù)設(shè)計(jì)和模塊功能、接口設(shè)計(jì),然后編寫(xiě)用于數(shù)據(jù)庫(kù)實(shí)現(xiàn)的編譯、連接、測(cè)試等語(yǔ)言程序,使所設(shè)計(jì)的數(shù)據(jù)庫(kù)系統(tǒng)具有易開(kāi)發(fā)、易推廣、易理解的高質(zhì)量、高效率的軟件。故,應(yīng)用軟件工程的理論和方法,可以設(shè)計(jì)較復(fù)雜的系統(tǒng)軟件,使設(shè)計(jì)工程化、系統(tǒng)化,比較快的提高軟件研制的質(zhì)量和水準(zhǔn)。設(shè)計(jì)是軟件工程的核心,就是把需求變換成為軟件的具體方案,軟件設(shè)計(jì)一般分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段,總體設(shè)計(jì)是根據(jù)需求所得到的數(shù)據(jù)流、數(shù)據(jù)結(jié)構(gòu),使用結(jié)構(gòu)設(shè)計(jì)技術(shù),導(dǎo)出軟件模塊結(jié)構(gòu);詳細(xì)設(shè)計(jì)是使用表格、圖形或自然語(yǔ)言等詳細(xì)設(shè)計(jì)工具,按照模塊設(shè)計(jì)準(zhǔn)則進(jìn)行軟件各個(gè)模塊的具體過(guò)程的描述,如模塊的分解與合并、低耦合性、高內(nèi)聚性的特點(diǎn),以及模塊的作用、控制范圍、復(fù)雜性和接口,按步驟進(jìn)行設(shè)計(jì)。軟件編碼把用戶(hù)的要求變?yōu)橛?jì)算機(jī)能夠接受的形式,為每個(gè)模塊編寫(xiě)程序,即寫(xiě)成以某一種特定程序設(shè)計(jì)語(yǔ)言表示的源程序清單。自然,寫(xiě)出的程序應(yīng)當(dāng)是結(jié)構(gòu)良好、清晰易讀又與設(shè)計(jì)一致。
結(jié)語(yǔ):在實(shí)際開(kāi)發(fā)中,要使測(cè)試目標(biāo)都達(dá)到理想的程度往往非常困難,而且上述目標(biāo)很可能相互沖突。如追求降低開(kāi)發(fā)成本,很可能同時(shí)也降低了軟件的可靠性;若過(guò)于追求軟件的性能,則可能造成軟件對(duì)硬件有較大的依賴(lài)性,從而直接影響軟件的可移植性等。
參考文獻(xiàn):
[1]張海藩.軟件工程導(dǎo)論[M].北京:清華大學(xué)出版社,2008.
[2]劉潤(rùn)彬.軟件工程簡(jiǎn)明教程[M].大連:大連理工大學(xué)出版社,2013.
作者簡(jiǎn)介:班雪(1992-),布依族,本科,研究方向:軟件相關(guān)專(zhuān)業(yè);韓軍(1989-),撒拉族,本科,研究方向:軟件相關(guān)專(zhuān)業(yè);黃明炯(1993-),苗族,本科,研究方向:軟件相關(guān)專(zhuān)業(yè);史建軍(1991-),男,漢族,本科,研究方向:軟件相關(guān)專(zhuān)業(yè);王宇恒(1992-),漢,本科,研究方向:軟件相關(guān)專(zhuān)業(yè)。