毛子晏
摘要:軟件已經(jīng)成為人類生活中的一部分,人們已經(jīng)不僅僅滿足于軟件所能提供的基本功能,而對軟件整體的質(zhì)量要求更像是追求藝術(shù)品一樣,對非功能性需求一用戶體驗、簡單易用、可操作性、及時響應(yīng)、容錯處理等要求更是要求日趨完美。但隨著軟件工程的復(fù)雜度、軟件規(guī)模以及不確定因素日漸增加,于是對軟件的測試效率和完整度也提出了更高的要求和挑戰(zhàn),合理采用不同測試方法多方位不同角度對軟件質(zhì)量進行測試,越早發(fā)現(xiàn)軟件存在的問題,及時規(guī)避潛在的風險,持續(xù)改善軟件的整體質(zhì)量要求。通過對計算機軟件測試技術(shù)內(nèi)涵與特點進行分析,詳細地探討了軟件測試不同技術(shù)的優(yōu)勢與特點,可以根據(jù)不同的測試要求,選擇合理的測試技術(shù)手段,改善或提高軟件產(chǎn)品的整體質(zhì)量。
關(guān)鍵詞:計算機軟件測試;測試技術(shù);軟件質(zhì)量;用例生成
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2020)18-0077-03
開放科學(資源服務(wù))標識碼(OSID):
隨著軟件工程技術(shù)不斷深入和發(fā)展,為確保軟件上線后其系統(tǒng)的可靠性與穩(wěn)定性均能滿足業(yè)務(wù)需求,需要對其需求功能和運行質(zhì)量進行測試,這就形成軟件測試技術(shù)的發(fā)展。在早期的軟件開展中,由于其規(guī)模和復(fù)雜度都較小,在對軟件邏輯功能測試時,由開發(fā)人員調(diào)試或單元測試發(fā)現(xiàn)問題并解決。但軟件規(guī)模以數(shù)據(jù)體量不斷擴大,系統(tǒng)交互和架構(gòu)都變得十分復(fù)雜,需要有專門的測試人員對復(fù)雜的軟件系統(tǒng)進行測試,除了傳統(tǒng)的軟件測試方法外,還需借助專門的測試工具、專項測試技術(shù)進行自動化持續(xù)改進測試方法,確保整個過程中軟件測試是有效可靠的。
1 計算機軟件測試的內(nèi)涵與特點
軟件測試需要在指定可運行的條件下,對軟件功能、系統(tǒng)組件、運行環(huán)境以及非功能的需求進行整體的測試,觀察其在運行過程是否存在功能不符合預(yù)期、運行不穩(wěn)定、不安全等問題,通過對檢測到的結(jié)果進行多維度分析,評估系統(tǒng)功能、可用性、穩(wěn)定性以及性能是否滿足預(yù)期。
1.1計算機軟件測試內(nèi)涵
軟件測試是驗證交付的軟件能夠達到預(yù)期的功能需求,或者檢測軟件的實際輸出功能與預(yù)期的功能之間是否存在差異,以及軟件在安全性、功能性、容錯性、穩(wěn)定性方面是否滿足要求。軟件測試最終目標是發(fā)現(xiàn)開發(fā)的軟件是否存在錯誤。一般來說,是從用戶使用的視角出發(fā),通過測試發(fā)現(xiàn)軟件中存在不符合預(yù)期的功能、隱藏的錯誤與缺陷。從開發(fā)者的視角出發(fā)分析,希望開發(fā)的軟件不存在錯誤、具有容錯異常處理能力.是一個成熟可靠,具有高質(zhì)量的“藝術(shù)品”,以保證開發(fā)的軟件能夠滿足客戶的要求,對用戶是友好易操作的,以此來提高用戶對軟件使用的信心。
1.2計算機軟件測試特點
1)功能的可靠性驗證。在測試驗證中,要求軟件運行穩(wěn)定,功能可靠,及時反饋響應(yīng),能夠按照用戶的操作要求,及時完成正確功能操作,和用戶之間建立可信任、可靠及時響應(yīng)的操作。
2)系統(tǒng)的安全性檢測。在軟件持續(xù)運行的過程中,驗證軟件系統(tǒng)、交互組件、數(shù)據(jù)的安全性能否滿足要求,是否存在潛在的黑客攻擊、數(shù)據(jù)盜取、數(shù)據(jù)篡改、系統(tǒng)破壞等潛在的風險安全。
3)適用可理解性測試。要在指定使用條件下,在軟件使用的過程中,能否滿足大多數(shù)用戶的需求,需對軟件進行測試,保證軟件在使用中,能夠被用戶理解、學習與使用。
4)容錯與故障處理。是指為保證軟件在運行的過程,能否在用戶的錯誤操作下穩(wěn)定的運行,并具有相應(yīng)的容錯恢復(fù)能力。
5)功能測試。依據(jù)軟件開發(fā)的業(yè)務(wù)功能,對其進行測試驗證,以證明開發(fā)的產(chǎn)品能夠滿足預(yù)期的業(yè)務(wù)要求。
6)性能要求測試。主要是對軟件系統(tǒng)中的用戶指標能否滿足要求,以驗證系統(tǒng)中是否存在瓶頸或者不穩(wěn)定的問題,及時對存在性能隱患對地方進行修復(fù),主要目標是及時修復(fù)發(fā)現(xiàn)的性能問題,避免性能問題導致系統(tǒng)癱瘓或功能不可用的風險。
2 軟件測試技術(shù)的發(fā)展和經(jīng)歷的階段
2.1 過程化拆分階段
過程化拆分技術(shù)階段,主要是指在軟件開發(fā)的初期階段,軟件開發(fā)的需求分析和用戶模型分析管理;對軟件開發(fā)算法設(shè)計來降低一些比較復(fù)雜的計算;數(shù)據(jù)庫模型設(shè)計等一系列的過程中,為后期的軟件開發(fā)做好前期的開發(fā)工作。
2.2 結(jié)構(gòu)分解重組階段
與過程化拆分技術(shù)階段相比,結(jié)構(gòu)化設(shè)計主要完成數(shù)據(jù)的結(jié)構(gòu)、系統(tǒng)的架構(gòu)設(shè)計與數(shù)據(jù)流程分析等。第一,結(jié)構(gòu)化技術(shù)是為了提高軟件開發(fā)的可行性降低其復(fù)雜度,采用“分解——重組”類軟件的開發(fā)十分有效;第二,為了更好地完成系統(tǒng)軟件開發(fā)的數(shù)據(jù)類型的更新,使得軟件開發(fā)系統(tǒng)不斷地完善。與過程化技術(shù)階段相比,采用結(jié)構(gòu)化的設(shè)計與過程化的設(shè)計優(yōu)勢更加明顯,能結(jié)合軟件開發(fā)的需求分析,制定有效的開發(fā)策略。
2.3 面向?qū)ο笏季S設(shè)計階段
隨著面向?qū)ο笏季S開發(fā)技術(shù)的不斷完善,對軟件測試技術(shù)也實現(xiàn)了面向?qū)ο蠹夹g(shù)階段,面向?qū)ο蟮乃季S方式與設(shè)計,在軟件開發(fā)與測試中對現(xiàn)實世界的抽象和理解,降低軟件的復(fù)雜度具有十分重要的意義。面向?qū)ο蟮能浖_發(fā)中對實際問題求解是軟件開發(fā)過程中的關(guān)鍵技術(shù),使得軟件開發(fā)變得更加簡便和易于理解,面向?qū)ο蟮膯栴}求解是從用戶的角度來分析問題,就是力圖從實際問題中,對業(yè)務(wù)數(shù)據(jù)和操作進行抽象并封裝成對象,而對數(shù)據(jù)和操作的軟件檢測技術(shù),能夠形成一個廣泛的聯(lián)系、可擴充、可維護軟件檢測模型。
3 軟件測試方法和技術(shù)分析
3*1 基于結(jié)構(gòu)化的測試用例生成技術(shù)
1)結(jié)構(gòu)化測試技術(shù)適用范圍
采用結(jié)構(gòu)化測試技術(shù)主要針對軟件設(shè)計時的系統(tǒng)架構(gòu)不合理、系統(tǒng)功能不完善,以及系統(tǒng)處理信息的路徑選擇問題等進行測試,以反映軟件測試的真實效果。由于軟件需要測試的項目比較多,在采用結(jié)構(gòu)化測試時,需要對系統(tǒng)進行結(jié)構(gòu)上的劃分,以便于使用模塊化的測試方式,在測試時,根據(jù)軟件的實際運行情況,觀察測試用例的運行情況進行測試任務(wù)記錄,將得到的數(shù)據(jù)進行整合分析。在對各個模塊進行整合測試后.再進行總的系統(tǒng)檢測與分析,并模擬網(wǎng)絡(luò)環(huán)境下的病毒入侵測試,確保測試結(jié)果是準確可靠的。
2)對符號執(zhí)行的檢測
軟件測試時需要結(jié)合具體的情況進行,符號執(zhí)行是軟件測試選擇路徑的第一步,路徑選擇是通過在數(shù)據(jù)庫基礎(chǔ)上自動進行,結(jié)合軟件的不同功能自動進行路徑匹配。在測試不需要人工干預(yù)的情況下,不同的路徑在具體的測試過程中,需要對符號進行區(qū)分,便于在后期軟件使用的過程中,能夠更加深入地對軟件存在的問題進行調(diào)控,從而能夠得到完整的數(shù)據(jù)流方案,保證軟件在后期的使用中依據(jù)數(shù)據(jù)庫的選擇以及數(shù)據(jù)的存儲路徑不會出現(xiàn)問題。符號是計算機設(shè)備能夠識別的一種語言,軟件的開發(fā)設(shè)計需要定義符號,并保證符號具有實質(zhì)性的意義。在對系統(tǒng)的安全性與保密性進行測試時,可以觀察符合是否滿足測試的要求,這樣就會保證軟件在后期運行時不會出現(xiàn)問題,也不會出現(xiàn)選擇性的錯誤,同時還能保證軟件處在病毒運行的環(huán)境中,也不會造成計算機內(nèi)部的數(shù)據(jù)與信息丟失。因此,采用結(jié)構(gòu)化測試技術(shù)對軟件測試的穩(wěn)定性十分有效,得到的測試結(jié)果也有利提升軟件的質(zhì)量。
3)計算機符號執(zhí)行
在對軟件測試的過程中,計算機是如何有效地對軟件符號進行執(zhí)行,主要是依據(jù)軟件設(shè)計的框架和交互來進行的,這就需要重點考察軟件的安全性問題,系統(tǒng)框架的設(shè)計實在每個功能的實現(xiàn)上逐步完善的,要求軟件開發(fā)設(shè)計的人員參與配合,在軟件測試的過程中才更有意義,如果軟件的架構(gòu)設(shè)計得不夠合理,就需要重新設(shè)計程序編碼才能有效地解決問題。在結(jié)構(gòu)化的測試方法中,系統(tǒng)的不同功能可以采用不同的方法來進行測試,對于一些常見的技術(shù)性問題,可以通過改變軟件的結(jié)構(gòu)來解決相關(guān)的問題,可以確保軟件在上線運行后,不存在軟件系統(tǒng)的架構(gòu)和系統(tǒng)交互上的嚴重問題,這樣有助于提高系統(tǒng)的使用效果,使得軟件在結(jié)構(gòu)上與硬件部分配合功能更加穩(wěn)定。
3.2 基于功能測試用的例生成技術(shù)
1)基于功能測試用例的數(shù)據(jù)生成
軟件的功能測試是保證系統(tǒng)在功能上能夠滿足用戶的需求,在對功能進行測試時,首先要保證軟件的結(jié)構(gòu)、系統(tǒng)架構(gòu)是否完整,功能的實現(xiàn)是否與不同數(shù)據(jù)庫之間是否匹配,是否滿足系統(tǒng)整合的要求,從而能夠有效地判斷系統(tǒng)結(jié)構(gòu)優(yōu)化設(shè)計能否滿足需要,通過加強對軟件的功能進行測試,能夠在短時間內(nèi)判斷軟件的結(jié)構(gòu)能否滿足需求,由于軟件在開發(fā)完成后,很難對系統(tǒng)進行再次優(yōu)化,在軟件開發(fā)的前期,對系統(tǒng)的功能架構(gòu)進行測試十分重要,基于數(shù)據(jù)監(jiān)測所開展的軟件測試,可以解決系統(tǒng)內(nèi)部存在的安全隱患問題,在現(xiàn)階段的檢測中經(jīng)常用到的技術(shù)方法,在運行過程中,軟件對于使用期間可能會發(fā)生的問題,需要重點對測試用例生成的測試數(shù)據(jù)進行分析,通過這種方法能夠促進現(xiàn)場得到更理想的使用標注,在軟件使用中,如果安全性出現(xiàn)下降的情況,可以按照系統(tǒng)的結(jié)構(gòu)進行分析,對提高測試效率十分有效。
2)基于API接口參數(shù)的黑盒測試
在對軟件的API接口功能測試時,系統(tǒng)的接口測試也是十分重要的,對接口進行對接處理時,首先確定接口位置,判斷其是否與標準接口相一致,與標準接口連接形式進行比較,合理的選擇直接對系統(tǒng)功能的測試產(chǎn)生重要的影響,在對軟件的接口測試時,一般是對接口采用黑盒測試的方法,不用關(guān)心下游系統(tǒng)的具體實現(xiàn)邏輯,可以先模擬出需要配合的軟件功能進行測試,所營造的測試環(huán)境要與實際使用環(huán)境保持一致,而不用判斷軟件的內(nèi)部是如何工作的,便于軟件具體功能的測試與判斷,也能夠更好地確保軟件在安全管理范圍內(nèi)開展,也有利于其他功能的測試。在選擇功能接口后,在對軟件進行測試時,軟件的信息傳輸系統(tǒng)就會依據(jù)設(shè)計的功能運行,從而能夠更好地實現(xiàn)軟件的功能計劃,避免軟件測試過程中出現(xiàn)的安全與不穩(wěn)定的情況,以更好地實現(xiàn)軟件使用功能完善計劃。采用黑盒測試技術(shù),可以采用計算機軟件模擬的方式來分析軟件的功能。利用黑盒測試技術(shù)對軟件的兼容性測試也十分重要,使得軟件的各個功能能夠形成一個統(tǒng)一的整體,通過合理的設(shè)計測試的參數(shù),可以有效地防止數(shù)據(jù)丟失,使得軟件的功能測試具有極強的自控性。
3)以覆蓋率為線索進行的軟件測試
基于功能測試的技術(shù)需要對開發(fā)的軟件覆蓋率進行測試,只要對軟件功能的執(zhí)行力度與覆蓋率進行測試。因為軟件在計算機設(shè)備中運行使用時,需要極強的控制能力,才能滿足軟件正常運行的要求,也可以實現(xiàn)對軟件系統(tǒng)傳輸數(shù)據(jù)的準確性進行測試,以保證將正確的數(shù)據(jù)信息轉(zhuǎn)化為指令,進而能夠完成對系統(tǒng)軟件的功能進行測試。軟件測試是一個持續(xù)改進的過程,不管選擇何種測試技術(shù)和方法,最終的測試效果與預(yù)期的效果一致才能滿足用戶的需要,如何測試結(jié)果與預(yù)期的效果不一致,或者出現(xiàn)質(zhì)量嚴重的下降的情況,就需要采用技術(shù)的方法對軟件的系統(tǒng)進行修改,使得軟件測試能及時發(fā)現(xiàn)在軟件開發(fā)中錯誤、缺陷,將軟件開發(fā)中出現(xiàn)的問題降低到最低點。對軟件的覆蓋率檢測在測試中具有相應(yīng)的硬性指標,并且要求對不同的數(shù)據(jù)流需要全面覆蓋測試,數(shù)據(jù)是軟件功能處理的核心基礎(chǔ),需要對原有的數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu)進行全面覆蓋,才能有效地保證軟件測試能夠滿足相應(yīng)的要求。
3.3 基于面向?qū)ο蟮能浖y試
1)面向?qū)ο笤O(shè)計的選擇
由于軟件不同結(jié)構(gòu)部分是由不同的程序開發(fā)人員設(shè)計的,在軟件程序的構(gòu)成隨著功能變化也存在很大差異性,需要采用面向?qū)ο蟮乃季S來對實際的軟件進行抽象和封裝,可以快速地對軟件結(jié)果進行測試,進而能夠準確地對軟件運行的真實情況進行分析,在對象可測的范圍內(nèi)、測試的效果中更具有針對性與安全性,這樣不僅避免無效的測試、還減少了測試資源的浪費,還能在測試的過程中對軟件的總體功能模塊進行模擬,以保證軟件整體運行的效果。測試所觀察到的最終結(jié)果也能夠與實際情況或預(yù)期結(jié)果是否保持一致做一個對比,減少了軟件重測帶來的麻煩,也快速對軟件中出現(xiàn)不兼容現(xiàn)象進行處理,可以快速地保證軟件開發(fā)的有效性,軟件質(zhì)量效果能夠得到更理想的效果,這樣更符合實際應(yīng)用期間對測試方法的選擇,從而能有效地保證軟件測試的有效性。
2)根據(jù)程序的內(nèi)部的邏輯結(jié)構(gòu)白盒測試
軟件的內(nèi)部邏輯結(jié)構(gòu)測試,可以跟蹤觀察程序的具體執(zhí)行步驟和流程,一般屬于技術(shù)性的測試方法,以解決軟件的內(nèi)部邏輯結(jié)構(gòu)的正確性為基礎(chǔ),根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)對其路徑和計算邏輯的正確性進行測試,可以對程序的功能、安全等方面出現(xiàn)的病毒入侵現(xiàn)象進行分析,通過這種方法也能測試解決,發(fā)現(xiàn)系統(tǒng)結(jié)構(gòu)不合理的情況,避免系統(tǒng)受到嚴重的安全隱患,從而判斷軟件的運行是否安全。軟件的內(nèi)部結(jié)構(gòu)在一般情況下通過技術(shù)革新是可以優(yōu)化的,還可通過改變程序在執(zhí)行流程順序,改變軟件的總體架構(gòu),進而實現(xiàn)軟件能夠靈活的應(yīng)用于不同的環(huán)境中。
3)黑盒與白盒結(jié)合的測試方法
在軟件開發(fā)完成之后,測試者可以不對系統(tǒng)的架構(gòu)與軟件內(nèi)部執(zhí)行過程中進行分析,可以采用黑盒與自盒相互結(jié)合補充的方法,對軟件最終運行的效果進行檢測。確保軟件內(nèi)部運行安全的前提下,采用白盒的測試方法來檢查軟件具體邏輯運行功能,觀察測試的效果與預(yù)期效果之間的差別,以判斷軟件的測試效果,邏輯功能是否滿足用戶要求。在白盒測試過程中,軟件測試所遇到問題的都能夠體現(xiàn)在邏輯結(jié)構(gòu)中,保證解決軟件開發(fā)中的邏輯功能是正確可靠的。采用黑盒測試的方法,主要對軟件的運行功能效果進行測試,而不去考慮軟件內(nèi)部的運行過程,如果測試效果與預(yù)期效果之間存在差距,說明軟件開發(fā)在體系結(jié)構(gòu)上存在問題,然后利用白盒測試的方法,分析具體的測試過程中可能出現(xiàn)的問題,以保證軟件的測試效果能夠滿足要求。
3.4 持續(xù)集成和交付中測試用例的自動化運行
1)漸增測試方式
在軟件持續(xù)測試使用的過程中,通過不斷測試,以發(fā)現(xiàn)在前期測試中沒有發(fā)現(xiàn)的問題,這樣出測試方法是在未測試的模塊連接上一個己測試的模塊進行測試,通過不斷的連接未測試的模塊,連續(xù)的增加測試的結(jié)果,采用這種漸增的測試方法,以發(fā)現(xiàn)軟件開發(fā)中存在的問題。
2)非漸增測試方式
非漸增方式就是一次性完成的測試方法,在進行軟件測試前,將軟件的所有模塊按照系統(tǒng)的連接圖連接在一起,對軟件的整體性效果進行測試,采用這種方法測試,主要適用于一些開發(fā)的小型軟件,而對于大型軟件,建議采用漸增式可持續(xù)集成的測試方法來進行。
3)系統(tǒng)測試
軟件測試主要是保證系統(tǒng)的后期使用能夠滿足用戶的要求,為用戶提供良好的體驗,這就需要對軟件進行系統(tǒng)的性能、安全、穩(wěn)定性等進行非功能性的測試,這種測試方法一般是為了發(fā)現(xiàn)系統(tǒng)的非功能性需要與系統(tǒng)需求之間存在的具體差異,包括軟件運行的速度、安全、精度等問題。
4 結(jié)束語
目前雖然已經(jīng)實現(xiàn)了測試精準的質(zhì)量控制,但在信息技術(shù)與軟件工程技術(shù)不斷發(fā)展的情況下,隨著軟件測試技術(shù)的不斷深入與發(fā)展,軟件的測試的技術(shù)和方法也需要根據(jù)不同的軟件工程和信息技術(shù)背景選擇其合理的測試方法,準確的評估軟件開發(fā)的效果與預(yù)期效果之間的差別,判斷軟件在功能、性能、穩(wěn)定性、安全性等方面存在的問題,確保軟件的生命周期中始終能開發(fā)出高質(zhì)量、高可靠的軟件產(chǎn)品。
參考文獻:
[1]卞華文.計算機應(yīng)用軟件開發(fā)技術(shù)的分類[J].電子技術(shù)與軟件工程,2016(24):55.
[2]張旭,計算機軟件開發(fā)技術(shù)的應(yīng)用[J].硅谷,2013,6(3):91,100.
[3]杜國真.計算機軟件開發(fā)技術(shù)的應(yīng)用及未來趨勢[J].電子技術(shù)與軟件工程,2017(8):47-48.
[4]宋新樂,宋文文.基于辦公自動化中的計算機技術(shù)應(yīng)用的探析[J].電子測試,2016(10):64-65.
【通聯(lián)編輯:唐一東】