李華寶
摘要:在軟件的開發(fā)過程中,軟件測試是提高軟件實(shí)用性以及質(zhì)量的關(guān)鍵性環(huán)節(jié)。軟件測試是為了發(fā)現(xiàn)軟件錯誤以及潛在缺陷的過程,是保障軟件質(zhì)量的關(guān)鍵技術(shù)之一。軟件技術(shù)在近幾年進(jìn)入了高速發(fā)展期,軟件測試技術(shù)以及自動化測試技術(shù)也獲得進(jìn)步。本文針對軟件測試的自動化的信息以及關(guān)鍵技術(shù)進(jìn)行了整理分析。
關(guān)鍵詞:軟件 測試 自動化 技術(shù)
中圖分類號:TP311.5 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)06-0234-01
軟件測試技術(shù)從傳統(tǒng)的手工測試逐步發(fā)展為現(xiàn)在的自動化測試技術(shù)。手工測試往往需要技術(shù)人員付出大量的精力和體力,是一項(xiàng)工作量極大的過程。如今隨著社會的高速發(fā)展,信息技術(shù)的突飛猛進(jìn),軟件領(lǐng)域的競爭趨于白熱化,軟件正在向著復(fù)雜、尖端、多元化方向發(fā)展。大量的軟件程序開發(fā)出來,僅依靠效率低下的手工測試已經(jīng)遠(yuǎn)遠(yuǎn)不能達(dá)到人們的需求。為了適應(yīng)市場,自動化測試被開發(fā)出來,自動化測試的誕生極大的提高了工作效率,是測試用例的生成軟件測試是軟件質(zhì)量保證的重要手段,也是目前軟件測試的發(fā)展方向。
1 軟件測試自動化基本概述
從上世紀(jì)六十年代開始人們就對軟件測試就行了研究,至今己有50余年的歷史。測試顧名思義就是對所開發(fā)的軟件產(chǎn)品進(jìn)行檢查、評審和確認(rèn)等過程,是對軟件產(chǎn)品質(zhì)量所進(jìn)行的自檢和自評。
(1)軟件測試的概念。軟件測試是軟件開發(fā)的過程中重要的一環(huán),其工作一般是事先安排好工作計(jì)劃,然后較為全面系統(tǒng)的進(jìn)行測試工作。是對軟件產(chǎn)品進(jìn)行的自檢。該活動伴隨著軟件開發(fā)的每一步進(jìn)行。通過軟件測試,可以檢測出軟件在運(yùn)行過程中存在或者潛伏的各種錯誤或者缺陷,從而為開發(fā)者提供數(shù)據(jù)依據(jù)。
(2)軟件測試的種類。軟件測試的分類方法有很多,比如按軟件開發(fā)過程可分為單元測試、集成測試、系統(tǒng)測試及驗(yàn)收測試;按軟件動作可分為升級變更的測試、重現(xiàn)故障測試、己有功能的測試、回歸測試、兼容性測試及恢復(fù)測試、安裝/卸載的測試等等;按測試方法,又可以分為黑箱測試及白箱測試;按用不用借助軟件,可以分為手動測試和自動化測試。
(3)典型的軟件測試問題。由于軟件系統(tǒng)的復(fù)雜性和不可預(yù)測性,在軟件測試過程中可能會出現(xiàn)一些問題,主要問題可歸結(jié)為以下幾個方面:項(xiàng)目存在風(fēng)險性,在項(xiàng)目晚期才能真正降低;項(xiàng)目進(jìn)度不易預(yù)測,加之項(xiàng)目負(fù)責(zé)人對所開發(fā)軟件實(shí)際狀況的了解程度不夠,造成管理上的問題。開發(fā)經(jīng)費(fèi)較高,如果在測試過程中錯誤沒被監(jiān)測出來,后期的軟件錯誤修復(fù)費(fèi)用會極高,同時也會造成整個項(xiàng)目的延遲,可能會導(dǎo)致開發(fā)項(xiàng)目成本的大幅度增加,據(jù)統(tǒng)計(jì),近些年由軟件開發(fā)失誤所造成的經(jīng)濟(jì)損失每年高達(dá)幾百億美元。
(4)自動化測試。測試自動化作為一種測試技術(shù),通過設(shè)定的機(jī)制,可以自動對被測系統(tǒng)進(jìn)行測試。測試自動化以較低的費(fèi)用、徹底的測試、較高的產(chǎn)品質(zhì)量作為目標(biāo)。實(shí)現(xiàn)軟件測試自動化的趨勢己經(jīng)不可逆轉(zhuǎn)了。自動化測試主要采用自動化工具提供的測試腳本對目標(biāo)應(yīng)用程序進(jìn)行測試。自動化測試具有速度快、測試效率高、可靠性強(qiáng)、測試覆蓋率高通用性強(qiáng)、風(fēng)險低信任度高、完成手工測試不能或難以完成的測試等特點(diǎn)。雖然自動化測試具有很多優(yōu)點(diǎn),但是其不是萬能的,也有其自身的局限性。
2 軟件測試自動化關(guān)鍵技術(shù)
(1)測試用例自動生成技術(shù)。測試用例的自動生成是實(shí)現(xiàn)自動化的關(guān)鍵所在,靠人為以及手工的方式產(chǎn)生測試用例是較傳統(tǒng)的方式,花費(fèi)時間較長且質(zhì)量不高,會有人為因素造成一定的錯誤,而自動生成的測試用例就可以避免此問題的生成。目前有面向路徑的測試用例及面向功能的測試用例兩種技術(shù)。面向路徑的技術(shù)是針對程序的內(nèi)部結(jié)構(gòu)的,需要對程序的邏輯路徑達(dá)到一定程度的覆蓋,是基于覆蓋的測試用例生成技術(shù),通過覆蓋程序中所有路徑,找到程序的中隱秘的錯誤。面向路徑的方法主要有動態(tài)法、靜態(tài)法、隨機(jī)法及動態(tài)法。面向功能技術(shù)是以規(guī)格說明書作為支持,并根據(jù)說明書的需求生成相應(yīng)的測試用例。面向功能技術(shù)可分為基于模型的、基于代數(shù)的以及基于有限狀態(tài)機(jī)的等。測試用例自動生成相關(guān)算法主要有遺傳算法、蟻群算法及粒子群算法。目前混合蛙跳算法在測試用例自動算法中也開始使用,此方法是一種全新群體智能算法,結(jié)合了模因算法和粒子算法兩者的優(yōu)點(diǎn)。
(2)捕獲/回放。自動化測試使用的主要手段之一是捕獲/回放。技術(shù)人員通過對腳本進(jìn)行捕捉回放,完成腳本的錄制工作。其主要記錄內(nèi)容為所開發(fā)軟件的系統(tǒng)結(jié)構(gòu)組件,以及所開發(fā)軟件對測試的具體操作步驟。測試結(jié)果一般是以文本格式存放。捕獲/回放一般有三種特定級別,即操作系統(tǒng)級別、硬件級別和進(jìn)程級別。
(3)自動化測試模型選取。自動化測試模型一般可以分為三種,即合并式、獨(dú)立式及顧問式。其模型主要是為了在組織中實(shí)行自動化測試服務(wù)。合并式模型:主要工作有設(shè)計(jì)、開發(fā)、執(zhí)行以及提交等。測試自動化工程師會參與到手工測試人員的每一項(xiàng)工作中,輔助其完成測試工作。獨(dú)立式模型:一個核心的測試自動化組負(fù)責(zé)進(jìn)行自動化測試項(xiàng)目生命周期中的所有活動。這個小組要完成從自動化測試套件開始設(shè)計(jì)到發(fā)布間的所有任務(wù)。在顧問式模型中,負(fù)責(zé)給手工測試工程師培訓(xùn)關(guān)于測試工具,測試方法的知識并為執(zhí)行和鞏固活動提供基礎(chǔ)設(shè)施。
無論選取哪個模型,其最終的目的都是為了增加工作效率,提高軟件檢測過程的自動化水平。專門的測試自動化工程師被分配到每個測試項(xiàng)目中和手工測試人員一起工作,共同分擔(dān)著測試自動化項(xiàng)目的相關(guān)活動。在整個測試流程中,自動化測試工程師與手工測試工程師對需要進(jìn)行自動化的測試用例進(jìn)行研究討論,對原有的手工測試用例進(jìn)行拆分使其符合自動化測試的需求。
3 結(jié)語
軟件測試是為了發(fā)現(xiàn)軟件錯誤以及潛在缺陷的過程,是保障軟件質(zhì)量的關(guān)鍵技術(shù)之一。軟件自動化測試是軟件測試的一個重要組成部分,它可以完成許多手工測試無法實(shí)現(xiàn)或者難以實(shí)現(xiàn)的測試。對軟件測試自動化關(guān)鍵技術(shù)的分析具有很重要的意義。
參考文獻(xiàn)
[1]傅兵.軟件測試技術(shù)現(xiàn)狀與發(fā)展趨勢研究[J].電腦編程技巧與維護(hù),2016(02).
[2]林平榮.高校軟件測試自動化教學(xué)平臺的搭建[J].電腦知識與技術(shù),2010(28).
[3]徐俊毅.風(fēng)河軟件測試自動化方案為嵌入式系統(tǒng)開發(fā)提速[J].電子與電腦,2009(12).
[4]張向芳,李華,姜英偉.軟件測試自動化的實(shí)施方案[J].山西科技,2006(04).