摘要:隨著現(xiàn)代移動通信技術(shù)的快速發(fā)展,通信行業(yè)軟件產(chǎn)品在各個(gè)領(lǐng)域中得到了廣泛的應(yīng)用,軟件的質(zhì)量成為用戶更加重視的問題。傳統(tǒng)人力方式的通信軟件測試方法,既費(fèi)時(shí)又費(fèi)力,而且無法充分保障軟件測試的準(zhǔn)確性、縮短軟件開發(fā)周期和節(jié)約資源。自動化測試技術(shù)是現(xiàn)階段軟件測試研究的一個(gè)熱點(diǎn)。為了解決通信業(yè)務(wù)軟件測試過程中存在的問題,本文結(jié)合移動通信軟件系統(tǒng)和自動化測試工具的應(yīng)用,以解決自動化測試平臺的應(yīng)用問題。
關(guān)鍵詞:通信軟件;自動化測試;測試腳本
引言
自動化測試指的是指軟件測試的自動化,把以人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種實(shí)踐過程,通過軟件和硬件的測試方式,大量節(jié)省人力,為保障軟件質(zhì)量,減少重復(fù)性測試工作,自動化測試已被廣泛運(yùn)用。
1. WEB自動化測試介紹
軟件回歸測試作為一種具有反復(fù)測試行為系數(shù)較高的軟件測試方法,軟件的測試貫穿了整個(gè)軟件開發(fā)的生命周期,對包含了階段性的軟件產(chǎn)品進(jìn)行了驗(yàn)證及活動過程的確認(rèn),充分解決了軟件中存在的問題、用戶需求和不一致性等[1]。利用自動化測試工具等或者其他方法,結(jié)合回歸測試運(yùn)行模型,能夠?qū)崿F(xiàn)對軟件的自動化測試,以達(dá)到縮短軟件測試周期、提高軟件性能、保障軟件質(zhì)量的目的。因此,自動化測試能夠有效反映出軟件測試的效率,降低測試時(shí)的成本消耗,并且還能夠解決某些無法手動執(zhí)行的測試項(xiàng)目,對其進(jìn)行自動化測試。自動化測試是利用腳本來實(shí)現(xiàn)的,只需要對測試腳本進(jìn)行修改,實(shí)現(xiàn)自動化測試,由此降低某些項(xiàng)目的測試工作量,提高測試效率。簡單來說,WEB自動化測試能力是通過模擬人在WEB界面的操作,實(shí)現(xiàn)WEB系統(tǒng)的業(yè)務(wù)全流程自動化測試。
2. 自動化測試遇到的問題
在被測試系統(tǒng)重新發(fā)布時(shí),因?yàn)楸粶y系統(tǒng)服務(wù)停止,自動化場景將呈現(xiàn)大范圍出錯(cuò)。現(xiàn)有的應(yīng)對方式有以下兩種,但均有缺點(diǎn):(1)無法停止場景的繼續(xù)執(zhí)行,任由場景報(bào)錯(cuò),只能寄希望于被測系統(tǒng)能盡快啟動完成,被測系統(tǒng)重啟完成后,繼續(xù)執(zhí)行剩下的場景,執(zhí)行完成后,再分析和重新執(zhí)行出錯(cuò)的場景。但這樣會產(chǎn)生大量出錯(cuò)的場景,產(chǎn)生臟數(shù)據(jù),給后期分析測試結(jié)果增加難度,并且耗時(shí),大量出錯(cuò)還容易掩蓋真正的系統(tǒng)故障,極大提高了測試結(jié)果的分析難度和故障遺漏的概率。(2)人工到每一臺執(zhí)行機(jī)中,強(qiáng)行終止計(jì)劃執(zhí)行,然后被測系統(tǒng)重新發(fā)布完成后,重新下發(fā)整個(gè)測試計(jì)劃。目前每一次自動化測試場景已經(jīng)達(dá)到了1000個(gè)以上,需要30臺以上執(zhí)行機(jī)執(zhí)行。需要到每一臺執(zhí)行機(jī)中去強(qiáng)制停止計(jì)劃,耗時(shí)耗力。如何在各種突發(fā)問題出現(xiàn)時(shí)暫停自動化測試再啟動確保正常執(zhí)行,這是當(dāng)前急需解決的痛點(diǎn)。
3. 通信行業(yè)軟件系統(tǒng)的自動化測試平臺設(shè)計(jì)研究
為了解決該痛點(diǎn),我們設(shè)計(jì)了自動化測試平臺的“剎車”功能,即自動化執(zhí)行的暫停重啟。該功能用于出現(xiàn)各種意外問題時(shí)進(jìn)行的中斷執(zhí)行,待問題解決后可以再次正常啟動[2]。其他功能包括斷點(diǎn)調(diào)試、條件暫停、手動干預(yù)等。這些功能提供了靈活的暫停執(zhí)行方式,使測試人員能夠在需要時(shí)進(jìn)行調(diào)試、驗(yàn)證、人工干預(yù)等操作。通過斷點(diǎn)調(diào)試,測試人員可以在關(guān)鍵位置暫停執(zhí)行,檢查環(huán)境和變量值;條件暫停允許根據(jù)特定條件暫停執(zhí)行,以便進(jìn)行驗(yàn)證;手動干預(yù)功能讓測試人員能夠手動暫停執(zhí)行,進(jìn)行人工操作?;谧詣踊浖ぞ逽ilkTest特有的4Test語言開發(fā),并且在SilkTest工具的自動化框架基礎(chǔ)之上進(jìn)行改造,自動化測試管理平臺下發(fā)測試計(jì)劃后調(diào)度SilkTest生成工程文件,在自動化執(zhí)行流程當(dāng)中的用例初始化階段進(jìn)行定時(shí)檢測暫停標(biāo)識,執(zhí)行機(jī)中獲取當(dāng)前計(jì)劃執(zhí)行的測試數(shù)據(jù)回傳到自動化管理平臺服務(wù)器,再次啟動將會進(jìn)行先進(jìn)先出原則的排隊(duì)機(jī)制有序執(zhí)行,測試數(shù)據(jù)、測試報(bào)告依據(jù)獲取的暫停前狀態(tài)標(biāo)識正常銜接,具體設(shè)計(jì)框圖如圖1所示。
3.1 一鍵暫停標(biāo)識模塊
測試人員決策是否暫停,可對暫停標(biāo)識進(jìn)行配置,執(zhí)行機(jī)中探測執(zhí)行暫停標(biāo)識,可支持錯(cuò)開時(shí)間隨機(jī)處理暫停,統(tǒng)一為執(zhí)行機(jī)暫停自動化,保存測試計(jì)劃當(dāng)前進(jìn)度,保存待下次啟動隊(duì)列排隊(duì)。
(1)在測試過程中的關(guān)鍵階段TestcaseEnter和TestcaseExit中,添加條件判斷語句。根據(jù)特定條件判斷是否滿足暫停測試的條件。
(2)如果滿足暫停條件,則觸發(fā)暫停操作。通過使用暫停標(biāo)識作為依據(jù),在一定的時(shí)間范圍內(nèi)循環(huán)獲取暫停標(biāo)識,只要反饋還處于暫停狀態(tài),繼續(xù)等待,并不再繼續(xù)執(zhí)行用例步驟,從而實(shí)現(xiàn)暫停測試執(zhí)行的目的。
(3)在暫停期間,可以記錄相關(guān)信息,如計(jì)劃的RunID、PlanID、案例名稱、場景名稱、暫停時(shí)間、測試結(jié)果等,這些記錄有助于后續(xù)的跟蹤和分析。
3.2 保存執(zhí)行狀態(tài)模塊
利用記錄相關(guān)信息,如計(jì)劃的RunID、PlanID、案例名稱、場景名稱、暫停時(shí)間、測試結(jié)果等,有助于后續(xù)的跟蹤和分析。創(chuàng)建一個(gè)數(shù)據(jù)表用于記錄暫停反饋信息,包括暫停時(shí)間、測試結(jié)果等字段。在測試腳本中,當(dāng)觸發(fā)暫停操作時(shí),將相關(guān)暫停反饋信息插入到數(shù)據(jù)表中。
3.3 暫停環(huán)節(jié)模塊
記錄當(dāng)前測試計(jì)劃暫停的相關(guān)信息,同時(shí),記錄一個(gè)待啟動的計(jì)劃隊(duì)列,按照測試工號為主的對應(yīng)測試計(jì)劃RunID排列,以便在下一次啟動計(jì)劃時(shí)按照隊(duì)列順序有序啟動。在測試腳本的TestcaseEnter和TestcaseExit階段處理暫停操作[3]。在TestcaseEnter階段,檢查是否存在待處理的自動化暫停標(biāo)識,并在數(shù)據(jù)表中記錄當(dāng)前測試計(jì)劃暫停的相關(guān)信息,同時(shí),記錄一個(gè)待啟動的計(jì)劃隊(duì)列,按照測試工號為主的對應(yīng)測試計(jì)劃RunID排列,以便在下一次啟動計(jì)劃時(shí)按照隊(duì)列順序有序啟動。在TestcaseExit階段,再次檢查是否存在待處理的自動化暫停標(biāo)識,處理的邏輯依然是記錄計(jì)劃暫停的相關(guān)信息和計(jì)劃待啟動的隊(duì)列。
3.4 再次啟動計(jì)劃模塊
處理已存儲的暫停計(jì)劃相關(guān)信息,維護(hù)一個(gè)待啟動的測試隊(duì)列,使用先進(jìn)后出(FIFO)的方式。再次啟動執(zhí)行計(jì)劃,在TestcaseEnter階段,檢查自動化暫停標(biāo)識是不是已開放,如果暫停已經(jīng)開放,不再循環(huán)等待,開始繼續(xù)執(zhí)行流程。當(dāng)重新啟動測試執(zhí)行時(shí),從關(guān)聯(lián)測試工號的待啟動隊(duì)列獲取首個(gè)RunID,并根據(jù)當(dāng)前測試計(jì)劃的RunID情況進(jìn)行判斷。如果符合當(dāng)前測試計(jì)劃的RunID,則開始執(zhí)行,否則繼續(xù)暫停,繼續(xù)循環(huán)獲取暫停標(biāo)識是否開放?;謴?fù)后繼續(xù)執(zhí)行測試,在測試場景的具體步驟中,直到已完全打開登錄系統(tǒng)后的頁面,才將待啟動隊(duì)列中的首個(gè)RunID移除。其他執(zhí)行機(jī)同樣獲取待啟動隊(duì)列RunID,直到隊(duì)列中的所有RunID都被處理完畢。在重新啟動執(zhí)行時(shí),為避免自動化測試工號的登錄沖突,可以在啟動之前設(shè)置一定的隨機(jī)時(shí)間作為延遲測試工號的登錄。使用合適的函數(shù),如一個(gè)固定時(shí)間加一個(gè)隨機(jī)時(shí)間數(shù),在啟動之前等待一段時(shí)間。
3.5 暫停異常處理模塊
在測試計(jì)劃中捕獲可能引發(fā)暫停、重啟動的異常,例如特定的錯(cuò)誤或條件。當(dāng)出現(xiàn)異常時(shí),測試計(jì)劃會暫停執(zhí)行,并可以在異常處理程序中定義相關(guān)操作,例如記錄錯(cuò)誤信息、生成報(bào)告或觸發(fā)其他操作。
3.6 日志信息處理模塊
在軟件測試工作開始之前,傳統(tǒng)的通信軟件測試平臺的操作步驟和過程非常復(fù)雜,場景較多。因此,為了解決測試過程中存在的各種復(fù)雜問題,需要對自動化平臺當(dāng)中的日志信息進(jìn)行文件保存,以此能夠完成對測試結(jié)果的標(biāo)準(zhǔn)進(jìn)行對比。
4. 測試結(jié)果與成效
4.1 測試工具
為了進(jìn)一步驗(yàn)證本文開發(fā)設(shè)計(jì)功能模塊的可行性,本文選擇使用Silktest作為測試工具,SilkTest是一款對企業(yè)級應(yīng)用進(jìn)行功能測試的產(chǎn)品,可用于測試Web、Java或是傳統(tǒng)的C/S結(jié)構(gòu)。SilkTest 提供了許多功能,使用戶能夠高效率地進(jìn)行軟件自動化測試。這些功能包括:測試的計(jì)劃和管理;直接的數(shù)據(jù)庫訪問及校驗(yàn);靈活、強(qiáng)大的4Test 腳本語言,內(nèi)置的恢復(fù)系統(tǒng)(Recovery System);具有使用同一套腳本進(jìn)行跨平臺、跨瀏覽器和技術(shù)進(jìn)行測試的能力。
4.2 實(shí)踐測試與成效分析
實(shí)踐測試結(jié)果見表1,其結(jié)果支持一鍵配置自動化暫停標(biāo)識,同時(shí)支持統(tǒng)一調(diào)度執(zhí)行機(jī)中斷/執(zhí)行,通過中途暫停自動化執(zhí)行,可以調(diào)試和排查問題、提高測試效率和允許人工干預(yù),還可以提供靈活性和可控性、適應(yīng)多環(huán)境測試以及驗(yàn)證測試結(jié)果等。
實(shí)踐證明本設(shè)計(jì)具有技術(shù)先進(jìn)性和獨(dú)立性,此能力可有效解決自動化測試中斷后不能再續(xù)的痛點(diǎn)。其價(jià)值體現(xiàn)在調(diào)試和排查問題、提高測試效率、提供靈活性和可控性以及適應(yīng)多環(huán)境測試等方面,可以幫助測試人員更好地管理測試進(jìn)度和資源,并提高自動化測試的質(zhì)量和效果。本方案的成果好處主要體現(xiàn)在以下幾個(gè)方面:
(1)提高測試效率:斷點(diǎn)和繼續(xù)執(zhí)行功能可以避免重復(fù)執(zhí)行已經(jīng)完成的測試用例。當(dāng)遇到問題或異常情況時(shí),自動化測試可以暫停,而不需要從頭開始執(zhí)行整個(gè)測試計(jì)劃。這節(jié)省了執(zhí)行時(shí)間,提高了測試效率。
(2)精確定位問題:通過剎車啟停方案,可以在測試過程中剎車暫停,使得測試人員可以精確地定位問題所在。測試人員可以檢查失敗的測試用例、錯(cuò)誤日志等信息,以便更準(zhǔn)確地分析問題的根本原因。
(3)減少資源消耗:剎車啟停方案可以減少資源的消耗。當(dāng)出現(xiàn)問題時(shí),可以及時(shí)暫停測試,避免產(chǎn)生臟數(shù)據(jù)。
(4)提高測試準(zhǔn)確性:被測系統(tǒng)如果遇到異常情況(如重新發(fā)布),未有本方案前,自動化測試場景會大范圍報(bào)錯(cuò),大量的報(bào)錯(cuò)加大了測試人員分析結(jié)果難度,極大可能掩蓋了系統(tǒng)真正的故障。采用本剎車啟停方案,則避免了此類大范圍報(bào)錯(cuò)的發(fā)生,測試人員可以集中精力分析真正的出錯(cuò)故障,提高故障檢出能力,有效提高測試準(zhǔn)確性。
結(jié)語
綜上所述,自動化軟件測試是充分保障軟件質(zhì)量的一種手段。因此,根據(jù)自動化測試工具的基本原理,以及自動化工具自身可靈活擴(kuò)展的一套自動化框架,設(shè)計(jì)了一種自動化測試暫停重啟方案并已開發(fā)完成,本文詳細(xì)介紹了該平臺的主要功能設(shè)計(jì)與實(shí)現(xiàn)。總體來說,通信行業(yè)軟件系統(tǒng)的自動化測試平臺設(shè)計(jì)需要結(jié)合具體的業(yè)務(wù)需求和技術(shù)環(huán)境進(jìn)行綜合考慮,通過科學(xué)合理的設(shè)計(jì)和實(shí)施,可以提高軟件的質(zhì)量和效率,降低人力成本,為企業(yè)的研發(fā)和運(yùn)營帶來巨大的價(jià)值。
參考文獻(xiàn):
[1]劉麗麗,杜永鋒.通信設(shè)備技術(shù)指標(biāo)自動測試與故障診斷系統(tǒng)設(shè)計(jì)[J].軟件, 2023,44(5):52-56.
[2]王奚,王新月,李航,等.面向PLC產(chǎn)品的自動化測試系統(tǒng)平臺設(shè)計(jì)與實(shí)現(xiàn)[J].自動化儀表,2022,43(5):8-11,19.
[3]傅瑞華.面向測試用例生成的自動化方法研究[D].成都:四川大學(xué),2022.
作者簡介:陳陽,本科,工程師,研究方向:開發(fā)測試。