陳豪文 周璐雨 寧志豪
摘要:隨著信息技術(shù)的快速發(fā)展,人們對軟件的認(rèn)知發(fā)生著階段性的變化,對軟件的質(zhì)量和功能等方面的要求也變得越來越高。一個(gè)優(yōu)秀的軟件在每個(gè)完成階段都應(yīng)經(jīng)歷嚴(yán)格的質(zhì)量檢測和功能測試。那么如何更好的保證軟件的質(zhì)量,進(jìn)行系統(tǒng)規(guī)范的測試,本篇文章將詳細(xì)的介紹軟件測試中常用的方法和技術(shù)。
關(guān)鍵詞:軟件測試;目的;方法
一、為什么要進(jìn)行軟件測試
軟件危機(jī)的出現(xiàn)讓我們將目光更多的聚焦在軟件測試上來。軟件危機(jī)泛指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。[1]
軟件危機(jī)產(chǎn)生的原因主要有4個(gè)方面。①軟件自身的特點(diǎn)。軟件是由許多程序代碼組成的,它不能像硬件那樣通過規(guī)定的標(biāo)準(zhǔn)來衡量。②缺乏正規(guī)的理論性指導(dǎo),沒有開發(fā)工具和嚴(yán)謹(jǐn)?shù)姆椒▽W(xué)的提供。③不能清楚的明確用戶的需求。因?yàn)樵谲浖_發(fā)出來前,用戶可能也不清楚自己的需求,或者開發(fā)人員對用戶的需求可能出現(xiàn)二義性等都會(huì)產(chǎn)生軟件危機(jī)。④軟件開發(fā)的規(guī)模變大,復(fù)雜度更高。規(guī)模太大有可能會(huì)產(chǎn)生交流,管理等方面問題。復(fù)雜度太高,人們的智力和能力將沒有能力解決。
二、軟件測試的定義和目的
軟件測試是對程序或系統(tǒng)能否完成特定任務(wù)建立信心的過程,也是幫助識別開發(fā)完成(中間或最終的版本)的計(jì)算機(jī)軟件(部分或整體)的正確性,完整性,和質(zhì)量的軟件過程。[2]
軟件測試的目的——盡可能早的發(fā)現(xiàn)并改正被測試軟件中的錯(cuò)誤,提高被測軟件的可靠性。[3]
三、軟件測試的主要方法
軟件測試按靜態(tài)和動(dòng)態(tài)可分為兩大類:(1)靜態(tài)測試。(2)動(dòng)態(tài)測試。
靜態(tài)測試——不需要運(yùn)行程序,通過對源代碼進(jìn)行檢查發(fā)現(xiàn)軟件缺陷,主要包括各階段評審,軟件復(fù)雜度、質(zhì)量度量,結(jié)構(gòu)分析,代碼檢查。各階段評審的主要內(nèi)容包括同行評審即讓除開發(fā)軟件的其他人檢查軟件是否有缺陷,需求階段的需求規(guī)格說明書是否符合規(guī)范等。代碼檢查的主要內(nèi)容包括正確性檢查、健壯性檢查、完整性檢查、可修改性檢查和結(jié)構(gòu)化檢查。
動(dòng)態(tài)測試——需要運(yùn)行程序,分析預(yù)期的結(jié)果和真是結(jié)果的差異,主要包括單元測試(對源碼的一個(gè)獨(dú)立的一小段代碼進(jìn)行測試,該代碼實(shí)現(xiàn)一個(gè)規(guī)定的功能)、集成測試(將進(jìn)行單元測試后的模塊組裝起來進(jìn)行測試,一般多用于檢驗(yàn)接口)、確認(rèn)測試(檢查軟件是否滿足需求規(guī)格說明書上的要求,配置是否正確)、系統(tǒng)測試(針對系統(tǒng)中各個(gè)組成部分進(jìn)行綜合性檢驗(yàn),測試系統(tǒng)性能)、驗(yàn)收測試(向用戶證明軟件可以像用戶要求的那樣工作)。
軟件測試按對內(nèi)部程序的了解程度也可分為兩大類:(1)白盒測試。(2)黑盒測試。
白盒測試——只測試程序的處理過程和內(nèi)部結(jié)構(gòu),不測試軟件的功能。將被測程序看成是打開的黑盒,測試人員不考慮程序的功能,只根據(jù)內(nèi)部結(jié)構(gòu)設(shè)計(jì)測試用例。測試方法主要是邏輯覆蓋測試(包括語句覆蓋、條件覆蓋、判斷覆蓋、判斷/條件覆蓋、條件組合覆蓋)路徑覆蓋測試(控制流測試)。
黑盒測試——不關(guān)心程序的內(nèi)部,根據(jù)需求規(guī)格說明書的要求,通過輸入和輸出的關(guān)系設(shè)計(jì)測試用例,檢驗(yàn)是否滿足功能需求。測試方法主要有等價(jià)類劃分法(把所有的輸入數(shù)據(jù)劃分為若干部分,然后從各個(gè)部分中選幾個(gè)代表的數(shù)據(jù)作為測試用例。有效等價(jià)類是驗(yàn)證規(guī)定的性能和功能和無效等價(jià)類是驗(yàn)證不符合規(guī)格說的地方)、邊界值分析法(在有效等價(jià)類的基礎(chǔ)上選取剛剛大于,剛剛小于邊界的數(shù)據(jù)作為測試用例)、決策表法(利用表格式的圖形描述條件和動(dòng)作的關(guān)系)、因果圖法(用于描述多種組合的測試,一般是根據(jù)輸入,輸出,以及約束之間的因果關(guān)系來設(shè)計(jì)測試用例)。
四、其他測試方法
(1)配置測試——軟件在多種平臺的運(yùn)行情況。一般的過程為:①確定需要的硬件種類。②確定廠家的硬件。③確定硬件特征。④縮小到可控制的硬件位置范圍。⑤為每一個(gè)配置設(shè)計(jì)測試用例。⑥執(zhí)行每一種測試并反復(fù)測試。
(2)兼容性測試——檢測軟件之間是否能正確地交互和共享信息,目的是保證軟件按照用戶期望的方式進(jìn)行交互。[4]
(3)外國語言測試——主要解決翻譯問題,熱鍵和快捷鍵問題,字符計(jì)算問題,文本擴(kuò)展問題,本地化問題等由于語言的形式不同造成的問題。
(4)易用性測試——主要包括用戶界面是否符合規(guī)范和標(biāo)準(zhǔn),是否有為有殘疾障礙人員提供幫助的測試。
(5)安全性測試——檢查軟件對不法盜取信息,侵入系統(tǒng)的防御能力,測試軟件是否存在漏洞,該測試是在非正常的條件下進(jìn)行的測試。其中包括網(wǎng)絡(luò)安全性,數(shù)據(jù)庫安全性,系統(tǒng)安全性等方面。
五、未來的軟件測試
近幾年,人工智能發(fā)展迅速,掀起一股熱潮。通過人工智能進(jìn)行其他軟件的測試,從現(xiàn)在來看,已經(jīng)取得了不錯(cuò)的進(jìn)展。人工神經(jīng)網(wǎng)絡(luò)就是AI 技術(shù)在軟件測試方面應(yīng)用較流行的一個(gè)典型例子,當(dāng)然,還有遺傳算法等等。在軟件開發(fā)過程中敏捷開發(fā)是一個(gè)高效快速的模型,軟件測試也可以借鑒此方法,從用戶的角度思考問題,重點(diǎn)關(guān)在與迭代地進(jìn)行測試。
參考文獻(xiàn):
[1]韓利凱.軟件測試[M].北京:清華大學(xué)出版社,2013:23.
[2]蔡建平.軟件測試方法與技術(shù)[M].清華大學(xué)出版社,2014:23.
[3]蔡建平.軟件測試方法與技術(shù)[M].清華大學(xué)出版社,2014:24.
[4]Ron Patton.軟件測試[M].機(jī)械工業(yè)出版社,2011:96.