趙司宇
摘要:現(xiàn)階段,隨著軟件系統(tǒng)規(guī)模與復(fù)雜度的不斷提升,測試技術(shù)的多樣化得到了發(fā)展,但是專業(yè)性、針對性與應(yīng)用范圍仍有提升的空間。為此,文章以戶政管理“跨省通辦”系統(tǒng)為范例,研究了針對多部門、多層級、多系統(tǒng)、多網(wǎng)域之間的協(xié)同測試技術(shù),依賴服務(wù)之間的聯(lián)動測試技術(shù),以及大型復(fù)雜系統(tǒng)中的測試問題定位技術(shù)。
關(guān)鍵詞:“跨省通辦”;協(xié)同測試;聯(lián)動測試;問題定位
中圖分類號:TP391? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)13-0045-04
開放科學(資源服務(wù))標識碼(OSID)
0 引言
隨著信息技術(shù)的發(fā)展,現(xiàn)階段所見的軟件規(guī)模不斷增大,其內(nèi)部復(fù)雜程度也越來越高,其內(nèi)部嵌入的功能接口越發(fā)增加,多個系統(tǒng)之間的集成耦合度越來越高。在這種情況下,與之相對應(yīng)的軟件測試難度也在不斷提升,具備相對應(yīng)的測試技術(shù),尤其是針對大型復(fù)雜系統(tǒng)的測試技術(shù),也就成了現(xiàn)今亟待解決的問題。
協(xié)同測試是在多部門、多層級、多系統(tǒng)、多網(wǎng)域之間,需要針對一整個軟件系統(tǒng)進行的測試。在這種情況下,共享信息以保證系統(tǒng)測試流程的順暢、同時對于不同部門之間進行協(xié)調(diào),是協(xié)同測試中的一大挑戰(zhàn)。為了同時保證測試的安全與高效,測試者需要完成整個系統(tǒng)測試內(nèi)容的全面覆蓋,在保證沒有某個環(huán)節(jié)遺漏的同時,也需要保證沒有某個中間部分受到無意義的重復(fù)檢測。
聯(lián)動測試是指針對某一由諸多不同系統(tǒng)所組成的系統(tǒng)測試,多個不同的軟件系統(tǒng)可能涉及諸多不同的接口對接、移動端小程序、服務(wù)器部署項目、桌面端服務(wù)器等諸多不同環(huán)境下的系統(tǒng)組成的大型系統(tǒng),同一系統(tǒng)內(nèi)也同時包括了數(shù)據(jù)庫、軟件代碼所編寫的接口、部署環(huán)境在內(nèi)的諸多需要不同測試方法進行的測試環(huán)節(jié)。在同一大型復(fù)雜系統(tǒng)之中,多個不同的系統(tǒng)服務(wù),以及同一系統(tǒng)的內(nèi)部應(yīng)用服務(wù)之間,由于存在著相當?shù)囊蕾囮P(guān)系,對它們進行統(tǒng)一測試的方法,尚且不夠成熟,需要進一步研究。
而在大型系統(tǒng)中,由于可能存在多個子系統(tǒng),每個子系統(tǒng)中又存在多個功能接口,其內(nèi)部的邏輯復(fù)雜度極高,同時可能通過不同的代碼語言實現(xiàn)。而由此實現(xiàn)的諸多功能,在組成大型系統(tǒng)時的整體流程,以及各功能在業(yè)務(wù)之中的應(yīng)用,使得各種復(fù)雜功能之間的組成難以清楚辨析。自動化測試工具成了針對這個問題常用的測試工具,能夠進行大量的測試。但是,自動化測試工具的準確性十分依賴于測試人員與測試腳本[1]。在大型系統(tǒng)中,很難快速嘗試各種業(yè)務(wù)情況,測試得到具體的錯誤原因,并定位出發(fā)生問題具體功能接口位置。想要快速定位大型系統(tǒng)中存在的問題,也是現(xiàn)今測試之中的一大難題。
為了實現(xiàn)聯(lián)動測試,測試者需要對系統(tǒng)具備明確的認識,能夠區(qū)分外圍系統(tǒng)和關(guān)鍵核心系統(tǒng),通過分層確認測試時的測試重心。通過對于測試內(nèi)容與整體流程的系統(tǒng)化認識,測試者能夠?qū)ο到y(tǒng)實現(xiàn)合理分配,將不同的測試內(nèi)容,包括不同層級、不同系統(tǒng)、不同網(wǎng)域內(nèi)的功能測試,分配給不同的部門。
為了實現(xiàn)協(xié)同測試,測試者需要合理實現(xiàn)對整個測試流程的階段性分配,包括對于整個軟件系統(tǒng)進行合理的單元劃分、分配,以及單元測試之后的測試整合過程。相比于常見的測試流程,測試者選擇了更加輕量級的測試方法,以接口正確性為核心,覆蓋各種測試功能之間的組成。
為了實現(xiàn)錯誤定位功能,測試者需要編寫合適的測試用例,在測試用例能夠完整覆蓋整個系統(tǒng)的情況下,盡可能確保各個測試用例之間的關(guān)聯(lián)度減小,從而縮小其間的覆蓋面,同時刪除其中的冗余信息,通過更高的運行效率,縮短問題定位時間。
為此,測試者對于現(xiàn)有的測試過程進行了修改,通過細化以及針對性地設(shè)定,在測試過程中添加了更多的測試要求,確保了測試過程能夠適用于大型復(fù)雜系統(tǒng)的測試,通過合理分配與錯誤定位,同時保證了正確性與高效。
本文通過子系統(tǒng)功能與重要性的合理分配,在測試過程中,實現(xiàn)了聯(lián)動測試;通過大型系統(tǒng)的合理單元劃分,進行了輕量級的測試系統(tǒng)覆蓋,在測試過程中,實現(xiàn)了協(xié)同測試;通過高效的測試用例編寫,實現(xiàn)了測試問題的定位。
1 測試過程
在系統(tǒng)測試過程中,對測試過程進行管理是最為重要的步驟。在本節(jié)中,測試者對于測試過程進行了劃分[2-3],分別通過每一輪實現(xiàn)了大型系統(tǒng)中的聯(lián)動、協(xié)同測試與問題定位,并針對戶政管理“跨省通辦”系統(tǒng)給出了實例。
1.1 單元測試
單元測試指對測試中最小檢測單元進行檢查和驗證。
在該測試過程中,測試者需要采用白盒測試方法,根據(jù)實際業(yè)務(wù)區(qū)間,在最開始的項目設(shè)計中就完成不同子系統(tǒng)的劃分,并且根據(jù)具體功能,在每個子系統(tǒng)中,根據(jù)實際的業(yè)務(wù)層級需求,劃分不同的區(qū)塊,并將不同子系統(tǒng)分配給不同部門,保證外部設(shè)計功能與內(nèi)部封裝接口之間的一一對應(yīng),從而實現(xiàn)在協(xié)同測試下,多部門、多層級、多系統(tǒng)、多網(wǎng)域之間的功能劃分。
在戶政管理“跨省通辦”系統(tǒng)中,系統(tǒng)可以劃分為數(shù)據(jù)治理體系、電子證照、跨省通辦、“互聯(lián)網(wǎng)+”、電子檔案管理應(yīng)用系統(tǒng)、綜合管理應(yīng)用、電子印章、密碼應(yīng)用安全等不同系統(tǒng),分別分配給了不同企業(yè)與單位,不同系統(tǒng)根據(jù)實際需求分配,在不同企業(yè)與單位所在的省市,同時完成測試環(huán)境、生產(chǎn)環(huán)境的部署,分別完成每個系統(tǒng)的測試。
1.2 集成測試
集成測試又稱為組裝測試或聯(lián)合測試,在單元測試的基礎(chǔ)上,按照項目的概要設(shè)計說明書以及詳細設(shè)計說明書,對單元模塊進行組裝。
在進行各個協(xié)同單元的功能測試過程中,由于每個單元的功能在單元測試的劃分中已經(jīng)明確,整體業(yè)務(wù)能夠根據(jù)流程設(shè)計完成快速組裝,從而能夠?qū)崿F(xiàn)輕量級的集成。
在戶政管理“跨省通辦”系統(tǒng)中,不同系統(tǒng)通過集成成為一個完整的系統(tǒng),系統(tǒng)組成方式在項目開始先期即根據(jù)整體框架設(shè)計圖完成設(shè)定,并通過集成測試確保系統(tǒng)、系統(tǒng)內(nèi)子系統(tǒng)與功能接口能夠彼此之間相互協(xié)作,實現(xiàn)整體的功能。系統(tǒng)綜合采用圖1所示的集成測試方法,確保集成測試的完整性。
1.3 確認測試
確認測試也稱有效性測試,可檢測軟件系統(tǒng)的功能、性能以及其他特性,是否與用戶要求一致。
在測試的過程中,針對每個測試模塊的功能設(shè)計與流程組合,可以通過測試用例密度為標準進行衡量[4],設(shè)計盡可能少量的測試用例,每個測試用例能夠覆蓋到每個業(yè)務(wù)單元需要檢驗的不同情況,通過互斥的情況組合,完成所有需要檢驗的測試條件全覆蓋,即實現(xiàn)了大型復(fù)雜系統(tǒng)下的高效測試定位[5-6]。
在戶政管理“跨省通辦”系統(tǒng)中,針對完整系統(tǒng)測試的過程中,需要預(yù)先完成測試用例的設(shè)置。該平臺主要業(yè)務(wù)功能包括戶口遷移、新生兒出生入戶、戶籍類證明、跨省身份證申領(lǐng)四大功能模塊,預(yù)先根據(jù)標準要求,完成覆蓋了各種測試場景與功能的各種測試用例。測試用例的實現(xiàn)要求如表1所示:
1.4 系統(tǒng)測試
系統(tǒng)測試將整個大型系統(tǒng)作為整體進行測試,包括了軟件系統(tǒng)、硬件、網(wǎng)絡(luò)、支撐軟件、數(shù)據(jù)庫等,進行對接聯(lián)調(diào)工作,能否在環(huán)境下協(xié)調(diào)一致實現(xiàn)業(yè)務(wù)需求。
在最初完成充分的項目整體構(gòu)造規(guī)劃的基礎(chǔ)上,根據(jù)實際的業(yè)務(wù)需求,將整體的業(yè)務(wù)部署進行劃分,不同的區(qū)塊環(huán)境根據(jù)重要性進行標識,從而明確各參與方之間的業(yè)務(wù)需求,以及在整體工作中的資源分配,實現(xiàn)了聯(lián)動測試。且根據(jù)殺蟲劑效應(yīng)[7],軟件會對測試的方式產(chǎn)生天然的免疫性。這要求測試者在大量測試數(shù)據(jù)的情況下,需要通過多種不同的測試軟件,根據(jù)多種不同場景下的測試用例,實現(xiàn)多元化測試技術(shù),從而將系統(tǒng)測試的效果最大化。
在戶政管理“跨省通辦”系統(tǒng)中,通過測試用例的運行,分別完成各個功能模塊的整體流程。與此同時,在后臺接口中,傳入各種前端系統(tǒng)得到的參數(shù),以及系統(tǒng)配置的參數(shù),通過各個接口的返回結(jié)果,確認系統(tǒng)存在的問題進行修改,并且通過多種測試軟件、在多種測試場景下完成測試。
1.5 驗收測試
驗收測試由用戶對于系統(tǒng)核心流程進行檢驗、測試、開發(fā)人員進行操作演示,用戶則依照需求規(guī)格說明書的要求進行驗收。
在最終的驗收過程中,操作演示只需要針對系統(tǒng)架構(gòu)中的核心子系統(tǒng)進行,即聯(lián)動測試中區(qū)分的關(guān)鍵核心系統(tǒng),在該子系統(tǒng)中,由不同子系統(tǒng)的開發(fā)、測試人員,根據(jù)劃定的功能單元分別進行分項測試演示,即實現(xiàn)協(xié)同測試。
在戶政管理“跨省通辦”系統(tǒng)中,經(jīng)過多輪迭代測試、確認系統(tǒng)完成之后,測試人員同步根據(jù)日志進行標準比對,確認各個功能模塊完整,流程完整,數(shù)據(jù)項均符合標準要求,隨后完成測試聯(lián)調(diào)報告并反饋,報告內(nèi)容包括每一輪中的測試情況,具體操作流程,以及流程中測試出并修改的問題。
總體測試流程如圖2所示。單元測試、集成測試、確認測試與系統(tǒng)測試時,若測試有誤,則在提交bug報告后,回到之前的步驟進行調(diào)整,直到測試通過后,開始進行下一步測試。
2 軟件測試過程的基本內(nèi)容
大型復(fù)雜系統(tǒng)的核心功能,往往都是通過軟件實現(xiàn)的。因此,針對各軟件子系統(tǒng)中接口功能實現(xiàn)的重點測試,也就成了大型復(fù)雜系統(tǒng)測試中的關(guān)鍵[8]。除了功能之外,軟件的壓力監(jiān)測工作也十分關(guān)鍵[9],一旦因此出現(xiàn)問題,就會影響整體業(yè)務(wù)與業(yè)務(wù)數(shù)據(jù)的準確性。因此,軟件測試要求能夠根據(jù)系統(tǒng)的需求分析,針對性設(shè)計出滿足各種場景需求的測試用例,跟蹤完成全流程的業(yè)務(wù)運行,同時制定負載壓力場景。而功能測試與壓力測試的測試腳本,均需要遵循以最小的代價完成測試的原則。
在這一節(jié)中,測試者以戶政管理“跨省通辦”系統(tǒng)中,“電子印章”“密碼應(yīng)用安全”兩系統(tǒng)為例,重點研究了核心軟件系統(tǒng)的測試過程。
2.1 測試準備
測試準備階段主要包括組建測試小組,確定測試人員。
在測試準備過程中,測試人員需要根據(jù)不同部門進行分配。根據(jù)不同部門、具體分配的子系統(tǒng)內(nèi)容,分別選定測試人員,綜合確定整體測試方案,即可實現(xiàn)協(xié)同測試。
在測試準備工作中,測試者申請了戶政管理“跨省通辦”系統(tǒng)測試方法研究項目,專門進行相關(guān)測試方法研究,并根據(jù)項目要求分配了測試小組,專門進行功能測試與標準比對。
2.2 測試計劃
測試計劃需求對系統(tǒng)進行拆解,確定了需要測試的重點功能模塊,并分配用于測試的資源,初步確定功能方法與測試計劃進度,完成測試文檔撰寫。
根據(jù)各子系統(tǒng)在大型復(fù)雜系統(tǒng)中的功能分配及具體的重要性,完成用于測試的資源分配與部署,根據(jù)需要設(shè)定測試計劃,并且根據(jù)具體功能,實現(xiàn)初步的測試模型設(shè)計,即實現(xiàn)了聯(lián)動測試。
在設(shè)定軟件測試計劃時,測試者完成了科研項目論證書,分別確定了進行聯(lián)動測試、協(xié)調(diào)測試以及自動化錯誤定位的研究方向。戶政管理“跨省通辦”項目設(shè)定測試計劃為每個季度完成一項測試計劃的研究,最后一個季度完成技術(shù)研究的總結(jié)性匯報,即項目時間為一整年。項目中選擇采用黑盒測試,針對內(nèi)部代碼邏輯不夠清晰的情況,完成前、中、后各種系統(tǒng)層面的業(yè)務(wù)場景測試設(shè)計[10]。
2.3 測試設(shè)計
測試設(shè)計即完成測試用例的設(shè)計。
根據(jù)每個子系統(tǒng)所需要測試的功能,進行針對性測試用例設(shè)計,保證以最低的測試用例密度測試出每一個模塊所需要檢測的各種功能,可能出現(xiàn)的各種正確、錯誤的情況,能夠在發(fā)生錯誤的情況下,在最短的時間內(nèi)定位錯誤發(fā)生的位置,即實現(xiàn)了大型復(fù)雜系統(tǒng)下、各子系統(tǒng)的高效測試定位[11]。
在測試設(shè)計過程中,測試者根據(jù)標準要求,提出整體系統(tǒng)的各個功能模塊內(nèi)各種不同的業(yè)務(wù)場景,包括功能模塊內(nèi)所涉及的各種基本接口服務(wù),以及業(yè)務(wù)服務(wù)調(diào)用的各種正、反向情況,單人、多人調(diào)用,業(yè)務(wù)審核通過與不通過等場景。
2.4 測試執(zhí)行
測試執(zhí)行包括搭建測試環(huán)境,準備測試數(shù)據(jù),并根據(jù)實際業(yè)務(wù)需要,針對不同的系統(tǒng)設(shè)計、代碼等特點,撰寫測試腳本,得到最終測試結(jié)果[12]。
根據(jù)實際分配的資源,分別完成不同網(wǎng)域下,各功能子系統(tǒng)測試環(huán)境的搭建,并且由不同部門,分別配合各測試用例實現(xiàn)各自分配的子系統(tǒng)功能測試,在測試腳本中完成軟件系統(tǒng)與數(shù)據(jù)庫、硬件、支撐系統(tǒng)、網(wǎng)絡(luò)等外部服務(wù)的兼顧,即做到不同層級的兼容,最終測試結(jié)果能夠適應(yīng)多部門、多層級、多系統(tǒng)、多網(wǎng)域,即實現(xiàn)了聯(lián)動測試。
在測試過程中,為了完成高效的軟件問題定位,接口運行需要通過自動化測試軟件運行,同時能夠同步進行壓力測試,確認系統(tǒng)在實際運行過程中的性能。配合實現(xiàn)了各種測試用例的腳本,自動化測試工具能夠兼顧軟件核心功能與工作性能的測試。在本項目中,測試人員通過Jmeter、LoadRunner、Findbugs[13]等多種不同模式的測試軟件,通過不同場景測試用例,實現(xiàn)了多元化測試技術(shù),覆蓋了全流程業(yè)務(wù)實現(xiàn)的同時,將測試效果最大化,并且模擬了大量用戶并發(fā)的負載情況,監(jiān)測了系統(tǒng)的實時性能,檢驗了整個系統(tǒng)的穩(wěn)定性[14-15]。功能測試結(jié)果如表2所示。
2.5 測試結(jié)果分析
測試結(jié)果分析即根據(jù)測試結(jié)果,定位確認軟件系統(tǒng)和產(chǎn)品質(zhì)量問題,并進行多輪測試,最終完成測試報告的撰寫。
最終的測試結(jié)果將各單元之間的諸多測試內(nèi)容進行整合,保證了整個大型復(fù)雜系統(tǒng)內(nèi),軟件核心功能的輕量級測試覆蓋,即實現(xiàn)了協(xié)同測試。
在測試結(jié)果分析的過程中,測試人員每一輪均給出了流程執(zhí)行過程中出現(xiàn)的問題,并且比對了日志數(shù)據(jù)與標準之間的差異,保證了系統(tǒng)功能的完善,給出了囊括每一輪測試過程與測試問題的測試報告。最終的測試里程碑任務(wù)如表3所示。
3 結(jié)論
由于軟件系統(tǒng)逐漸趨向大型與復(fù)雜的發(fā)展,測試技術(shù)需要與時俱進。本文研究了在多部門、多層級、多系統(tǒng)、多網(wǎng)域情況下的測試技術(shù),能夠?qū)φw實現(xiàn)合理、高效的流程、功能系統(tǒng)與資源分配,并且能夠在最短的時間內(nèi)、實現(xiàn)錯誤的自動化定位。
參考文獻:
[1] 任憲臻.自動化測試工具在軟件測試中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2017(3):251.
[2] 楊麗波.淺析軟件測試管理[J].電子測試,2017(7):94-95.
[3] 王穎.人力資源信息系統(tǒng)與軟件測試技術(shù)[J].電子技術(shù)與軟件工程,2017(6):55.
[4] 楊貞祥,趙興奮,賀虎林.基于歷史數(shù)據(jù)的軟件測試數(shù)據(jù)統(tǒng)計分析研究[J].微型機與應(yīng)用,2017,36(4):22-24,28.
[5] 林振文.IGA算法的構(gòu)件化軟件測試用例生成研究[J].科技創(chuàng)新與應(yīng)用,2017(6):88.
[6] 李澤雪,薛亮,李相民.基于改進蟻群算法的軟件測試方法[J].兵工自動化,2017,36(2):70-74.
[7] 盧玲,劉勇,陳小奎.淺析大數(shù)據(jù)背景下軟件測試的挑戰(zhàn)及其展望[J].電腦知識與技術(shù),2017,13(8):92-94.
[8] 趙志龍.三部綜合管理平臺的軟件測試研究與應(yīng)用[J].黑龍江科技信息,2017(11):151-152.
[9] 閆巖.計算機軟件測試方法的分析[J].數(shù)字技術(shù)與應(yīng)用,2017(3):244.
[10] 戚榮志,徐淑芳,曾濤,等.水利業(yè)務(wù)應(yīng)用系統(tǒng)中軟件測試方法研究及應(yīng)用[J].水利信息化,2017(1):5-9.
[11] 馮濟舟.軟件測試誤區(qū)的思考[J].質(zhì)量與可靠性,2017(1):5-9.
[12] 董智勇.軟件測試在Web開發(fā)中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2017(2):207.
[13] 高蕾.Android軟件測試技術(shù)分析[J].電子技術(shù)與軟件工程,2017(5):59.
[14] 劉申.軟件測試在信息工程建設(shè)中的應(yīng)用分析[J].中外企業(yè)家, 2018(2):1.
[15] 陳國明.軟件測試在信息工程建設(shè)中的應(yīng)用分析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(2):20-21.
【通聯(lián)編輯:唐一東】