A method and device for collecting code coverage, including an embodiment of the method: the receiving terminal sends service request, service request including the application identifier; according to service request acquisition and application identifier corresponding to the source file, the source file identification and source file syntax tree information; the source files of the source code is loaded into memory; the execution is loaded into the memory of the source code, and the implementation process in the source code, code coverage data for the implementation of the source code of the syntax tree based on information recording; coverage collection center server to send coverage information reporting coverage rate reporting information including the source file identification, the coverage data covered by the the rate of collection center server according to the coverage collection terminal server upload coverage report information to determine the source files of the code coverage. The scheme of the embodiment not only realizes the collection of the code coverage of the server, but also does not need to modify the source code, and does not affect the developer's re editing of the source code.
【技術實現步驟摘要】
代碼覆蓋率收集方法和裝置
本專利技術涉及測試
,特別是涉及一種代碼覆蓋率收集方法以及一種代碼覆蓋率收集裝置。
技術介紹
代碼覆蓋率(codecoverage)是軟件測試中的一種重要的度量參數,用以描述描述程序中源代碼被測試的比例和程度。而隨著JavaScript等解釋性語言的逐漸普及,基于JavaScript等解釋性語言實現的平臺的應用的日益廣泛,對基于就采用JavaScript等解釋性語言實現的平臺的相關應用的代碼覆蓋率進行測試也成為測試領域中的一項重要內容。以JavaScript平臺為例,目前對于瀏覽器端運行的JavaScript應用,已經有jscoverage等工具來實現瀏覽器端的代碼覆蓋率的收集。然而,類似于jscoverage這樣的工具,主要應用場景為瀏覽器端運行。其對Javascript代碼進行適合瀏覽器端運行的代碼插樁,插樁后的代碼,其代碼覆蓋率收集過程是基于瀏覽器的代碼執行,無法直接應用于服務器端執行的平臺的應用。
技術實現思路
基于此,本專利技術實施例的目的在于提供一種代碼覆蓋率收集方法以及一種代碼覆蓋率收集裝置。為達到上述目的,本專利技術實施例采用以下技術方案:一種代碼覆蓋率收集方法,應用在覆蓋率收集終端服務器,包括步驟:接收終端發送的業務請求,所述業務請求包括應用標識;根據所述業務請求獲取與所述應用標識對應的源文件、源文件標識以及所述源文件的語法樹信息;將所述源文件的源代碼加載到內存;執行加載到內存的所述源代碼,并在所述源代碼的執行過程中,基于所述語法樹信息記錄執行所述源代碼的代碼行的覆蓋率數據;向覆蓋率收集中心服務器發送覆蓋率上報 ...
【技術保護點】
一種代碼覆蓋率收集方法,應用在覆蓋率收集終端服務器,其特征在于,包括步驟:接收終端發送的業務請求,所述業務請求包括應用標識;根據所述業務請求獲取與所述應用標識對應的源文件、源文件標識以及所述源文件的語法樹信息;將所述源文件的源代碼加載到內存;執行加載到內存的所述源代碼,并在所述源代碼的執行過程中,基于所述語法樹信息記錄執行所述源代碼的代碼行的覆蓋率數據;向覆蓋率收集中心服務器發送覆蓋率上報信息,所述覆蓋率上報信息包括所述源文件標識、所述覆蓋率數據,由所述覆蓋率收集中心服務器根據各覆蓋率收集終端服務器上傳的覆蓋率上報信息確定所述源文件的代碼覆蓋率。
【技術特征摘要】
1.一種代碼覆蓋率收集方法,應用在覆蓋率收集終端服務器,其特征在于,包括步驟:接收終端發送的業務請求,所述業務請求包括應用標識;根據所述業務請求獲取與所述應用標識對應的源文件、源文件標識以及所述源文件的語法樹信息;將所述源文件的源代碼加載到內存;執行加載到內存的所述源代碼,并在所述源代碼的執行過程中,基于所述語法樹信息記錄執行所述源代碼的代碼行的覆蓋率數據;向覆蓋率收集中心服務器發送覆蓋率上報信息,所述覆蓋率上報信息包括所述源文件標識、所述覆蓋率數據,由所述覆蓋率收集中心服務器根據各覆蓋率收集終端服務器上傳的覆蓋率上報信息確定所述源文件的代碼覆蓋率。2.根據權利要求1所述的代碼覆蓋率收集方法,其特征在于,還包括步驟:在將所述源文件的源代碼加載到內存時,基于所述語法樹信息對加載到內存的源代碼進行插樁。3.根據權利要求1或2所述的代碼覆蓋率收集方法,其特征在于,所述語法樹信息包括函數定義語句、分支語句以及代碼行中的至少一種,所述代碼覆蓋率包括函數覆蓋率、分支語句覆蓋率以及代碼行覆蓋率中的至少一種。4.一種代碼覆蓋率收集方法,應用在覆蓋率收集中心服務器,其特征在于,包括步驟:接收各覆蓋率收集終端服務器發送的覆蓋率上報信息,所述覆蓋率上報信息包括源文件標識以及對應的覆蓋率數據,所述覆蓋率數據為所述覆蓋率收集終端服務器在接收到終端發送的包含應用標識的業務請求時,獲取與所述應用標識對應的源文件、所述源文件標識以及所述源文件的語法樹信息,并將所述源文件的源代碼加載到內存后,在加載到內存的所述源代碼的執行過程中基于所述語法樹信息記錄執行所述源代碼的代碼行的覆蓋率數據,根據各覆蓋率收集終端服務器發送的所述覆蓋率上報信息,確定所述源文件標識對應的源文件的代碼覆蓋率。5.根據權利要求4所述的代碼覆蓋率收集方法,其特征在于,包括下述三項中的至少一項:通過將各所述覆蓋率收集終端服務器上傳的所述源文件標識對應的覆蓋率數據與所述源文件標識對應的源代碼進行比較,根據比較結果確定所述源文件標識對應的源文件的代碼覆蓋率;還包括步驟:根據各所述覆蓋率收集終端服務器發送的所述覆蓋率上報信息,對所述源文件標識對應的源代碼中、各所述覆蓋率收集終端服務器均未執行的代碼行進行標記;根據標記的代碼行、所述代碼覆蓋率生成可視化代碼覆蓋率報告;所述語法樹信息包括函數定義語句、分支語句以及代碼行中的至少一種,所述代碼覆蓋率包括函數覆蓋率、分支語句覆蓋率以及代碼行覆蓋率中的至少一種。6.一種代碼覆蓋率收集裝置,設置在覆蓋率收集終端服務器,其特征在于,包括:請求接收模塊,用于接收終端發送的業務請...
【專利技術屬性】
技術研發人員:符陽輝,任洪平,
申請(專利權)人:騰訊科技深圳有限公司,
類型:發明
國別省市:廣東,44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。