本發(fā)明涉及測試領域,特別涉及一種代碼測試信息收集方法以及一種代碼測試信息收集系統(tǒng)。
背景技術:在目前的軟件應用中,在開發(fā)出軟件后,通常需要對軟件代碼進行測試,并在對代碼進行測試的過程中收集代碼測試信息,以基于所收集的代碼測試信息來對所編寫的軟件的代碼的性能進行評估,這里的代碼測試信息根據實際測試目的不同會有所不同,其中一種代碼測試信息可以是代碼覆蓋率。代碼覆蓋率(CodeCoverage)是指代碼在執(zhí)行過程中的覆蓋情況,代碼覆蓋率是反映測試用例對被測代碼覆蓋程度的重要指標,也是衡量測試工作進展情況的重要指標,而代碼差異化則是新舊代碼的差異化數(shù)據信息。以代碼測試信息為代碼覆蓋率為例,現(xiàn)有大多數(shù)的代碼覆蓋率信息收集工具,在實現(xiàn)代碼覆蓋率信息收集時,其中一種方式是利用一些測試框架和代碼覆蓋率信息收集工具,例如PHP可以使用PHPUnit和Xdebug,C/C++可以使用gtest和lcov實現(xiàn)代碼覆蓋率信息的收集,同時生成可視化的代碼覆蓋率報告供測試人員參考,另外一種方式是利用這些代碼覆蓋率信息收集工具在功能測試過程中實現(xiàn)代碼覆蓋率信息的收集。這兩種收集方式,在實現(xiàn)時都需要大量的人工參與,對測試人員不透明,使用起來非常不方便,會影響到測試人員的正常測試流程,為測試人員增加了額外的工作量,從而影響到了代碼覆蓋率信息收集的效率。
技術實現(xiàn)要素:針對上述現(xiàn)有技術中存在的問題,本發(fā)明的其中一個目的在于提供一種代碼測試信息收集方法,另一個目的在于提供一種代碼測試信息收集系統(tǒng),其可以無感知地實現(xiàn)代碼測試信息的收集,減少測試人員的工作量。為達到上述目的,本發(fā)明采用以下技術方案:一種代碼測試信息收集方法,包括步驟:通過自動化發(fā)布系統(tǒng)將被測代碼部署到測試環(huán)境;在所述測試環(huán)境中對所述被測代碼進行測試,獲得代碼測試信息,所述代碼測試信息包括代碼覆蓋率信息和/或代碼差異化信息。一種代碼測試信息收集系統(tǒng),包括:導入單元,用于通過自動化發(fā)布系統(tǒng)將被測代碼部署到測試環(huán)境;測試單元,用于在所述測試環(huán)境中對所述被測代碼進行測試,獲得代碼測試信息,所述代碼測試信息包括代碼覆蓋率信息和/或代碼差異化信息。根據上述本發(fā)明方案,其是通過自動化發(fā)布系統(tǒng)將被測代碼部署到測試環(huán)境后,再在測試環(huán)境中對被測代碼進行測試得到代碼測試信息,從而實現(xiàn)對代碼測試信息的收集,由于自動化發(fā)布系統(tǒng)可以實現(xiàn)文件的自動化發(fā)布,文件的傳輸無需人工干預,測試人員只需點幾個按鈕就可以將文件從開發(fā)環(huán)境發(fā)布到外網正式環(huán)境,從而在通過自動化發(fā)布系統(tǒng)將被測代碼部署到測試環(huán)境后進行測試從而收集代碼測試信息,實現(xiàn)了代碼測試信息的收集與自動化發(fā)布工具的結合,無需用戶的大量干預,實現(xiàn)了在用戶無感知的情況下對代碼測試信息的收集,減少了測試人員的工作量,提高了效率。附圖說明圖1是本發(fā)明的代碼測試信息收集方法實施例一的流程示意圖;圖2是本發(fā)明的代碼測試信息收集方法實施例二的流程示意圖;圖3是圖2中所示的方法生成可視化報告的實施例的流程示意圖;圖4是本發(fā)明的代碼測試信息收集方法實施例三的流程示意圖;圖5是圖4中所示的方法生成可視化報告的實施例的流程示意圖;圖6是本發(fā)明的代碼覆蓋率信息收集方法實施例四的流程示意圖;圖7是圖6中所示的方法生成可視化報告的實施例的流程示意圖;圖8是本發(fā)明的代碼測試信息收集系統(tǒng)實施例一的結構示意圖;圖9是本發(fā)明的代碼測試信息收集系統(tǒng)實施例二的結構示意圖;圖10是圖9所示的分析單元的一個具體示例的結構示意圖;圖11是本發(fā)明的代碼測試信息收集系統(tǒng)實施例三的結構示意圖;圖12是圖11中所示的分析單元的一個具體示例的結構示意圖;圖13是本發(fā)明的代碼測試信息收集系統(tǒng)實施例四的結構示意圖;圖14是圖13中所示的分析單元的一個具體示例的結構示意圖。具體實施方式以下結合其中的較佳實施例對本發(fā)明方案進行詳細闡述,在下述各實施例的說明中,出于簡便說明的目的,是以被測代碼為被測源代碼為例進行說明,本領域技術人員可以知曉的是,根據實際需要,下述各實施例中的被測源代碼可以根據需測試的代碼的名稱(例如被測代碼)進行替換,因此,下述說明僅僅是對本發(fā)明方案的舉例說明,并不用以對本發(fā)明方案構成限定。在下述各實施例的說明中,先對本發(fā)明的代碼測試信息收集方法的各實施例進行舉例說明,再對本發(fā)明的代碼測試信息收集系統(tǒng)的各實施例進行距離說明。以下先對本發(fā)明的代碼測試信息收集方法的各實施例進行詳細說明。實施例一圖1中示出了本發(fā)明的代碼測試收集方法實施例一的流程示意圖。如圖1所示,本實施例中的代碼測試信息收集方法包括步驟:步驟S101:通過自動化發(fā)布系統(tǒng)將被測代碼部署到測試環(huán)境,所謂測試環(huán)境(testenvironment),是指測試運行其上的軟件和硬件環(huán)境的描述,以及任何其它與被測軟件交互的軟件,包括驅動和樁等等,也是指為了完成軟件測試工作所必需的計算機硬件、軟件、網絡設備、歷史數(shù)據的總稱,因此,在本發(fā)明的下述說明中,不對測試環(huán)境展開贅述;步驟S102:在上述測試環(huán)境中對所述被測代碼進行測試,獲得代碼測試信息,其中,這里的代碼測試信息可以是代碼覆蓋率信息,也可以是代碼差異化信息,也可以是代碼覆蓋率信息與代碼差異化信息的組合。根據本實施例中的方案,其是通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后,再在測試環(huán)境中對被測代碼進行測試得到代碼測試信息,從而實現(xiàn)對代碼測試信息的收集,由于自動化發(fā)布系統(tǒng)可以實現(xiàn)文件的自動化發(fā)布,文件的傳輸無需人工干預,測試人員只需點幾個按鈕就可以將文件從開發(fā)環(huán)境發(fā)布到外網正式環(huán)境,從而在通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后進行測試從而收集代碼測試信息,實現(xiàn)了代碼測試信息的收集與自動化發(fā)布工具的結合,無需用戶的大量干預,實現(xiàn)了在用戶無感知的情況下對代碼測試信息的收集,減少了測試人員的工作量,提高了效率。以下結合代碼測試信息為代碼覆蓋率信息、代碼差異化信息為例,分別對本發(fā)明的代碼測試信息收集方法進行詳細說明。實施例二圖2中示出了本發(fā)明的代碼測試信息收集方法實施例二的流程示意圖,在本實施例二的方案中,與上述實施例一的不同之處主要在于,本實施例中是以僅僅收集代碼覆蓋率信息為例進行說明。如圖2所示,在該實施例二中,本發(fā)明的代碼測試信息收集方法包括步驟:步驟S201:通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境;步驟S202:對上述部署到測試環(huán)境的被測源代碼進行插樁;步驟S203:執(zhí)行功能測試用例,在執(zhí)行功能測試用例時收集代碼覆蓋率信息;步驟S204:對上述被測源代碼移樁后將上述被測源代碼進行發(fā)布。根據如上所述的本實施例中的代碼測試信息收集方法,其是通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后,再對被測源代碼進行插樁,然后執(zhí)行測試功能用例,并在執(zhí)行功能測試用例時收集代碼覆蓋率信息,并在測試完畢后,將移樁后的被測源代碼進行發(fā)布,由于自動化發(fā)布系統(tǒng)可以實現(xiàn)文件的自動化發(fā)布,文件的傳輸無需人工干預,測試人員只需點幾個按鈕就可以將文件從開發(fā)環(huán)境發(fā)布到外網正式環(huán)境,從而在通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后進行測試從而收集代碼覆蓋率信息,由此可見,本實施例中的方案是實現(xiàn)了代碼覆蓋率信息的收集與自動化發(fā)布工具的結合,無需用戶的大量干預,實現(xiàn)了在用戶無感知的情況下對代碼覆蓋率信息的收集,減少了測試人員的工作量,提高代碼覆蓋率信息收集的效率。上述步驟S202中對被測源代碼進行插樁時,可以采用已有的以及在以后出現(xiàn)的各種可能的方式進行,用于插樁的代碼,可以根據實際需要進行設定,在此不予贅述。所謂插樁,是指在不破壞被測程序原有邏輯完整性的情況下,在被測程序的相應位置插入用于插樁的代碼(也稱之為探針),這些探針本質上是進行信息采集的代碼段,通過探針的執(zhí)行并輸出程序的運行特征數(shù)據,從而基于這些特征數(shù)據的分析,揭示程序的內部行為和特性。在測試完畢后,需要將這些插入的探針去除,以保留被測程序的完整性,即步驟S204中的移樁操作。在執(zhí)行功能測試用例時對代碼覆蓋率信息的收集,可以是在執(zhí)行功能測試用例的后臺進行,無需人工干預,對用戶完全透明,因此可以在用戶毫無感知的情況下收集到代碼覆蓋率信息。所謂無感知,是指對用戶完全透明,用戶只需正常完成測試工作即可,在測試過程中感知不到代碼覆蓋率信息收集工具的存在。具體的代碼覆蓋率信息的收集方式,可以采用已有的以及在以后出現(xiàn)的各種可能的方式進行,在此不予贅述。其中,在收集到代碼覆蓋率信息之后,還可以對該代碼覆蓋率信息進行分析、生成可視化報告。該對代碼覆蓋率信息進行分析、生成可視化報告的過程,可以是任何時候進行,在其中一種實現(xiàn)方式中,可以是在測試完畢后、對被測源代碼移樁之前進行,因此,如圖2所示,在本實施例的方法中,在上述步驟S203與步驟S204之間還包括步驟:步驟S2034:測試完畢后,接收將上述被測源代碼進行發(fā)布的指令,對上述代碼覆蓋率信息進行分析,生成可視化報告。出于對生成可視化報告時的便利性考慮,在其中一種實現(xiàn)方式中,在收集到代碼覆蓋率信息之后,還可以將該代碼覆蓋率信息轉換成第一預設格式類型信息后予以存儲,以方便后續(xù)過程中對代碼覆蓋率信息分析后生成可視化報告。生成的可視化報告可提供給測試人員,供測試人員對測試過程及結果進行評估,例如基于代碼覆蓋率信息對測試用例是否夠全面進行評估等等。此外,該第一預設格式類型,可以依據實際需要設定為任何一種方式,只要能夠便于后續(xù)過程生成可視化報告即可,例如json格式類型或者xml格式類型等等。在另外一種方式中,在收集到代碼覆蓋率信息之后,可以將該代碼覆蓋率信息以其當前格式直接予以存儲,在需要進行分析、生成可視化報告時,讀取出該代碼覆蓋率信息后,再將該代碼覆蓋率信息轉換為第一預設格式類型,以便于生成可視化報告,該第一預設格式類型,可以依據實際需要設定為任何一種方式,例如json格式類型或者xml格式類型等等。圖3中示出了圖2所示的代碼測試信息收集方法在對代碼覆蓋率信息進行分析生成可視化報告時實施例的流程示意圖,如圖3所示,該實施例二中生成可視化報告的步驟包括:獲取被測源代碼的代碼統(tǒng)計信息,這里的該代碼統(tǒng)計信息標明了被測源代碼中哪些行是可執(zhí)行行,哪些行是注釋行;加載上述獲得的代碼覆蓋率信息,該代碼覆蓋率信息,實際上標明了哪些行是覆蓋行,方便后續(xù)過程中對各行是否為覆蓋行的判斷;讀取被測源代碼的一行源代碼,根據上述代碼覆蓋率信息判斷當前行是否為覆蓋行,其中,在對源代碼行進行讀取時,可以是按照程序編碼順序依次對各行源代碼進行讀取,也可以是采用其他的設定方式進行讀取,例如隨機讀取等等;若是覆蓋行,判斷該當前行是否為可執(zhí)行行,若是可執(zhí)行行,將該當前行的樣式設置為覆蓋樣式,若不是可執(zhí)行行,將該當前行的樣式設置為普通樣式;若不是覆蓋行,判斷該當前行是否為可執(zhí)行行,若是可執(zhí)行行,將該當前行的樣式設置為未覆蓋樣式,若不是可執(zhí)行行,將該當前行的樣式設置為普通樣式;請對以上三種樣式做出闡述。若該被測源代碼的各行源代碼均已讀取完畢,則完成可視化報告的生成過程,若未讀取完畢,則讀取下一行源代碼后,針對所讀取的下一行源代碼執(zhí)行上述判斷其是否為覆蓋行、可執(zhí)行行的判斷過程,直至被測源代碼中的各行源代碼均完成該判斷過程。其中,上述代碼統(tǒng)計信息,可以是在收集代碼覆蓋率信息的同時予以分析收集,對被測源代碼進行分析統(tǒng)計、獲得代碼統(tǒng)計信息的方式可以采用已有的或者以后出現(xiàn)的各種可能的方式進行,具體的收集代碼統(tǒng)計信息的方式在此不予贅述。其中,上述覆蓋樣式、普通樣式、未覆蓋樣式,是為了從生成的可視化報告的結果直觀地對各行的測試結果進行分析,將當前行的樣式設置為覆蓋樣式,則說明該當前行為可執(zhí)行行且在測試過程中被覆蓋,將當前行的樣式設置為未覆蓋樣式,則說明該當前行為可執(zhí)行行且在測試過程中未被覆蓋,將當前行的樣式設置為普通樣式,則說明當前行不是可執(zhí)行行,基于各行的樣式的設置,測試人員可以一目了然地對測試結果進行分析。在對代碼覆蓋率信息進行分析時,也可以不按上述步驟先對覆蓋行、再對可執(zhí)行行的步驟進行判斷,對覆蓋行、可執(zhí)行行的判定順序不限,只要是能夠將不是可執(zhí)行行的源代碼行的樣式設置為普通樣式、將是可執(zhí)行行且是覆蓋行的源代碼行的樣式設置為覆蓋樣式、將是可執(zhí)行行且不是覆蓋行的源代碼行的樣式設置為未覆蓋樣式即可。實施例三圖4中示出了本發(fā)明的代碼測試信息收集方法實施例三的流程示意圖,在本實施例中,與上述實施例一的不同之處主要在于,本實施例中是以僅收集代碼差異化信息為例進行說明。如圖4所示,本實施例中的代碼測試信息收集方法包括步驟:步驟S401:通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境;步驟S402:檢測與上述被測源代碼對應的舊版源代碼;步驟S403:根據上述被測源代碼、上述舊版源代碼生成代碼差異化信息。根據如上所述的本實施例中的代碼測試信息收集方法,其不僅實現(xiàn)了代碼差異化信息的收集,而且其是通過自動化發(fā)布工具將被測源代碼部署到測試環(huán)境后,再收集代碼差異化信息,然后對被測源代碼進行發(fā)布,由于自動化發(fā)布系統(tǒng)可以實現(xiàn)文件的自動化發(fā)布,文件的傳輸無需人工干預,測試人員只需點幾個按鈕就可以將文件從開發(fā)環(huán)境發(fā)布到外網正式環(huán)境,從而在通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后進行測試從而收集代碼差異化信息,由此可見,本實施例中的方案是實現(xiàn)了代碼差異化信息的收集與自動化發(fā)布工具的結合,無需用戶的大量干預,實現(xiàn)了在用戶無感知的情況下對代碼差異化信息的收集,減少了測試人員的工作量,提高代碼差異化信息收集的效率。上述與被測源代碼對應的舊版源代碼,通常情況下可以設置為與當前的被測源代碼最近的舊版源代碼,即最新的舊版源代碼。當然,如果需要對早前的某個版本的舊版源代碼與被測源代碼進行評估,也可以將其設置為所需要版本的舊版源代碼,可以依據實際需要進行設定,在此不予贅述。對代碼差異化信息的收集,可以是在執(zhí)行功能測試用例的過程中進行,無需人工干預,對用戶完全透明,因此可以在用戶毫無感知的情況下收集到代碼差異化信息。所謂無感知,是指對用戶完全透明,用戶只需正常完成測試工作即可,在測試過程中感知不到代碼差異化信息收集工具的存在。具體的代碼差異化信息的收集方式,可以采用已有的或者以后出現(xiàn)的各種可能的方式進行,具體的代碼差異化信息的收集方式在此不予贅述。其中,在收集到代碼差異化信息之后,還可以對該代碼差異化信息進行分析,生成可視化報告。該對代碼差異化信息進行分析、生成可視化報告的過程,可以是在得到代碼差異化信息之后的任何時候進行,在其中一種實現(xiàn)方式中,可以是在測試完畢后進行,因此,如圖4所示,在本實施例的方法中,在上述步驟S403之后還包括步驟:步驟S404:執(zhí)行功能測試用例,在測試完畢后、接收到將被測源代碼進行發(fā)布的指令時,對上述代碼差異化信息進行分析生成可視化報告。出于對生成可視化報告時的便利性考慮,在其中一種實現(xiàn)方式中,在收集到代碼差異化信息之后,還可以將該代碼差異化信息轉換成第二預設格式類型信息后予以存儲,以方便后續(xù)過程中對代碼差異化信息進行分析生成可視化報告。該第二預設格式類型,可以依據實際需要設定為任何一種方式,只要能夠便于后續(xù)過程生成可視化報告即可,例如json格式類型或者xml格式類型等等。在另外一種方式中,在收集到代碼差異化信息之后,可以將該代碼差異化信息以其當前格式直接予以存儲,在需要進行分析生成可視化報告時,讀取出該代碼差異化信息后,再將該代碼差異化信息轉換為第二預設格式類型,以便于生成可視化報告,該第二預設格式類型,可以依據實際需要設定為任何一種哦方式,例如json格式類型或者xml格式類型等等。圖5中示出了本實施例中對代碼差異化信息進行分析生成可視化報告的流程示意圖,如圖5所示,對代碼差異化信息進行分析生成可視化報告的步驟包括:加載上述代碼差異化信息,該代碼差異化信息,實際上標明了哪些行是變更行,方便后續(xù)過程中對是否為變更行的判斷;讀取被測源代碼行中的一行源代碼;根據上述代碼差異化信息判斷當前行是否為變更行:若是變更行,將當前行的樣式設置為變更樣式,若不是變更行,將當前行的樣式設置為非變更樣式;若該被測源代碼的各行源代碼均已讀取完畢,則完成可視化報告的生成過程,若未讀取完畢,則讀取下一行源代碼后,針對所讀取的下一行源代碼執(zhí)行上述判斷其是否為變更行的判斷過程,直至被測源代碼中的各行源代碼均完成該判斷過程。其中,這里的變更樣式、未變更樣式,是為了從生成的可視化報告的結果直觀地對各行的測試結果進行分析,將當前行的樣式設置為變更樣式,則說明該當前行發(fā)生了變更,將當前行的樣式設置為未變更樣式,則說明該當前行未發(fā)生變更,基于各行的樣式的設置,測試人員可以一目了然地對測試結果進行分析。實施例四圖6中示出了本發(fā)明的代碼測試信息收集方法實施例四的流程示意圖,在本實施例中,與上述實施例二的不同之處主要在于,本實施例中的方案還實現(xiàn)了代碼差異化信息的收集,即同時收集了代碼覆蓋率信息與代碼差異化信息。如圖6所示,本實施例四中的代碼測試信息收集方法包括步驟:步驟S601:通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境;步驟S602:對上述部署到測試環(huán)境的被測源代碼進行插樁;步驟S603:檢測與上述被測源代碼對應的舊版源代碼,根據該被測源代碼、該舊版源代碼生成代碼差異化信息;步驟S604:執(zhí)行功能測試用例,在執(zhí)行功能測試用例時收集代碼覆蓋率信息;步驟S605:對上述被測源代碼移樁后將被測源代碼進行發(fā)布。根據本實施例中的方法,不僅實現(xiàn)了代碼覆蓋率信息的收集,還實現(xiàn)了代碼差異化信息的收集,而代碼差異化信息與代碼覆蓋率信息的結合表明了新舊版本代碼差異部分被覆蓋的情況,有助于測試人員對變更代碼測試程度的評估,可以評估增量測試的完整性,具有重要的意義。上述與被測源代碼對應的舊版源代碼,通常情況下可以設置為與當前的被測源代碼最近的舊版源代碼,即最新的舊版源代碼。當然,如果需要對早前的某個版本的舊版源代碼與被測源代碼進行評估,也可以將其設置為所需要版本的舊版源代碼,可以依據實際需要進行設定,在此不予贅述。其中,在收集到代碼差異化信息、代碼覆蓋率信息之后,還可以對該代碼差異化信息、代碼覆蓋率信息進行分析、生成可視化報告。該對代碼差異化信息和代碼覆蓋率信息進行分析、生成可視化報告的過程,可以是任何時候進行,在其中一種實現(xiàn)方式中,可以是在測試完畢后、對被測源代碼移樁前進行,因此,如圖6所示,在本實施例的方法中,在上述步驟S604與步驟S605之間還包括步驟:步驟S6045:測試完畢后,接收將上述被測源代碼進行發(fā)布的指令,對上述代碼差異化信息、代碼覆蓋率信息進行分析,生成可視化報告。出于對生成可視化報告時的便利性考慮,在其中一種實現(xiàn)方式中,在收集到代碼差異化信息之后,還可以將該代碼差異化信息轉換成第二預設格式類型信息后予以存儲,以方便后續(xù)過程中對代碼差異化信息分析后生成可視化報告。該第二預設格式類型,可以依據實際需要設定為任何一種方式,只要能夠便于后續(xù)過程生成可視化報告即可,例如json格式類型或者xml格式類型等等。在另外一種方式中,在收集到代碼差異化信息之后,可以將該代碼差異化信息以其當前格式直接進行存儲,在需要進行分析、生成可視化報告時,讀取出該代碼差異化信息后,再將該代碼差異化信息轉換為第二預設格式類型,以便于生成可視化報告,該第二預設格式類型,可以依據實際需要設定為任何一種哦方式,例如json格式類型或者xml格式類型等等。上述代碼覆蓋率信息轉換成的第一預設格式類型信息與該代碼差異化信息轉換成的第二預設格式類型可以相同也可以不同,通常情況下可設置為相同,以便于操作。圖7中示出了本實施例中對代碼差異化信息、代碼覆蓋率信息進行分析生成可視化報告的流程示意圖,如圖7所示,將代碼差異化信息、代碼覆蓋率信息的分析結果生成可視化報告的步驟包括:獲取被測源代碼的代碼統(tǒng)計信息,這里的代碼統(tǒng)計信息標明了被測源代碼中哪些行是可執(zhí)行行,哪些行是注釋行;加載上述收集的代碼差異化信息、代碼覆蓋率信息,該代碼差異化信息,實際上標明了哪些行是變更行,方便后續(xù)過程中對是否為變更行的判斷,該代碼覆蓋率信息,實際上標明了哪些行是覆蓋行,方便后續(xù)過程中對是否為覆蓋行的判斷;讀取被測源代碼中的一行源代碼;根據上述代碼差異化信息判斷當前行是否為變更行:若是變更行,將當前行的樣式設置為變更樣式,若不是變更行,將當前行的樣式設置為非變更樣式;根據上述代碼覆蓋率信息判斷當前行是否為覆蓋行:若是覆蓋行,判斷該當前行是否為可執(zhí)行行,若是可執(zhí)行行,將該當前行的樣式設置為覆蓋樣式,若不是可執(zhí)行行,將該當前行的樣式設置為普通樣式;若不是覆蓋行,判斷該當前行是否為可執(zhí)行行,若是可執(zhí)行行,將該當前行的樣式設置為未覆蓋樣式,若不是可執(zhí)行行,將該當前行的樣式設置為普通樣式;若該被測源代碼的各行源代碼均已讀取完畢,則完成可視化報告的生成過程,若未讀取完畢,則讀取下一行源代碼后,針對所讀取的下一行源代碼執(zhí)行上述判斷其是否為變更行、覆蓋行、可執(zhí)行行的判斷過程,直至被測源代碼中的各行源代碼均完成該判斷過程。其中,這里的變更樣式、未變更樣式,是為了從生成的可視化報告的結果直觀地對各行的測試結果進行分析,將當前行的樣式設置為變更樣式,則說明該當前行發(fā)生了變更,將當前行的樣式設置為未變更樣式,則說明該當前行未發(fā)生變更,基于各行的樣式的設置,測試人員可以一目了然地對測試結果進行分析。在對代碼差異化信息、代碼覆蓋率信息進行分析時,也可以不按上述步驟先對變更行、再對覆蓋行與可執(zhí)行行的步驟進行判斷,對變更行、覆蓋行、可執(zhí)行行的判定順序不限,只要是能夠將是變更行的源代碼行的樣式設置為變更樣式、將不是變更行的源代碼行的樣式設置為未變更樣式、將不是可執(zhí)行行的源代碼行的樣式設置為普通樣式、將是可執(zhí)行行且是覆蓋行的源代碼行的樣式設置為覆蓋樣式、將是可執(zhí)行行且不是覆蓋行的源代碼行的樣式設置為未覆蓋樣式即可。其中上述代碼統(tǒng)計信息,可以是在收集代碼差異化信息或者代碼覆蓋率信息的同時予以分析收集,對被測源代碼進行分析統(tǒng)計、獲得代碼統(tǒng)計信息的方式可以采用現(xiàn)有技術中已有的方式,在此不予贅述。本實施例四中的代碼測試信息收集方法的其他技術特征與上述實施例二中的相同,在此不予贅述。根據上述本發(fā)明的代碼測試信息收集方法,本發(fā)明還提供一種代碼測試信息收集系統(tǒng),以下針對本發(fā)明的代碼測試信息收集系統(tǒng)的其中幾個具體示例進行詳細說明。實施例一圖8中示出了本發(fā)明的代碼測試信息收集系統(tǒng)實施例一的結構示意圖。如圖8所示,本實施例一中的代碼測試信息收集系統(tǒng)包括:導入單元801,用于通過自動化發(fā)布系統(tǒng)將被測代碼部署到測試環(huán)境;測試單元802,用于在上述測試環(huán)境中對所述被測代碼進行測試,獲得代碼測試信息,其中,這里的代碼測試信息可以是代碼覆蓋率信息,也可以是代碼差異化信息,也可以是代碼覆蓋率信息與代碼差異化信息的組合。根據本實施例中的方案,其是通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后,再在測試環(huán)境中對被測代碼進行測試得到代碼測試信息,從而實現(xiàn)對代碼測試信息的收集,由于自動化發(fā)布系統(tǒng)可以實現(xiàn)文件的自動化發(fā)布,文件的傳輸無需人工干預,測試人員只需點幾個按鈕就可以將文件從開發(fā)環(huán)境發(fā)布到外網正式環(huán)境,從而在通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后進行測試從而收集代碼測試信息,實現(xiàn)了代碼測試信息的收集與自動化發(fā)布工具的結合,無需用戶的大量干預,實現(xiàn)了在用戶無感知的情況下對代碼測試信息的收集,減少了測試人員的工作量,提高了效率。以下結合代碼測試信息為代碼覆蓋率信息、代碼差異化信息為例,分別對本發(fā)明的代碼測試信息收集系統(tǒng)進行詳細說明。實施例二圖9中示出了本發(fā)明的代碼測試信息收集系統(tǒng)實施例二的結構示意圖,在本實施例二的方案中,與上述實施例一中的不同之處主要在于,本實施例中是以僅僅收集代碼覆蓋率信息為例進行說明。如圖9所示,本實施例中的代碼測試信息收集系統(tǒng)包括:導入單元901,用于通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境;測試單元902,用于在上述測試環(huán)境中對所述被測代碼進行測試,獲得代碼測試信息,這里的代碼測試信息可以包括代碼覆蓋率信息。其中,該測試單元902具體可以包括:插樁單元9021,用于對上述部署到測試環(huán)境的被測源代碼進行插樁;代碼覆蓋率信息收集單元9022,用于在執(zhí)行功能測試用例時收集上述部署到測試環(huán)境的被測源代碼的代碼覆蓋率信息;移樁單元9023,用于對上述被測源代碼進行移樁,上述被測源代碼經移樁后進行發(fā)布。根據本實施例中的代碼測試信息收集系統(tǒng),其是通過自動化發(fā)布工具將被測源代碼部署到測試環(huán)境后,再對被測源代碼進行插樁,然后執(zhí)行測試功能用例,并在執(zhí)行功能測試用例時收集代碼覆蓋率信息,并在測試完畢后,將被測源代碼移樁后進行發(fā)布,由于自動化發(fā)布系統(tǒng)可以實現(xiàn)文件的自動化發(fā)布,文件的傳輸無需人工干預,測試人員只需點幾個按鈕就可以將文件從開發(fā)環(huán)境發(fā)布到外網正式環(huán)境,從而在通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后進行測試從而收集代碼覆蓋率信息,由此可見,本實施例中的方案是實現(xiàn)了代碼覆蓋率信息的收集與自動化發(fā)布工具的結合,無需用戶的大量干預,實現(xiàn)了在用戶無感知的情況下對代碼覆蓋率信息的收集,減少了測試人員的工作量,提高代碼覆蓋率信息收集的效率。插樁單元9021對被測源代碼進行插樁時,可以采用已有的以及在以后出現(xiàn)的各種可能的方式進行,用于插樁的代碼,可以根據實際需要進行設定,在此不予贅述。所謂插樁,是指在不破壞被測程序原有邏輯完整性的情況下,在被測程序的相應位置插入用于插樁的代碼(也稱之為探針),這些探針本質上是進行信息采集的代碼段,通過探針的執(zhí)行并輸出程序的運行特征數(shù)據,從而基于這些特征數(shù)據的分析,揭示程序的內部行為和特性。在測試完畢后,需要將這些插入的探針去除,以保留被測程序的完整性,即移樁單元9023中的移樁操作。代碼覆蓋率信息收集單元9022對代碼覆蓋率信息的收集,可以是在執(zhí)行功能測試用例的后臺進行,無需人工干預,對用戶完全透明,因此可以在用戶毫無感知的情況下收集到代碼覆蓋率信息。所謂無感知,是指對用戶完全透明,用戶只需正常完成測試工作即可,在測試過程中感知不到代碼覆蓋率信息收集的存在。具體的代碼覆蓋率信息的收集方式,可以采用已有的以及在以后出現(xiàn)的各種可能的方式進行,在此不予贅述。其中,在收集到代碼覆蓋率信息之后,還可以對該代碼覆蓋率信息進行分析、生成可視化報告。該對代碼覆蓋率信息進行分析、生成可視化報告的過程,可以是任何時候進行,在其中一種實現(xiàn)方式中,可以是在測試完畢后、對被測源代碼移樁之前進行,因此,如圖9所示,在本實施例的系統(tǒng)中,在上述代碼覆蓋率信息收集單元9022與插樁單元9021之間還包括:分析單元90212,用于在接收到將被測源代碼進行發(fā)布的指令時,對上述代碼覆蓋率信息進行分析生成可視化報告。出于對生成可視化報告時的便利性考慮,在其中一種實現(xiàn)方式中,代碼覆蓋率信息收集單元9022在收集到代碼覆蓋率信息之后,還可以將該代碼覆蓋率信息轉換成第一預設格式類型信息后予以存儲,以方便后續(xù)過程中對代碼覆蓋率信息分析后生成可視化報告。生成的可視化報告可提供給測試人員,供測試人員對測試過程及結果進行評估,例如基于代碼覆蓋率信息對測試用例是否夠全面進行評估等等。該第一預設格式類型,可以依據實際需要設定為任何一種方式,只要能夠便于后續(xù)過程生成可視化報告即可,例如json格式類型或者xml格式類型等等。在另外一種方式中,代碼覆蓋率信息收集單元9022在收集到代碼覆蓋率信息之后,可以將該代碼覆蓋率信息以其當前格式直接予以存儲,分析單元90212在需要對代碼覆蓋率信息進行分析、生成可視化報告時,讀取出該代碼覆蓋率信息后,再將該代碼覆蓋率信息轉換為第一預設格式類型,以便于生成可視化報告,該第一預設格式類型,可以依據實際需要設定為任何一種哦方式,例如json格式類型或者xml格式類型等等。圖10中示出了圖9中所示的分析單元90212在一個具體示例中的結構示意圖,如圖10所示,在本實施例二中,上述分析單元90212具體可以包括:統(tǒng)計信息獲取單元902121,用于獲取被測源代碼的代碼統(tǒng)計信息;加載單元902122,用于加載上述代碼覆蓋率信息;行讀取單元902123,用于讀取被測源代碼中的各行;覆蓋行判定單元902124,用于根據上述代碼覆蓋率信息判斷當前行是否為覆蓋行;可執(zhí)行行判定單元902125,用于根據上述代碼統(tǒng)計信息判定當前行是否為可執(zhí)行行;樣式設置單元902126,用于在覆蓋行判定單元902124判定當前行是覆蓋行、可執(zhí)行行判定單元902125判定當前行是可執(zhí)行行時,將當前行的樣式設置為覆蓋樣式,在覆蓋行判定單元902124判定當前行不是覆蓋行、可執(zhí)行行判定單元902125判定當前行是可執(zhí)行行時,將該當前行的樣式設置為未覆蓋樣式,否則將該當前行的樣式設置為普通樣式。在對代碼覆蓋率信息進行分析時,對覆蓋行、可執(zhí)行行的判定順序不限,只要是能夠將不是可執(zhí)行行的源代碼行的樣式設置為普通樣式、將是可執(zhí)行行且是覆蓋行的源代碼行的樣式設置為覆蓋樣式、將是可執(zhí)行行且不是覆蓋行的源代碼行的樣式設置為未覆蓋樣式即可。上述代碼統(tǒng)計信息,可以直接利用已經分析統(tǒng)計好的代碼統(tǒng)計信息,也可以由圖9中所示的代碼信息統(tǒng)計單元9024進行分析統(tǒng)計,即本實施例中的代碼測試信息收集系統(tǒng),還可以包括代碼信息統(tǒng)計單元9024,用于對上述被測源代碼進行分析統(tǒng)計,獲得上述代碼統(tǒng)計信息。該代碼統(tǒng)計信息,可以是在收集代碼覆蓋率信息的同時予以分析收集,對被測源代碼進行分析統(tǒng)計、獲得代碼統(tǒng)計信息的方式可以采用各種可能的方式進行,在此不予贅述。本實施例二中的代碼測試信息收集系統(tǒng),具體的代碼測試信息的收集方法與上述本發(fā)明代碼測試信息收集方法實施例二中的相同,在此不予贅述。本實施例二的代碼測試信息收集具體的代碼測試信息的收集方式與上述本發(fā)明代碼測試信息收集方法實施例二中的相同,在此不予贅述。實施例三圖11中示出了本發(fā)明的代碼測試信息收集系統(tǒng)實施例三的結構示意圖,在本實施例三的方案中,與上述實施例一中的方案的不同之處主要在于,本實施例中是以僅僅收集代碼差異化信息為例進行說明。如圖11所示,本實施例中的代碼測試信息收集系統(tǒng)包括:導入單元1101,用于通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境;測試單元1102,用于在上述測試環(huán)境中對所述被測代碼進行測試,獲得代碼測試信息,這里的代碼測試信息可以包括代碼差異化信息,其中,該測試單元1102具體包括:代碼差異化信息收集單元1121,用于檢測與上述被測源代碼對應的舊版源代碼,并根據上述被測源代碼、舊版源代碼生成代碼差異化信息。根據如上所述的本實施例中的代碼測試信息收集系統(tǒng),其不僅實現(xiàn)了代碼差異化信息的收集,而且是通過自動化發(fā)布工具將被測源代碼部署到測試環(huán)境后,再收集代碼差異化信息,然后將被測源代碼進行發(fā)布,由于自動化發(fā)布系統(tǒng)可以實現(xiàn)文件的自動化發(fā)布,文件的傳輸無需人工干預,測試人員只需點幾個按鈕就可以將文件從開發(fā)環(huán)境發(fā)布到外網正式環(huán)境,從而在通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境后進行測試從而收集代碼差異化信息,由此可見,本發(fā)明方案是實現(xiàn)了代碼差異化信息的收集與自動化發(fā)布工具的結合,無需用戶的大量干預,實現(xiàn)了在用戶無感知的情況下對代碼差異化信息的收集,減少了測試人員的工作量,提高代碼差異化信息收集的效率。上述與被測源代碼對應的舊版源代碼,通常情況下可以設置為與當前的被測源代碼最近的舊版源代碼,即最新的舊版源代碼。當然,如果需要對早前的某個版本的舊版源代碼與被測源代碼進行評估,也可以將其設置為所需要版本的舊版源代碼,可以依據實際需要進行設定,在此不予贅述。代碼差異化信息收集單元1121對代碼差異化信息的收集,可以是在執(zhí)行功能測試用例的過程中進行,無需人工干預,對用戶完全透明,因此可以在用戶毫無感知的情況下收集到代碼差異化信息。所謂無感知,是指對用戶完全透明,用戶只需正常完成測試工作即可,在測試過程中感知不到代碼差異化信息收集工具的存在。具體的代碼差異化信息的收集方式,可以采用已有的或者以后出現(xiàn)的各種可能的方式進行,具體的代碼差異化信息的收集方式在此不予贅述。其中,在收集到代碼差異化信息之后,還可以對該代碼差異化信息進行分析,生成可視化報告。該對代碼差異化信息進行分析、生成可視化報告的過程,可以是在得到代碼差異化信息之后的任何時候進行,在其中一種實現(xiàn)方式中,可以是在測試完畢后進行,因此,如圖11所示,在本實施例中,上述測試單元1102還可以包括:分析單元1122,用于在接收到將上述被測源代碼進行發(fā)布的指令時,對上述代碼差異化信息進行分析生成可視化報告。出于對生成可視化報告時的便利性考慮,在其中一種實現(xiàn)方式中,代碼差異化信息生成單元1121在收集到代碼差異化信息之后,還可以將該代碼差異化信息轉換成第二預設格式類型信息后予以存儲,以方便后續(xù)過程中對代碼差異化信息分析后生成可視化報告。該第二預設格式類型,可以依據實際需要設定為任何一種方式,只要能夠便于后續(xù)過程生成可視化報告即可,例如json格式類型或者xml格式類型等等。在另外一種方式中,代碼差異化信息生成單元1121在收集到代碼差異化信息之后,可以將該代碼差異化信息以其當前格式直接予以存儲,分析單元1122在需要生成可視化報告時,讀取出該代碼差異化信息后,再將該代碼差異化信息轉換為第二預設格式類型,以便于生成可視化報告,該第二預設格式類型,可以依據實際需要設定為任何一種哦方式,例如json格式類型或者xml格式類型等等。圖12中示出了圖11中所示的分析單元1122在一個具體示例中的結構示意圖,如圖12所示,在本實施例中,上述分析單元1122具體可以包括:加載單元11221,用于加載上述代碼差異化信息;行讀取單元11222,用于讀取被測源代碼行中的各行;變更行判定單元11223,根據上述代碼差異化信息判斷當前行是否為變更行;樣式設置單元11224,用于在變更行判定單元11223判定當前行為變更行時,將當前行的樣式設置為變更樣式,在變更行判定單元11223判定當前行不是變更行時,將當前行的樣式設置為非變更樣式。本實施例三中的代碼測試信息收集具體的代碼測試信息的收集方式與上述本發(fā)明代碼測試信息收集方法實施例三中的相同,在此不予贅述。實施例四圖13中示出了本發(fā)明的代碼測試信息收集系統(tǒng)實施例四的結構示意圖,在本實施例中,與上述實施例二的不同之處主要在于,本實施例中的方案還實現(xiàn)了代碼差異化信息的收集,即同時收集了代碼覆蓋率信息與代碼差異化信息。如圖13所示,本實施例四中的代碼測試信息收集系統(tǒng)包括:導入單元1301,用于通過自動化發(fā)布系統(tǒng)將被測源代碼部署到測試環(huán)境;測試單元1302,用于在上述測試環(huán)境中對所述被測代碼進行測試,獲得代碼測試信息,這里的代碼測試信息可以包括代碼覆蓋率信息以及代碼差異化信息。其中,該測試單元1302具體包括:插樁單元13211,用于對部署到測試環(huán)境的上述被測源代碼進行插樁;代碼差異化信息生成單元13212,用于檢測與上述被測源代碼對應的舊版源代碼,并根據上述被測源代碼、上述舊版源代碼生成代碼差異化信息;代碼覆蓋率信息收集單元13213,用于在執(zhí)行功能測試用例時收集代碼覆蓋率信息;移樁單元13214,用于對上述被測源代碼進行移樁,上述被測源代碼經移樁后進行發(fā)布。根據本實施例中的系統(tǒng),不僅實現(xiàn)了代碼覆蓋率信息的收集,還實現(xiàn)了代碼差異化信息的收集,而代碼差異化信息與代碼覆蓋率信息的結合表明了新舊版本代碼差異部分被覆蓋的情況,有助于測試人員對變更代碼測試程度的評估,可以評估增量測試的完整性,具有重要的意義。上述與被測源代碼對應的舊版源代碼,通常情況下可以設置為與當前的被測源代碼最近的舊版源代碼,即最新的舊版源代碼。當然,如果需要對早前的某個版本的舊版源代碼與被測源代碼進行評估,也可以將其設置為所需要版本的舊版源代碼,可以依據實際需要進行設定,在此不予贅述。其中,在收集到代碼差異化信息、代碼覆蓋率信息之后,還可以對該代碼差異化信息、代碼覆蓋率信息進行分析、生成可視化報告。該對代碼差異化信息和代碼覆蓋率信息進行分析、生成可視化報告的過程,可以是任何時候進行,在其中一種實現(xiàn)方式中,可以是在測試完畢后、對被測源代碼移樁前進行,因此,如圖13所示,在本實施例的系統(tǒng)中,在上述代碼覆蓋率信息收集單元13213與移樁單元13214之間還包括:分析單元132134,用于在接收到將被測源代碼進行發(fā)布的指令時,對上述代碼差異化信息、代碼覆蓋率信息進行分析生成可視化報告。出于對生成可視化報告時的便利性考慮,在其中一種實現(xiàn)方式中,代碼差異化信息生成單元13212在收集到代碼差異化信息之后,還可以將該代碼差異化信息轉換成第二預設格式類型信息后予以存儲,以方便后續(xù)過程中對代碼差異化信息分析后生成可視化報告。該第二預設格式類型,可以依據實際需要設定為任何一種方式,只要能夠便于后續(xù)過程生成可視化報告即可,例如json格式類型或者xml格式類型等等。在另外一種方式中,代碼差異化信息生成單元13212在收集到代碼差異化信息之后,可以將該代碼差異化信息以其當前格式直接予以存儲,分析單元132134在需要生成可視化報告時,讀取出該代碼差異化信息后,再將該代碼差異化信息轉換為第二預設格式類型,以便于生成可視化報告,該第二預設格式類型,可以依據實際需要設定為任何一種方式,例如json格式類型或者xml格式類型等等。上述代碼覆蓋率信息轉換成的第一預設格式類型信息與該代碼差異化信息轉換成的第二預設格式類型可以相同也可以不同,通常情況下可設置為相同,以便于操作。圖14中示出了圖13中所示的分析單元132134在一個具體示例中的結構示意圖,如圖14所示,在本實施例二中,上述分析單元132134具體可以包括:統(tǒng)計信息獲取單元132101,用于獲取被測源代碼的代碼統(tǒng)計信息;加載單元132102,用于加載上述代碼差異化信息、代碼覆蓋率信息;行讀取單元132103,用于讀取被測源代碼中的各行;變更行判定單元132104,根據上述代碼差異化信息判斷當前行是否為變更行;覆蓋行判定單元132105,用于根據上述代碼覆蓋率信息判斷當前行是否為覆蓋行;可執(zhí)行行判定單元132106,用于根據上述代碼統(tǒng)計信息判定當前行是否為可執(zhí)行行;樣式設置單元132107,用于在變更行判定單元132104判定當前行為變更行時,將當前行的樣式設置為變更樣式,在變更行判定單元132104判定當前行不是變更行時,將當前行的樣式設置為非變更樣式,在覆蓋行判定單元132105判定當前行是覆蓋行、可執(zhí)行行判定單元132106判定當前行是可執(zhí)行行時,將當前行的樣式設置為覆蓋樣式,在覆蓋行判定單元132105判定當前行不是覆蓋行、可執(zhí)行行判定單元132106判定當前行是可執(zhí)行行時,將該當前行的樣式設置為未覆蓋樣式,在可執(zhí)行行判定單元132106判定當前行不是可執(zhí)行行時,將該當前行的樣式設置為普通樣式。在對代碼差異化信息、代碼覆蓋率信息進行分析時,對變更行、覆蓋行、可執(zhí)行行的判定順序不限,只要是能夠將是變更行的源代碼行的樣式設置為變更樣式、將不是變更行的源代碼行的樣式設置為未變更樣式、將不是可執(zhí)行行的源代碼行的樣式設置為普通樣式、將是可執(zhí)行行且是覆蓋行的源代碼行的樣式設置為覆蓋樣式、將是可執(zhí)行行且不是覆蓋行的源代碼行的樣式設置為未覆蓋樣式即可。上述代碼統(tǒng)計信息,可以直接利用已經分析統(tǒng)計好的代碼統(tǒng)計信息,也可以由圖13中所示的代碼信息統(tǒng)計單元13215進行分析統(tǒng)計,即本實施例中的代碼測試信息收集系統(tǒng),還可以包括代碼信息統(tǒng)計單元13215,用于對上述被測源代碼進行分析統(tǒng)計,獲得上述代碼統(tǒng)計信息。該代碼統(tǒng)計信息,可以是在收集代碼差異化信息或者代碼覆蓋率信息的同時予以分析收集,對被測源代碼進行分析統(tǒng)計、獲得代碼統(tǒng)計信息的方式可以采用現(xiàn)有技術中已有的方式,在此不予贅述。本實施例四中的代碼測試信息收集系統(tǒng)的其他技術特征,與上述實施例二中的代碼測試信息收集系統(tǒng)中的相同,具體的代碼測試信息的收集方法與上述本發(fā)明代碼測試信息收集方法實施例四中的相同,在此不予贅述。以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。