相關(guān)申請的交叉引用和優(yōu)先權(quán)
本專利申請要求于2016年3月22日提交的印度專利申請201621010029的優(yōu)先權(quán),其全部內(nèi)容通過引用并入本文。
本申請一般涉及用戶界面(ui)測試用例建模。特別地,本申請?zhí)峁┝艘环N通過利用底層的模型驅(qū)動ui生成框架來創(chuàng)建測試用例模型的方法和系統(tǒng)。
背景技術(shù):
應(yīng)用的用戶界面(ui)包括大量元素,諸如對話框(例如彈出窗口、屏幕等),其中每一個可以包含一個或多個控件,例如文本區(qū)域或框、帶有文本的按鈕等。隨著產(chǎn)品的開發(fā),ui元素改變,并且這可能在ui中引入缺陷或故障,由此可能導(dǎo)致應(yīng)用的嚴(yán)重故障。使問題嚴(yán)重的是,應(yīng)用程序開發(fā)人員面臨不斷添加新特征、更新ui和發(fā)布新版本應(yīng)用程序的壓力。因此,很少出現(xiàn)原始測試腳本可以充分測試后續(xù)修訂的應(yīng)用程序的情況。
現(xiàn)有工作已經(jīng)認(rèn)識到,手動測試ui應(yīng)用是單調(diào)冗長的、容易出錯的和艱巨的。因此,大多數(shù)現(xiàn)有解決方案依賴于ui應(yīng)用的自動化測試。為了自動測試ui應(yīng)用,測試工程師使用腳本語言(例如javascript和vbscript)編寫程序。編寫ui自動化測試腳本是一項具有挑戰(zhàn)性的活動,需要用于編寫測試用例的測試腳本語言的健全的工作知識。此外,手動編寫ui自動化測試用例需要大量的試錯以及工作量消耗。此外,在測試腳本語言語法中存在任何更新或修改、或者需要以不同腳本語言編寫測試腳本的情況下,由于返工而涉及極大的工作量。
此外,常規(guī)技術(shù)需要的是,必須為每個測試用例手動指定用于手動自動化測試用例的測試數(shù)據(jù),這使得使用具有不同測試數(shù)據(jù)的相同測試用例來創(chuàng)建回歸測試成為繁瑣且費力的活動。
由于期望同一應(yīng)用在許多不同的計算機操作系統(tǒng)上以相同方式操作,而使得上述測試問題復(fù)雜化。例如,windows應(yīng)用程序通常期望與目前由公眾使用的所有或大多數(shù)microsoft操作系統(tǒng)一起工作。
一些現(xiàn)有技術(shù)文獻(xiàn)公開了直接從用戶接口生成測試用例。直接從用戶界面生成測試用例的過程是技術(shù)或平臺驅(qū)動的,而不是技術(shù)或平臺獨立的,這大幅增加了實現(xiàn)、維護(hù)或遷移測試用例所需的工作量。此外,在ui發(fā)生變化的情況下,實現(xiàn)、維護(hù)或遷移測試用例變得更具挑戰(zhàn)性。
另一組現(xiàn)有技術(shù)文獻(xiàn)使用用于測試腳本生成的抽象模型,即實現(xiàn)用于軟件測試的基于模型的測試代碼生成。然而,現(xiàn)有技術(shù)文獻(xiàn)實現(xiàn)了用于從現(xiàn)有和已經(jīng)運行的應(yīng)用直接生成測試腳本的技術(shù)。直接從正在運行的應(yīng)用生成測試腳本具有降低執(zhí)行測試腳本時的可定制性的缺點?,F(xiàn)有技術(shù)的另一障礙在于,使得用于在運行期間測試ui模型的測試用例的生成自動化。
如果可以以使得測試用例指定(specification)與實現(xiàn)相分離的方式來改變(leverage)模型驅(qū)動生成技術(shù),則將是有利的。需要有一種機制來自動生成測試用例,就與技術(shù)、平臺、腳本語言等的獨立性而言,其具有更好的可定制性。因此,改變用于自動生成和驗證測試用例的模型驅(qū)動技術(shù)仍然被認(rèn)為是該技術(shù)領(lǐng)域最大的挑戰(zhàn)之一。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的
根據(jù)本發(fā)明,主要目的是提供一種用于從ui模型內(nèi)容自動指定測試用例模型的方法和系統(tǒng)。
本發(fā)明的一個目的是提供一種用于對應(yīng)于ui模型元素中的相關(guān)變化自動更新測試用例模型的方法和系統(tǒng)。
本發(fā)明的另一目的是提供一種用于從測試用例模型對任何技術(shù)單擊生成自動測試用例的方法和系統(tǒng)。
本發(fā)明的另一個目的是提供一種用于通過在模型級別上自動同步ui模型和ui測試用例,以便于在所生成的ui屏幕上無縫執(zhí)行所生成的測試腳本的方法和系統(tǒng)。
本發(fā)明的另一目的是提供一種用于通過以技術(shù)獨立的方式指定和存儲測試用例模型,來以任何技術(shù)生成測試用例的方法和系統(tǒng)。
當(dāng)結(jié)合附圖閱讀時,通過下面的描述,本發(fā)明的其它目的和優(yōu)點將更加明顯,附圖不旨在限制本公開的范圍。
本發(fā)明的內(nèi)容
在描述本公開的方法、系統(tǒng)和硬件實現(xiàn)之前,應(yīng)當(dāng)理解,本發(fā)明不限于所描述的特定系統(tǒng)和方法,因為可以存在本發(fā)明的多個可能的實施例,其未在本公開中明確地示出。還應(yīng)當(dāng)理解,本說明書中使用的術(shù)語僅用于描述特定版本或?qū)嵤├哪康模⑶也恢荚谙拗票景l(fā)明的范圍,本發(fā)明的范圍將僅由所附權(quán)利要求限定。
本申請?zhí)峁┝艘环N用于通過模型驅(qū)動技術(shù)進(jìn)行自動ui測試的方法和系統(tǒng)。
在一個實施例中,公開了一種用于通過模型驅(qū)動技術(shù)進(jìn)行自動ui測試的方法。該方法包括:處理器,被配置為選擇ui模型;所述處理器還被配置為為所選擇ui模型創(chuàng)建測試用例模型,并將創(chuàng)建的測試用例模型填充到測試用例編輯器中(222),其中所述測試用例模型基于所選擇ui模型的結(jié)構(gòu)模式被創(chuàng)建為ui動作序列;所述處理器還被配置為驗證用于所選擇ui模型的測試用例模型。此外,處理器被配置為從用于所選擇ui模型的測試用例模型生成測試用例腳本。
在另一實施例中,本申請公開了一種用于通過模型驅(qū)動技術(shù)進(jìn)行自動ui測試的系統(tǒng)(102)。系統(tǒng)(102)包括處理器(202)和耦接到所述處理器的存儲器(206),所述系統(tǒng)還包括被配置為選擇用戶界面(ui)模型的選擇模塊(210)。該系統(tǒng)還包括測試用例模型創(chuàng)建模塊(212),其被配置為為所選擇ui模型創(chuàng)建測試用例模型,并將創(chuàng)建的測試用例模型填充到測試用例編輯器(222)中,其中,測試用例模型基于所選擇ui模型的結(jié)構(gòu)模式被創(chuàng)建為ui動作序列。該系統(tǒng)還包括驗證模塊(214),其被配置為驗證用于所選擇ui模型的測試用例模型。此外,該系統(tǒng)包括腳本生成模塊(216),其被配置為從用于所選擇ui模型的測試用例模型生成測試用例腳本。
附圖說明
當(dāng)結(jié)合附圖閱讀時,將更好地理解前述發(fā)明內(nèi)容以及優(yōu)選實施例的以下詳細(xì)描述。為了說明本發(fā)明的目的,在附圖中示出了本發(fā)明的示例性結(jié)構(gòu);然而,本發(fā)明不限于所公開的具體方法和系統(tǒng)。在附圖中:
圖1示出了用于通過模型驅(qū)動技術(shù)的自動ui測試的系統(tǒng)(102)的網(wǎng)絡(luò)實現(xiàn)。
圖2示出了用于通過模型驅(qū)動技術(shù)的自動ui測試的系統(tǒng)(102)的框圖。
圖3示出了用于通過模型驅(qū)動技術(shù)的自動ui測試的方法的流程圖。
圖4示出了利用以事件為中心的方法,來創(chuàng)建對應(yīng)于所選擇的ui模型的測試用例模型的高級過程的流程圖。
圖5示出了利用以用戶交互為中心的方法,創(chuàng)建與所選擇的ui模型相對應(yīng)的測試用例模型的高級過程的流程圖。
具體實施方式
以下詳細(xì)討論了示出本發(fā)明全部特征的一些實施例。
詞語“包括”、“具有”、“含有”和“包括”及其其它形式在意義上被認(rèn)為是等同的,并且是開放式的,因為緊隨這些詞語中任何一個詞語之后的一個或多個細(xì)項并不意味著這個細(xì)項或這些細(xì)項已經(jīng)被詳盡的羅列出來,或者,并不意味著僅限于所列的這個細(xì)項或多個細(xì)項。
還應(yīng)當(dāng)注意到的是,如本文和所附權(quán)利要求中所使用的,單數(shù)形式“一”、“一個”和“該”包括復(fù)數(shù)指代,除非上下文另有明確指示。雖然與本文所描述的系統(tǒng)和方法類似或等同的任何系統(tǒng)和方法可以用于本發(fā)明實施例的實踐或測試中,但優(yōu)選的是當(dāng)前描述的系統(tǒng)和方法。
所公開的實施例僅僅是本發(fā)明的示例,本發(fā)明可以以多種形式實現(xiàn)。
附圖中所示的元件將如下文更加詳細(xì)解釋地那樣進(jìn)行交互操作。但是,在闡述詳細(xì)的說明之前,應(yīng)當(dāng)注意,不管所描述的具體實施方案,以下的所有討論本質(zhì)上都是示例性的,而不是限制性的。例如,雖然實施方案的所選方案、特征或組件被描述為存儲在儲存器中,但是與摩擦預(yù)警系統(tǒng)和方法一致的系統(tǒng)和方法的全部或部分可以存儲在其它機器可讀介質(zhì)上、分布在其它機器可讀介質(zhì)之間、或從其它機器可讀介質(zhì)中讀取。
可以用在可編程計算機上執(zhí)行的(或可由可編程計算機執(zhí)行的)一個或多個計算機程序來實現(xiàn)上述技術(shù),所述可編程計算機包括任意數(shù)量的下述器件的任意組合:處理器、處理器可讀和/或可寫的存儲介質(zhì)(包括例如易失性和非易失性存儲器和/或存儲元件)、多個輸入單元、以及多個輸出裝置。可以利用所述多個輸入單元中的任何一個將程序代碼應(yīng)用于所錄入的輸入,以便執(zhí)行所描述的功能,并且生成顯示在所述多個輸出裝置中的任意一個上的輸出。
下述權(quán)利要求范圍內(nèi)的各個計算機程序可以以任何編程語言來實現(xiàn),諸如匯編語言、機器語言、高級過程編程語言或面向?qū)ο蟮木幊陶Z言。編程語言可以例如是編譯或解譯的編程語言。每個這樣的計算機程序可以用計算機程序產(chǎn)品來實現(xiàn),所述計算機程序產(chǎn)品被有形地實現(xiàn)在機器可讀存儲設(shè)備中,以便由計算機處理器來執(zhí)行。
本發(fā)明的方法步驟可以由執(zhí)行了程序的一個或多個計算機處理器來執(zhí)行,所述程序被有形地實現(xiàn)在計算機可讀介質(zhì)上,以便通過運行輸入并生成輸出來執(zhí)行本發(fā)明的功能。舉例來說,適當(dāng)?shù)奶幚砥靼ǎ和ㄓ煤蛯S梦⑻幚砥?。通常,處理器從存儲?例如只讀存儲器和/或隨機存取存儲器)接收(讀取)指令和數(shù)據(jù),并且向存儲器寫入(存儲)指令和數(shù)據(jù)。適用于有形地實現(xiàn)計算機程序指令和數(shù)據(jù)的存儲裝置包括例如,所有形式的非易失性存儲器,例如半導(dǎo)體存儲器裝置(包括eprom、eeprom、和快閃存儲器裝置)、磁盤(例如內(nèi)置硬磁盤和可移動磁盤)、磁光盤以及cd-rom。前述任意一個可以由專門設(shè)計的asic(專用集成電路)或fpga(現(xiàn)場可編程門陣列)補充或被并入專門設(shè)計的asic或fpga中。計算機通常還可以從非暫時性計算機可讀存儲介質(zhì)接收(讀取)程序和數(shù)據(jù),并且可以向非暫時性計算機可讀存儲介質(zhì)寫入(存儲)程序和數(shù)據(jù),其中非暫時性計算機可讀存儲介質(zhì)為例如內(nèi)置磁盤(未示出)或可移動磁盤。
本文公開的任何數(shù)據(jù)可以例如以有形地存儲在非暫時性計算機可讀介質(zhì)上的一個或多個數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)。本發(fā)明的實施例可以將此類數(shù)據(jù)存儲在此類數(shù)據(jù)結(jié)構(gòu)中,并且從此類數(shù)據(jù)結(jié)構(gòu)讀取此類數(shù)據(jù)。
本申請?zhí)峁┝艘环N用于通過模型驅(qū)動技術(shù)進(jìn)行自動ui測試的計算機實現(xiàn)的方法和系統(tǒng)。
圖1示出了根據(jù)本發(fā)明主題的實施例的用于通過模型驅(qū)動技術(shù)進(jìn)行自動ui測試的系統(tǒng)的網(wǎng)絡(luò)實現(xiàn)。盡管考慮到系統(tǒng)102在服務(wù)器上實現(xiàn)來說明本發(fā)明主題,但是可以理解,系統(tǒng)102還可以在各種計算系統(tǒng)中實現(xiàn),諸如膝上型計算機、臺式計算機、筆記本、工作站、大型計算機、服務(wù)器、網(wǎng)絡(luò)服務(wù)器等。在一個實現(xiàn)方式中,系統(tǒng)102可以在基于云的環(huán)境中實現(xiàn)。應(yīng)當(dāng)理解,系統(tǒng)102可以由多個用戶通過一個或多個用戶設(shè)備104-1、104-2...104-n(下文中統(tǒng)稱為用戶設(shè)備104)或駐留在用戶設(shè)備104上的應(yīng)用來訪問。用戶設(shè)備104的示例可以包括但不限于便攜式計算機、個人數(shù)字助理、手持設(shè)備和工作站。用戶設(shè)備104通過網(wǎng)絡(luò)106通信地耦接到系統(tǒng)102。
在一個實現(xiàn)方式中,網(wǎng)絡(luò)106可以是無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或其組合。網(wǎng)絡(luò)106可以被實現(xiàn)為不同類型的網(wǎng)絡(luò)之一,諸如內(nèi)聯(lián)網(wǎng)、局域網(wǎng)(lan)、廣域網(wǎng)(wan)、因特網(wǎng)等。網(wǎng)絡(luò)106可以是專用網(wǎng)絡(luò)或共享網(wǎng)絡(luò)。共享網(wǎng)絡(luò)表示使用各種協(xié)議(例如,超文本傳輸協(xié)議(http)、傳輸控制協(xié)議/因特網(wǎng)協(xié)議(tcp/ip)、無線應(yīng)用協(xié)議(wap)等)的不同類型的網(wǎng)絡(luò)的關(guān)聯(lián),以便彼此通信。此外,網(wǎng)絡(luò)106可以包括各種網(wǎng)絡(luò)設(shè)備,包括路由器、網(wǎng)橋、服務(wù)器、計算設(shè)備、存儲設(shè)備等。
參考圖2,描述了根據(jù)所公開主題的實施例的系統(tǒng)102的各種部件的詳細(xì)工作。
在本發(fā)明的一個實施例中,參考圖2,公開了用于通過模型驅(qū)動技術(shù)進(jìn)行自動ui測試的系統(tǒng)。在一個實施例中,系統(tǒng)(102)包括處理器(202)和通信地耦接到所述處理器的存儲器(206),以通過執(zhí)行存儲在所述存儲器中的指令來執(zhí)行功能。在另一實施例中,系統(tǒng)包括選擇模塊(210),其被配置為從需要ui測試的應(yīng)用中選擇對應(yīng)于ui的ui模型。在另一實施例中,與一個或多個應(yīng)用相對應(yīng)的ui模型存儲在存儲模塊(224)中。此外,測試用例模型創(chuàng)建模塊(212)可以被配置為為所選擇的ui模型創(chuàng)建測試用例模型,并將創(chuàng)建的測試模型填充到測試用例編輯器(222)中。在一個方面中,可以基于所選擇的ui模型的結(jié)構(gòu)模式將測試用例模型創(chuàng)建為ui動作序列。在另一方面,測試用例編輯器(222)可以被配置為顯示測試用例模型并編輯測試用例模型。在另一方面,測試用例編輯器(222)可以被配置為通過添加新步驟、修改現(xiàn)有步驟、記錄現(xiàn)有步驟并刪除測試用例模型的現(xiàn)有步驟,來編輯測試用例模型。
此外,所述系統(tǒng)包括配置為相對于對應(yīng)的ui模型來驗證測試用例模型的驗證模塊(214)。測試用例模型的驗證可以包括基于規(guī)則引擎(220)來評估測試用例模型。規(guī)則引擎(220)可以包括一組預(yù)定義的規(guī)則和約束,其確保測試用例模型的完整性、一致性和正確性。此外,測試用例模型的驗證可以包括但不限于針對ui模型的測試用例模型的語法和語義評估。在一個實施例中,所述規(guī)則和約束可以被編碼在腳本中,所述腳本在被執(zhí)行時評估測試用例模型是否遵守編碼在腳本中的所述規(guī)則和約束中的每一個。如果發(fā)生違規(guī),驗證將標(biāo)記為失敗。例如,取整數(shù)值的字段不能映射到string類型服務(wù)參數(shù)。此后,腳本生成模塊(216)可以被配置為從目標(biāo)平臺的經(jīng)驗證的測試用例模型生成測試用例腳本。此外,所生成的測試腳本用于測試相應(yīng)的ui應(yīng)用。
在一個實施例中,測試用例模型創(chuàng)建器模塊(212)可以被配置為在將所創(chuàng)建的測試用例模型填充到測試用例編輯器(222)中之前,為指定ui模型創(chuàng)建測試用例模型。為指定模型創(chuàng)建測試用例模型可以基于:(i)以事件為中心的方法,(ii)以用戶交互為中心的方法、或以事件為中心的方法和以用戶交互為中心的方法的組合。所述模型的選擇可以基于用戶界面(ui)是處于開發(fā)階段還是已經(jīng)被開發(fā)完成的考量。在優(yōu)選實施例中,當(dāng)需要在進(jìn)行中的ui屏幕中對單個事件進(jìn)行單元測試時,可以使用以事件為中心的方法用于ui開發(fā)期間的測試用例的建模。在另一個優(yōu)選實施例中,當(dāng)需要從以用戶交互為中心的方法測試已經(jīng)實現(xiàn)的ui屏幕時,可以使用以用戶交互為中心的方法來建模測試用例。在呈現(xiàn)本申請的主題時,本領(lǐng)域技術(shù)人員將顯見的是,可以基于以事件為中心的步驟和以用戶交互為中心的步驟的組合來創(chuàng)建測試用例模型,這些步驟可以基于分別如圖4和圖5所闡述的以事件為中心的方法和以用戶交互為中心的方法來實現(xiàn)。
在另一實施例中,同步模塊(218)可以被配置為基于所選擇的ui模型的結(jié)構(gòu)模式,將所選擇的ui模型的測試用例模型與所選擇的ui模型同步為ui動作序列。由于ui動作的隨機性,所以在ui模型中發(fā)生變化。為了確保ui模型中的改變與所選擇的ui模型的測試用例模型自動同步,系統(tǒng)實現(xiàn)有該同步模塊(218)。此外,同步模塊(218)被配置為監(jiān)視ui模型中的改變,并且使所述改變與對應(yīng)的測試用例模型自動同步。
在又一個實施例中,測試用例編輯器(222)可以被配置為顯示測試用例模型,并且為用戶提供句柄,用于添加新步驟、修改現(xiàn)有步驟、記錄現(xiàn)有步驟和刪除現(xiàn)有步驟。此外,測試用例編輯器(222)提供句柄以觸發(fā)測試用例模型的驗證和根據(jù)測試用例模型生成測試腳本。此外,測試用例編輯器(222)可以被配置為自動刷新和反映與ui模型中的改變相對應(yīng)的在測試用例模型中發(fā)生的改變。
在又一實施例中,作為模型驅(qū)動的ui建模和生成框架的一部分的存儲模塊(224)可以被配置為存儲和訪問對應(yīng)于一個或多個應(yīng)用的一個或多個ui模型。存儲模塊(224)還可以被配置為存儲和訪問測試用例模型和經(jīng)編輯的測試用例模型以及ui模型。
在一個實施例中,使用腳本生成模塊(216)根據(jù)驗證的測試用例模型生成的測試腳本可以在使用測試執(zhí)行引擎的自動執(zhí)行系統(tǒng)中執(zhí)行。自動執(zhí)行系統(tǒng)被配置為適合于測試腳本以及測試數(shù)據(jù)將被執(zhí)行的環(huán)境。測試腳本的執(zhí)行進(jìn)一步產(chǎn)生測試結(jié)果,以驗證ui應(yīng)用程序如預(yù)期地執(zhí)行。
盡管已經(jīng)用對結(jié)構(gòu)特征和/或方法特定的語言描述了本發(fā)明主題的方法和系統(tǒng)的實施例,但是應(yīng)當(dāng)理解,本發(fā)明主題不一定限于所描述的特定特征或方法。相反,這些具體特征和方法作為本發(fā)明主題的示例性實施例被公開。
圖3是示出根據(jù)本文公開主題的實施例的用于通過模型驅(qū)動技術(shù)進(jìn)行自動ui測試的方法的流程圖。根據(jù)圖2的說明,自動ui測試用例建模和生成框架使用底層的模型驅(qū)動ui生成框架。
該過程開始于步驟302,其中執(zhí)行所存儲的用戶界面(ui)模型的選擇。由于對應(yīng)于所選擇的ui模型創(chuàng)建測試用例模型,ui模型的選擇用作創(chuàng)建測試用例模型的倒數(shù)第二步。
在步驟304,將從所選擇ui模型創(chuàng)建的測試用例模型填充到測試用例編輯器。在一個方面中,可以基于所選擇的ui模型的結(jié)構(gòu)模式,將測試用例模型自動創(chuàng)建為ui動作序列。在另一方面,可以從頭創(chuàng)建并編輯測試用例模型。在另一方面,可以通過添加新步驟、修改現(xiàn)有步驟、記錄現(xiàn)有步驟并刪除測試用例模型的現(xiàn)有步驟來執(zhí)行編輯所填充的測試用例模型。在一個實施例中,創(chuàng)建對應(yīng)于所選ui模型的測試用例模型,其中測試用例模型的創(chuàng)建可以基于:(i)以事件為中心的方法,(ii)以用戶交互為中心的方法、或以事件為中心的方法和以用戶交互為中心的方法的組合。所述模型的選擇可以基于用戶界面(ui)是處于開發(fā)階段還是已經(jīng)被開發(fā)完成的考量。在優(yōu)選實施例中,當(dāng)需要對正在進(jìn)行的ui屏幕中的單個事件進(jìn)行單元測試時,以事件為中心的模型可以用于ui開發(fā)期間的測試用例的建模。在另一個優(yōu)選實施例中,當(dāng)需要根據(jù)以用戶交互為中心的方法測試已經(jīng)實現(xiàn)的ui屏幕時,以用戶交互為中心的模型可以用于測試用例的建模。在另一實施例中,基于從所選擇的ui模型的結(jié)構(gòu)模式獲得的ui動作序列,來執(zhí)行用于所選擇的ui模型的測試用例模型與所選擇的ui模型的同步。由于ui動作的隨機性,ui模型中發(fā)生變化。為了確保ui模型中的改變與對應(yīng)于ui模型所選擇的測試用例模型自動同步,監(jiān)視ui模型中的改變,并且在觀察到任何改變的情況下,將所述改變與對應(yīng)的測試用例模型自動同步,產(chǎn)生出更新的測試用例模型。
在步驟306,針對相應(yīng)的ui模型驗證測試用例模型。測試用例模型的驗證可以包括基于一組預(yù)定義規(guī)則和約束來評估測試用例模型,所述預(yù)定義規(guī)則和約束確保測試用例模型的完整性。此外,測試用例模型的驗證可以包括但不限于針對ui模型的測試用例模型的語法和語義評估。在一個實施例中,所述規(guī)則和約束可以被編碼在腳本中,所述腳本在被執(zhí)行時評估測試用例模型是否遵守編碼在腳本中的所述規(guī)則和約束中的每一個。如果發(fā)生違規(guī),驗證將標(biāo)記為失敗。例如,取整數(shù)值的字段不能映射到string類型服務(wù)參數(shù)。
該過程在步驟308結(jié)束,其中可以從目標(biāo)平臺的經(jīng)驗證的測試用例模型生成測試腳本。此外,所生成的測試腳本用于測試相應(yīng)的ui應(yīng)用。在一個實施例中,可以從存儲模塊(224)存儲和訪問ui模型、測試用例模型和經(jīng)編輯的測試用例模型。
本領(lǐng)域技術(shù)人員將理解,盡管圖3的方法示出了所公開主題的工作方法,然而,該方法可以以任何順序使用,省略一個或多個步驟,或者以任何順序執(zhí)行任何步驟,并且這也形成所公開主題的一部分。
參考圖4,其是示出利用以事件為中心的方法,創(chuàng)建與所選擇的ui模型相對應(yīng)的測試用例模型的高級過程的流程圖。
在一個實施例中,圖4是用于創(chuàng)建與所選擇的ui模型相對應(yīng)的測試用例模型的以事件為中心的方法的應(yīng)用的圖示。如圖4所示,以事件為中心的方法包括創(chuàng)建測試或打開現(xiàn)有測試用例。此外,該過程包括將測試步驟添加到所創(chuàng)建的測試用例或現(xiàn)有測試用例。將測試步驟添加到測試用例中,直到測試用例的建模完成。在測試用例建模完成并且沒有更多測試步驟被添加到測試用例的情況下,ui動作被保存。在測試用例建模未完成的情況下,可以將測試步驟添加到測試用例,以創(chuàng)建ui動作。此外,該過程包括檢查數(shù)據(jù)規(guī)范、事件規(guī)范和ui元素規(guī)范的要求的步驟。此外,在需要數(shù)據(jù)規(guī)范、事件規(guī)范和觸發(fā)所述事件的ui元素中的任何一個的情況下,該過程基于所述要求,提示用戶指定數(shù)據(jù)規(guī)范、事件規(guī)范和觸發(fā)所述事件的ui元素。所述過程保持重復(fù),直到測試用例建模完成并且ui動作被保存為止。
在示例性實施例中,參考圖4,示出了以事件為中心的方法闡明特定ui動作的圖示。例如,用于創(chuàng)建在文本框(其用作對于服務(wù)的輸入之一)中設(shè)置數(shù)據(jù)的ui動作的ui動作包括以下步驟:(i)創(chuàng)建ui動作;(ii)指定要在文本框中設(shè)置的數(shù)據(jù);(iii)選擇需要設(shè)置數(shù)據(jù)的所需文本框。該過程結(jié)束于在測試用例建模完成的情況下保存測試用例中保存ui動作,否則,通過創(chuàng)建新的ui動作/測試步驟或修改/刪除現(xiàn)有ui動作/測試步驟來重復(fù)該過程。
在另一示例性實施例中,參考圖4,示出了以事件為中心的方法闡明特定ui動作的圖示。例如,用于觸發(fā)按鈕的點擊事件進(jìn)而調(diào)用服務(wù)的ui動作包括以下步驟:(i)創(chuàng)建ui動作;(ii)將事件規(guī)范指定為點擊事件;(iii)選擇按鈕作為觸發(fā)事件的ui元素。該過程以在測試用例建模完成的情況下保存測試用例而結(jié)束,否則,通過創(chuàng)建新的ui動作/測試步驟或修改/刪除現(xiàn)有ui動作/測試步驟來重復(fù)該過程。
在另一示例性實施例中,參考圖4,示出了以事件為中心的方法闡明特定ui動作的圖示。例如,用于通過服務(wù)將數(shù)據(jù)集維護(hù)(assert)于文本框中的ui動作包括以下步驟:(i)創(chuàng)建ui動作;(ii)根據(jù)服務(wù)指定期望數(shù)據(jù);及(iii)指定設(shè)置來自服務(wù)的數(shù)據(jù)的文本框。該過程在測試用例建模完成的情況下以保存測試用例而結(jié)束,否則,通過創(chuàng)建新的ui動作/測試步驟或修改/刪除現(xiàn)有ui動作/測試步驟重復(fù)該過程。
參考圖5,其是示出利用以用戶交互為中心的方法,創(chuàng)建與所選擇的ui模型相對應(yīng)的測試用例模型的高級過程的流程圖。
在一個實施例中,圖5是用于創(chuàng)建與所選擇的ui模型相對應(yīng)的測試用例模型的以用戶交互為中心的模型的應(yīng)用的圖示。如圖5所示,以用戶交互為中心的方法包括創(chuàng)建測試用例或打開現(xiàn)有測試用例。此外,該過程包括將測試步驟添加到所創(chuàng)建的測試用例或現(xiàn)有測試用例。將測試步驟添加到測試用例中,直到測試用例的建模完成為止。在測試用例建模完成并且沒有更多測試步驟被添加到測試用例的情況下,ui動作被保存。在測試用例建模未完成的情況下,可以將測試步驟添加到測試用例,以創(chuàng)建ui動作并指定ui動作類型。此外,該過程包括檢查測試范圍數(shù)據(jù)的需求和動作目標(biāo)的存在的步驟。此外,該過程涉及在需要測試范圍數(shù)據(jù)的情況下,提示用戶指定測試范圍數(shù)據(jù),以及在發(fā)現(xiàn)存在動作目標(biāo)的情況下,提示用戶指定用于調(diào)用ui動作的ui元素規(guī)范。所述過程保持重復(fù),直到測試用例建模完成并且ui動作被保存為止。
在示例性實施例中,參考圖5,呈現(xiàn)了以用戶交互為中心的方法闡明特定ui動作的圖示。例如,用于在文本框(其用作對于服務(wù)的輸入之一)中設(shè)置數(shù)據(jù)的ui動作包括以下步驟:(i)創(chuàng)建ui動作;(ii)選擇“設(shè)置數(shù)據(jù)”作為ui動作類型;(iii)選擇所需的文本框作為動作目標(biāo)。該過程以在測試用例建模完成的情況下保存測試用例而結(jié)束,否則通過創(chuàng)建新的ui動作/測試步驟或修改/刪除現(xiàn)有ui動作/測試步驟重復(fù)該過程。
在另一示例性實施例中,參考圖5,呈現(xiàn)了以用戶交互為中心的方法闡明特定ui動作的圖示。例如,用于點擊按鈕的ui動作包括以下步驟:(i)創(chuàng)建ui動作;(ii)選擇“點擊”作為ui動作類型;(iii)選擇所述按鈕作為在其上調(diào)用所述點擊ui動作類型的動作目標(biāo)。該過程以在測試用例建模完成的情況下保存測試用例而結(jié)束,否則通過創(chuàng)建新的ui動作/測試步驟或修改/刪除現(xiàn)有ui動作/測試步驟重復(fù)該過程。
在又一示例性實施例中,參考圖5,呈現(xiàn)了以用戶交互為中心的方法闡明特定ui動作的圖示。例如,用于通過服務(wù)將數(shù)據(jù)集維護(hù)于文本框中的ui動作包括以下步驟:(i)創(chuàng)建ui動作;(ii)選擇“維護(hù)數(shù)據(jù)”作為ui動作類型;(iii)選擇所需的文本框作為其內(nèi)容用期望數(shù)據(jù)維護(hù)的動作目標(biāo)。該過程以在測試用例建模完成的情況下保存測試用例而結(jié)束,否則通過創(chuàng)建新的ui動作/測試步驟或修改/刪除現(xiàn)有ui動作/測試步驟重復(fù)該過程。
如本申請中所公開的用于根據(jù)具有預(yù)定義結(jié)構(gòu)模式的ui模型生成ui測試用例模型的技術(shù),節(jié)省了手動創(chuàng)建測試用例模型的精力和時間。此外,根據(jù)ui模型創(chuàng)建ui測試用例模型確保了ui與測試用例之間的同步。此外,根據(jù)測試用例模型生成測試用例腳本消除了在升級測試用例腳本技術(shù)或遷移到較新技術(shù)期間的返工。所公開的方法和系統(tǒng)還便于測試用例實施者專注于以技術(shù)獨立的方式實現(xiàn)測試用例,這為測試專業(yè)人員提供了選擇需要的測試用例生成技術(shù)的靈活性。
在一個實施例中,從所選擇的ui模型的結(jié)構(gòu)模式獲得的ui動作包括本領(lǐng)域中公知的ui動作。例如,ui動作可以包括但不限于:點擊、雙擊或拖動被測應(yīng)用程序內(nèi)的文本、樹節(jié)點和控件,最小化和最大化窗口,聚焦控件,在文本框中設(shè)置字符串,在下拉列表中維護(hù)數(shù)據(jù),單擊按鈕和其它標(biāo)準(zhǔn)ui動作。
在一個實施例中,在自動測試中使用的測試腳本語言可以包括但不限于:javascript、perl、python、ruby、tcl、unixshell腳本、vbscript、sikuli。本發(fā)明實現(xiàn)了用于根據(jù)ui模型自動生成(ui)測試腳本生成的系統(tǒng)和方法。可以使用任何上述腳本語言以及本領(lǐng)域中公知的其它腳本語言來編寫測試腳本。
本公開和示例旨在被認(rèn)為僅僅是示例性的,所公開實施例的真實范圍和精神由所附權(quán)利要求指示。