趙輝 袁普及
關(guān)鍵詞:軟件;自動(dòng)化;測(cè)試;定義;技術(shù)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)12-0054-03
隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,軟件產(chǎn)品使用得越來(lái)越多,其被廣泛應(yīng)用于電子產(chǎn)品、辦公軟件、金融行業(yè)等領(lǐng)域。與此同時(shí),軟件產(chǎn)品的規(guī)模越來(lái)越大,越來(lái)越復(fù)雜,而軟件的交付周期不斷縮短,需使用軟件測(cè)試技術(shù)來(lái)保證軟件產(chǎn)品的質(zhì)量。軟件測(cè)試主要通過(guò)手動(dòng)或自動(dòng)測(cè)試方法對(duì)系統(tǒng)或軟件進(jìn)行測(cè)試,找出程序中的問(wèn)題,從而提高軟件產(chǎn)品的質(zhì)量,使得系統(tǒng)滿(mǎn)足客戶(hù)的需求。
在人們的日常工作和生活中,離不開(kāi)各種各樣的軟件,而軟件的錯(cuò)誤會(huì)帶來(lái)不必要的支出或隱藏的危險(xiǎn),因此,軟件測(cè)試在軟件產(chǎn)品開(kāi)發(fā)過(guò)程中至關(guān)重要,不僅能夠檢驗(yàn)軟件產(chǎn)品是否符合產(chǎn)品需求,而且關(guān)系著軟件產(chǎn)品的交付質(zhì)量和客戶(hù)的滿(mǎn)意度[1]。軟件測(cè)試[2-3]是檢驗(yàn)軟件產(chǎn)品質(zhì)量的重要手段,貫穿于軟件產(chǎn)品開(kāi)發(fā)的整個(gè)生命周期。軟件測(cè)試主要包括手動(dòng)和自動(dòng)化測(cè)試。手動(dòng)測(cè)試主要是通過(guò)手動(dòng)操作來(lái)檢測(cè)軟件產(chǎn)品的功能。自動(dòng)化測(cè)試是使用專(zhuān)門(mén)的自動(dòng)化工具來(lái)對(duì)軟件產(chǎn)品進(jìn)行測(cè)試。在軟件產(chǎn)品產(chǎn)生初期,軟件測(cè)試的定義不是很完善,它只占軟件產(chǎn)品研發(fā)過(guò)程中的小部分。隨著軟件產(chǎn)品系統(tǒng)的規(guī)模越來(lái)越龐大,所涉及的領(lǐng)域越來(lái)越廣,軟件產(chǎn)品的測(cè)試也變得越來(lái)越困難,即測(cè)試也會(huì)變得復(fù)雜,人工手動(dòng)測(cè)試變得相當(dāng)困難,因此,人們開(kāi)始使用軟件自動(dòng)化測(cè)試對(duì)產(chǎn)品進(jìn)行測(cè)試,解決了人工手動(dòng)測(cè)試存在的問(wèn)題。軟件自動(dòng)化測(cè)試可以提高測(cè)試的執(zhí)行效率、降低人工測(cè)試所帶來(lái)的成本、能夠避免人工測(cè)試導(dǎo)致的測(cè)試遺漏,能夠完成人工測(cè)試無(wú)法完成的任務(wù)、可以幫助企業(yè)開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品。因此,本文對(duì)軟件自動(dòng)化測(cè)試技術(shù)進(jìn)行研究與探析。
1 軟件自動(dòng)化測(cè)試定義
軟件自動(dòng)化測(cè)試[4]是指在預(yù)先設(shè)定條件下,運(yùn)行編寫(xiě)好的程序,然后對(duì)運(yùn)行結(jié)果進(jìn)行評(píng)估。其中,預(yù)先設(shè)定的條件包括正常和異常兩種條件。軟件自動(dòng)化測(cè)試是將手動(dòng)測(cè)試轉(zhuǎn)變?yōu)闄C(jī)器執(zhí)行的過(guò)程,直觀地
說(shuō)就是在測(cè)試過(guò)程中,手動(dòng)測(cè)試被自動(dòng)化測(cè)試工具所代替。軟件自動(dòng)化測(cè)試的本質(zhì)是通過(guò)腳本程序測(cè)試軟件開(kāi)發(fā)的程序,主要完成兩種測(cè)試:一種是測(cè)試用例不能用手工測(cè)試,就要用軟件自動(dòng)化測(cè)試,如壓力測(cè)試,不能使用手動(dòng)測(cè)試完成;另一種是能夠?qū)y(cè)試用例編寫(xiě)為自動(dòng)化測(cè)試腳本,此種方法能夠節(jié)省資源,提高軟件測(cè)試的效率。
軟件自動(dòng)化測(cè)試能夠減少測(cè)試工程師的工作量,也可避免對(duì)軟件的重復(fù)操作。另外,軟件自動(dòng)化測(cè)試可以完成手動(dòng)測(cè)試不能完成的操作任務(wù),如壓力測(cè)試、可靠性測(cè)試、并發(fā)測(cè)試等。在并發(fā)測(cè)試過(guò)程中,如果使用手動(dòng)測(cè)試,需要提前準(zhǔn)備多臺(tái)計(jì)算機(jī)和多名測(cè)試工程師,然后根據(jù)指揮在同一時(shí)間同一位置進(jìn)行操作,使用秒表得到反應(yīng)時(shí)長(zhǎng)。在這種方式下,得到的結(jié)果并不能讓人信服,也無(wú)法得到好的檢測(cè)結(jié)果,因此,并發(fā)測(cè)試使用手動(dòng)測(cè)試不可行,可使用自動(dòng)化測(cè)試方法進(jìn)行測(cè)試。軟件自動(dòng)化測(cè)試能夠節(jié)約人力和時(shí)間,提高測(cè)試的執(zhí)行效率,縮短軟件產(chǎn)品的開(kāi)發(fā)周期。對(duì)于需要反復(fù)進(jìn)行操作的工作,軟件自動(dòng)化測(cè)試可以提前準(zhǔn)備好腳本程序和自動(dòng)化測(cè)試工具,然后不斷地重復(fù)需要進(jìn)行的操作,最終可以有效地完成測(cè)試任務(wù)。
軟件自動(dòng)化測(cè)試之前需要對(duì)軟件產(chǎn)品進(jìn)行分析,確定該產(chǎn)品是否能夠進(jìn)行自動(dòng)化測(cè)試。軟件自動(dòng)化測(cè)試主要適用于軟件產(chǎn)品的需求后續(xù)變動(dòng)不會(huì)很大、整個(gè)項(xiàng)目周期比較長(zhǎng)、要求要做回歸測(cè)試的情況,因此,需要組建專(zhuān)業(yè)的自動(dòng)化測(cè)試團(tuán)隊(duì),對(duì)軟件產(chǎn)品進(jìn)行自動(dòng)化測(cè)試。綜上分析可知,軟件自動(dòng)化測(cè)試就是用自動(dòng)化測(cè)試工具代替手工行為的一種測(cè)試,即使用自動(dòng)化測(cè)試工具及所編寫(xiě)的腳本程序來(lái)模擬人工操作,進(jìn)而完成自動(dòng)化測(cè)試過(guò)程。
2 軟件自動(dòng)化測(cè)試步驟
軟件自動(dòng)化測(cè)試通過(guò)分析軟件產(chǎn)品需求及測(cè)試工具,制定測(cè)試計(jì)劃,根據(jù)測(cè)試需求,構(gòu)建測(cè)試環(huán)境并編寫(xiě)測(cè)試用例,進(jìn)而編寫(xiě)自動(dòng)化測(cè)試腳本,通過(guò)執(zhí)行腳本來(lái)驗(yàn)證測(cè)試腳本的正確性。在設(shè)計(jì)手工測(cè)試用例時(shí),標(biāo)出能夠使用自動(dòng)化測(cè)試的用例,以供參考。自動(dòng)化測(cè)試腳本的開(kāi)發(fā)過(guò)程其實(shí)就是將測(cè)試用例轉(zhuǎn)變?yōu)榇a,然后在測(cè)試環(huán)境中對(duì)自動(dòng)化測(cè)試腳本進(jìn)行驗(yàn)證。當(dāng)然,若想要測(cè)試腳本具有兼容性,需放在其他的平臺(tái)上對(duì)其進(jìn)行驗(yàn)證。最后,需要對(duì)測(cè)試結(jié)果進(jìn)行評(píng)估和分析。軟件自動(dòng)化測(cè)試具體流程[4]如圖1 所示。
根據(jù)軟件產(chǎn)品的需求和測(cè)試工具,首先編寫(xiě)軟件產(chǎn)品測(cè)試計(jì)劃。軟件產(chǎn)品的測(cè)試計(jì)劃主要包括測(cè)試的內(nèi)容、目的、方法,所要耗費(fèi)的人力、物力等。通過(guò)軟件產(chǎn)品測(cè)試計(jì)劃和需求說(shuō)明書(shū),設(shè)計(jì)測(cè)試用例。在設(shè)計(jì)測(cè)試用例時(shí),要包括所有的測(cè)試需求,并單獨(dú)列出無(wú)法用自動(dòng)化測(cè)試來(lái)完成的測(cè)試用例,為后續(xù)編寫(xiě)代碼做準(zhǔn)備。測(cè)試用例應(yīng)滿(mǎn)足全面性、可操作性、正確性等要求,而且必須經(jīng)過(guò)評(píng)審才能夠使用。軟件測(cè)試環(huán)境根據(jù)軟件產(chǎn)品的不同選擇不同的環(huán)境進(jìn)行測(cè)試。測(cè)試用例和環(huán)境完成后,根據(jù)軟件產(chǎn)品的需求和不同的自動(dòng)化測(cè)試工具,選擇腳本語(yǔ)言,然后開(kāi)始編寫(xiě)腳本,編寫(xiě)好腳本之后,對(duì)腳本進(jìn)行不斷調(diào)試驗(yàn)證,并實(shí)時(shí)記錄、跟蹤、反饋測(cè)試過(guò)程中出現(xiàn)的問(wèn)題,最后對(duì)測(cè)試結(jié)果進(jìn)行分析。
軟件自動(dòng)化測(cè)試腳本的維護(hù)非常重要。若軟件測(cè)試比較復(fù)雜且腳本很多,在反復(fù)執(zhí)行腳本的過(guò)程中,運(yùn)行就會(huì)變得很慢,需要根據(jù)測(cè)試用例和腳本設(shè)計(jì)說(shuō)明對(duì)腳本進(jìn)行維護(hù)。因此,在編寫(xiě)測(cè)試用例和腳本時(shí),能夠考慮可能會(huì)出現(xiàn)的各種問(wèn)題,以便更好地維護(hù)腳本。
3 軟件自動(dòng)化測(cè)試技術(shù)及應(yīng)用場(chǎng)景
軟件自動(dòng)化測(cè)試技術(shù)主要有錄制與回放、腳本測(cè)試技術(shù)、數(shù)據(jù)驅(qū)動(dòng)、功能驅(qū)動(dòng)等,除此之外,還有領(lǐng)域驅(qū)動(dòng)、功能驅(qū)動(dòng)及指令驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試技術(shù)。因此,通過(guò)利用這些技術(shù),軟件自動(dòng)化測(cè)試可應(yīng)用于基于Linux GUI、基于Python CLI、云端軟件等自動(dòng)化測(cè)試場(chǎng)景,幫助用戶(hù)開(kāi)發(fā)出更好的軟件產(chǎn)品。
3.1 錄制與回放
錄制與回放[5]是軟件自動(dòng)化測(cè)試最初的技術(shù)。在剛開(kāi)始使用時(shí),需要借助硬件進(jìn)行錄制,即錄制是利用自動(dòng)化測(cè)試工具來(lái)測(cè)試應(yīng)用程序和網(wǎng)頁(yè)中的功能,然后對(duì)操作過(guò)程進(jìn)行記錄。在錄制過(guò)程中,將程序與腳本混合在一起,且在測(cè)試過(guò)程中能夠產(chǎn)生單獨(dú)的測(cè)試腳本,適用于比較小的項(xiàng)目。由于程序與腳本是混合在一起的,這就需要花費(fèi)很高的成本去維護(hù)。此外,當(dāng)操作界面發(fā)生變化時(shí),測(cè)試工程師就要重新錄制,這就導(dǎo)致操作比較煩瑣?;胤拍軌虬l(fā)現(xiàn)在錄制過(guò)程中出現(xiàn)的錯(cuò)誤。因此,該測(cè)試方法在軟件自動(dòng)化測(cè)試過(guò)程中效率較低,且需要花費(fèi)較高的成本。
3.2 腳本測(cè)試技術(shù)
腳本技術(shù)根據(jù)測(cè)試用例,編寫(xiě)腳本程序。通過(guò)執(zhí)行腳本程序來(lái)實(shí)現(xiàn)自動(dòng)化測(cè)試。腳本測(cè)試有兩種,一是結(jié)構(gòu)化的腳本,此種腳本包含較多的結(jié)構(gòu)化的內(nèi)容,具有較好的邏輯性和穩(wěn)定性,對(duì)在測(cè)試過(guò)程中出現(xiàn)的異常問(wèn)題可以進(jìn)行及時(shí)處理,但腳本與測(cè)試數(shù)據(jù)聯(lián)系緊密,后續(xù)修改的難度較大。另外一種就是非機(jī)構(gòu)化腳本,即線性腳本,該種腳本可以使用不同語(yǔ)言編寫(xiě),方便與被測(cè)產(chǎn)品進(jìn)行交換,但會(huì)增加測(cè)試成本,可用于中小型的軟件產(chǎn)品[5]。
3.3 數(shù)據(jù)驅(qū)動(dòng)
數(shù)據(jù)驅(qū)動(dòng)將以前的需要借助硬件的模式轉(zhuǎn)變成軟件模式。測(cè)試工程師根據(jù)測(cè)試需求和測(cè)試計(jì)劃,檢測(cè)各個(gè)測(cè)試點(diǎn)的參數(shù)值、屬性值及預(yù)測(cè)值,進(jìn)而判斷是否能夠?qū)崿F(xiàn)測(cè)試功能。數(shù)據(jù)驅(qū)動(dòng)測(cè)試技術(shù)能夠?qū)⑾嚓P(guān)信息從數(shù)據(jù)文件中讀取出來(lái),通過(guò)將測(cè)試腳本與測(cè)試數(shù)據(jù)相分離,并將輸入數(shù)及預(yù)期輸出構(gòu)成相應(yīng)的表格,然后對(duì)表格中的數(shù)據(jù)進(jìn)行檢測(cè),提高了測(cè)試的靈活性和代碼的重復(fù)利用性,可用于規(guī)模比較大的項(xiàng)目。另外,在前期準(zhǔn)備階段,由于腳本的邏輯性比較強(qiáng),會(huì)有較多的控制程序,因此要有充足的人力、物力和時(shí)間[6]。
3.4 關(guān)鍵字驅(qū)動(dòng)
關(guān)鍵字驅(qū)動(dòng)通過(guò)將數(shù)據(jù)和關(guān)鍵字融合來(lái)執(zhí)行測(cè)試,是數(shù)據(jù)驅(qū)動(dòng)自動(dòng)化測(cè)試的延伸,因此可充分利用數(shù)據(jù)驅(qū)動(dòng)的優(yōu)勢(shì)。關(guān)鍵字驅(qū)動(dòng)的測(cè)試在同一個(gè)框架下執(zhí)行,而框架具有多個(gè)接口庫(kù),具有擴(kuò)展延伸功能。在自動(dòng)化測(cè)試過(guò)程中,需要對(duì)測(cè)試用例進(jìn)行系統(tǒng)描述和對(duì)腳本進(jìn)行抽象化處理,這樣能夠降低測(cè)試的難度,而且測(cè)試人員并不需要理解代碼,只用通過(guò)測(cè)試工具就可以完成軟件產(chǎn)品的檢測(cè)。但是,這種方式需要花費(fèi)很大的成本,比較適合大規(guī)模的軟件項(xiàng)目。
在軟件產(chǎn)品自動(dòng)化測(cè)試設(shè)計(jì)時(shí),可根據(jù)軟件產(chǎn)品的實(shí)際需求使用一種軟件自動(dòng)化測(cè)試技術(shù),也可以使用兩種及以上自動(dòng)化測(cè)試技術(shù)。綜上可知,軟件自動(dòng)化測(cè)試能夠提高測(cè)試的執(zhí)行效率、降低人工測(cè)試所帶來(lái)的成本、避免人工測(cè)試導(dǎo)致的測(cè)試遺漏等優(yōu)點(diǎn)。但是,軟件自動(dòng)化測(cè)試也有缺點(diǎn),如開(kāi)發(fā)和維護(hù)成本較高、需要分析測(cè)試結(jié)果和日志等[6]。
此外,自動(dòng)化測(cè)試技術(shù)還包括領(lǐng)域驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試技術(shù)、功能驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試技術(shù)、指令驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試技術(shù)等。領(lǐng)域驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試技術(shù)關(guān)鍵字驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試的延伸和改進(jìn),該測(cè)試技術(shù)是從領(lǐng)域模型的角度進(jìn)行研究,根據(jù)領(lǐng)域語(yǔ)言對(duì)測(cè)試用例進(jìn)行描繪,然后構(gòu)建模型,并對(duì)領(lǐng)域關(guān)鍵字及測(cè)試用例進(jìn)行分析,從而進(jìn)行自動(dòng)化測(cè)試。功能驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試技術(shù)將軟件產(chǎn)品分為獨(dú)立的模塊,每個(gè)獨(dú)立的模塊都包含獨(dú)立的測(cè)試用例,并對(duì)獨(dú)立的模塊單獨(dú)進(jìn)行自動(dòng)化測(cè)試。該測(cè)試技術(shù)在面對(duì)需求變更時(shí),僅需要對(duì)需求變更產(chǎn)生影響的模塊進(jìn)行修改就可以,其余模塊的腳本就不需要進(jìn)行很大的調(diào)整。指令驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)是較為理想的自動(dòng)化測(cè)試技術(shù),該測(cè)試技術(shù)是基于數(shù)據(jù)驅(qū)動(dòng)測(cè)試技術(shù)的改進(jìn),將數(shù)據(jù)替換成測(cè)試指令,從而進(jìn)行自動(dòng)化測(cè)試[7]。
3.5 應(yīng)用場(chǎng)景描述
結(jié)合上述描述,軟件自動(dòng)化測(cè)試可應(yīng)用于手動(dòng)測(cè)試無(wú)法實(shí)現(xiàn)或手動(dòng)測(cè)試成本較高的軟件產(chǎn)品,且測(cè)試時(shí)間較長(zhǎng),具有重復(fù)性、機(jī)械性手動(dòng)測(cè)試的軟件產(chǎn)品,軟件界面不會(huì)經(jīng)常變動(dòng),需要進(jìn)行回歸測(cè)試的軟件產(chǎn)品,同時(shí),可以在不同平臺(tái)上能夠重復(fù)使用的場(chǎng)景。具體來(lái)講,軟件自動(dòng)化測(cè)試可應(yīng)用于基于Linux GUI 的自動(dòng)化測(cè)試、基于Python CLI的自動(dòng)化測(cè)試、云端軟件測(cè)試技術(shù)等場(chǎng)景?;贚inux GUI的自動(dòng)化測(cè)試一般以開(kāi)源軟件為主,通過(guò)關(guān)鍵字驅(qū)動(dòng)方式,利用圖形界面對(duì)軟件產(chǎn)品進(jìn)行窗口、圖標(biāo)、菜單等的測(cè)試?;赑ython CLI的自動(dòng)化測(cè)試由協(xié)議、外殼及命令集組成,通過(guò)驅(qū)動(dòng)終端向用戶(hù)端發(fā)送指令,然后服務(wù)器終端開(kāi)始操作,利用終端驅(qū)動(dòng)服務(wù)器終端外殼,通過(guò)命令集來(lái)解析用戶(hù)命令。云端軟件測(cè)試技術(shù)通過(guò)使用云服務(wù)器、云計(jì)算等技術(shù)進(jìn)行軟件自動(dòng)化操作。云服務(wù)器可以實(shí)現(xiàn)資源共享,這樣測(cè)試人員和開(kāi)發(fā)人員可以在云服務(wù)器上進(jìn)行資源共享,能夠充分利用云服務(wù)器上的軟件的自動(dòng)化測(cè)試工具,可以提高測(cè)試的效率[8]。綜上可知,將軟件自動(dòng)化測(cè)試技術(shù)與新技術(shù)相結(jié)合,可以提高軟件自動(dòng)化測(cè)試的測(cè)試效率。
4 總結(jié)與展望
軟件產(chǎn)品的規(guī)模越來(lái)越大,需要實(shí)現(xiàn)的功能也越來(lái)越多,軟件兼容性要求也越來(lái)越高,軟件測(cè)試將面臨著更高的挑戰(zhàn),尤其是不能僅滿(mǎn)足于功能實(shí)現(xiàn),而忽略軟件產(chǎn)品內(nèi)在的性能和代碼質(zhì)量等問(wèn)題的關(guān)注。軟件自動(dòng)化測(cè)試技術(shù)能夠應(yīng)用于復(fù)雜的場(chǎng)景,即能夠模擬復(fù)雜場(chǎng)景代替手動(dòng)完成測(cè)試,可以提高軟件測(cè)試的精確性、準(zhǔn)確性及可信性,因此,本文研究并探析了軟件自動(dòng)化測(cè)試技術(shù)。首先對(duì)軟件自動(dòng)化測(cè)試的定義進(jìn)行了描述與分析,然后闡述了軟件自動(dòng)化測(cè)試的步驟,在此基礎(chǔ)上,對(duì)軟件自動(dòng)化測(cè)試技術(shù)及其應(yīng)用場(chǎng)景進(jìn)行了研究。下一步將軟件產(chǎn)品引入軟件自動(dòng)化測(cè)試技術(shù),以期提高軟件測(cè)試的效率并滿(mǎn)足用戶(hù)的要求。