姜 文,劉立康
(西安電子科技大學 通信工程學院,陜西 西安 710071)
軟件調試[1-8]泛指重現軟件缺陷問題,定位和查找問題根源,最終解決軟件問題的過程。對于多個開發部門一起進行開發的大型軟件系統,需要在各個部門分別完成自己相關的軟件源代碼開發與功能調試之后,進行軟件聯調。
隨著計算機技術的發展以及云計算技術[9-10]在各行各業的應用普及,基于云計算的應用軟件的種類也越來越多。許多傳統環境下運行的應用軟件需要升級推出在網絡上運行的版本。基于云計算的大型應用軟件需要多個開發部門協調開發才能完成全套軟件的開發,需要在云環境[11-13]下進行軟件聯調。軟件聯調是指軟件通用開發平臺和軟件產品上線后進行相關功能點和性能集成聯合調試,以確保新開發的軟件上線后能夠正常運行。
結合工作實踐,敘述了軟件聯調過程中基于云環境的軟件聯調層級結構和軟件聯調內容;敘述了基于云環境的大型應用軟件聯調的詳細過程以及各個角色在軟件聯調過程中的職責和任務。之后依據一個典型案例,詳細敘述了軟件聯調工程的實現過程和聯調過程中一些典型問題的處理方法。
軟件聯調過程中,基于云環境的軟件聯調層級結構如表1所示。

表1 基于云環境的軟件聯調環境層級結構
(1)產品業務:提供給用戶的多個應用軟件產品。
(2)業務開發平臺:提供軟件產品業務功能開發的公共服務,在平臺上可以開發多個軟件產品。
(3)網絡管理平臺:網絡管理軟件和客戶端工具,提供人機接口,管理虛擬網絡的各種事務管理,提供軟件調試工具。
(4)基礎軟件:在虛擬機上安裝操作系統、數據庫和其他常用軟件工具。
(5)虛擬計算節點:云環境中的虛擬機,虛擬機是一種嚴密隔離的軟件容器,包含自己的虛擬CPU、RAM、硬盤和網卡(NIC)。它可以運行自己的操作系統和應用程序,行為完全類似于一臺物理計算機。
(6)虛擬網絡設備:私有云(VPC)網絡,私有云是用戶申請企業云賬戶后獲得的虛擬網絡。它在邏輯上與企業云中的其他虛擬網絡隔絕。可以在VPC內部進行各種配置,選擇IP地址范圍、創建子網以及配置路由表、網絡網關和安全設置。這個虛擬網絡與傳統網絡運行方式極其相似。
(7)企業云:是企業自行運營的一種典型的私有云,為企業內各部門提供各種IT服務。
其中,(1)-(3)為聯調軟件,(4)-(7)為云環境。
(1)軟件開發平臺和軟件產品集成構建、聯調;
(2)軟件產品功能點調試,軟件開發平臺功能點調試;
(3)聯調軟件與云環境的兼容性和適應性磨合調試。
軟件聯調角色包括云環境運維工程師、軟件平臺開發組、軟件產品開發組、配置管理員、持續集成工程師和軟件測試組。各角色各司其職,分工協作共同完成應用軟件聯調,如圖1所示。

圖1 軟件聯調用例圖
各角色的職責和任務如下:
(1)軟件產品開發組:負責軟件產品調試和聯調。
(2)軟件平臺開發組:負責通用軟件平臺的調試和聯調。
(3)配置管理員:負責調試過程中平臺軟件和軟件產品版本的更新管理工作。
(4)持續集成工程師:負責平臺軟件和軟件產品的集成構建工作,提供平臺軟件和軟件產品在線調試的安裝包[14-16]。
(5)軟件測試工程師:完成聯調環境搭建,平臺軟件和軟件產品軟件包的安裝,根據設計文檔完成測試場景的分析,設計相關的測試用例,在聯調環境下開展測試工作。
(6)云環境運維工程師:保證云環境的正常運行,包括底層基礎網絡、私有云網絡和虛擬機。在測試工程師搭建聯調環境的過程中,協助處理各種問題。
軟件聯調過程如圖2所示。
2.2.1 制定聯調計劃
產品與平臺的版本經理共同制定聯調計劃和協調聯調環境。
(1)協調規劃聯調云環境,確定虛擬機數量、配置規格。
(2)確定平臺軟件和軟件產品聯調功能點。
(3)確定聯調人員和聯調工作進度安排。
2.2.2 構建平臺軟件與軟件產品的聯調安裝包
(1)版本庫代碼更新:平臺軟件開發工程師將經過測試、結構優化和評審合格的代碼合入配置庫合入版本庫。軟件產品開發工程師將經過測試、結構優化和評審合格的代碼合入版本庫。

圖2 軟件調試流程
(2)集成構建聯調安裝包:持續集成工程師從版本庫下載新版本代碼,分別完成平臺軟件和軟件產品聯調安裝包的編譯出包。
2.2.3 搭建私有云網絡環境
根據軟件聯調計劃測試工程師搭建聯調云環境:
(1)私有云網絡環境申請。
在企業云的網站上注冊賬號之后,登錄網站申請私有云網絡,并根據所需的虛擬機規格和數量申請虛擬機。
(2)安裝網絡管理軟件和軟件調試工具。
在私有云網絡中選定的虛擬機上安裝網絡管理軟件,安裝軟件調試工具,同時根據工作需要安裝其他常用的軟件工具。完成虛擬機,網卡,網元進程和信令IP地址的添加配置。
2.2.4 安裝聯調軟件
(1)登錄私有云的虛擬機,安裝平臺軟件和軟件產品安裝包,完成配置工作。
(2)安裝相關的數據資源文件,完成配置工作。
2.2.5 功能點測試
在聯調過程中,測試工程師需要協調和管理聯調環境,根據工作需要設計測試用例,開展測試工作,重點關注新開發的特性,不斷完善新特性的測試用例。
2.2.6 聯調過程中的問題處理
在聯調過程中發現的問題需要及時記錄;定位分析、查找原因、提出解決問題方案、修改存在問題的代碼;經過反復調試之后,驗證和確認缺陷問題已經被解決。
2.2.7 聯調工作結束
經過2.2.5和2.2.6的反復處理,最后調試工作結束。平臺與產品的軟件開發工程師將聯調過程中出現的問題進行整理,提供給測試工程師。測試工程師結合測試用例驗證的結果提供聯調報告,反饋給平臺和產品的版本經理。
通過典型案例敘述基于云環境的軟件聯調過程。在這個案例中平臺軟件為A(簡稱A平臺),軟件產品為Y(簡稱Y產品)。
平臺軟件A與軟件產品Y在啟動聯調之前,雙方的項目經理共同制定聯調計劃。聯調計劃包括聯調工作內容和進度安排,確定聯調人員和工作任務分配,聯調環境的規劃和部署。
3.2.1 創建私有云網絡
(1)申請私有云網段。
登錄企業云網站,申請私有云網段,以便和其他客戶的私有云環境隔離,自主配置與管理私有云網絡環境。本次私有云選用的網段是10.0.0.0/8。
(2)創建子網。
完成私有云創建后,根據軟件產品的需要創建子網,完成每個子網的子網網段、子網網關、DHCP功能的配置工作。在創建的私有云上創建了10個子網,子網網段分別是10.16.X.X-10.21.X.X以及10.1.X.X-10.4.X.X.網段。
(3)創建安全組。
安全組是一組虛擬機的訪問規則的集合。客戶可以通過創建安全組,將虛擬私有云(VPC)中的彈性云服務器劃分成不同的安全域,以提升彈性云服務器訪問的安全性。
3.2.2 申請云虛擬機
在企業云的網站上為私有云申請虛擬機,虛擬機的規格與數量如表2所示。

表2 軟件聯調虛擬機規格
虛擬機的規格數據包括操作系統、CPU、內存、系統盤、數據盤以及網絡配置等。在申請到的虛擬機上配置網卡,在網卡上配置私有云子網網段分配的IP地址。
3.3.1 OMU管理單元和LMT客戶端工具
OMU(operation and maintenance unit)是基于Client/Server結構管理的網絡,由OMU服務器和OMU客戶端組成。OMU是一個管理單元,提供人機接口,負責管理虛擬機上的軟件運行狀態。OMU的客戶端工具為LMT(local maintenance terminal)。
LMT工具通過MML(man-machine language)命令,對網元進行操作和維護。LMT通過基于MML的圖形終端,多窗口操作界面;提供了拓撲管理、故障管理、配置管理、告警管理、跟蹤管理、資源管理、TFTP服務器管理、日志管理等網管功能,提供了各種功能的窗口操作界面。
在軟件聯調過程中,用到的MML命令分為四類:
(1)軟件遠程登錄設置命令:軟件產品數字簽名,遠程登錄SSH服務等。
(2)網絡操作命令:包括各種網絡元素的添加、鏈接和查詢等。
(3)數據資源配置命令:包括各種數據資源IP地址的添加、鏈接、綁定和查詢等。
(4)網元調試命令:提供參數設置和各種狀態查詢命令。
3.3.2 安裝OMU虛擬機
OMU安裝采用雙機模式,在2號虛擬機和3號虛擬機上分別添加5個網卡與浮動IP地址之后,分別安裝主、備OMU虛擬機。OMU安裝完成后,組成基于Client/Server結構的網絡系統。網絡系統有一個管理用戶(用戶名admin),負責網絡系統管理。
3.3.3 安裝業務虛擬機
在4-6號虛擬機上根據需求情況配置相應數量的網卡以及對應網段的IP地址,將平臺軟件提供的業務開發平臺壓縮包解壓之后,進入開發平臺的文件夾中,進行產品業務虛擬機的安裝。3個業務虛擬機都在同一組主、備OMU環境下安裝,因此,除了網絡配置信息VINC_INFO不同之外,3個虛擬機安裝時使用的OMU虛擬機的浮動IP地址相同。3個虛擬機的編號、名稱和功能見表3。
3.3.4 安裝LMT客戶端工具軟件包
在1號虛擬機上,使用Y平臺提供的LMT安裝包,執行LMT客戶端安裝。安裝完成后以管理用戶admin的身份登錄LMT客戶端,修改LMT客戶端的初始密碼。在LMT客戶端界面上MEID=0的網元下執行ADD VMINFO(添加網元虛擬機)命令添加主、備2個OMU虛擬機,查看設備管理界面確認已添加的主、備OMU虛擬機處于正常啟動狀態。
3.4.1 軟件產品的安裝
登錄LMT客戶端,在MEID=0的網元下上傳軟件產品安裝包,上傳成功后,在MEID=0的平臺網元的命令執行窗口上執行ADD ME命令完成軟件產品網元添加,網元Y添加成功后,在LMT頁面上可以看到Y網元的LMT頁面。將Y產品軟件的安裝包上傳后部署到4-6號產品業務虛擬機上。在LMT客戶端的下拉列表中選擇產品網元Y對應的LMT頁面,在產品網元上執行ADD VMINFO命令分別添加3個業務虛擬機。添加成功后,在LMT的設備面板上可以看到3個虛擬機都處于正常啟動狀態,在MEID=0的網元下對3個虛擬機分別執行開啟SSH服務的MML命令。在聯調時可以使用PUTTY工具登錄這3個業務虛擬機。接下來在LMT的產品網元頁面上執行MML命令,在不同的業務虛擬機上執行網元進程添加以及網元產品相應的進程上的數據配置。

表3 業務虛擬機
3.4.2 安裝數據資源文件
在7號虛擬機(NFS SERVER虛擬機)上存放數據資源文件,本案例中需要存放轉碼片源與轉碼結果文件。安裝Suse Linux操作系統時默認安裝NFS SERVER文件系統,需要手動執行數據盤掛載。使用LMT工具完成7號虛擬機網元配置。
3.5.1 軟件調試功能點
軟件聯調涉及到的聯調特性主要是A平臺與Y產品接入適配,Y產品在A平臺下的業務運行。
(1)接入適配聯調。
接入適配聯調的功能點包括在OMU虛擬機上A平臺的安裝包正常安裝;Y產品的代碼使用A平臺提供的接口代碼能夠通過持續集成工具的進程編譯、Y產品版本包出包;在A平臺安裝后,通過LMT工具能夠完成Y產品版本包加載、業務虛擬機添加以及Y產品的進程文件添加與數據配置。
(2)Y產品在A平臺下的業務運行。
業務運行功能點包括完成安裝配置之后Y產品在A平臺下能正常運行視頻轉碼的業務;在視頻轉碼過程中,A平臺與Y產品保持性能穩定。聯調雙方需要在Y產品的轉碼業務運行過程中提取各類性能數據,分析確認產品的性能狀況,并為以后性能的提升優化提供相關數據。
3.5.2 聯調工作
準備工作完成之后開始聯調工作。
(1)采用LMT網元調試命令進行聯調。LMT提供了兩類網元調試命令:
參數設置類命令:可以設置Y產品進程運行的各種參數。
查詢類命令:查詢所有轉碼任務狀態,根據任務ID查詢具體轉碼任務的狀態,根據任務ID查詢轉碼任務各個運行階段的處理時長,輸出全局統計信息以及運行異常的轉碼任務的斷點信息,等等。
(2)軟件測試組編寫測試用例,對軟件產品和平臺軟件開展測試工作。總共涉及測試用例50多個,采用手工執行測試用例。
(3)軟件平臺開發人員和軟件產品開發人員開展軟件調試和聯調工作。
3.5.3 聯調過程中的軟件缺陷問題處理
在聯調過程中處理了許多軟件存在的問題,下面提供兩個典型實例。
(1)在A平臺B050版本進行聯調的過程中,發現轉碼業務下發之后6號虛擬機的相關進程文件運行不正常,導致轉碼任務無法運行。定位之后發現,平臺在針對業務虛擬機進行開發時,虛擬機上沒有添加的相關進程文件,確認是A平臺的缺陷。進行第二輪聯調時,將這個問題合入到A平臺版本中,轉碼任務可以正常運行。
(2)Y產品執行視頻轉碼任務時,Socket工具無法下發轉碼任務,轉碼任務下發后會報400錯誤。定位后發現U進程有缺陷,監聽端口6002在U進程啟動之后沒有自動開啟,確認是Y產品的缺陷。軟件產品開發工程師修改源代碼之后,解決了該問題。第二輪聯調時,該問題合入Y產品的版本包,轉碼任務可以正常下發。
3.5.4 聯調工作結束
A平臺和Y產品經過兩輪聯調之后,測試工程師將根據聯調結果撰寫聯調報告。在聯調報告中的內容包括OMU安裝、各業務虛擬機安裝、LMT安裝、LMT下執行的Y產品網元包部署、Y產品業務虛擬機與業務進程添加、Y產品業務數據配置、Y產品轉碼業務功能測試、Y產品在企業業務云下的性能數據統計等。
在聯調過程中除了軟件功能調試問題之外,還有一些與聯調環境有關的問題需要處理,下面敘述一些典型問題的處理方法。
A平臺軟件安裝完成之后,發現配置項不正確,需要重新安裝。在重新安裝操作系統的過程中,OMU虛擬機出現重裝系統失敗導致無法正常開機。云環境的運維工程師定位之后,發現OMU虛擬機在重新安裝系統的過程中系統盤丟失。運維工程師處理了該問題,OMU虛擬機重新安裝系統后,完成A平臺軟件的正確安裝和配置。
在完成業務虛擬機網元添加后,在產品網元的業務面板上發現,添加成功的業務虛擬機都沒有處于正常啟動狀態。定位之后,發現A平臺在出聯調版本時,自動劃分Suse Linux操作系統根分區相關的平臺代碼沒有合入版本包,導致所有的業務虛擬機不能正常啟動。平臺開發工程師通過應急補丁的方式處理該問題。
在產品網元的業務面板上的業務虛擬機不能正常啟動。定位之后,發現網元包中的平臺軟件相關文件版本不是平臺軟件提供的新版本,而是老版本,而且編譯生成的產品網元的進程文件也沒有全部生成的。持續集成工程師確定Y產品軟件集成構建不正確,重新出軟件產品的版本包,加載新的版本包之后,解決了該問題。
加載了產品網元的版本包后,發現有1臺業務虛擬機不能正常啟動。定位之后,發現該業務虛擬機在安裝過程中配置不正確。測試工程師重新安裝該虛擬機的操作系統,進行重新配置之后,該虛擬機能夠正常啟動。
軟件聯調是軟件開發過程中的重要環節,尤其對于大型軟件顯得尤為重要。隨著云計算技術的高速發展,許多傳統環境下的軟件產品需要推出云環境下的軟件版本,需要關注和研究云環境下的軟件聯調技術。工作實踐表明,做好基于云環境的軟件聯調工作可以在軟件開發過程中不斷解決存在的各種問題,從而提高軟件產品的質量,提高上線后軟件的安全性與穩定
性。在網絡環境上更好地滿足客戶對軟件產品的需求。
[1] MYERS G J,BADGETT T,SANDLER C. Art of software testing[M].3rd ed.Hoboken,New Jersey,U.S:John Wiley & Sons,Inc.,2012.
[2] 林科學.軟件測試/調試技術應用研究[D].南京:南京氣象學院,2004.
[3] 張銀奎.軟件調試[M].北京:電子工業出版社,2008.
[4] METZGER R C.軟件調試思想[M].尹曉峰,馬振萍,譯.北京:電子工業出版社,2004.
[5] TELLES M, HSIEH Y. The science of debugging[M].Scottsdale,Arizona,U.S:the Coriolis Group,2001.
[6] 蔡 銘,程 勝,王 瑞.航天型號高可靠軟件系統調試原理與技術[M].北京:中國宇航出版社,2008.
[7] MATLOFF N,SALZMAN P J.軟件調試的藝術[M].張 云,譯.北京:人民郵電出版社,2009.
[8] 石磊玉.日臻完善-軟件調試與優化典型應用[M].北京:中國鐵道出版社,2010.
[9] 邢利榮,何曉龍.從虛擬化到云計算[M].北京:電子工業出版社,2013.
[10] 陳國良,明 仲,馮禹洪.云計算工程[M].北京:人民郵電出版社,2016.
[11] 魏志華,趙強強.構建企業私有云軟件測試平臺[J].電子技術與軟件工程,2015(9):63-64.
[12] WANG Jun,MENG Fanpeng. Software testing based on cloud computing[C]//Proceedings of the 2011 international conference on internet computing and information services.[s.l.]:[s.n.],2011:176-178.
[13] Amazon virtual private cloud user guide[R].Seattle,Washington,U.S:Amazon Web Services,Inc.,2013.
[14] 姜 文,劉立康.基于ClearCase的軟件配置管理與持續集成[J].計算機技術與發展,2016,26(1):10-17.
[15] 姜 文,劉立康.基于SVN的軟件配置管理和持續集成[J].電子設計工程,2016,24(2):1-5.
[16] DUVALL P M,MATYAS S,GLOVER A.持續集成軟件質量改進和風險降低之道[M].北京:電子工業出版社,2012.