一種收集用例與代碼之間映射關系的方法和裝置的制造方法
【專利說明】一種收集用例與代碼之間映射關系的方法和裝置 【技術領域】
[0001] 本發明涉及計算機技術領域中的測試技術,特別涉及一種收集用例與代碼之間映 射關系的方法和裝置。 【【背景技術】】
[0002] 測試用例是指對一項特定的軟件產品進行測試任務的描述,體現測試方案、方法、 技術和策略,其類型可以包括諸如功能測試用例、自動化測試用例、性能測試用例等等,在 此統稱為用例(case)。在測試過程中,無論是衡量用例是否進行補充來盡可能覆蓋軟件的 所有代碼,亦或是當軟件的代碼發生變更時,需要進行哪些用例的相應修改或者回歸哪些 用例,等等,這些都需要獲知用例與軟件的代碼之間的映射關系,也就是說,需要確定各用 例對應軟件中的哪些代碼。然而,目前尚沒有相關技術能夠很好的實現這一映射關系的確 定。 【
【發明內容】
】
[0003] 有鑒于此,本發明提供了一種收集用例與代碼之間映射關系的方法和裝置,以便 于實現用例與代碼之間映射關系的收集,為是否補充用例、修改用例和回歸哪些用例等提 供參考。
[0004] 具體技術方案如下:
[0005] 本發明提供了一種收集用例與代碼之間映射關系的方法,該方法包括:
[0006] 用例執行結束后,獲取代碼覆蓋率工具輸出的覆蓋信息報告,所述覆蓋信息報告 包含所述用例執行所覆蓋的代碼信息;
[0007] 解析所述覆蓋信息報告得到所述用例所覆蓋的代碼,從而建立所述用例與代碼之 間的映射關系。
[0008] 根據本發明一優選實施方式,該方法還包括:
[0009] 預先部署映射關系收集的環境,具體包括:對代碼進行代碼覆蓋率工具的插樁,并 定義代碼覆蓋率工具的監聽端口;
[0010] 準備解析環境,具體包括:確定所述映射關系收集的環境信息與使用該環境的用 例信息之間的對應關系。
[0011] 根據本發明一優選實施方式,所述獲取代碼覆蓋率工具輸出的覆蓋信息報告包 括:查詢所述對應關系確定本次執行的用例所對應的映射關系收集的環境信息,由確定的 環境信息中的監聽端口獲取所述代碼覆蓋率工具輸出的覆蓋信息報告。
[0012] 根據本發明一優選實施方式,該方法還包括:
[0013] 所述用例執行前,在數據庫中針對所述確定的環境信息記錄一條執行開始記錄;
[0014] 所述用例執行結束后,查詢所述數據庫中所述用例對應的環境信息是否只有一條 執行開始記錄,如果是,則將所述記錄更新為完成狀態,并執行所述獲取代碼覆蓋率工具輸 出的覆蓋信息報告的步驟;否則放棄本次收集。
[0015] 根據本發明一優選實施方式,所述獲取代碼覆蓋率工具輸出的覆蓋信息報告由收 集執行模塊執行;所述解析所述覆蓋信息報告得到所述用例所覆蓋的代碼由解析執行模塊 執行。
[0016] 根據本發明一優選實施方式,該方法還包括:用例執行前,總控模塊將所述用例的 用例信息發送給所述收集執行模塊并指示所述收集執行模塊開始收集;
[0017] 所述用例執行結束后,所述總控模塊將所述用例信息發送給所述收集執行模塊并 指示收集執行模塊結束收集,所述收集執行模塊執行所述獲取代碼覆蓋率工具輸出的覆蓋 信息報告的步驟。
[0018] 根據本發明一優選實施方式,總控模塊將所述用例的用例信息發送給所述收集執 行模塊并指示所述收集執行模塊開始收集具體包括:所述總控模塊將所述用例信息和指示 收集執行模塊開始收集的信息攜帶在http請求中發送給所述收集執行模塊;
[0019] 所述總控模塊將所述用例信息發送給所述收集執行模塊并指示收集執行模塊結 束收集具體包括:所述總控模塊將所述用例信息和指示收集執行模塊結束收集的信息攜帶 在http請求中發送給所述收集執行模塊。
[0020] 本發明還提供了一種收集用例與代碼之間映射關系的裝置,該裝置包括:
[0021] 收集執行模塊,用于用例執行結束后,獲取代碼覆蓋率工具輸出的覆蓋信息報告, 所述覆蓋信息報告包含所述用例執行所覆蓋的代碼信息;
[0022] 解析執行模塊,用于解析所述覆蓋信息報告得到所述用例所覆蓋的代碼,從而建 立所述用例與代碼之間的映射關系。
[0023] 根據本發明一優選實施方式,該裝置還包括:環境部署和準備模塊,用于預先部署 映射關系收集的環境,具體包括:對代碼進行代碼覆蓋率工具的插樁,并定義代碼覆蓋率工 具的監聽端口;還用于準備解析環境,具體包括:確定所述映射關系收集的環境信息與使 用該環境的用例信息之間的對應關系。
[0024] 根據本發明一優選實施方式,所述收集執行模塊在獲取代碼覆蓋率工具輸出的覆 蓋信息報告時,具體用于查詢所述對應關系確定本次執行的用例所對應的映射關系收集的 環境信息,由確定的環境信息中的監聽端口獲取所述代碼覆蓋率工具輸出的覆蓋信息報 生 I=I 〇
[0025] 根據本發明一優選實施方式,所述收集執行模塊,還用于在所述用例執行前,在數 據庫中針對所述確定的環境信息記錄一條執行開始記錄;所述用例執行結束后,查詢所述 數據庫中所述用例對應的環境信息是否只有一條執行開始記錄,如果是,則將所述記錄更 新為完成狀態,并執行所述獲取代碼覆蓋率工具輸出的覆蓋信息報告的操作;否則放棄本 次收集。
[0026] 根據本發明一優選實施方式,該裝置還包括:總控模塊,用于在所述用例執行前, 將所述用例的用例信息發送給所述收集執行模塊并指示所述收集執行模塊開始收集;所 述用例執行結束后,將所述用例信息發送給所述收集執行模塊并指示收集執行模塊結束收 集;
[0027] 所述收集執行模塊接收到結束收集的指示后,執行所述獲取代碼覆蓋率工具輸出 的覆蓋信息報告的操作。
[0028] 根據本發明一優選實施方式,所述總控模塊具體用于將所述用例信息和指示收集 執行模塊開始收集的信息攜帶在http請求中發送給所述收集執行模塊,以及將所述用例 信息和指示收集執行模塊結束收集的信息攜帶在http請求中發送給所述收集執行模塊。
[0029] 由以上技術方案可以看出,本發明通過獲取并解析代碼覆蓋率工具輸出的包含用 例執行所覆蓋的代碼信息的覆蓋信息報告,實現用例與代碼之間的映射關系的收集,為是 否補充用例、修改用例和回歸哪些用例等提供參考。 【【附圖說明】】
[0030] 圖1為本發明實施例一提供的收集用例與代碼之間映射關系的方法流程圖;
[0031] 圖2為本發明實施例二提供的收集用例與代碼之間映射關系的裝置結構圖。 【【具體實施方式】】
[0032] 為了使本發明的目的、技術方案和優點更加清楚,下面結合附圖和具體實施例對 本發明進行詳細描述。
[0033] 本發明的核心思想在于:通過代碼覆蓋率工具對用例進行覆蓋信息的收集,即在 用例執行結束后,獲取代碼覆蓋率工具輸出的覆蓋信息報告,該覆蓋信息報告包含了用例 執行所覆蓋的代碼信息;然后解析覆蓋信息報告得到該用例所覆蓋的代碼,從而建立該用 例與代碼之間的映射關系。下面通過實施例一對本發明提供的方法進行詳細描述。
[0034] 實施例一、
[0035] 圖1為本發明實施例一提供的收集用例與代碼之間映射關系的方法流程圖,在 本實施例中以java環境為例,代碼覆蓋率工具以e_a為例,e_a是一個用于檢測和報告 java代碼覆蓋率的開源工具,支持多種級別的覆蓋率指標:包、類、方法、語句塊和行,最終 能夠生成并輸出text、xml、html等形式的報告。當然,本發明并不限于e_a工具,還可以 使用諸如clover、BullseyeCoverage等其他代碼覆蓋率工具。語言環境也可以采用諸如C 語言、C++語言、python、perl等等。如圖1中所示,該方法可以包括以下步驟:
[0036] 步驟101 :部署映射關系收集的環境:對各應用的代碼進行emma的插樁并針對各 應用分別自定義e_a的監聽端口。
[0037] 對各應用的代碼進行emma的插樁目的是為了使得emma能夠得到執行的代碼信 息,從而得到覆蓋率信息。在本發明實施例中,針對各應用分別自定義emma的監聽端口時, 可以采用預設的端口自定義規則,該端口自定義規則可以與用戶名相關,目的是為了避免 各應用在同一臺機器上發生監聽端口的沖突。
[0038] 步驟102 :準備解析環境:確定映射關系收集的環境信息與使用該環境的用例信 息之間的對應關系,啟動調用收集執行模塊所需要的tomcat服務。
[0039] 在本發明實施例中,每一個用例的執行都對應有映射關系收集的環境信息,也就 是說,將步驟101部署的環境賦予給具體的用例。其中映射關系收集的環境信息主要是運 行e_a的機器信息和監聽端口信息,可以表現為IP地址和端口號。用例信息主要包括用 例標識(case id),還可以進一步包括用例類型(case type)。
[0040] 上述映射關系收集的環境信息與使用該環境的用例信息之間可以是多對多的關 系,由于用例與代碼之間的映射關系收集可能會是多次進行并更新的,因此,可以將上述映 射關系收集的環境信息與使用該環境的用例信息之間的對應關系存儲于數據庫中,以方便 進行查詢。
[0041] 在本發明實施例中,調用收集執行模塊所需要的服務以tomcat服務為例,tomcat 服務可以實現通過訪問url的http請求調用收集執行模塊,具體形式將在步驟103和步驟 104中舉例描述。需要說明的是,在此tomcat服務僅是本發明實施例所舉的一種優選的實 施方式,但也可以通過啟動其他服務來進行收集執行模塊的調用,例如可以啟動通過界面 調用收集執行模塊的服務,或者啟動通過命令行調用收集執行模塊的服務等等,在此不再 歹丨J舉。
[0042] 以上兩個步驟都屬于環境準備階段,上述環境準備階段的操作可以由環境部署與 準備模塊執行。在完成上述環境準備工作后,就可以執行以下步驟開始收集用例與代碼之 間的映射關系。
[0043] 步驟103 :用例執行前,將要執行的用例信息發送給收集執行模塊并指示收集執 行模塊開始收集。
[0044]該用例執行之前將要執行的用例信息發送給收集執行模塊并指示收集執行模塊 開始收集的操作可以由總控模塊來執行。
[0045] 在執行某用例之前,根據步驟102中確定的該用例信息與映射關系收集的環境信 息之間的對應關系,該對應關系可以通過查詢數據庫獲得,確定該用例對應的環境信息,收 集執行模塊可以在數據庫中針對該環境信息記錄一條執行開始記錄,目的是防止相同環境 出現同時收集映射關系的情況,導致用例與代碼之間映射關系的結果不準確。另外,根據該 用例對應的環境信息,收集執行模塊執行emma的重置(reset)功能,從內存中清除之前收 集的覆蓋息。
[0046] 以tomcat服務為例,在本步驟中將要執行的用例信息發送給收集執行模塊并指 示收集執行模塊開始收集時,可以通