本申請提供了一種測試用例自動生成方法,包括:步驟101,獲取測試參數和參數組合策略,并根據參數組合策略生成多組測試數據;步驟102,選取一組測試數據,依據預設模型確定測試動作的輸入參數及期待輸出;步驟103,基于所確定的各測試動作輸入參數及期待輸出,依據預設模型調用測試動作的順序創建動態測試路徑,動態測試路徑為有序存放測試動作、校驗動作的數組容器;步驟104,輸出動態測試路徑,得到一組測試用例。本申請還提供了一種實現前述方法的測試用例自動生成系統。本申請的測試用例自動生成方法和系統,能夠解決測試用例編寫耗時和覆蓋率低的問題。
【技術實現步驟摘要】
測試用例自動生成方法和系統
本申請涉及計算機測試
,特別是涉及一種測試用例自動生成方法及系 統。
技術介紹
計算機產品在投入使用前通常需要進行測試,例如,根據已知產品的功能設計規 格對產品進行測試,以驗證產品的每個功能是否符合要求,或者根據以及產品的內部工作 過程對產品進行測試,以驗證產品的每個內部操作是否符合設計規格要求等等。其中,自動化測試通常根據測試用例編寫測試代碼來實現,測試用例指為特定目 標而開發的一組測試輸入、執行條件和預期結果。在進行測試時通常是程序員根據測試用 例來編寫測試代碼。因為對于某一計算機產品來說,會有較多的測試用例和測試代碼,人工 編寫無疑會增加編寫時間,從而增加測試成本。另外,在測試用例較多的情況下,如果全部 人工編寫會增加整個測試時間,而選擇部分則會導致測試用例和代碼的覆蓋率降低,無法 保證產品被充分測試。
技術實現思路
本申請所要解決的技術問題是提供一種測試用例自動生成方法和系統,能夠解決 測試用例編寫耗時和覆蓋率低的問題。為了解決上述問題,本申請公開了一種測試用例自動生成方法,包括以下步驟步驟101,獲取預設模型的測試參數的數據和參數組合策略,并根據參數組合策略 生成多組測試數據;步驟102,選取一組測試數據,依據預設模型確定各測試動作的輸入參數以及期待 輸出結果;步驟103,基于所確定的各測試動作的輸入參數以及期待輸出結果,依據預設模型 調用測試動作的順序創建動態測試路徑,所述動態測試路徑為有序存放測試動作、校驗動 作的數組容器;步驟104,根據設定計算機語言的語法輸出動態測試路徑,得到一組測試用例;所 述測試用例包括與所設語法相應的語言的測試代碼。進一步地,通過以下步驟創建動態測試路徑基于預設模型,若一測試動作被調用,記住調用參數,返回關聯該測試動作的動態 結果,并將測試動作加入到動態測試路徑;基于預設模型,當一校驗動作被調用時,若被校驗值的類型為動態結果,則將前述 步驟獲取的對測試動作的期待輸出結果賦值給該動態結果。進一步地,所述動態測試路徑還包括有序存放的日志信息;則,所述創建動態測試路徑的步驟還包括基于預設模型,當一日志動作被調用時,將日志動作及相關信息加入動態測試路 徑。進一步地,針對不同的測試場景,建立相應的預設模型;所述預設模型包括對應API或功能接口的測試動作;由多個測試動作有序組成的測試步驟;所述多個測試步驟組成一個測試場景;用于校驗兩個對象是否相等的校驗動作;包括日志類別和內容的日志動作。進一步地,所述預先定義的數據組合策略包括按照笛卡爾乘積展開測試參數;或按照每次只變更一類參數的原則展開測試參數。進一步地,所述動態結果的取值操作包括取Map或者數組中的元素;或取屬性,從最初始的動態結果到最后的動態結果是一條取值路徑。為了解決上述問題,本申請還公開了一種測試用例生成系統,包括測試數據生成模塊,用于獲取預設模型的測試參數數據與數據組合策略,并根據 數據組合策略生成多組測試數據;期待輸出結果獲取模塊,用于選取一組測試數據,獲取該組測試數據執行測試模 型時測試動作的期待輸出結果;動態測試路徑創建模塊,用于基于所確定的各測試動作的輸入參數以及期待輸出 結果,依據預設模型創建動態測試路徑,所述動態測試路徑為有序存放測試動作、校驗動作 與日志信息的數組容器;測試用例生成模塊,根據設定的計算機語言的語法輸出動態測試路徑,得到一組 測試用例,直到所有測試數據都生成測試用例;所述測試用例包括與所設語法相應的語言 的測試代碼。進一步地,所述動態測試路徑創建模塊包括動態結果返回單元,用于基于預設模型,若一測試動作被調用,返回動態結果,并 將測試動作加入動態測試路徑;校驗單元,用于基于預設模型,當一校驗動作被調用時,若被校驗值的類型為動態 結果,則將前述步驟獲取的期待輸出結果賦值給被校驗值。進一步地,所述動態測試路徑創建模塊包括日志信息添加單元,用于基于預設模型,當一日志動作被調用時,將日志動作及相 關信息加入動態測試路徑。進一步地,所述測試數據生成模塊包括數據組合策略確定單元,用于按照笛卡爾乘積展開測試參數或按照每次只變更一 類參數的原則展開測試參數。與現有技術相比,本申請包括以下優點本申請的測試用例生成方法是先獲取測試場景模型(測試模型)的參數與參數組合策略生成一組或多組測試數據后,再結合每一組測試數據執行測試模型而產生對應的 測試用例。其中,對每一組測試數據,在執行測試模型時,當測試動作被調用時并真實執行 得到返回值而是返回一與該測試動作關聯的模擬值,即動態結果,并且當該值被校驗時,動 態結果記住期望值,同時按照測試動作與日志信息動作在模型中被調用的順序,存入到一 個指定的順序容器中,即動態測試路徑;在一組測試數據在模型執行完成后,根據動態測試 路徑來自動生成測試用例。本方法無需多次重復編寫同一測試場景下的測試用例代碼,節 省編寫時間,同時,因為模型會根據輸入的參數生成所有的測試數據,并自動生成所有測試 數據的測試用例,提高了測試用例的覆蓋率。另外,本申請提供編寫測試模型的基本框架,利用腳本語言編寫測試模型,并且測 試數據動態組合后生成測試代碼與展示測試路徑視圖。一個測試模型是對一類測試用例的 抽象,可以生成一個或多個測試用例,維護一個測試模型即可以維護一類測試用例。當然,實施本申請的任一產品不一定需要同時達到以上所述的所有優點。附圖說明圖1是本申請的測試用例生成方法實施例一的流程圖2是本申請的測試用例生成系統實施例一的結構示意圖3是本申請的測試用例生成系統實例的結構示意圖。具體實施方式為使本申請的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖和具體實 施方式對本申請作進一步詳細的說明。參照圖1,示出本申請的一種測試用例自動生成方法實施例一,包括以下步驟步驟101,獲取預設模型的測試參數的數據和參數組合策略,并根據參數組合策略 生成多組測試數據。其中,參數組合策略根據需要來定義,如,按照笛卡爾乘積展開測試參數、或者 按照每次只變更一類參數的原則展開測試參數等等。測試參數是指API (Application Programming Interface,應用程序編程接口)或者接口功能的參數或者預設模型所需要的 邏輯參數。其中,按照笛卡爾乘積展開測試參數,如{ “dl””,“d2””},將被展 開為4組(a, c)、(a, d)、(b,a)、(b,d),此種測試數據生成方法是對測試中出現的所有情形 做了全面覆蓋,有利于代碼提高覆蓋率。按照每次只變更一類參數的原則展開測試數據,如{“dl,,·· ”,“d2”: ”}, 將被展開為3組(a,c)、(a, d)、(b,a)。如果將第一個數據設為默認值,這種測試數據生成 方法使每一個測試參數可能出現的值都被覆蓋到。步驟102,選取一組測試數據,依據預設模型確定各測試動作的輸入參數以及期待 輸出結果。在對計算機產品進行測試時,在輸入數據和測試動作一定的情況下,則其輸出結 果是一定的,因此根據測試數據和測試動作就能確定其期待輸出結果。步驟103,基于所確定的各測試動作的輸入參數以及期待輸出結果,依據預設模型調用測試動作的順序創建動態測試路徑,所述動態測試路徑為有序存放測試動作、校驗動 作的數組容器。具體的,本文檔來自技高網...
【技術保護點】
一種測試用例自動生成方法,其特征在于,包括以下步驟:步驟101,獲取預設模型的測試參數的數據和參數組合策略,并根據參數組合策略生成多組測試數據;步驟102,選取一組測試數據,依據預設模型確定各測試動作的輸入參數以及期待輸出結果;步驟103,基于所確定的各測試動作的輸入參數以及期待輸出結果,依據預設模型調用測試動作的順序創建動態測試路徑,所述動態測試路徑為有序存放測試動作、校驗動作的數組容器;步驟104,根據設定計算機語言的語法輸出動態測試路徑,得到一組測試用例;所述測試用例包括與所設語法相應的語言的測試代碼。
【技術特征摘要】
【專利技術屬性】
技術研發人員:易棉生,
申請(專利權)人:阿里巴巴集團控股有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。