專利名稱:一種基于二元結(jié)構(gòu)的腳本生成方法
技術(shù)領(lǐng)域:
本發(fā)明是一種腳本體系生成方法,屬于軟件自動化測試技術(shù)中的腳本生成技術(shù)領(lǐng) 域。
背景技術(shù):
軟件測試是軟件開發(fā)過程中不可缺少的部分,其目的是盡可能發(fā)現(xiàn)軟件中存在的 缺陷和錯誤并進(jìn)行修改,以提高軟件的質(zhì)量和可靠性。據(jù)統(tǒng)計(jì)表明,軟件測試開銷占用了整 個(gè)軟件開發(fā)的30% 50%。隨著軟件功能和復(fù)雜度的不斷提升,作為可以提高軟件質(zhì)量的 軟件自動化測試已成為研究熱點(diǎn)。測試腳本在自動化測試中扮演著重要的角色,腳本的設(shè)計(jì)和創(chuàng)建直接影響測試結(jié) 果的再現(xiàn)。目前,常用的腳本技術(shù)有四種線性腳本、結(jié)構(gòu)化腳本、數(shù)據(jù)驅(qū)動腳本和關(guān)鍵字 驅(qū)動腳本。線性腳本完全基于手工操作,記錄操作步驟,開發(fā)成本低,但是不具有邏輯功能, 后期維護(hù)成本很高;結(jié)構(gòu)化腳本采用多種邏輯結(jié)構(gòu)來實(shí)現(xiàn)結(jié)構(gòu)化控制,編寫復(fù)雜,開發(fā)成本 較高,后期維護(hù)成本低;數(shù)據(jù)驅(qū)動腳本將腳本與數(shù)據(jù)分離,修改測試數(shù)據(jù)不會對腳本產(chǎn)生影 響,開發(fā)成本相對結(jié)構(gòu)化腳本要高,后期維護(hù)成本低;關(guān)鍵字驅(qū)動腳本封裝了各種基本操 作,由關(guān)鍵字來調(diào)用操作,維護(hù)很容易,但是要求測試人員有很好的編程能力。然而在出現(xiàn) 多個(gè)嵌套窗口并且每個(gè)窗口均有相應(yīng)操作的情況下,傳統(tǒng)的腳本技術(shù)就會呈現(xiàn)出腳本多層 次嵌套、結(jié)構(gòu)復(fù)雜的弊端,導(dǎo)致腳本回放時(shí)響應(yīng)時(shí)間慢,不能滿足實(shí)時(shí)性,同時(shí)不易于維護(hù)。 由此可見,軟件功能日益復(fù)雜的今天,傳統(tǒng)的腳本技術(shù)已不能滿足用戶的需求。
發(fā)明內(nèi)容
技術(shù)問題本發(fā)明目的是針對現(xiàn)有技術(shù)存在的缺陷提供一種基于二元結(jié)構(gòu)的腳本 生成方法。解決當(dāng)前國內(nèi)外優(yōu)秀的商業(yè)自動化測試工具在具有復(fù)雜框架的窗口中產(chǎn)生過于 復(fù)雜腳本的問題,使自動化腳本至多有兩級嵌套。簡化腳本結(jié)構(gòu),提高腳本的易用性和可維 護(hù)性,提高測試效率。技術(shù)方案本發(fā)明為實(shí)現(xiàn)上述目的,采用如下技術(shù)方案本發(fā)明是一種基于二元結(jié)構(gòu)的腳本生成方法,其特征在于所述方法如下步驟(1)對象錄制在錄制對象時(shí),首先對窗口進(jìn)行錄制,窗口即一個(gè)獨(dú)立的 主對象,通過窗口標(biāo)題來識別窗口 ;然后將窗口內(nèi)的所有控件設(shè)置為窗口的子對象,完 成對象錄制后,將對象以二元結(jié)構(gòu)的形式使用可擴(kuò)展標(biāo)識語言xml進(jìn)行保存,記錄在 ObjectDefinition. xml 文件中;步驟(2)在對象錄制完成的基礎(chǔ)上,對事先錄制的對象節(jié)點(diǎn)創(chuàng)建場景,同時(shí)根據(jù) 測試用例的需求創(chuàng)建場景樹并生成場景文件Scenarios, xml。優(yōu)選地,所述對象采用框架索引(Framelndex)、同類控件計(jì)數(shù)索引(Countlndex) 和組合識別方式使得控件對象嵌套層級至多為兩級,形成二元結(jié)構(gòu)的對象管理體系。有益效果
(1)基于二元結(jié)構(gòu)的腳本體系,避免了產(chǎn)生過于復(fù)雜腳本的問題;(2)由于腳本結(jié)構(gòu)簡單,只有兩級嵌套,便于大規(guī)模自動產(chǎn)生腳本,對于測試人員來說規(guī)范易懂也容易操作,節(jié)省測試時(shí)間;(3) 二元結(jié)構(gòu)的腳本邏輯性非常強(qiáng),提高了可維護(hù)性,降低日后的腳本維護(hù)成本;(4)腳本簡單,提高自動化測試軟件的運(yùn)行速率同時(shí)提高了測試效率。
圖1 是使用本發(fā)明的自動化測試體系。
具體實(shí)施例方式下面結(jié)合附圖對發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明如圖1所示,本發(fā)明通過實(shí)現(xiàn)二元結(jié)構(gòu)的對象管理體系,生成二元結(jié)構(gòu)的獨(dú)立場 景,從而確保自動產(chǎn)生二元結(jié)構(gòu)的腳本體系。(1)在錄制對象時(shí),首先對窗口進(jìn)行錄制,窗口即一個(gè)獨(dú)立的主對象,通過窗口 標(biāo)題來識別窗口 ;然后該窗口內(nèi)的所有控件看成是窗口對象的子對象,通過控件屬性如 對象名稱、對象類型等來標(biāo)識。通過引入框架索引(Framelndex)、同類控件計(jì)數(shù)索引 (CountIndex)和組合識別方式使得控件對象嵌套層級至多為兩級,形成二元結(jié)構(gòu)的對象管 理體系;同時(shí)采用框選和連續(xù)單點(diǎn)提高對象錄制的效率。復(fù)雜窗口中,通常存在多個(gè)框架,引入Framelndex按照窗口加載順序來標(biāo)記 框架,如“Framelndex = 0”作為框架內(nèi)控件的屬性之一,若存在嵌套框架,可表示成 "Framelndex = 0_1”,表示0號框架中的1號子框架,如此可以消除復(fù)雜頁面中的多層嵌 套,保持對象管理系統(tǒng)的二元結(jié)構(gòu),而且可以提高對象反選速度。類似Framelndex的引入原理,當(dāng)同一個(gè)窗口中存在多個(gè)相同控件且其它屬性 不能唯一標(biāo)識該控件時(shí),如 WebCheckBox,WebRadioGroup, WebLink, WebSpan, WebDiv, WebElement等。采用同類控件計(jì)數(shù)(Coimtlndex)標(biāo)記控件,從O開始根據(jù)同一類型控件的 索引進(jìn)行標(biāo)識,如“Coimtlndex = 2”表示該控件是此類型控件中的第3個(gè)。對于窗口中無法識別的對象,采用組合識別方式來實(shí)現(xiàn)。即利用附近可識別對 象來搜索目標(biāo)對象。首先對附近對象完成偵測操作,編輯目標(biāo)對象所屬類型如圖1,利用 howtofind方法進(jìn)行搜索。howtofind提供了 range和de印兩種搜索方式,range只是由 內(nèi)而外依次從子級向父級進(jìn)行單向搜索;而deep可實(shí)現(xiàn)雙向搜索,當(dāng)子級向父級搜索不成 功時(shí),可繼續(xù)由外而內(nèi)依次從父級向子級進(jìn)行全面的搜索,以確保找到目標(biāo)對象。上述三種對象錄制技術(shù)實(shí)現(xiàn)了窗口和控件始終以二元結(jié)構(gòu)的形式呈現(xiàn),確??丶?對象嵌套層級至多為兩級。完成對象錄制后,將對象以二元結(jié)構(gòu)的形式使用可擴(kuò)展標(biāo)識語 言xml進(jìn)行保存,記錄在ObjectDefinition. xml文件中。其結(jié)構(gòu)如下〈Objects〉〈Object ID = 〃 網(wǎng)易〃 Type=" Browser"Property = " openurl = http://mail. 163. com/. 〃 >〈Object ID = " username " Type = " WebEdit " Property = " Name = username" />
〈Object ID = ‘’ password ‘’ Type = ‘’ WebEdit ‘’ Property = ‘’ Name =
password'〈Object ID = 〃 登錄〃 Type=" WebButton" Property = " Value =登錄〃 />〈/Object〉〈Object ID = 〃 D 盤〃 Type=" Window" Property = " opentitle =^iWI
〈Object ID="新建文件夾"Type=" Listltem" Property = " Name =新
盤(D:)〃 >
建文件夾"/>〈/Object〉〈/Objects〉〈Objects〉和〈/Objects〉是xml的根節(jié)點(diǎn),分別表示xml語言的標(biāo)記開始和結(jié) 束;"Type = Browser,,和 “Type = Window,,表示父級類型,瀏覽器窗口是 “Browser,,,而 Windows 窗口是“Window,,;"Property = “ openurl = http://mail. 163. com/. 〃 ”是 用于查找父窗體的條件;‘‘Object ID = " username" ”是窗體中的子元素即子對象;‘‘Type ="WebEdit" ”是子元素‘‘username” 的類型;‘‘Property = “ Name = Username" ”是查 找子元素“username”的條件;為了提高測試效率,提出了框選和連續(xù)單點(diǎn)方案。測試人員可在錄制對象時(shí),選擇 “偵測所選”模式,使用拖拉鼠標(biāo)的方式,框選需要錄制的對象就可將這些對象成功錄制下 來;或者在“偵測所選”模式下連續(xù)單擊多個(gè)需要錄制的對象,實(shí)現(xiàn)同時(shí)錄制多個(gè)對象。此 方案避免了反復(fù)多次偵測同一窗口的對象,節(jié)省時(shí)間,提高了易用性和測試效率。(2)在對象錄制完成的基礎(chǔ)上,測試人員可對事先錄制的對象節(jié)點(diǎn)創(chuàng)建場景,同時(shí) 根據(jù)測試用例的需求創(chuàng)建場景樹并生成場景文件Scenarios, xml,設(shè)計(jì)思想與對象定義文 件類似,在每個(gè)獨(dú)立場景中采用二元結(jié)構(gòu)的描述方式。〈Scenarios〉〈Scenario ID = 〃 網(wǎng)易〃 >〈Step ObjID = 〃 網(wǎng)易〃 Method = “ Navigate “ Value = “ http:// mail. 163. com/" Type=" Action" ID=" http://mail.163.com/_Navigate" />
username
〃 />〈Step ObjID =“ ="Action" ID=" username<Step ObjID = " password ="Action" ID=" password" />〈Step ObjID = 〃 登錄〃 =〃 Action" ID =〃 登錄〃 />
Method = “ Set “ Value = “ xxxx “ Type
Method = “ Set “ Value = “ yyyy “ Type
Method = “ Click “ Value =
Type
</Scenario>〈Scenario ID = 〃 D 盤〃 >〈Step ObjID = "新建文件夾 ="Action" ID =〃 新建文件夾〃 /></Scenario></Scenarios>
Method = " Click" Value =
Type
同樣,〈Scenarios〉和〈/Scenarios〉是 xml 的根節(jié)點(diǎn);〈Scenario ID = "網(wǎng)易〃 > 表示本場景的ID,在場景ID中必須唯一可標(biāo)識;“St印ObjID =“網(wǎng)易〃 ”表示場景下 的步驟,“Ob jID”表示此步驟的執(zhí)行對象;“Method”表示方法;“Value”表示此方法的值; “Type”表示步驟類型;“ID”是指步驟ID,也必須唯一可標(biāo)識。在自動化測試執(zhí)行測試用例前,首先要生成測試腳本。本發(fā)明的腳本基于 對象定義文件ObjectDefinition. xml和場景文件Scenarios, xml自動生成。由于 ObjectDefinition. xml和Scenarios, xml確保了二元結(jié)構(gòu)的對象管理體系和場景管理體 系,所以自動生成的腳本必然也是二元結(jié)構(gòu)的,始終以“窗口、控件”的二元體系來詮釋整個(gè) 測試過程。實(shí)施例(1)測試用例設(shè)計(jì)測試人員根據(jù)測試需求編寫測試用例,測試用例要盡可能覆 蓋測試場景中可能發(fā)生的情況。(2)對象錄制測試人員根據(jù)測試用例,對窗口進(jìn)行錄制,在錄制過程中可以對對 象進(jìn)行編輯,使之易懂,方便日后維護(hù),并使用本發(fā)明二元結(jié)構(gòu)的xml保存思想對對象進(jìn)行 保存,生成 ObjectDefinition. xml 文件。(3)場景創(chuàng)建對象錄制工作完成后,根據(jù)測試用例需求創(chuàng)建樹形場景,并使用本 發(fā)明二元結(jié)構(gòu)的xml保存思想對每個(gè)場景進(jìn)行保存,生成Scenarios, xml。(4)腳本生成基于對象定義文件ObjectDefinition. xml和場景文件Scenarios, xml自動生成“窗體、控件”形式的二元結(jié)構(gòu)的腳本。(5)執(zhí)行腳本執(zhí)行腳本,達(dá)到測試目的。(6)修改腳本當(dāng)腳本執(zhí)行發(fā)生錯誤時(shí),需對腳本進(jìn)行修改,采用本發(fā)明的腳本, 可以讓測試人員快速定位到發(fā)生錯誤的對象和場景,提高測試效率。
權(quán)利要求
一種基于二元結(jié)構(gòu)的腳本生成方法,其特征在于所述方法如下步驟(1)對象錄制在錄制對象時(shí),首先對窗口進(jìn)行錄制,窗口即一個(gè)獨(dú)立的主對象,通過窗口標(biāo)題來識別窗口;然后將窗口內(nèi)的所有控件設(shè)置為窗口的子對象,完成對象錄制后,將對象以二元結(jié)構(gòu)的形式使用可擴(kuò)展標(biāo)識語言xml進(jìn)行保存,記錄在ObjectDefinition.xml文件中;步驟(2)在對象錄制完成的基礎(chǔ)上,對事先錄制的對象節(jié)點(diǎn)創(chuàng)建場景,同時(shí)根據(jù)測試用例的需求創(chuàng)建場景樹并生成場景文件Scenarios.xml。
2.根據(jù)權(quán)利要求1所述的一種基于二元結(jié)構(gòu)的腳本生成方法,其特征在于所述對象采 用框架索引(Framelndex)、同類控件計(jì)數(shù)索引(Coimtlndex)和組合識別方式使得控件對 象嵌套層級至多為兩級,形成二元結(jié)構(gòu)的對象管理體系。
全文摘要
本發(fā)明公布了一種基于二元結(jié)構(gòu)的腳本生成方法,將每個(gè)windows或者web窗口看成是一個(gè)獨(dú)立的對象,而窗口內(nèi)的所有控件看成是窗口對象的子對象,同時(shí)引入框架索引(FrameIndex)、同類組件計(jì)數(shù)索引(CountIndex)和組合識別方式使得控件對象嵌套層級至多為兩級,并以二元結(jié)構(gòu)的形式使用可擴(kuò)展標(biāo)識語言xml將對象進(jìn)行保存,記錄在ObjectDefinition.xml文件中;在完成對象錄制基礎(chǔ)上,生成樹形場景,同樣以二元結(jié)構(gòu)的形式保存每個(gè)獨(dú)立的場景,生成Scenarios.xml文件;最后根據(jù)對象和場景自動生成腳本,由于對象和場景都是以二元結(jié)構(gòu)的形式存在,生成的腳本體系必然也是二元結(jié)構(gòu)的。
文檔編號G06F11/36GK101887389SQ20101019092
公開日2010年11月17日 申請日期2010年6月3日 優(yōu)先權(quán)日2010年6月3日
發(fā)明者何春明, 靳松波 申請人:南京班墨自動化技術(shù)有限公司