本發(fā)明屬于回歸性測試技術領域,更具體地說,尤其涉及一種測試腳本生成方法及裝置。
背景技術:
在任意一種產(chǎn)品發(fā)布前需要對產(chǎn)品的主體功能對應的測試場景進行回歸性測試,并且允許回歸性測試通過的產(chǎn)品發(fā)布,因此回歸性測試是整個產(chǎn)品生命周期中取決定性作用的階段。目前對產(chǎn)品的回歸性測試可以通過回歸測試自動化工具來實現(xiàn),其中回歸性測試自動化工具對產(chǎn)品進行回歸性測試的原理如下:
通過回歸性測試自動化工具來自動生成原始測試腳本,在原始測試腳本中修改被測對象元素,以得到針對主體功能對應的測試場景的測試腳本,并對每次得到的測試腳本進行回歸性測試以驗證測試腳本是否準確,若回歸性測試失敗則需要再次在原始測試腳本中修改被測對象元素直至得到的測試腳本成功通過回歸性測試。
從上述回歸性測試自動化工具的原理可知,現(xiàn)有回歸性測試自動化工具適用于回歸測試頻繁且測試場景固定的產(chǎn)品,如果測試場景發(fā)生變化,則需要重新生成對應變化后的測試場景的原始測試腳本,并重復修改原始測試腳本直至測試腳本通過回歸性測試,因此現(xiàn)有回歸性測試自動化工具在測試場景發(fā)生變化的情況下,需要花費大量時間來修改測試腳本,降低回歸性測試的效率。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種測試腳本生成方法及裝置,用于提高測試腳本生成速度,進而提高測試效率。具體的,技術方案如下:
本發(fā)明提供一種測試腳本生成方法,所述方法包括:
獲取測試場景對應的原始測試腳本以及已通過測試的測試腳本;
判斷所述原始測試腳本中的每個被測對象元素是否與所獲取的測試腳本中對應的被測對象元素相同;
如果所述原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中對應的被測對象元素相同,則復用相同的被測對象元素在所獲取的測試腳本中的測試程序;
如果所述原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則根據(jù)所獲取的測試腳本中的被測對象元素的測試程序,修改所述原始測試腳本中的被測對象元素的測試程序。
優(yōu)選地,所述如果所述原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則根據(jù)所獲取的測試腳本中的被測對象元素的測試程序,修改所述原始測試腳本中的被測對象元素的測試程序,包括:
獲取第一元素集合,所述第一元素集合中的每個被測對象元素是同時存在于所述原始測試腳本和所獲取的測試腳本中的被測對象元素;
判斷所述第一元素集合中的所述被測對象元素在所述原始測試腳本中的標識信息是否與在所獲取的測試腳本中的標識信息相同;
如果所述第一元素集合中的所述被測對象元素在所述原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息相同,則復用所獲取的測試腳本中所述第一元素集合的測試程序;
如果所述第一元素集合中的所述被測對象元素在所述原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息不同,則復用所獲取的測試腳本中所述第一元素集合的測試程序,并在所述測試程序中保留所述第一元素集合中的所述被測對象元素的位置信息。
優(yōu)選地,所述方法還包括:如果所述原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則獲取第二元素集合,所述第二元素集合中的所述被測對象元素是僅存在于所述原始測試腳本中的被測對象元素;
判斷所述第二元素集合中的所述被測對象元素是否存在于被測對象庫,所述被測對象庫中至少存儲有通過測試的各種類型的被測對象元素;
如果所述第二元素集合中的所述被測對象元素存在于被測對象庫,則復用所述被測對象庫中與所述第二元素集合中的所述被測對象元素的類型相同的被測對象元素的測試程序,并在所述測試程序中保留所述第二元素集合中的所述被測對象元素的位置信息;
如果所述第二元素集合中的所述被測對象元素不存在于被測對象庫中,則保留所述第二元素集合中的所述被測對象元素的測試程序。
優(yōu)選地,所述方法還包括:如果所述第二元素集合中的所述被測對象元素不存在于被測對象庫中,則將所述第二元素集合中的所述被測對象元素的測試程序同步到所述被測對象庫中。
優(yōu)選地,所述方法還包括:如果所述原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則獲取第三元素集合,所述第三元素集合中的所述被測對象元素是僅存在于所獲取的測試腳本中的被測對象元素;
判斷所述第三元素集合中的所述被測對象元素是否存在于被測對象庫,所述被測對象庫中至少存儲有通過測試的各種類型的被測對象元素;
如果所述第三元素集合中的所述被測對象元素存在于被測對象庫,則舍棄所述第三元素集合中的所述被測對象元素的測試程序;
如果所述第三元素集合中的所述被測對象元素不存在于被測對象庫中,則將所述第三元素集合中的所述被測對象元素的測試程序同步到所述被測對象庫中。
本發(fā)明還提供一種測試腳本生成裝置,所述裝置包括:
第一獲取單元,用于獲取測試場景對應的原始測試腳本以及已通過測試的測試腳本;
第一判斷單元,用于判斷所述原始測試腳本中的每個被測對象元素是否與所獲取的測試腳本中對應的被測對象元素相同;
第一處理單元,用于當所述原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中對應的被測對象元素相同時,復用相同的被測對象元素在所獲取的測試腳本中的測試程序;
第二處理單元,用于當所述原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同時,根據(jù)所獲取的測試腳本中的被測對象元素的測試程序,修改所述原始測試腳本中的被測對象元素的測試程序。
優(yōu)選地,所述第二處理單元,包括:
獲取子單元,用于獲取第一元素集合,所述第一元素集合中的每個被測對象元素是同時存在于所述原始測試腳本和所獲取的測試腳本中的被測對象元素;
判斷子單元,用于判斷所述第一元素集合中的所述被測對象元素在所述原始測試腳本中的標識信息是否與在所獲取的測試腳本中的標識信息相同;
第一處理子單元,用于當所述第一元素集合中的所述被測對象元素在所述原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息相同時,復用所獲取的測試腳本中所述第一元素集合的測試程序;
第二處理子單元,用于當所述第一元素集合中的所述被測對象元素在所述原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息不同時,復用所獲取的測試腳本中所述第一元素集合的測試程序,并在所述測試程序中保留所述第一元素集合中的所述被測對象元素的位置信息。
優(yōu)選地,所述裝置還包括:
第二獲取單元,用于當所述原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同時,獲取第二元素集合,所述第二元素集合中的所述被測對象元素是僅存在于所述原始測試腳本中的被測對象元素;
第二判斷單元,用于判斷所述第二元素集合中的所述被測對象元素是否存在于被測對象庫,所述被測對象庫中至少存儲有通過測試的各種類型的被測對象元素;
第三處理單元,用于當所述第二元素集合中的所述被測對象元素存在于被測對象庫時,復用所述被測對象庫中與所述第二元素集合中的所述被測對象元素的類型相同的被測對象元素的測試程序,并在所述測試程序中保留所述第二元素集合中的所述被測對象元素的位置信息;
第四處理單元,用于當所述第二元素集合中的所述被測對象元素不存在于被測對象庫中時,保留所述第二元素集合中的所述被測對象元素的測試程序。
優(yōu)選地,所述第四處理單元,還用于當所述第二元素集合中的所述被測對象元素不存在于被測對象庫中時,將所述第二元素集合中的所述被測對象元素的測試程序同步到所述被測對象庫中。
優(yōu)選地,所述裝置還包括:
第三獲取單元,用于當所述原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同時,獲取第三元素集合,所述第三元素集合中的所述被測對象元素是僅存在于所獲取的測試腳本中的被測對象元素;
第三判斷單元,用于判斷所述第三元素集合中的所述被測對象元素是否存在于被測對象庫,所述被測對象庫中至少存儲有通過測試的各種類型的被測對象元素;
第五處理單元,用于當所述第三元素集合中的所述被測對象元素存在于被測對象庫時,舍棄所述第三元素集合中的所述被測對象元素的測試程序;
第六處理單元,用于當所述第三元素集合中的所述被測對象元素不存在于被測對象庫中時,將所述第三元素集合中的所述被測對象元素的測試程序同步到所述被測對象庫中。
與現(xiàn)有技術相比,本發(fā)明提供的上述技術方案具有如下優(yōu)點:
藉由上述技術方案,在獲取測試場景對應的原始測試腳本以及已通過測試的測試腳本后,如果原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中的對應的被測對象元素相同,則復用相同的被測對象元素在所獲取的測試腳本中的測試程序,節(jié)省修改原始測試腳本中所有被測對象元素的測試程序的環(huán)節(jié),從而提高測試腳本生成速度,而所獲取的測試腳本是通過測試的腳本,提高測試場景對應的測試腳本測試成功的幾率,進而提高測試效率。
如果原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則根據(jù)所獲取的測試腳本中的被測對象元素的測試程序修改原始測試腳本中的被測對象元素的測試程序,而所獲取的測試腳本是通過測試的腳本,對應的所獲取的測試腳本中的被測對象元素的測試程序也通過測試,這樣對于原始測試腳本中與所獲取的測試腳本中被測對象元素相同的被測對象元素來說,可以降低其對應測試程序的修改次數(shù),從而提高測試腳本生成速度,提高測試效率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的測試腳本生成方法的流程圖;
圖2是本發(fā)明實施例提供的變更前的測試場景的示意圖;
圖3是本發(fā)明實施例提供的變更后的測試場景的一種示意圖;
圖4是本發(fā)明實施例提供的變更后的測試場景的另一種示意圖;
圖5是本發(fā)明實施例提供的修改原始測試腳本的流程圖;
圖6是本發(fā)明實施例提供的被測對象庫操作的示意圖;
圖7是本發(fā)明實施例提供的測試腳本生成裝置的一種結(jié)構(gòu)示意圖;
圖8是本發(fā)明實施例提供的測試腳本生成裝置中第二處理單元的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實施例提供的測試腳本生成裝置的另一種結(jié)構(gòu)示意圖;
圖10是本發(fā)明實施例提供的測試腳本生成裝置的再一種結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參閱圖1,其示出了本發(fā)明實施例提供的測試腳本生成方法的流程圖,用以提高測試腳本生成速度,以提高測試效率。具體的,本發(fā)明實施例提供的測試腳本生成方法可以包括以下步驟:
101:獲取測試場景對應的原始測試腳本以及已通過測試的測試腳本。其中原始測試腳本是在確定產(chǎn)品的一個測試場景后,通過測試自動化工具自動生成的一個最初的測試腳本,如在對測試場景進行回歸性測試時,可以通過回歸性測試自動化工具來生成進行回歸性測試的原始測試腳本。
而所獲取的測試腳本是已通過測試,如已通過回歸性測試的腳本,這個測試腳本針對的測試場景可以是任意一個測試場景,當然測試腳本針對的測試場景和原始測試腳本可以是針對產(chǎn)品不同階段的測試場景,如測試腳本針對的測試場景是產(chǎn)品功能變更前的測試場景,而原始測試腳本針對的測試場景是產(chǎn)品功能變更后的測試場景。
在這里需要說明的一點是:本發(fā)明實施例獲取的測試腳本的數(shù)量是至少一個,當獲取兩個或兩個以上已通過測試的測試腳本時,需要對原始測試腳本與所獲取的每個測試腳本進行獨立判斷,在符合下述步驟的判斷結(jié)果時對原始測試腳本進行修改。
102:判斷原始測試腳本中的每個被測對象元素是否與所獲取的測試腳本中對應的被測對象元素相同,如果是,執(zhí)行步驟103,如果否,執(zhí)行步驟104。
在本發(fā)明實施例中,對原始測試腳本和所獲取的測試腳本進行上述步驟102的判斷是為了確定是否可以復用所獲取的測試腳本中被測對象元素的測試程序,以省去對原始測試腳本的修改,從而直接得到原始測試腳本針對的測試場景對應的測試腳本。
對于如何判斷原始測試腳本中的每個被測對象元素是否與所獲取的測試腳本中對應的被測對象元素相同則通過附圖進行說明,請查閱圖2和圖3,其中圖2是產(chǎn)品功能變更前的測試場景(即所獲取的測試腳本對應的測試場景)的示意圖,圖3是產(chǎn)品功能變更后的測試場景(原始測試腳本對應的測試場景)的示意圖。
從圖2所示測試場景可知,所獲取的測試腳本對應兩個控件:控件1和控件2(可視為被測對象元素),每個控件在測試場景中的標識信息根據(jù)每個控件的屬性信息得到,如標識信息中的一種可行方式是位置序號,位置序號可以根據(jù)每個控件的屬性信息得到,以為相同的屬性信息的控件分配相同的位置序號,這樣就可以通過兩個腳本中控件的位置序號的比對來判斷原始測試腳本中的每個被測對象元素是否相同。例如在圖2所示測試場景中控件1的位置序號是1,控件2的位置序號是2。而在圖3所示測試場景可知,原始測試腳本也對應兩個控件:控件1和控件2,但在圖3所示測試場景中控件1的位置序號是2,控件2的位置序號是1,說明圖2所示測試場景變更為圖3所示測試場景時,測試場景中控件1和控件2的屬性信息發(fā)生變化,因此對于這種情況可視原始測試腳本中的被測對象元素與所獲取的測試腳本中被測對象元素不同。
若控件1在圖3所示測試場景中的位置序號也是1,控件2在圖3所示測試場景中的位置序號也是2,說明圖2所示測試場景變更為圖3所示測試場景時,測試場景中控件1和控件2的屬性信息未發(fā)生變化,此時可視原始測試腳本中被測對象元素與所獲取的測試腳本中對應的被測對象元素相同。
綜上分析可知,每個測試場景中的被測對象元素都具有自身的屬性信息,所述被測對象元素的屬性信息至少包括:所屬類型、元素大小和位置信息等,當圖2所示測試場景中某個被測對象元素的屬性信息與圖3所示測試場景中對應的被測對象元素的屬性信息相同時,則為這兩個屬性信息相同的被測對象元素設置相同的位置序號,因此本發(fā)明實施例中,判斷原始測試腳本中的每個被測對象元素是否與所獲取的測試腳本中對應的被測對象元素相同的可行方式是:判斷原始測試腳本中的每個被測對象元素的位置序號是否與所獲取的測試腳本中對應的被測對象元素的位置序號相同,如果是,則判斷原始測試腳本中的每個被測對象元素與所獲取的測試腳本中對應的被測對象元素相同;如果否,則判斷原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同。
其中所謂對應的被測對象元素是原始測試腳本和所獲取的測試腳本中的同一個被測對象元素,以上述原始測試腳本中的控件1為例,所獲取的測試腳本中對應的被測對象元素也是控件1。
原始測試腳本對應的測試場景還可以是圖4所示,在圖4所示測試場景可知,原始測試腳本對應三個控件:控件1、控件2和控件3,控件1在測試場景中的位置序號是1,控件2在測試場景中的位置序號是2,控件3在測試場景中的位置序號是3,在這種情況下也可以視為原始測試腳本中被測對象元素與所獲取的測試腳本中對應的被測對象元素相同。
103:如果原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中對應的被測對象元素相同,則復用相同的被測對象元素在所獲取的測試腳本中的測試程序。
如果原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中對應的被測對象元素相同,則說明原始測試腳本中每個被測對象元素的測試程序可以直接采用對應的被測對象元素在所獲取的測試腳本中的測試程序,此時可以復用相同的被測對象元素在所獲取的測試腳本中的測試程序,在本發(fā)明實施例中,復用相同的被測對象元素在所獲取的測試腳本中的測試程序是指直接將原始測試腳本中每個被測對象元素的測試程序替換為對應的被測對象元素在所獲取的測試腳本中的測試程序。
而所獲取的測試腳本中每個被測對象元素的測試程序已通過測試,因此原始測試腳本在復用相同的被測對象元素在所獲取的測試腳本后,可以直接作為測試場景的測試腳本,從而省去對原始測試腳本的修改,提高測試腳本生成速度,進一步因為所獲取的測試腳本是通過測試的腳本,還提高測試場景對應的測試腳本測試成功的幾率,進而提高測試效率。
在復用相同的被測對象元素在所獲取的測試腳本中的測試程序后,可以將相同的被測對象元素存儲到被測對象庫中,其中被測對象庫中至少存儲有通過測試的各種類型的被測對象元素,以被測對象元素是控件為例,被測對象庫中存儲有輸入框控件、按鍵控件、下拉控件和單選控件等不同類型的控件,且每個控件均已通過測試,對于每個控件來說,被測對象庫還存儲有每個控件的測試程序,且每個控件的測試程序中的屬性信息是每個控件的基本信息,在不同測試場景下控件的屬性信息是在基本信息的基礎上,增加某些信息或者更改某些信息。
104:如果原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則根據(jù)所獲取的測試腳本中的被測對象元素的測試程序,修改原始測試腳本中的被測對象元素的測試程序。
如果原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則說明不可以直接復用被測對象元素在所獲取的測試腳本中的測試程序,此時需要根據(jù)所獲取的測試腳本中的被測對象元素的測試程序,修改原始測試腳本中的被測對象元素的測試程序。
藉由上述技術方案,在獲取測試場景對應的原始測試腳本以及已通過測試的測試腳本后,如果原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中的對應的被測對象元素相同,則復用相同的被測對象元素在所獲取的測試腳本中的測試程序,節(jié)省修改原始測試腳本中所有被測對象元素的測試程序的環(huán)節(jié),從而提高測試腳本生成速度,而所獲取的測試腳本是通過測試的腳本,提高測試場景對應的測試腳本測試成功的幾率,進而提高測試效率。
如果原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則根據(jù)所獲取的測試腳本中的被測對象元素的測試程序修改原始測試腳本中的被測對象元素的測試程序,而所獲取的測試腳本是通過測試的腳本,對應的所獲取的測試腳本中的被測對象元素的測試程序也通過測試,這樣對于原始測試腳本中與所獲取的測試腳本中被測對象元素相同的被測對象元素來說,可以降低其對應測試程序的修改次數(shù),從而提高測試腳本生成速度,提高測試效率。
而在本發(fā)明實施例中,當原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同時,對原始測試腳本中被測對象元素的測試程序的修改可以參閱圖5所示,具體的,可以包括以下步驟:
501:如果原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,獲取第一元素集合,其中第一元素集合中的每個被測對象元素是同時存在于所述原始測試腳本和所獲取的測試腳本中的被測對象元素。
在本發(fā)明實施例中,確定被測對象元素是否同時存在于原始測試腳本和所獲取的測試腳本中的可行方式是:判斷原始測試腳本中的被測對象元素的類型是否與所獲取的測試腳本中被測對象元素的類型相同,如果是,則說明被測對象元素同時存在于原始測試腳本和所獲取的測試腳本中,如果否,則說明被測對象元素僅存在于原始測試腳本中。
502:判斷第一元素集合中的被測對象元素在原始測試腳本中的標識信息是否與在所獲取的測試腳本中的標識信息相同,如果是,執(zhí)行步驟503,如果否,執(zhí)行步驟504。
在本發(fā)明實施例中,被測對象元素在腳本中的標識信息的一種可行方式是:被測對象元素在腳本中的位置序號,如上述圖2至圖4所示,具有相同屬性信息的被測對象元素具有相同的標識信息,這樣在判斷被測對象元素是否相同時,就可以直接采用標識信息來比對確定,進而減少比對參數(shù),提高效率。
503:如果第一元素集合中的被測對象元素在原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息相同,則復用所獲取的測試腳本中第一元素集合的測試程序。
如果第一元素集合中的被測對象元素在原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息相同,說明第一元素集合中的每個被測對象元素在原始腳本中的屬性信息與所獲取的測試腳本中對應的被測對象元素的屬性信息相同,因此可以復用所獲取的測試腳本中第一元素集合的測試程序。
其中復用所獲取的測試腳本中第一元素集合的測試程序的可行方式是:直接將原始測試腳本中位于第一元素集合中的被測對象元素的測試程序替換為所獲取的測試腳本中對應的被測對象元素的測試程序,而所獲取的測試腳本中對應的被測對象元素的測試程序已通過測試,因此在得到原始測試腳本針對的測試場景的測試腳本后,可以省去對第一元素集合中每個被測對象元素的測試程序的調(diào)試。
504:如果第一元素集合中的被測對象元素在原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息不同,則復用所獲取的測試腳本中第一元素集合的測試程序,并在測試程序中保留第一元素集合中的被測對象元素的位置信息。
如果第一元素集合中的被測對象元素在原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息不同,說明第一元素集合中的每個被測對象元素在原始腳本中的屬性信息與所獲取的測試腳本中對應的被測對象元素的屬性信息不同,此時在復用所獲取的測試腳本中第一元素集合的測試程序后,需要在測試程序中保留第一元素集合中的被測對象元素的位置信息,以使得最終得到的測試腳本中第一元素集合中每個被測對象元素符合測試場景的要求。
其中復用所獲取的測試腳本中第一元素集合的測試程序,并在測試程序中保留第一元素集合中的被測對象元素的位置信息的可行方式是:將所獲取的測試腳本中被測對象元素的屬性信息替換為第一元素集合中對應的被測對象元素的屬性信息,并將替換屬性信息后的被測對象元素的測試程序作為第一元素集合中對應的被測對象元素的測試程序。
而所獲取的測試腳本中對應的被測對象元素的測試程序已通過測試,使得替換屬性信息后的測試程序仍可以成功通過測試,因此在得到原始測試腳本針對的測試場景的測試腳本后,可以省去對第一元素集合中每個被測對象元素的測試程序的調(diào)試。
505:獲取第二元素集合,第二元素集合中的被測對象元素是僅存在于原始測試腳本中的被測對象元素,如上述圖4所示測試場景中的控件3來說,其可視為第二元素集合中的被測對象元素。
506:判斷第二元素集合中的被測對象元素是否存在于被測對象庫,如果是,執(zhí)行步驟507,如果否,執(zhí)行步驟508。
在本發(fā)明實施例中,判斷第二元素集合中的被測對象元素是否存在于被測對象庫的可行方式是:判斷被測對象庫中是否存在于第二元素集合中的被測對象元素的類型相同的被測對象元素,如果是,則說明第二元素集合中的被測對象元素存在于被測對象庫中,如果否,則說明第二元素集合中的被測對象元素不存在于被測對象庫中。
507:如果第二元素集合中的被測對象元素存在于被測對象庫,則復用被測對象庫中與第二元素集合中的被測對象元素的類型相同的被測對象元素的測試程序,并在測試程序中保留第二元素集合中的被測對象元素的位置信息。
如果第二元素集合中的被測對象元素存在于被測對象庫,說明被測對象庫中類型相同的被測對象元素的測試可以被第二元素集合中的被測對象元素使用,此時可以復用被測對象庫中與第二元素集合中的被測對象元素的類型相同的被測對象元素的測試程序,并在測試程序中保留第二元素集合中的被測對象元素的位置信息。而之所以要在測試程序中保留第二元素集合中的被測對象元素的位置信息是為了防止兩者的位置信息不同,以使得最終得到的測試腳本中第二元素集合中每個被測對象元素符合測試場景的要求。
其中復用被測對象庫中與第二元素集合中的被測對象元素的類型相同的被測對象元素的測試程序,并在測試程序中保留第二元素集合中的被測對象元素的位置信息的可行方式是:將被測對象庫中與第二元素集合中被測對象元素的類型相同的被測對象元素的屬性信息替換為第二元素集合中對應的被測對象元素的屬性信息,并將替換屬性信息后的測試程序作為第二元素集合中對應的被測對象元素的測試程序。
因為被測對象庫中被測對象元素的測試程序已通過測試,使得替換屬性信息后的測試程序仍可以成功通過測試,因此在得到原始測試腳本針對的測試場景的測試腳本后,可以省去對第二元素集合中每個被測對象元素的測試程序的調(diào)試。
508:如果第二元素集合中的被測對象元素不存在于被測對象庫中,則保留第二元素集合中的被測對象元素的測試程序。
經(jīng)過上述步驟501至步驟508,完成對原始測試腳本中被測對象元素的修改,得到原始測試腳本針對的測試場景對應的測試腳本,并且在對測試腳本進行調(diào)試時,可以僅調(diào)試保留原始測試腳本中的測試程序,對于其他已通過測試的測試程序無需再次調(diào)試,從而提高調(diào)試效率。
可選的,如果第二元素集合中的被測對象元素不存在于被測對象庫中,則將第二元素集合中的被測對象元素的測試程序同步到被測對象庫中。
在這里需要說明的一點是:同步到被測對象庫中的第二元素集合中的被測對象元素的測試程序是通過測試的程序,這樣其他原始測試腳本可以復用通過測試的程序,如圖6所示。
被測對象庫中存儲有多種類型的被測對象元素,每種被測對象元素對應的測試程序均已通過測試,這樣得到原始測試腳本后可以從被測對象庫中自動抽取與被測對象元素的類型相同的被測對象元素的測試程序,省去了再次修改調(diào)試類型相同的被測對象元素的測試程序的時間,大大縮短了維護測試腳本的工作量,而在確定被測對象庫中被測對象元素的屬性信息發(fā)生變化或者在確定被測對象庫中不存在某個被測對象元素后,也可以對被測對象庫進行更新,以完善被測對象庫中存儲的信息。
509:獲取第三元素集合,其中第三元素集合中的被測對象元素是僅存在于所獲取的測試腳本中的被測對象元素。
在本發(fā)明實施例中,確定被測對象元素是否僅存在于所獲取的測試腳本中的可行方式是:判斷所獲取的測試腳本中的被測對象元素的類型是否與原始測試腳本中被測對象元素的類型相同,如果是,則說明被測對象元素同時存在于原始測試腳本和所獲取的測試腳本中,如果否,則說明被測對象元素僅存在于所獲取的測試腳本中。
510:判斷第三元素集合中的被測對象元素是否存在于被測對象庫,如果是,執(zhí)行步驟511,如果否,執(zhí)行步驟512。
511:如果第三元素集合中的被測對象元素存在于被測對象庫,則舍棄第三元素集合中的被測對象元素的測試程序。
512:如果第三元素集合中的被測對象元素不存在于被測對象庫中,則將第三元素集合中的被測對象元素的測試程序同步到被測對象庫中,以將第三元素集合中的每個被測對象元素同步到被測對象庫中,實現(xiàn)對被測對象庫的完善。
在這里需要說明的一點是:對于第一元素集合、第二元素集合和第三元素集合來說,可以并行執(zhí)行這三個集合中每個被測對象元素的處理過程,并在完成對原始測試腳本中被測對象元素的修改,得到原始測試腳本針對的測試場景對應的測試腳本后,可以僅調(diào)試保留原始測試腳本中的測試程序,對于其他已通過測試的測試程序無需再次調(diào)試,從而提高調(diào)試效率。
對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
請參閱圖7,其示出了本發(fā)明實施例提供的測試腳本生成裝置的一種結(jié)構(gòu),用以提高測試腳本生成速度,以提高測試效率。具體的,本發(fā)明實施例提供的測試腳本生成裝置可以包括:第一獲取單元11、第一判斷單元12、第一處理單元13和第二處理單元14。
第一獲取單元11,用于獲取測試場景對應的原始測試腳本以及已通過測試的測試腳本。其中原始測試腳本是在確定產(chǎn)品的一個測試場景后,通過測試自動化工具自動生成的一個最初的測試腳本,如在對測試場景進行回歸性測試時,可以通過回歸性測試自動化工具來生成進行回歸性測試的原始測試腳本。
而所獲取的測試腳本是已通過測試,如已通過回歸性測試的腳本,這個測試腳本針對的測試場景可以是任意一個測試場景,當然測試腳本針對的測試場景和原始測試腳本可以是針對產(chǎn)品不同階段的測試場景,如測試腳本針對的測試場景是產(chǎn)品功能變更前的測試場景,而原始測試腳本針對的測試場景是產(chǎn)品功能變更后的測試場景。
第一判斷單元12,用于判斷原始測試腳本中的每個被測對象元素是否與所獲取的測試腳本中對應的被測對象元素相同,以確定是否可以復用所獲取的測試腳本中被測對象元素的測試程序,省去對原始測試腳本的修改,從而直接得到原始測試腳本針對的測試場景對應的測試腳本,具體判斷方式請參閱方法實施例部分的相關說明,對此不再詳述。
第一處理單元13,用于當原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中對應的被測對象元素相同時,復用相同的被測對象元素在所獲取的測試腳本中的測試程序。
如果原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中對應的被測對象元素相同,則說明原始測試腳本中每個被測對象元素的測試程序可以直接采用對應的被測對象元素在所獲取的測試腳本中的測試程序,此時第一處理單元13可以復用相同的被測對象元素在所獲取的測試腳本中的測試程序。
在本發(fā)明實施例中,復用相同的被測對象元素在所獲取的測試腳本中的測試程序是指直接將原始測試腳本中每個被測對象元素的測試程序替換為對應的被測對象元素在所獲取的測試腳本中的測試程序。
在復用相同的被測對象元素在所獲取的測試腳本中的測試程序后,第一處理單元13可以將相同的被測對象元素存儲到被測對象庫中,其中被測對象庫中至少存儲有通過測試的各種類型的被測對象元素,以被測對象元素是控件為例,被測對象庫中存儲有輸入框控件、按鍵控件、下拉控件和單選控件等不同類型的控件,且每個控件均已通過測試,對于每個控件來說,被測對象庫還存儲有每個控件的測試程序,且每個控件的測試程序中的屬性信息是每個控件的基本信息,在不同測試場景下控件的屬性信息是在基本信息的基礎上,增加某些信息或者更改某些信息。
第二處理單元14,用于當原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同時,根據(jù)所獲取的測試腳本中的被測對象元素的測試程序,修改原始測試腳本中的被測對象元素的測試程序。
如果原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則說明不可以直接復用被測對象元素在所獲取的測試腳本中的測試程序,此時第二處理單元14需要根據(jù)所獲取的測試腳本中的被測對象元素的測試程序,修改原始測試腳本中的被測對象元素的測試程序。
可選的,第二處理單元14的結(jié)構(gòu)如圖8所示,可以包括:獲取子單元141、判斷子單元142、第一處理子單元143和第二處理子單元144。
獲取子單元141,用于獲取第一元素集合,第一元素集合中的每個被測對象元素是同時存在于原始測試腳本和所獲取的測試腳本中的被測對象元素。
在本發(fā)明實施例中,確定被測對象元素是否同時存在于原始測試腳本和所獲取的測試腳本中的可行方式是:判斷原始測試腳本中的被測對象元素的類型是否與所獲取的測試腳本中被測對象元素的類型相同,如果是,則說明被測對象元素同時存在于原始測試腳本和所獲取的測試腳本中,如果否,則說明被測對象元素僅存在于原始測試腳本中。
判斷子單元142,用于判斷第一元素集合中的被測對象元素在原始測試腳本中的標識信息是否與在所獲取的測試腳本中的標識信息相同。
在本發(fā)明實施例中,被測對象元素在腳本中的標識信息的一種可行方式是:被測對象元素在腳本中的位置序號,且具有相同屬性信息的被測對象元素具有相同的標識信息,這樣在判斷被測對象元素是否相同時,就可以直接采用標識信息來比對確定,進而減少比對參數(shù),提高效率。
第一處理子單元143,用于當?shù)谝辉丶现械谋粶y對象元素在原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息相同時,復用所獲取的測試腳本中第一元素集合的測試程序。
如果第一元素集合中的被測對象元素在原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息相同,說明第一元素集合中的每個被測對象元素在原始腳本中的屬性信息與所獲取的測試腳本中對應的被測對象元素的屬性信息相同,因此第一處理子單元143可以復用所獲取的測試腳本中第一元素集合的測試程序。
其中復用所獲取的測試腳本中第一元素集合的測試程序的可行方式是:直接將原始測試腳本中位于第一元素集合中的被測對象元素的測試程序替換為所獲取的測試腳本中對應的被測對象元素的測試程序,而所獲取的測試腳本中對應的被測對象元素的測試程序已通過測試,因此在得到原始測試腳本針對的測試場景的測試腳本后,可以省去對第一元素集合中每個被測對象元素的測試程序的調(diào)試。
第二處理子單元144,用于當?shù)谝辉丶现械谋粶y對象元素在原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息不同時,復用所獲取的測試腳本中第一元素集合的測試程序,并在測試程序中保留第一元素集合中的被測對象元素的位置信息。
如果第一元素集合中的被測對象元素在原始測試腳本中的標識信息與在所獲取的測試腳本中的標識信息不同,說明第一元素集合中的每個被測對象元素在原始腳本中的屬性信息與所獲取的測試腳本中對應的被測對象元素的屬性信息不同,此時第二處理子單元144在復用所獲取的測試腳本中第一元素集合的測試程序后,需要在測試程序中保留第一元素集合中的被測對象元素的位置信息,以使得最終得到的測試腳本中第一元素集合中每個被測對象元素符合測試場景的要求。
其中復用所獲取的測試腳本中第一元素集合的測試程序,并在測試程序中保留第一元素集合中的被測對象元素的位置信息的可行方式是:將所獲取的測試腳本中被測對象元素的屬性信息替換為第一元素集合中對應的被測對象元素的屬性信息,并將替換屬性信息后的被測對象元素的測試程序作為第一元素集合中對應的被測對象元素的測試程序。
藉由上述技術方案,在獲取測試場景對應的原始測試腳本以及已通過測試的測試腳本后,如果原始測試腳本中的每個被測對象元素均與所獲取的測試腳本中的對應的被測對象元素相同,則復用相同的被測對象元素在所獲取的測試腳本中的測試程序,節(jié)省修改原始測試腳本中所有被測對象元素的測試程序的環(huán)節(jié),從而提高測試腳本生成速度,而所獲取的測試腳本是通過測試的腳本,提高測試場景對應的測試腳本測試成功的幾率,進而提高測試效率。
如果原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同,則根據(jù)所獲取的測試腳本中的被測對象元素的測試程序修改原始測試腳本中的被測對象元素的測試程序,而所獲取的測試腳本是通過測試的腳本,對應的所獲取的測試腳本中的被測對象元素的測試程序也通過測試,這樣對于原始測試腳本中與所獲取的測試腳本中被測對象元素相同的被測對象元素來說,可以降低其對應測試程序的修改次數(shù),從而提高測試腳本生成速度,提高測試效率。
請參閱圖9,其示出了本發(fā)明實施例提供的測試腳本生成裝置的另一種結(jié)構(gòu),測試腳本生成裝置還可以包括:第二獲取單元15、第二判斷單元16、第三處理單元17和第四處理單元18。
第二獲取單元15,用于當原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同時,獲取第二元素集合,第二元素集合中的被測對象元素是僅存在于原始測試腳本中的被測對象元素。
第二判斷單元16,用于判斷第二元素集合中的被測對象元素是否存在于被測對象庫,被測對象庫中至少存儲有通過測試的各種類型的被測對象元素。
在本發(fā)明實施例中,判斷第二元素集合中的被測對象元素是否存在于被測對象庫的可行方式是:判斷被測對象庫中是否存在于第二元素集合中的被測對象元素的類型相同的被測對象元素,如果是,則說明第二元素集合中的被測對象元素存在于被測對象庫中,如果否,則說明第二元素集合中的被測對象元素不存在于被測對象庫中。
第三處理單元17,用于當?shù)诙丶现械谋粶y對象元素存在于被測對象庫時,復用被測對象庫中與第二元素集合中的被測對象元素的類型相同的被測對象元素的測試程序,并在測試程序中保留第二元素集合中的被測對象元素的位置信息。
如果第二元素集合中的被測對象元素存在于被測對象庫,說明被測對象庫中類型相同的被測對象元素的測試可以被第二元素集合中的被測對象元素使用,此時第三處理單元17可以復用被測對象庫中與第二元素集合中的被測對象元素的類型相同的被測對象元素的測試程序,并在測試程序中保留第二元素集合中的被測對象元素的位置信息。
其中復用被測對象庫中與第二元素集合中的被測對象元素的類型相同的被測對象元素的測試程序,并在測試程序中保留第二元素集合中的被測對象元素的位置信息的可行方式是:將被測對象庫中與第二元素集合中被測對象元素的類型相同的被測對象元素的屬性信息替換為第二元素集合中對應的被測對象元素的屬性信息,并將替換屬性信息后的測試程序作為第二元素集合中對應的被測對象元素的測試程序。
第四處理單元18,用于當?shù)诙丶现械谋粶y對象元素不存在于被測對象庫中時,保留第二元素集合中的被測對象元素的測試程序。
經(jīng)過本發(fā)明實施例中的第二處理單元14、第二獲取單元15、第二判斷單元16、第三處理單元17和第四處理單元18,完成對原始測試腳本中被測對象元素的修改,得到原始測試腳本針對的測試場景對應的測試腳本,并且在對測試腳本進行調(diào)試時,可以僅調(diào)試保留原始測試腳本中的測試程序,對于其他已通過測試的測試程序無需再次調(diào)試,從而提高調(diào)試效率。
可選的,第四處理單元18,還用于當?shù)诙丶现械谋粶y對象元素不存在于被測對象庫中時,將第二元素集合中的被測對象元素的測試程序同步到被測對象庫中。在這里需要說明的一點是:同步到被測對象庫中的第二元素集合中的被測對象元素的測試程序是通過測試的程序,這樣其他原始測試腳本可以復用通過測試的程序。
請參閱圖10,其示出了本發(fā)明實施例提供的測試腳本生成裝置的再一種結(jié)果,所述測試腳本生成裝置還可以包括:第三獲取單元19、第三判斷單元20、第五處理單元21和第六處理單元22。
第三獲取單元19,用于當原始測試腳本中的至少一個被測對象元素與所獲取的測試腳本中的被測對象元素不同時,獲取第三元素集合,第三元素集合中的被測對象元素是僅存在于所獲取的測試腳本中的被測對象元素。
在本發(fā)明實施例中,確定被測對象元素是否僅存在于所獲取的測試腳本中的可行方式是:判斷所獲取的測試腳本中的被測對象元素的類型是否與原始測試腳本中被測對象元素的類型相同,如果是,則說明被測對象元素同時存在于原始測試腳本和所獲取的測試腳本中,如果否,則說明被測對象元素僅存在于所獲取的測試腳本中。
第三判斷單元20,用于判斷第三元素集合中的被測對象元素是否存在于被測對象庫,被測對象庫中至少存儲有通過測試的各種類型的被測對象元素。
第五處理單元21,用于當?shù)谌丶现械谋粶y對象元素存在于被測對象庫時,舍棄第三元素集合中的被測對象元素的測試程序。
第六處理單元22,用于當?shù)谌丶现械谋粶y對象元素不存在于被測對象庫中時,將第三元素集合中的被測對象元素的測試程序同步到被測對象庫中,以將第三元素集合中的每個被測對象元素同步到被測對象庫中,實現(xiàn)對被測對象庫的完善。
在這里需要說明的一點是:對于第一元素集合、第二元素集合和第三元素集合來說,可以并行執(zhí)行這三個集合中每個被測對象元素的處理過程,并在完成對原始測試腳本中被測對象元素的修改,得到原始測試腳本針對的測試場景對應的測試腳本后,可以僅調(diào)試保留原始測試腳本中的測試程序,對于其他已通過測試的測試程序無需再次調(diào)試,從而提高調(diào)試效率。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領域技術人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相相同的最寬的范圍。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。