一種自動化單元測試的實現方法及裝置制造方法
【專利摘要】本發(fā)明實施例公開了一種自動化單元測試的實現方法及裝置。其中,該方法包括:獲取用戶在本次單元測試下輸入的被測對象、負載對象以及測試用例的配置信息;根據預先生成的代碼文件模板和所述配置信息,生成相應的被測對象代碼文件、負載對象代碼文件以及測試用例代碼文件;基于所生成的代碼文件以及對應于本次單元測試的測試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序,并運行所述測試程序,根據運行結果生成測試報告。本發(fā)明實施例提供的技術方案,解決了現有技術中測試用例編寫過程工作量大、時間長的問題,實現了單元測試的自動化,縮減了測試用例的編碼時間,提高了測試效率和準確率。
【專利說明】一種自動化單元測試的實現方法及裝置
【技術領域】
[0001] 本發(fā)明實施例涉及測試【技術領域】,尤其涉及一種自動化單元測試的實現方法及裝 置。
【背景技術】
[0002] 在大機組程序開發(fā)中,為了能夠復用已開發(fā)產品的資源(架構、文檔、庫和源碼), 通常需要一套可方便復用程序資源并且可通過動態(tài)配置屬性就能直接輸出程序的軟件系 統(tǒng),這樣在很大程度上可以減少程序開發(fā)過程中的重復工作量,加快程序開發(fā)的進度,讓產 品占得市場先機。在這樣一套軟件系統(tǒng)中進行程序開發(fā)工作,程序的質量無疑是重中之重, 那么十分有必要對其進行單元測試。
[0003] 單元測試是一種白盒測試,旨在檢測程序代碼中的錯誤和漏洞,從源頭上保證程 序的質量,是對程序每一行代碼或代碼塊進行覆蓋測試以判斷其正確與否。在現有技術中, 通常所采用的單元測試方式是通過人工編寫大量的測試用例代碼對源程序代碼進行測試 驗證,并通過編譯生成測試報告,再通過解讀測試報告中令人費解的測試數據,最終才能判 斷出源程序代碼中的錯誤和漏洞。
[0004] 顯然,上述現有技術存在的技術缺陷在于:在編寫測試用例的過程中,可能會因 為編寫者的編碼筆誤等原因而造成測試錯誤,故使源程序遺留或多或少的漏洞未能及時發(fā) 現;并且,測試用例代碼量往往都比源程序代碼量更龐大,工作量非常大,特別是在源程序 代碼更改后進行回歸測試時,如果需要重新修改測試用例代碼甚至要重寫,則更是會耗費 大量的編碼時間。
[0005] 傳統(tǒng)的單元測試方式測試時間長,對人員的要求高,工作量大,因此程序很少做完 整的單元測試。為了解決這種困境,那么我們則必須要使單元測試自動化,減輕測試的工作 量,縮短測試時間。
【發(fā)明內容】
[0006] 本發(fā)明實施例提供一種自動化單元測試的實現方法及裝置,以實現單元測試的自 動化,縮減測試用例的編碼時間,提高測試效率和準確率。
[0007] 第一方面,本發(fā)明實施例提供了一種自動化單元測試的實現方法,該方法包括:
[0008] 獲取用戶在本次單元測試下輸入的被測對象、負載對象以及測試用例的配置信 息;
[0009] 根據預先生成的代碼文件模板,生成與所述配置信息相對應的被測對象和測試用 例代碼文件,以及負載對象代碼文件;
[0010] 基于所生成的代碼文件以及對應于本次單元測試的測試框架代碼文件和測試樁 代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序,并運行所述測試程序,根據運行結 果生成測試報告。
[0011] 第二方面,本發(fā)明實施例還提供了一種自動化單元測試的實現裝置,該裝置包 括:
[0012] 配置信息獲取單元,用于獲取用戶在本次單元測試下輸入的被測對象、負載對象 以及測試用例的配置信息;
[0013] 測試代碼文件生成單元,用于根據預先生成的代碼文件模板和所述配置信息,生 成相應的被測對象和測試用例代碼文件,以及負載對象代碼文件;
[0014] 測試程序生成及執(zhí)行單元,用于基于所生成的代碼文件以及對應于本次單元測試 的測試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序,并 運行所述測試程序,根據運行結果生成測試報告。
[0015] 本發(fā)明實施例提供的技術方案,只需用戶在本次單元測試中輸入被測對象、負載 對象以及測試用例的配置信息,便可自動利用所述配置信息和預先生成的代碼文件模板來 生成單元測試所需的包含有測試用例代碼的代碼文件,進而通過對代碼文件進行編譯來生 成可執(zhí)行的測試程序,并運行所述測試程序,根據運行結果生成測試報告,從而解決了現有 技術中測試用例編寫過程工作量大、時間長,以及編寫者的編碼筆誤等原因而造成的測試 錯誤的問題,實現了單元測試的自動化,縮減了測試用例的編碼時間,提高了測試效率和準 確率。
【專利附圖】
【附圖說明】
[0016] 圖1是本發(fā)明實施例一提供的一種自動化單元測試的實現方法的流程示意圖;
[0017] 圖2是本發(fā)明實施例二提供的一種自動化單元測試的實現方法的流程示意圖;
[0018] 圖3是本發(fā)明實施例三提供的一種自動化單元測試的實現方法的流程示意圖;
[0019] 圖4A是本發(fā)明實施例四提供的一種自動化單元測試的實現方法的流程示意圖;
[0020] 圖4B是本發(fā)明實施例四提供的一種自動化單元測試的實現方法的網絡結構示意 圖;
[0021] 圖4C是本發(fā)明實施例四提供的一種獲取配置信息的人機交互界面示意圖;
[0022] 圖4D是本發(fā)明實施例四提供的一種自動化單元測試的實現方法所涉及的部分線 程操作示意圖;
[0023] 圖4E是本發(fā)明實施例四提供的一種自動化單元測試的實現方法的測試結果示意 圖;
[0024] 圖4F是本發(fā)明實施例四提供的一種回歸測試時所加載顯示的測試用例配置信息 示意圖;
[0025] 圖5是本發(fā)明實施例五提供的一種自動化單元測試的實現裝置的結構示意圖。
【具體實施方式】
[0026] 下面結合附圖和實施例對本發(fā)明作進一步的詳細說明??梢岳斫獾氖牵颂幩?述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便 于描述,附圖中僅示出了與本發(fā)明相關的部分而非全部結構。
[0027] 實施例一
[0028] 圖1是本發(fā)明實施例一提供的一種自動化單元測試的實現方法的流程示意圖。該 方法可以由自動化單元測試的實現裝置來執(zhí)行,所述裝置由軟件來實現。參見圖1,本實施 例提供的自動化單元測試的實現方法具體包括如下操作:
[0029] 操作S110、獲取用戶在本次單元測試下輸入的被測對象、負載對象以及測試用例 的配置信息。
[0030] 其中,被測對象在軟件中表現為算法,用于實現對各種負載對象內部或外部的邏 輯關系的處理,負載對象在軟件中表現為結構體,測試用例由至少一個斷言組成,每一個斷 言包括一個輸入參數和一個期望輸出參數,輸入參數和期望輸出參數由執(zhí)行單元測試的用 戶來定義和輸入。
[0031] 本實施例可以采用用戶通過人機交互界面輸入一些與被測對象、負載對象和測試 用例相關的配置信息,或者用戶預先編寫包含被測對象、負載對象和測試用例相關的配置 信息的配置文件的方式,來告知本次單元測試所需要測試的被測對象、負載對象,以及測試 用例應該包含幾個斷言和每個斷言的輸入參數、期望輸出參數的值。這樣,在獲取了本次單 元測試下的被測對象、負載對象以及測試用例的配置信息后,可以后續(xù)自動生成與測試用 例相關的文件,而無需測試人員手動編寫復雜的測試用例,縮減了測試用例的編碼時間,提 高了測試效率,同時避免了因編寫者的編碼筆誤等造成的測試錯誤的問題,提高了測試的 準確率。
[0032] 操作S120、根據預先生成的代碼文件模板和所述配置信息,生成相應的被測對象 和測試用例代碼文件,以及負載對象代碼文件。
[0033] 本實施例采用模板技術預先生成代碼文件模板,根據生成的代碼文件模板和操作 SllO獲取的配置信息,生成相應的被測對象和測試用例代碼文件,以及負載對象代碼文件。 其中,模板技術有:StringTemplate,Smarty,FastTemplate,ShellPage,Savant 等,米用 模板技術可以實現應用程序業(yè)務邏輯和表現邏輯的分離,提高應用程序的并行工作效率。 通過已編寫好的代碼文件模板,能夠將測試用例的配置信息轉化成字符串寫成測試用例代 碼,進而被寫進被測對象和測試用例代碼文件中。測試用例代碼中存儲了斷言集合。
[0034] 操作S130、基于所生成的代碼文件以及對應于本次單元測試的測試框架代碼文件 和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序,并運行測試程序,根據運 行結果生成測試報告。
[0035] 其中,測試樁文件中包含了所有的樁函數,樁是測試軟件中針對特定的行業(yè)采用 的固定樁代碼,是根據斷言的參數配置情況進行定義,不需用戶進行配置。每個代碼文件包 括一個擴展名為.h的文件和一個擴展名為.c的文件,擴展名為.h的文件中聲明屬性,擴 展名為.c的文件中進行一些功能的實現。測試框架代碼文件實現了對測試用例和被測對 象的運行操作功能,以對被測對象進行條件覆蓋、判定覆蓋、條件/判定覆蓋、條件組合覆 蓋、路徑覆蓋、語句覆蓋等類型的單元測試,通過引用的負載對象在經過某段代碼塊的執(zhí)行 后屬性的改變來判定該段代碼塊的正確與否,并生成測試報告。
[0036] 但是,由于各代碼文件中所包含的代碼并不能夠直接被計算機所識別,不能夠直 接被執(zhí)行,故需要對操作S120所生成的代碼文件以及對應于本次單元測試的測試框架代 碼文件和測試樁代碼文件進行關聯編譯操作,以生成擴展名為.exe的可執(zhí)行測試程序,進 而通過運行測試程序來生成測試報告。
[0037] 本實施例首先獲取用戶在本次單元測試下輸入的對被測對象、負載對象以及測試 用例的配置信息,然后根據所述配置信息和預先生成的代碼文件模板,生成相應的被測對 象和測試用例代碼文件,以及負載對象代碼文件,最后基于所生成的代碼文件以及對應于 本次單元測試的測試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的 測試程序,并運行測試程序,根據運行結果生成測試報告。通過獲取配置信息來自動生成測 試用例,解決了測試用例編寫時間長,工作量大,以及編寫者的編碼筆誤等原因而造成的測 試錯誤的問題,實現了單元測試的自動化,縮減了測試用例的編碼時間,提高了測試效率和 準確率。
[0038] 實施例二
[0039] 圖2是本發(fā)明實施例二提供的一種自動化單元測試的實現方法的流程示意圖。本 實施例在上述實施例一的基礎上,對其操作S120和操作S130進行優(yōu)化。參見圖2,本實施 例提供的自動化單元測試的實現方法具體包括如下操作:
[0040] 操作S210、獲取用戶在本次單元測試下輸入的被測對象、負載對象以及測試用例 的配置信息;
[0041] 操作S220、根據預先生成的StringTemplate代碼文件模板和所述配置信息,按照 CUnit下的標準代碼格式,生成相應的被測對象和測試用例代碼文件,以及負載對象代碼文 件;
[0042] 操作S230、通過引用CUnit框架的自動模式,基于所生成的代碼文件以及對應于 本次單元測試的測試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的 測試程序;以及,運行測試程序,按照預設規(guī)則對運行結果進行序列化,以生成擴展標記語 言XML格式的測試報告。
[0043] 本實施例實現方法的軟件開發(fā)語言可以是JAVA、PHP、或者C#,其中可優(yōu)選為C#。 在執(zhí)行操作S220時,采用能兼容JAVA、PHP、C#語言的StringTemplate模板技術來預先生 成代碼文件模板。該模板技術嚴格執(zhí)行模型視圖分離,擅長多目標代碼的生成,并且方便進 行文件模板的單獨修改,更容易進行模板復用。
[0044] 在執(zhí)行操作S230時,引用了 CUnit框架的自動模式,執(zhí)行CUnit框架生成的可執(zhí) 行測試程序并返回一個擴展標記語言XML格式的文件。采用CUnit框架的自動模式能夠方 便對返回的測試結果進行二次加工。
[0045] 本實施例利用StringTemplate模板技術來預先生成代碼文件模板,并引用CUnit 框架的自動模式來進行單元測試,能夠解決測試用例編寫時間長,工作量大,以及編寫者的 編碼筆誤等原因而造成的測試錯誤的問題,實現單元測試的自動化,縮減了測試用例的編 碼時間,提高了測試效率和準確率。
[0046] 在上述技術方案的基礎上,在運行所述測試程序,按照預設規(guī)則對運行結果進行 序列化,以生成擴展標記語言XML格式的測試報告之后,還包括:
[0047] 按照所述預設規(guī)則對測試報告中的序列化運行結果進行反序列化;
[0048] 將反序列化結果作為本次單元測試的最終結果,通過人機交互界面進行顯示。
[0049] 本實施例引用CUnit框架的自動模式生成了 XML格式的測試報告。但是,由于該 測試報告是CUnit按照預設規(guī)則對測試結果進行序列化得到的代碼,需要有相應的專業(yè)知 識人員才可以讀懂。因此,為了使測試結果更加容易理解和看懂需要對測試報告進行解析, 本實施例可按照上述預設規(guī)則對XML格式的測試報告進行反序列化,將反序列化結果作為 本次單元測試的最終結果,并通過人機交互界面進行顯示,使得本次單元測試的結果以更 加直觀的方式得以顯現。
[0050] 實施例三
[0051] 圖3是本發(fā)明實施例三提供的一種自動化單元測試的實現方法的流程示意圖。本 實施例在上述實施例二的基礎上,對其操作S230進行優(yōu)化。參見圖3,本實施例提供的自動 化單元測試的實現方法具體包括如下操作:
[0052] 操作S310、獲取用戶在本次單元測試下輸入的被測對象、負載對象以及測試用例 的配置信息;
[0053] 操作S320、根據預先生成的StringTemplate代碼文件模板和所述配置信息,按照 CUnit下的標準代碼格式,生成相應的被測對象和測試用例代碼文件,以及負載對象代碼文 件,并存儲所生成的代碼文件至預設的目標文件夾目錄下;
[0054] 操作S330、確定與負載對象具有引用關系的目標對象的代碼文件和CUnit編譯庫 文件,并將所確定的目標對象的代碼文件和CUnit編譯庫文件拷貝至目標文件夾目錄下;
[0055] 該操作中與負載對象具有引用關系的目標對象的代碼文件是一個擴展名為.h的 文件,該文件中定義了目標對象的屬性,與此對應的,目標對象代碼文件中還包括一個擴展 名為.c的文件,該文件中編寫了目標對象的功能執(zhí)行邏輯。因為負載對象中引用目標對象 是需要使用目標對象中的屬性,因此就需要附帶引用目標對象的.h文件,將該.h文件與測 試用例代碼文件、樁代碼文件、測試框架代碼文件以及CUnit編譯庫文件存儲在同一個目 標文件夾目錄下,進行后續(xù)的關聯編譯。
[0056] 操作S340、通過引用CUnit框架的自動模式,采用GNU編譯器套裝GCC,對所生成 的代碼文件,所拷貝的目標對象的代碼文件和CUnit編譯庫文件,以及對應于本次單元測 試的測試框架代碼文件和測試樁代碼文件進行關聯編譯,如果關聯編譯成功,則生成可執(zhí) 行的測試程序,并運行測試程序,按照預設規(guī)則對運行結果進行序列化,以生成擴展標記語 言XML格式的測試報告。
[0057] 該操作采用GNU編譯器套裝GCC,對目標文件夾目錄下的文件進行關聯編譯,GCC 編譯器是由操作系統(tǒng)命令執(zhí)行編譯的,容易集成到軟件中進行調用,并且GCC編譯器是一 款開源的工具,降低了單元測試的成本。需要說明的是,本實施例對上述操作S320和操作 S330這兩者之間的先后執(zhí)行順序不作限定,操作S330也可先于操作S320執(zhí)行,或者分別啟 動兩個不同的線程,同時執(zhí)行操作S320和操作S330。
[0058] 在本實施例的一種優(yōu)選的實施方式中,在進行關聯編譯之后,還包括:如果關聯編 譯失敗,則將關聯編譯錯誤信息提示給用戶。
[0059] 通過引用CUnit框架的自動模式將目標文件夾目錄下的代碼文件進行GCC編譯 時,如果編譯失敗,會將編譯錯誤信息存儲在內存中。為將編譯錯誤信息通過友好的方式反 饋給用戶,使用戶能夠及時和準確的定位測試進度和發(fā)現問題,本實施例優(yōu)選的可將存儲 在內存中的編譯錯誤信息以人機交互界面的形式顯示給用戶。
[0060] 在上述技術方案的基礎上,本實施例提供的自動化單元測試的實現方法還包括: 生成用于運行測試程序的測試腳本。
[0061] 測試腳本的命名以編譯文件最終輸出的可執(zhí)行程序文件名一致,該命名可被預先 配置定義好。測試腳本的作用是為軟件做一個擴展性預留處理,即在測試腳本中可以擴展 對其他程序的運行,通過執(zhí)行測試腳本來即時運行測試程序的同時,也可以即時運行測試 腳本中擴展的其它應用程序,提高了軟件的擴展性和運行效率。
[0062] 在獲取用戶在本次單元測試下輸入的對被測對象、負載對象以及測試用例的配置 信息之后,還包括:將獲取結果存儲至非關系型數據庫;
[0063] 在運行所述測試程序,根據運行結果生成測試報告之后,還包括:接收對所述被測 對象的回歸測試請求,根據所述回歸測試請求加載并顯示所述非關系型數據庫中存儲的所 述獲取結果。
[0064] 由于每個測試用例對應的輸入參數和期望輸出參數都可能存在很大的差異,固定 模式的關系數據庫不能適用于存儲此類測試用例數據,故采用非關系數據庫來存儲測試用 例數據。
[0065] 在創(chuàng)建完成所有測試用例的配置信息后,如果接收到用戶對配置信息的保存指令 (例如觸發(fā)了人機交互界面上的保存按鈕),則將本次測試所獲取的被測對象、負載對象以 及測試用例的配置信息,保存在非關系數據庫(例如MongoDB數據庫)中。在原算法(被 載對象)改變后,用戶可通過點擊人機交互界面上的回歸測試按鈕,來發(fā)起回歸測試請求。 軟件在接收到該請求后,可以加載并顯示對應于該算法的歷史測試用例配置信息,進而使 得用戶可以參見所顯示的內容,按照算法變化情況確定本次回歸測試需輸入的新測試用例 配置信息。軟件在接收到用戶輸入的所述新測試用例配置信息后,根據已加載的測試配置 信息以及所述新測試用例配置信息進行回歸測試,能夠縮短回歸測試的時間,提高回歸測 試的效率。
[0066] 實施例四
[0067] 圖4A是本發(fā)明實施例四提供的一種自動化單元測試的實現方法的流程示意圖。 本實施例可以以上述各實施例為基礎,提供了一種優(yōu)選實例。本實施例可適用于如圖4B所 示的網絡結構。參見圖4B,該網絡結構包括:自動化單元測試的實現裝置所在的終端401, 用于管理非關系型數據庫的主服務器402和從服務器403,以及用于管理代碼文件的版本 服務器404。
[0068] 參見圖4A,本實施例提供的自動化單元測試的實現方法可由置備在終端上的自動 化單元測試的實現裝置(由軟件實現)來執(zhí)行,具體包括如下操作:
[0069] 操作S410、通過人機交互界面,獲取用戶在本次單元測試下輸入的被測對象、負載 對象以及測試用例的配置信息,并將獲取結果上報給主服務器和從服務器,以指示所述主 服務器和從服務器將獲取結果存儲至非關系型數據庫。
[0070] 圖4C是本發(fā)明實施例四提供的一種獲取配置信息的人機交互界面示意圖。參見 圖4C,用戶在終端的人機交互界面輸入輸入參數"0"和期望輸出參數"1"等配置信息。
[0071] 操作S420、根據預先生成的StringTemplate代碼文件模板和所述配置信息,按照 CUnit下的標準代碼格式,生成相應的被測對象和測試用例代碼文件,以及負載對象代碼文 件,并存儲所生成的代碼文件至預設的目標文件夾目錄下,同時將所生成的代碼文件上報 給版本服務器。
[0072] 操作S430、確定與負載對象具有引用關系的目標對象的代碼文件和CUnit編譯庫 文件,將所確定的目標對象的代碼文件和CUnit編譯庫文件拷貝至目標文件夾目錄下,并 在目標文件夾目錄下創(chuàng)建用于運行測試程序的測試腳本;
[0073] 其中,測試腳本的名稱與測試程序的名稱一致,是預先配置好的。
[0074] 需要說明的是,為加快測試速度,提高測試效率,在本實施例中,同時啟動兩個不 同的線程:第一線程和第二線程,來分別執(zhí)行上述操作S420和操作S430。圖4D是本發(fā)明實 施例四提供的一種自動化單元測試的實現方法所涉及的部分線程操作示意圖。參見圖4D, 啟動第一線程(線程1)執(zhí)行上述操作S420,生成被測對象和測試用例代碼文件,以及相關 的負載對象代碼文件,如果生成代碼文件成功,則將代碼文件存儲到本地目標文件夾目錄 下,如果生成代碼文件失敗,則處理異常并返回第一線程繼續(xù)生成被測對象和測試用例代 碼文件,以及相關的負載對象代碼文件;啟動第二線程(線程2)執(zhí)行上述操作S430,將與 負載對象具有引用關系的目標對象的代碼文件和CUnit編譯庫文件復制到本地目標文件 夾目錄下,如果復制不成功則處理異常并返回第二程序繼續(xù)復制,如果復制成功則創(chuàng)建并 生成批處理文件,批處理文件為包含運行可執(zhí)行測試程序以及其他應用程序的測試腳本, 并將批處理文件存儲到本地目標文件夾目錄下。
[0075] 操作S440、通過引用CUnit框架的自動模式,采用GNU編譯器套裝GCC,對所生成 的代碼文件,所拷貝的目標對象的代碼文件和CUnit編譯庫文件,以及對應于本次單元測 試的測試框架代碼文件和測試樁代碼文件進行關聯編譯,如果關聯編譯成功,則生成可執(zhí) 行的測試程序,并通過運行測試腳本來運行測試程序,按照預設規(guī)則對運行結果進行序列 化,以生成擴展標記語言XML格式的測試報告。
[0076] 操作S450、按照所述預設規(guī)則對運行結果進行反序列化,以對測試報告進行解析, 并將反序列化結果作為本次單元測試的最終結果,通過人機交互界面進行顯示。
[0077] 例如,生成的XML格式的測試報告包括:
[0078]
【權利要求】
1. 一種自動化單元測試的實現方法,其特征在于,包括: 獲取用戶在本次單元測試下輸入的被測對象、負載對象以及測試用例的配置信息; 根據預先生成的代碼文件模板和所述配置信息,生成相應的被測對象和測試用例代碼 文件,以及負載對象代碼文件; 基于所生成的代碼文件以及對應于本次單元測試的測試框架代碼文件和測試樁代碼 文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序,并運行所述測試程序,根據運行結果生 成測試報告。
2. 根據權利要求1所述的自動化單元測試的實現方法,其特征在于,根據預先生成的 代碼文件模板和所述配置信息,生成相應的被測對象和測試用例代碼文件,以及負載對象 代碼文件,包括: 根據預先生成的StringTemplate代碼文件模板和所述配置信息,按照CUnit下的標準 代碼格式,生成相應的被測對象和測試用例代碼文件,以及負載對象代碼文件; 基于所生成的代碼文件以及對應于本次單元測試的測試框架代碼文件和測試樁代碼 文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序,并運行所述測試程序,根據運行結果生 成測試報告,包括: 通過引用CUnit框架的自動模式,基于所生成的代碼文件以及對應于本次單元測試的 測試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序;以及, 運行所述測試程序,按照預設規(guī)則對運行結果進行序列化,以生成擴展標記語言XML格式 的測試報告。
3. 根據權利要求2所述的自動化單元測試的實現方法,其特征在于,在運行所述測試 程序,按照預設規(guī)則對運行結果進行序列化,以生成擴展標記語言XML格式的測試報告之 后,還包括: 按照所述預設規(guī)則對所述測試報告中的序列化運行結果進行反序列化; 將反序列化結果作為本次單元測試的最終結果,通過人機交互界面進行顯示。
4. 根據權利要求2所述的自動化單元測試的實現方法,其特征在于,在基于所生成的 代碼文件以及對應于本次單元測試的測試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯 操作,以生成可執(zhí)行的測試程序之前,還包括: 存儲所生成的代碼文件至預設的目標文件夾目錄下; 確定與所述負載對象具有引用關系的目標對象的代碼文件和CUnit編譯庫文件; 將所確定的目標對象的代碼文件和CUnit編譯庫文件拷貝至所述目標文件夾目錄下; 基于所生成的代碼文件以及對應于本次單元測試的測試框架代碼文件和測試樁代碼 文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序,包括: 采用GNU編譯器套裝GCC,對所述目標文件夾目錄下存儲的所生成的代碼文件、所拷貝 的目標對象的代碼文件和CUnit編譯庫文件,以及對應于本次單元測試的測試框架代碼文 件和測試樁代碼文件進行關聯編譯; 如果關聯編譯成功,則生成可執(zhí)行的測試程序。
5. 根據權利要求4所述的自動化單元測試的實現方法,其特征在于,在進行關聯編譯 之后,還包括:如果關聯編譯失敗,則將關聯編譯錯誤信息提示給用戶。
6. 根據權利要求4所述的自動化單元測試的實現方法,其特征在于,還包括:生成用于 運行所述測試程序的測試腳本。
7. 根據權利要求1-6中任一項所述的自動化單元測試的實現方法,其特征在于,在獲 取用戶在本次單元測試下輸入的對被測對象、負載對象以及測試用例的配置信息之后,還 包括:將獲取結果存儲至非關系型數據庫; 在運行所述測試程序,根據運行結果生成測試報告之后,還包括:接收對所述被測對象 的回歸測試請求,根據所述回歸測試請求加載并顯示所述非關系型數據庫中存儲的所述獲 取結果。
8. -種自動化單元測試的實現裝置,其特征在于,包括: 配置信息獲取單元,用于獲取用戶在本次單元測試下輸入的被測對象、負載對象以及 測試用例的配置信息; 測試代碼文件生成單元,用于根據預先生成的代碼文件模板和所述配置信息,生成相 應的被測對象和測試用例代碼文件、負載對象代碼文件以及測試用例代碼文件; 測試程序生成及執(zhí)行單元,用于基于所生成的代碼文件以及對應于本次單元測試的測 試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序,并運行 所述測試程序,根據運行結果生成測試報告。
9. 根據權利要求8所述的自動化單元測試的實現裝置,其特征在于,所述測試代碼文 件生成單元,具體用于: 根據預先生成的StringTemplate代碼文件模板和所述配置信息,按照CUnit下的標準 代碼格式,生成相應的被測對象和測試用例代碼文件,以及負載對象代碼文件; 所述測試程序生成及執(zhí)行單元,具體用于: 通過引用CUnit框架的自動模式,基于所生成的代碼文件以及對應于本次單元測試的 測試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試程序;以及, 運行所述測試程序,按照預設規(guī)則對運行結果進行序列化,以生成擴展標記語言XML格式 的測試報告。
10. 根據權利要求9所述的自動化單元測試的實現裝置,其特征在于,還包括測試結果 顯示單元,用于在所述測試程序生成及執(zhí)行單元運行所述測試程序,按照預設規(guī)則對運行 結果進行序列化,以生成擴展標記語言XML格式的測試報告之后: 按照所述預設規(guī)則對所述測試報告中的序列化運行結果進行反序列化; 將反序列化結果作為本次單元測試的最終結果,通過人機交互界面進行顯示。
11. 根據權利要求9所述的自動化單元測試的實現裝置,其特征在于,還包括關聯編譯 預處理單元,用于在所述測試程序生成及執(zhí)行單元基于所生成的代碼文件以及對應于本次 單元測試的測試框架代碼文件和測試樁代碼文件執(zhí)行關聯編譯操作,以生成可執(zhí)行的測試 程序之前: 存儲所生成的代碼文件至預設的目標文件夾目錄下; 確定與所述負載對象具有引用關系的目標對象的代碼文件和CUnit編譯庫文件; 將所確定的目標對象的代碼文件和CUnit編譯庫文件拷貝至所述目標文件夾目錄下; 所述測試程序生成及執(zhí)行單元包括測試程序生成子單元,用于: 采用GNU編譯器套裝GCC,對所述目標文件夾目錄下存儲的所生成的代碼文件、所拷貝 的目標對象的代碼文件和CUnit編譯庫文件,以及對應于本次單元測試的測試框架代碼文 件和測試樁代碼文件進行關聯編譯; 如果關聯編譯成功,則生成可執(zhí)行的測試程序。
12. 根據權利要求11所述的自動化單元測試的實現裝置,其特征在于,還包括: 編譯錯誤提示單元,用于在所述測試程序生成子單元進行關聯編譯之后,如果所述測 試程序生成子單元關聯編譯失敗,則將關聯編譯錯誤信息提示給用戶。
13. 根據權利要求11所述的自動化單元測試的實現裝置,其特征在于,還包括: 測試腳本生成單元,用于生成用于運行所述測試程序的測試腳本。
14. 根據權利要求8-13中任一項所述的自動化單元測試的實現裝置,其特征在于,還 包括: 獲取結果存儲單元,用于在所述配置信息獲取單元獲取用戶在本次單元測試下輸入 的對被測對象、負載對象以及測試用例的配置信息之后,將獲取結果存儲至非關系型數據 庫; 獲取結果加載顯示單元,用于在所述測試程序生成及執(zhí)行單元運行所述測試程序,根 據運行結果生成測試報告之后,接收對所述被測對象的回歸測試請求,根據所述回歸測試 請求加載并顯示所述非關系型數據庫中存儲的所述獲取結果。
【文檔編號】G06F11/36GK104407973SQ201410690230
【公開日】2015年3月11日 申請日期:2014年11月25日 優(yōu)先權日:2014年11月25日
【發(fā)明者】王靈軍, 邵世卓, 羅曉 申請人:珠海格力電器股份有限公司