(江蘇省軟件產(chǎn)品檢測中心,江蘇 南京 210012)
軟件測試在軟件工程中是一個重要階段,是保證軟件質(zhì)量的一種重要手段。本文著重對軟件檢測的方法:黑盒檢測法、白盒檢測法、靜態(tài)檢測法以及動態(tài)檢測法做出探析。
從軟件的初期研發(fā)上來看,一般研發(fā)的規(guī)模相對較小,研發(fā)的復雜度相對不高,在研發(fā)流程的規(guī)范性上有所不足,檢測覆蓋面比較小,在研發(fā)過程中,有相當一部分研發(fā)人員將軟件調(diào)試簡單的理解為軟件檢測,其工作的內(nèi)容在很大程度上是對軟件中的故障進行處理,同時軟件的研發(fā)力量不足,在軟件已經(jīng)開發(fā)到相當?shù)碾A段后,才開始進行相關(guān)的檢測工作。隨著信息產(chǎn)業(yè)的不斷發(fā)展完善,在軟件研發(fā)中,軟件檢測的重要性不斷凸顯,同軟件檢測的相關(guān)技術(shù)以及流程也不斷完善,這在很大程度上提升軟件研發(fā)質(zhì)量的穩(wěn)定性。在這個過程中,軟件品質(zhì)的概念在軟件研發(fā)中滲透,也促進了軟件研發(fā)專業(yè)性水平的提升[1]。
在軟件研發(fā)中軟件檢測是保證研發(fā)質(zhì)量的基礎(chǔ)。在軟件研發(fā)的過程中有諸多的因素會對軟件的品質(zhì)產(chǎn)生影響。在軟件研發(fā)中如何保證軟件品質(zhì)的穩(wěn)定性一直都是軟件研發(fā)中的重點問題,為了提升軟件的穩(wěn)定性,保證軟件研發(fā)的質(zhì)量,行業(yè)內(nèi)的研發(fā)的人員以及專家都付出了相當大的精力,從軟件研發(fā)的過程上來看,如果在軟件研發(fā)中出現(xiàn)了難以解決的BUG,不僅會影響軟件研發(fā)的進度,而且會導致軟件研發(fā)的成本大幅度的上升。
軟件研發(fā)受客觀技術(shù)條件的影響,以及研發(fā)過程主觀人為因素的影響,因此在軟件研發(fā)中出現(xiàn)BUG問題往往是難以避免的。因此在軟件研發(fā)的過程中,需要將研發(fā)的精力放在避免軟件BUG,盡早發(fā)現(xiàn)軟件BUG上,如果發(fā)現(xiàn)BUG需要及時的采取手段來修補軟件BUG,從而提升軟件運行的穩(wěn)定性。而軟件檢測就是避免軟件BUG大規(guī)模出現(xiàn),及早發(fā)現(xiàn)軟件BUG的有效手段,能夠有效的保證軟件功能性的發(fā)揮,并且能夠為相關(guān)的研發(fā)人員提供大量的有價值的信息,有利于相關(guān)的軟件研發(fā)人員對軟件研發(fā)的風險進行評估,保證軟件研發(fā)的進度,控制好研發(fā)的成本[2]。
從軟件檢測的功能性上來看,主要的功能就是及時的發(fā)現(xiàn)軟件中存在的各種缺陷,并針對這些缺陷采取有針對性的修補措施,保證軟件的品質(zhì)。可以說軟件檢測的過程實際上就是試錯的過程,所以說軟件檢測并不是為了證明軟件不存在缺陷。在軟件交付之前都需要對軟件進行測試,保證軟件運行的穩(wěn)定性。高品質(zhì)的軟件往往需要經(jīng)過全方位的軟件檢測。軟件檢測涵蓋了軟件研發(fā)的全過程,這其中包括了對軟件的功能進行測試,以驗證軟件能否滿足用戶的需求。軟件檢測需要與軟件研發(fā)同步進行,僅僅在軟件交付階段進行軟件測試,是無法保證軟件的穩(wěn)定性的。同時在軟件測試之前也需要進行大量的準備工作,需要根據(jù)軟件研發(fā)的過程中制定相應(yīng)的檢測方案,選擇相應(yīng)的測試工具等??茖W完備的軟件測試準備能夠保證軟件測試的全面性以及有效性,提高軟件測試的效率,有效的避免開發(fā)過程中出現(xiàn)的各種問題,保證軟件開發(fā)工程的順利實施[3]。
軟件檢測作為軟件開發(fā)工程中必不可少的環(huán)節(jié),軟件測試的全面性以及有效性,對軟件開發(fā)的質(zhì)量具有直接的影響。對于軟件開發(fā)項目實施的單位來說,相關(guān)的領(lǐng)導人員需要高度重視軟件檢測工作的落實。從目前軟件工程的整體發(fā)展趨勢上來看,客戶對軟件的功能性以及軟件的穩(wěn)定性往往有比較高的要求,這也在很大程度上增加了軟件開發(fā)的復雜性,在此背景下,軟件檢測工作需要更加的具有全面性。因此在軟件開發(fā)工程中,為了保證軟件產(chǎn)品品質(zhì),滿足客戶對高品質(zhì)軟件的需求,就必須保證軟件測試的有效落實,從而保證軟件開發(fā)的質(zhì)量。
黑盒檢測是一種常見的軟件測試方法,該檢測方法將檢測對象看作是一個黑色的盒子,在檢測的過程中通過向軟件錄入相關(guān)的信息,根據(jù)軟件中數(shù)據(jù)的輸出情況,來探知軟件功能的實現(xiàn)情況。在檢測的過程中,到相關(guān)的檢測數(shù)據(jù)導入到軟件中,然后接收軟件的輸出數(shù)據(jù),在對軟件的輸出數(shù)據(jù)進行分析,分析的過程中實際上就是驗證輸出信息是否與預設(shè)信息保持一致,如果能夠保證數(shù)據(jù)的一致性,基本上可以判斷軟件功能能夠?qū)崿F(xiàn)。如果輸出的信息與預設(shè)的信息存在差異,則需要進一步對差異的信息進行分析,從而找出軟件中的故障。
白盒檢測是與黑盒檢測相對應(yīng)的一種軟件檢測方法,相比黑盒檢測,白盒檢測往往具有更高的透明度。該檢測方法主要是借助軟件本身的程序代碼進行檢測,來對軟件的穩(wěn)定性進行判定。在進行檢測的過程中一般會將軟件功能與軟件構(gòu)架一同檢測。該檢測方法在檢測的效率方面具有很大的優(yōu)勢,能夠在較快的時間內(nèi)發(fā)現(xiàn)軟件的程序代碼問題。為了提升檢測的全面性,該檢測方法一般與黑盒檢測配合使用。該檢測方法適用于一些功能比較復雜的軟件檢測。在軟件研發(fā)的過程中,判定檢測也是一種比較普遍的軟件檢測方式,該檢測方式能夠較為直觀的展現(xiàn)出軟件的程序設(shè)計框架,對于提升檢測的準確性具有重要的意義,通過該檢測方式能夠?qū)Τ绦虼a進行較為全面的檢測,因此較為復雜的軟件檢測中,該檢測方式能夠發(fā)揮出比較大的優(yōu)勢。在對軟件檢測的過程中,該檢測方式與黑盒檢測配合使用能夠在很大程度上提升檢測的動態(tài)性,能夠找出軟件中的一些深層BUG。從實際的檢測流程上來看,可以先通過黑盒檢測,對程序輸出的數(shù)據(jù)進行比對,如果輸出的數(shù)據(jù)與預設(shè)數(shù)據(jù)有差異,就需要借助白盒檢測對有差異的程序代碼進行深層次的檢測,從而保證檢測的全面性[4]。
該檢測方式是一種根據(jù)研發(fā)人員主觀經(jīng)驗判的一種檢測方法,該檢測方法在靜態(tài)下對軟件進行檢測,在檢測的過程中不會產(chǎn)生很多的數(shù)據(jù)信息,可有作為一種輔助檢測的方法。一般用于檢測軟件中計算方法是否合理,以及計算結(jié)果的準確性,該檢測方法可以初步對程序設(shè)計的合理性進行檢測,優(yōu)勢在于檢測的效率比較高,同時檢測的成本相對較小,相關(guān)的BUG信息也能較為清晰的展示,另外這種檢測方法也具有比較強的實用性,能夠?qū)Χ喾N類型的軟件進行檢測。
該檢測方法通過借助各種檢測程序,在計算機中來對軟件進行動態(tài)的檢測,能夠較為清晰地反映出軟件運行過程中存在的問題。該檢測方法與靜態(tài)檢測的區(qū)別在于,在檢測的過程中利用各類檢測軟件,在程序運行的過程中進行檢測,能夠反映出軟件在運行過程中的各種問題,因此軟件檢測始終處于動態(tài)的過程中。在應(yīng)用該檢測方法時,一定要保證軟件處于運行的狀態(tài)中,只有這樣才能發(fā)揮出動態(tài)檢測的優(yōu)勢。在動態(tài)檢測中,主要是對兩方面進行檢測,首先是檢測對象的運行情況,其次是檢測期間的數(shù)據(jù)分析。只有做好這兩點,才能準確的感知軟件運行過程中的問題[5]。
對于軟件開發(fā)工程來說,保證軟件的品質(zhì)至關(guān)重要,從目前軟件開發(fā)的形勢上來看,客戶群體對軟件的功能性以及軟件的穩(wěn)定性提出了更高的要求,在這種情況下,就需要將軟件檢測重視起來,及時發(fā)現(xiàn)軟件中的BUG并進行處理,從而保證軟件開發(fā)的質(zhì)量。