本發(fā)明涉及軟件測試技術(shù)領(lǐng)域,尤其涉及一種測試設(shè)計書生成方法。
背景技術(shù):
傳統(tǒng)的軟件測試技術(shù)存在著人工干預(yù)的階段,測試人員需要手動設(shè)置測試用例以及其中包括的各種測試動作,并且手動運(yùn)行測試,手動比對測試結(jié)果以及根據(jù)比對結(jié)果判斷測試是否成功。換言之,在現(xiàn)有的軟件測試技術(shù)中存在過多人工干預(yù)的步驟,因此會占用大量的人工資源,延長軟件測試的時間,降低測試效率。
同時,現(xiàn)有的軟件測試技術(shù)中,其測試參數(shù)設(shè)置通常采用一些只有專業(yè)測試人員才能掌握的代碼級設(shè)置來實(shí)現(xiàn),因此導(dǎo)致測試設(shè)置比較復(fù)雜,要求測試人員具有相匹配的代碼知識和技術(shù)才能對軟件測試進(jìn)行參數(shù)設(shè)置;
同時,對于傳統(tǒng)的軟件測試技術(shù)而言,在編寫測試設(shè)計書時需要測試人員手動編寫大量的測試用例,并且根據(jù)手動編寫的測試用例手動形成一個負(fù)復(fù)雜的測試設(shè)計書,對于人力資源的消耗比較大。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)現(xiàn)有技術(shù)中存在的上述問題,現(xiàn)提供一種測試設(shè)計書生成方法的技術(shù)方案,旨在實(shí)現(xiàn)測試的可視化自動進(jìn)行,使得測試過程更直觀更有效率,簡化測試的操作。
上述技術(shù)方案具體包括:
一種測試設(shè)計書生成方法,其中,按序預(yù)設(shè)多個所述測試用例,每個所述測試用例對應(yīng)于多個按序執(zhí)行的測試動作,每個所述測試動作對應(yīng)于一個測試控件,每個所述測試動作對應(yīng)于一個操作方法,每個所述測試控件對應(yīng)一個測試畫面,每個所述測試動作對應(yīng)多個預(yù)想結(jié)果;
于一測試設(shè)計書中分別設(shè)置測試用例名稱、測試動作名稱以及預(yù)想結(jié)果值;
根據(jù)所述測試用例中關(guān)聯(lián)于用例名稱的屬性值對所述測試用例名稱進(jìn)行填充;
根據(jù)所述測試動作中關(guān)聯(lián)于動作名稱的屬性值對所述測試動作名稱進(jìn)行填充;
分別將關(guān)聯(lián)于每個所述測試動作的所述預(yù)想結(jié)果填充至對應(yīng)的所述預(yù)想結(jié)果值中;
將經(jīng)過填充的所述測試設(shè)計書顯示在一測試設(shè)計畫面中。
優(yōu)選的,該測試設(shè)計書生成方法,其中,于所述測試設(shè)計書中對應(yīng)每個所述測試用例分別設(shè)置一初始化數(shù)據(jù)值;
分別將對應(yīng)于每個所述測試用例的初始化數(shù)據(jù)填充至對應(yīng)的所述初始化數(shù)據(jù)值中。
優(yōu)選的,該測試設(shè)計書生成方法,其中,根據(jù)所述測試設(shè)計書,將本次需要執(zhí)行的所有所述測試用例對應(yīng)的所有所述測試動作按照所述測試用例被執(zhí)行的順序排列形成一測試動作列表,并執(zhí)行一個自動測試方法,具體包括:
步驟S1,于所述動作列表中選擇一個所述測試動作作為當(dāng)前動作,并將所述當(dāng)前動作對應(yīng)的所述測試用例作為當(dāng)前用例進(jìn)行測試;
步驟S2,將測試過程中系統(tǒng)瀏覽器中的顯示畫面的編號,和所述當(dāng)前動作對應(yīng)的所述測試畫面的編號進(jìn)行比較,以對所述顯示畫面進(jìn)行定位;
步驟S3,于被定位的所述顯示畫面中抓取匹配于所述當(dāng)前動作的所述測試控件作為當(dāng)前控件;
步驟S4,根據(jù)所述當(dāng)前動作的動作屬性,依據(jù)對應(yīng)的所述操作方法對被抓取的所述當(dāng)前控件進(jìn)行操作,隨后輸出對應(yīng)所述當(dāng)前動作的操作結(jié)果;
步驟S5,將所述操作結(jié)果與對應(yīng)所述當(dāng)前動作的所述預(yù)想結(jié)果進(jìn)行比較,以判斷所述當(dāng)前動作是否執(zhí)行成功,將對應(yīng)的比較結(jié)果保存為所述當(dāng)前動作的測試結(jié)果。
優(yōu)選的,該測試設(shè)計書生成方法,其中,于所述測試設(shè)計書中對應(yīng)每個所述測試動作分別設(shè)置一結(jié)果值;
于執(zhí)行所述步驟S5后,分別將對應(yīng)于每個所述測試動作的所述測試結(jié)果填充至對應(yīng)的所述結(jié)果值中。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S1中,在執(zhí)行關(guān)聯(lián)于所述當(dāng)前用例的第一個所述測試動作時,提取對應(yīng)于所述當(dāng)前用例的第一個所述測試控件的所述測試畫面作為開啟畫面,并通過關(guān)聯(lián)于所述開啟畫面的地址打開所述開啟畫面,以開始對所述當(dāng)前用例進(jìn)行測試。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S1中,在執(zhí)行關(guān)聯(lián)于所述當(dāng)前用例的每個所述測試動作之前,根據(jù)所述測試動作的動作屬性判斷是否需要打開對應(yīng)于所述測試動作的所述測試控件的所述測試畫面,并在需要時提取關(guān)聯(lián)于所述測試畫面的地址以打開所述測試畫面。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S1中,當(dāng)將所述測試用例確認(rèn)為所述當(dāng)前用例后提取所述當(dāng)前用例的初始化數(shù)據(jù),對關(guān)聯(lián)于所述當(dāng)前用例的數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行初始化操作,以開始對所述當(dāng)前用例進(jìn)行測試;
提取對應(yīng)于所述當(dāng)前用例的第一個所述測試控件的所述測試畫面的地址作為所述開啟畫面的開啟地址,并基于所述開啟地址,使用關(guān)聯(lián)于所述當(dāng)前用例的啟動參數(shù)開啟所述開啟畫面,以對所述啟動畫面進(jìn)行測試。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S2具體包括:
獲取對應(yīng)于所述當(dāng)前動作的后續(xù)的所述測試動作的所述測試畫面的編號,同時監(jiān)控所述顯示畫面的編號,在所述顯示畫面的編號與所述測試畫面的編號一致時,確認(rèn)所述顯示畫面切換成功,以對所述顯示畫面進(jìn)行定位。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S2具體包括:
獲取對應(yīng)于所述當(dāng)前動作的后續(xù)的所述測試畫面的編號,同時監(jiān)控所述顯示畫面的編號,在所述顯示畫面的編號與所述測試畫面的編號一致時,確認(rèn)所述顯示畫面切換成功,以對所述顯示畫面進(jìn)行定位。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S3中,抓取到所述顯示畫面中的一個所述測試控件后,將所述測試控件的控件屬性與所述當(dāng)前動作對應(yīng)的所述測試控件的控件屬性進(jìn)行匹配并得到匹配結(jié)果,并在所述匹配結(jié)果表示匹配成功時將被抓取的所述測試控件定位為所述當(dāng)前控件。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S4中,在對所述控件進(jìn)行操作之前,首先判斷所述當(dāng)前動作的所述動作屬性,并根據(jù)所述動作屬性確定對所述當(dāng)前控件進(jìn)行操作:
若所述當(dāng)前動作的所述動作屬性為設(shè)值,則對所述當(dāng)前控件進(jìn)行的操作為給所述控件賦值;
若所述當(dāng)前動作的所述動作屬性為執(zhí)行操作命令,則對所述當(dāng)前控件進(jìn)行的操作為執(zhí)行所述操作命令以操作所述控件;
若所述當(dāng)前動作的所述動作屬性為發(fā)送文字列消息,則操作所述當(dāng)前控件發(fā)送對應(yīng)的所述文字列消息;
若所述當(dāng)前動作的所述動作屬性為內(nèi)存復(fù)制,則將所述當(dāng)前控件的值保存于系統(tǒng)內(nèi)存中;
若所述當(dāng)前動作的所述動作屬性為內(nèi)存賦值,則將所述當(dāng)前控件的值更改為所述系統(tǒng)內(nèi)存中保存的值;
若所述當(dāng)前動作的所述動作屬性為邏輯判斷,則對保存于所述系統(tǒng)內(nèi)存中用于表示賦值的表達(dá)式進(jìn)行判斷,并根據(jù)判斷結(jié)果跳過關(guān)聯(lián)于所述當(dāng)前動作的預(yù)設(shè)的后續(xù)的所述測試動作;
若所述當(dāng)前動作的所述動作屬性為采用功能鍵組合的方式進(jìn)行操作,則通過向系統(tǒng)的輸入裝置發(fā)送對應(yīng)的功能鍵組合命令的方式操作所述當(dāng)前控件。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S5中,根據(jù)所述操作結(jié)果的類型進(jìn)行所述操作結(jié)果與所述預(yù)想結(jié)果之間的比較:
若所述操作結(jié)果為操作所述顯示畫面中包括的所述控件的結(jié)果,則系統(tǒng)讀取所述瀏覽器中的所述顯示畫面對應(yīng)的所述控件的信息,并將讀取到的信息與所述預(yù)想結(jié)果進(jìn)行比較;
若所述操作結(jié)果為對應(yīng)于所述瀏覽器中的一欄數(shù)據(jù)的結(jié)果,則系統(tǒng)讀取所述瀏覽器中對應(yīng)的所述一欄數(shù)據(jù),并將讀取到的信息與所述預(yù)想結(jié)果進(jìn)行比較;
若所述操作結(jié)果為系統(tǒng)的數(shù)據(jù)庫中的數(shù)據(jù),則系統(tǒng)讀取所述數(shù)據(jù)庫中的數(shù)據(jù),并讀取到的信息與所述預(yù)想結(jié)果進(jìn)行比較。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S5中,判斷所述當(dāng)前動作是否執(zhí)行成功:
若是,則保存關(guān)聯(lián)于所述當(dāng)前動作的所述操作結(jié)果,隨后繼續(xù)執(zhí)行所述步驟S5;
若否,則結(jié)束所述當(dāng)前用例的測試,并跳轉(zhuǎn)至下一個所述測試用例,隨后返回所述步驟S1。
優(yōu)選的,該測試設(shè)計書生成方法,其中,所述步驟S5中,將對應(yīng)的比較結(jié)果保存為所述當(dāng)前動作的測試結(jié)果后,跳轉(zhuǎn)至下一個所述測試動作:
若跳轉(zhuǎn)至的下一個所述測試動作表示對全局的控件進(jìn)行操作,則返回所述步驟S4。
上述技術(shù)方案的有益效果是:提供一種測試設(shè)計書生成方法,能夠?qū)崿F(xiàn)測試的可視化自動進(jìn)行,使得測試過程更直觀更有效率,簡化測試的操作,并且生成測試設(shè)計書更簡便和直觀,節(jié)省人力成本。
附圖說明
圖1是本發(fā)明的較佳的實(shí)施例中,自動填充生成的測試設(shè)計書的示意圖;
圖2是本發(fā)明的較佳的實(shí)施例中,根據(jù)測試設(shè)計書執(zhí)行自動測試的總體流程示意圖;
圖3-4是本發(fā)明的較佳的實(shí)施例中,預(yù)設(shè)測試用例的示意圖;
圖5是本發(fā)明的較佳的實(shí)施例中,預(yù)設(shè)畫面的示意圖;
圖6是本發(fā)明的較佳的實(shí)施例中,預(yù)設(shè)測試動作的示意圖;
圖7是本發(fā)明的較佳的實(shí)施例中,預(yù)設(shè)控件的示意圖;
圖8-10是本發(fā)明的較佳的實(shí)施例中,不同的預(yù)想結(jié)果的示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明,但不作為本發(fā)明的限定。
本發(fā)明的較佳的實(shí)施例中,基于現(xiàn)有技術(shù)中存在的上述問題,現(xiàn)提供一種測試設(shè)計書生成方法。該測試設(shè)計書生成方法中,按序預(yù)設(shè)多個測試用例,每個測試用例對應(yīng)于多個按序執(zhí)行的測試動作,每個測試動作對應(yīng)于一個測試控件,每個測試動作對應(yīng)于一個操作方法,每個測試控件對應(yīng)一個測試畫面,每個測試動作對應(yīng)多個預(yù)想結(jié)果;
于一測試設(shè)計書中分別設(shè)置測試用例名稱、測試動作名稱以及預(yù)想結(jié)果值;
根據(jù)測試用例中關(guān)聯(lián)于用例名稱的屬性值對測試用例名稱進(jìn)行填充;
根據(jù)測試動作中關(guān)聯(lián)于動作名稱的屬性值對測試動作名稱進(jìn)行填充;
分別將關(guān)聯(lián)于每個測試動作的預(yù)想結(jié)果填充至對應(yīng)的預(yù)想結(jié)果值中;
將經(jīng)過填充的測試設(shè)計書顯示在一測試設(shè)計畫面中。
上述實(shí)施例中,上述測試設(shè)計報告書的填充是通過系統(tǒng)自動填充的,并非由使用者手動填充,上文中所述的內(nèi)容僅僅為描述測試設(shè)計書中設(shè)置的項(xiàng)目以及每個項(xiàng)目對應(yīng)的數(shù)據(jù)來源。
本發(fā)明的較佳的實(shí)施例中,于測試設(shè)計書中對應(yīng)每個測試用例分別設(shè)置一初始化數(shù)據(jù)值;
分別將對應(yīng)于每個測試用例的初始化數(shù)據(jù)填充至對應(yīng)的初始化數(shù)據(jù)值中。
本發(fā)明的較佳的實(shí)施例中,于測試設(shè)計書中還設(shè)置一測試標(biāo)題。具體地,可以將不同的多個測試用例結(jié)合起來形成一個測試方案,該測試方案中的多個測試用例是相互關(guān)聯(lián)的,并且存在一定的執(zhí)行順序。換言之,該測試方案是一個包括多個測試用例的整體的測試項(xiàng)目。則上述測試設(shè)計書中設(shè)置的測試標(biāo)題可以以上述測試方案的標(biāo)題名稱為數(shù)據(jù)來源,即將上述測試方案的標(biāo)題名稱填充至測試設(shè)計書的測試標(biāo)題中。
則圖1為上述測試設(shè)計書的一種顯示示意圖。在圖1中,上述“系統(tǒng)管理”即為測試標(biāo)題,其數(shù)據(jù)源來自測試方案的標(biāo)題名稱。上述用例名稱的數(shù)據(jù)源來自每個測試用例的用例名稱的屬性值。上述測試動作的數(shù)據(jù)源來自關(guān)聯(lián)于每個測試動作的動作名稱的屬性值。上述預(yù)想結(jié)果值的數(shù)據(jù)源來自對應(yīng)于每個測試動作的預(yù)想結(jié)果(圖1中的初始化數(shù)據(jù)和預(yù)想結(jié)果值兩欄均未填充數(shù)據(jù))。上述圖1中顯示的其他項(xiàng)目均可以來自已經(jīng)預(yù)設(shè)好的測試用例和/或測試動作的相關(guān)數(shù)據(jù)源,在此不再一一贅述。
則本發(fā)明的較佳的實(shí)施例中,將本次需要執(zhí)行的所有測試用例對應(yīng)的所有測試動作按照測試用例被執(zhí)行的順序排列形成一測試動作列表,并根據(jù)測試設(shè)計書執(zhí)行一個自動測試方法,具體如圖2所示,包括:
步驟S1,于動作列表中選擇一個測試動作作為當(dāng)前動作,并將當(dāng)前動作對應(yīng)的測試用例作為當(dāng)前用例進(jìn)行測試;
步驟S2,將測試過程中系統(tǒng)瀏覽器中的顯示畫面的編號,和當(dāng)前動作對應(yīng)的測試畫面的編號進(jìn)行比較,以對顯示畫面進(jìn)行定位;
步驟S3,于被定位的顯示畫面中抓取匹配于當(dāng)前動作的測試控件作為當(dāng)前控件;
步驟S4,根據(jù)當(dāng)前動作的動作屬性,依據(jù)對應(yīng)的操作方法對被抓取的當(dāng)前控件進(jìn)行操作,隨后輸出對應(yīng)當(dāng)前動作的操作結(jié)果;
步驟S5,將操作結(jié)果與對應(yīng)當(dāng)前動作的預(yù)想結(jié)果進(jìn)行比較,以判斷當(dāng)前動作是否執(zhí)行成功,將對應(yīng)的比較結(jié)果保存為當(dāng)前動作的測試結(jié)果。
在一個具體實(shí)施例中,首先預(yù)設(shè)一個基礎(chǔ)測試用例,并且根據(jù)該基礎(chǔ)測試用例隨機(jī)生成多個衍生測試用例。上述基礎(chǔ)測試用例可以為使用者預(yù)先設(shè)定好相關(guān)參數(shù)的測試用例,上述多個衍生測試用例可以為根據(jù)基礎(chǔ)測試用例變換隨機(jī)變換相關(guān)參數(shù)生成的不同的測試用例。由于是從同一個基礎(chǔ)測試用例衍生生成的,因此基礎(chǔ)測試用例和衍生測試用例同屬于一個測試方案(或者測試項(xiàng)目)中。上述基礎(chǔ)測試用例和衍生測試用例均可以被確認(rèn)為測試用例。
則上述實(shí)施例中,將上述基礎(chǔ)測試用例和多個衍生測試用例全部填充到測試設(shè)計書中,以形成關(guān)聯(lián)于該測試方案(或者測試項(xiàng)目)的測試設(shè)計書。具體地,在填充上述測試用例之前,需要先形成上述所有測試用例的一個執(zhí)行順序,并且根據(jù)上述測試用例的執(zhí)行順序調(diào)整填充在測試設(shè)計書中的測試用例的填充位置。最終形成的測試設(shè)計書與一般的設(shè)計書不同,其不需要測試人員手動編寫測試設(shè)計書中的每個測試用例,同樣不需要測試人員手動填寫每個測試用例的具體參數(shù),從而節(jié)省了人力成本。
上述實(shí)施例中,測試設(shè)計書中的每個測試用例內(nèi)包括多個測試動作,每個測試動作對應(yīng)一個測試控件。每個測試控件對應(yīng)一個測試畫面,因此決定每個測試用例對應(yīng)于多個測試畫面。
具體地,上述測試用例是按序預(yù)設(shè)的,即按照一定的執(zhí)行順序預(yù)設(shè)多個測試用例,一個測試用例執(zhí)行完畢后就轉(zhuǎn)向執(zhí)行下一個測試用例。同樣地,在同一個測試用例中,不同的測試動作也按序排列,每個測試動作分別對應(yīng)于一個測試控件,每個測試控件分別對應(yīng)于一個測試畫面。上述測試畫面可以被劃分為開啟畫面以及后續(xù)畫面。對于一個測試用例來說,開啟畫面只有一個,后續(xù)畫面可以存在多個,上述開啟畫面可以為測試用例執(zhí)行的第一個畫面,后續(xù)畫面為在上述開啟畫面之后并且依序排列的顯示畫面。每個測試畫面(包括開啟畫面和后續(xù)畫面)均為操作一個測試控件所對應(yīng)的畫面。例如對于用戶登錄這個測試用例而言,其中可以包括輸入用戶名和密碼的測試動作,以及點(diǎn)擊登錄控件的測試動作。則對應(yīng)上述登錄控件的測試畫面可以為提供給使用者可以輸入用戶名和密碼的登錄畫面,并且該畫面可以作為測試用例的開啟畫面,上述測試用例的多個后續(xù)畫面可以為登錄成功后顯示的系統(tǒng)瀏覽器的其他畫面,或者顯示登錄失敗的畫面。上述畫面依照測試邏輯排序。
上述實(shí)施例中,測試用例的設(shè)置界面如圖3-4所示。該測試用例中的開啟畫面的名稱為“賬戶信息”,該測試用例的名稱為“進(jìn)入修改賬戶密碼界面”,該測試用例的前期關(guān)聯(lián)測試用例為“進(jìn)入賬戶信息界面”,相應(yīng)地,該測試用例的前期關(guān)聯(lián)測試用例還包括“登錄”、“進(jìn)入系統(tǒng)管理”和“進(jìn)入賬戶信息界面”,上述前期關(guān)聯(lián)測試用例依序排列。圖2中所示的測試用例的設(shè)置界面為可視化界面,并非現(xiàn)有技術(shù)中代碼級的設(shè)置界面,因此可以簡化測試用例的設(shè)置過程。圖4中示出了上述預(yù)設(shè)的測試用例列表。
上述實(shí)施例中,關(guān)聯(lián)于測試用例的測試畫面(包括開啟畫面和后續(xù)畫面)的設(shè)置界面如圖5所示。圖5中的畫面信息中包括畫面序號(ID)、畫面名稱以及畫面訪問地址。所謂的訪問地址是指URL(Uniform Resoure Locator,統(tǒng)一資源定位)地址。上述畫面設(shè)置界面同樣為可視化界面。
上述實(shí)施例中,測試動作的設(shè)置界面如圖6所示,圖6中的測試動作可以配置為“嵌入檢索條件”,其中關(guān)聯(lián)有多個顯示畫面的名稱、多個控件名稱、多個動作屬性(方法)以及多個測試動作的賦值等。上述測試動作的設(shè)置界面同樣為可視化易操作的。
上述實(shí)施例中,每個測試動作對應(yīng)的操作方法可以由動作屬性經(jīng)過一系列計算得到,而上述動作屬性可以由對應(yīng)的表達(dá)式表示。
上述實(shí)施例中,將設(shè)置完成的關(guān)聯(lián)于不同的測試用例的測試動作形成一個動作列表。具體地,例如按序排列分別設(shè)置有測試用例A、B和C,在測試用例A中按序排列分別設(shè)置有測試動作A1、A2和A3,在測試用例B中按序排列分別設(shè)置有測試動作B1和B2,在測試用例C中按序排列分別設(shè)置有測試動作C1、C2、C3和C4,則上述動作列表即可以為按序排列的A1、A2、A3、B1、B2、C1、C2、C3、C4。
上述實(shí)施例中,每個測試動作相關(guān)聯(lián)的控件的設(shè)置界面如圖7所示。在圖7中,每個控件的控件信息中包括控件序號(ID)、控件標(biāo)題、控件類型、控件的前端技術(shù)、控件定位用的屬性名稱、控件定位用的屬性值、控件的最大值/最小值/最大長度/最小長度、控件的默認(rèn)值、控件的正確值列表/錯誤值列表等。上述控件的設(shè)置畫面也是可視化畫面。
上述實(shí)施例中,上述測試用例、測試動作、畫面以及控件等的設(shè)置均可以依照以下兩種方式進(jìn)行:1)由系統(tǒng)預(yù)先設(shè)定;2)在系統(tǒng)中預(yù)先設(shè)定了各測試元素,則使用者可以通過相應(yīng)的可視化界面選擇不同的測試元素并組合形成測試用例、測試動作、畫面以及控件等設(shè)置信息。
上述實(shí)施例中所述的預(yù)想結(jié)果的設(shè)置界面在下文中會詳述。
則上述實(shí)施例中,針對本次需要執(zhí)行的所有測試用例,按照不同測試用例的排序,將其中包括的所有測試動作放置在一個動作列表中。
隨后,根據(jù)上述測試設(shè)計書,可以執(zhí)行一個自動測試方法,該方法如圖1所示。上述步驟S1中,首先選擇一個測試動作開始執(zhí)行測試。具體地,針對該測試動作,可以確定相應(yīng)的測試用例,并將被確定的測試用例作為當(dāng)前用例開始測試。
上述實(shí)施例中,在定位好當(dāng)前動作和當(dāng)前用例后,監(jiān)控瀏覽器的顯示畫面的切換狀態(tài),找到瀏覽器當(dāng)前加載完成的顯示畫面的畫面編號,并將當(dāng)前動作的測試畫面的編號與該顯示畫面的編號進(jìn)行對比,即根據(jù)當(dāng)前的顯示畫面的畫面編號去與對應(yīng)當(dāng)前動作的測試畫面進(jìn)行匹配,從而將當(dāng)前瀏覽器的顯示畫面定位為當(dāng)前用例中對應(yīng)于當(dāng)前動作的一個測試畫面。
上述實(shí)施例中,在定位好顯示畫面后,對顯示畫面中的顯示內(nèi)容進(jìn)行分分析,并抓取顯示畫面中的所有控件的實(shí)時信息,根據(jù)顯示畫面中抓取的控件的相關(guān)信息與測試動作對應(yīng)的控件信息(例如定位用屬性)進(jìn)行匹配,從而可以定位準(zhǔn)確的控件,并記錄被定位的控件的位置信息。具體地,抓取到顯示畫面中的一個控件后,將控件的控件屬性與當(dāng)前動作對應(yīng)的測試控件的控件屬性進(jìn)行匹配并得到匹配結(jié)果,并在匹配結(jié)果表示匹配成功時將被抓取的控件定位為當(dāng)前控件。例如,抓取到一個控件后,將該控件與測試動作所對應(yīng)的測試控件進(jìn)行比較:若不同,則表示不是當(dāng)前動作的控件;若相同,則表示是當(dāng)前動作的控件。隨后將匹配成功的控件確認(rèn)為當(dāng)前控件。因此,上述定位控件的方式可以包括:首先采用測試動作所對應(yīng)的測試控件定位到一個測試畫面,該測試畫面即為當(dāng)前顯示的顯示畫面。由于在顯示畫面中可能不僅僅包括一個控件,因此在該顯示畫面中還需要通過控件屬性對比的方式定位到上述測試動作所對應(yīng)的測試控件,以完成測試控件的定位。
上述實(shí)施例中,當(dāng)定位到測試控件之后,可以根據(jù)當(dāng)前動作的動作屬性對該測試控件執(zhí)行相應(yīng)的操作,隨后當(dāng)前動作執(zhí)行完畢,記錄對應(yīng)當(dāng)前動作的操作結(jié)果。
上述實(shí)施例中,得到操作結(jié)果后,將該操作結(jié)果與當(dāng)前動作對應(yīng)的預(yù)想結(jié)果進(jìn)行比較,以判斷當(dāng)前動作是否操作成功,并記錄比較結(jié)果。
在上述過程執(zhí)行完畢后,判斷當(dāng)前動作執(zhí)行完畢,隨后轉(zhuǎn)向下一個測試動作,并返回上述步驟S1。
綜上所述,上述實(shí)施例中,通過可視化的操作方法,將預(yù)先設(shè)置測試用例、測試動作、測試控件、測試畫面以及預(yù)想結(jié)果等測試參數(shù)的過程變得簡單易懂,并且可以便捷地根據(jù)這些被設(shè)置好的測試參數(shù)自動進(jìn)行可視化的軟件測試,能夠滿足人們的軟件測試需求,并且提升了軟件測試的效率。
本發(fā)明的較佳的實(shí)施例中,仍然如圖1所示,于測試設(shè)計書中對應(yīng)每個測試動作分別設(shè)置一結(jié)果值;
于執(zhí)行步驟S5后,分別將對應(yīng)于每個測試動作的測試結(jié)果填充至對應(yīng)的結(jié)果值中。例如,根據(jù)測試結(jié)果,在結(jié)果值中填入“成功”或者“失敗”。
本發(fā)明的一個較佳的實(shí)施例中,在上述步驟S1中,在執(zhí)行關(guān)聯(lián)于當(dāng)前用例的每個測試動作之前,根據(jù)測試動作的動作屬性判斷是否需要打開對應(yīng)于測試動作的測試控件的測試畫面,并在需要時提取關(guān)聯(lián)于測試畫面的地址以打開測試畫面。具體地,上述實(shí)施例中,在執(zhí)行每個測試動作之前,都需要判斷下是否需要加載該測試動作對應(yīng)的測試控件的測試畫面:若需要,則加載相應(yīng)的測試畫面;若不需要,則不對畫面做任何變動。上述實(shí)施例中,上述測試畫面的提取和加載是通過提取對應(yīng)控件的對應(yīng)畫面的URL地址實(shí)現(xiàn)的。具體地,通過提取對應(yīng)控件的對應(yīng)畫面相關(guān)的URL地址,使用當(dāng)前用例指定的啟動參數(shù),并在瀏覽器中打開對應(yīng)的URL地址,以對當(dāng)前用例進(jìn)行測試。若當(dāng)前指定的瀏覽器已被打開,則只需要通過提取畫面相關(guān)的URL地址來更新瀏覽器中的顯示畫面即可。并且,上述實(shí)施例中,所謂測試動作的動作屬性,其中可以包括測試動作與其前后順序的動作之間的關(guān)聯(lián)關(guān)系。系統(tǒng)可以通過判斷測試動作與其前后動作的關(guān)系,然后判斷是否需要提取相應(yīng)的URL地址并打開相應(yīng)的測試畫面。
本發(fā)明的另一個較佳的實(shí)施例中,上述步驟S1中,在執(zhí)行關(guān)聯(lián)于當(dāng)前用例的第一個測試動作時,提取對應(yīng)于當(dāng)前用例的第一個測試控件的測試畫面作為開啟畫面,并通過關(guān)聯(lián)于開啟畫面的地址打開開啟畫面,以開始對當(dāng)前用例進(jìn)行測試。具體地,上述實(shí)施例中,只有在執(zhí)行一個測試用例中的第一個測試動作時,才加載該測試動作對應(yīng)的測試控件的測試畫面,以作為開啟畫面。具體地,在首次開始測試時,可以選擇上述動作列表中的第一個測試動作并開始測試。則選擇好測試動作后,將該測試動作作為當(dāng)前動作,并根據(jù)當(dāng)前動作定位到對應(yīng)的測試用例,將該測試用例作為當(dāng)前用例,隨后提取該當(dāng)前動作對應(yīng)的測試控件對應(yīng)的測試畫面并開始進(jìn)行測試。上述實(shí)施例中,由于首次開始測試時的測試動作為第一個測試動作,則上述被提取的畫面應(yīng)當(dāng)也為相應(yīng)的當(dāng)前用例的開啟畫面。同樣地,加載和提取開啟畫面的方法與上一個實(shí)施例相同,即通過提取開啟畫面的URL地址并使用當(dāng)前用例指定的啟動參數(shù),在指定的系統(tǒng)瀏覽器中打開來實(shí)現(xiàn)。
本發(fā)明的較佳的實(shí)施例中,在開始執(zhí)行上述每個測試用例之前,首先設(shè)定該測試用例的初始化數(shù)據(jù),即對測試用例的數(shù)據(jù)進(jìn)行初始化操作。所謂對數(shù)據(jù)進(jìn)行初始化操作,其中可以包括:對數(shù)據(jù)庫中相應(yīng)的數(shù)據(jù)做初始化處理,以避免之前的測試數(shù)據(jù)遺留影響本次測試,又或者在數(shù)據(jù)庫中添加相應(yīng)的初始化數(shù)據(jù),以形成一個測試的初始化測試環(huán)境,保證測試開始的環(huán)境的統(tǒng)一性等。
因此,在本發(fā)明的一個較佳的實(shí)施例中,在執(zhí)行到一個新的測試動作時,首先需要判斷該測試動作是否為某個測試用例的第一個測試動作:若是,則需要對測試用例先進(jìn)行初始化數(shù)據(jù)的操作,隨后再執(zhí)行測試動作;若否,則直接執(zhí)行該測試動作。
又或者,在本發(fā)明的另一個較佳的實(shí)施例中,對每個測試用例的開啟畫面進(jìn)行標(biāo)記。在測試過程中,當(dāng)跳轉(zhuǎn)至一個開啟畫面時,則對相應(yīng)的測試用例進(jìn)行初始化數(shù)據(jù)的操作,隨后再執(zhí)行開啟畫面對應(yīng)的測試動作。
本發(fā)明的較佳的實(shí)施例中,上述步驟S1中,當(dāng)將測試用例確認(rèn)為當(dāng)前用例后提取當(dāng)前用例的初始化數(shù)據(jù),以開始對當(dāng)前用例進(jìn)行測試;
提取對應(yīng)于當(dāng)前用例的第一個測試控件的測試畫面的地址作為開啟畫面,隨后使用當(dāng)前用例指定的啟動參數(shù)打開開啟畫面,并進(jìn)行測試。
上述實(shí)施例中,所謂啟動參數(shù),是指打開上述作為開始畫面的測試畫面的標(biāo)準(zhǔn)網(wǎng)絡(luò)參數(shù)。
本發(fā)明的一個較佳的實(shí)施例中,上述步驟S2具體包括:獲取對應(yīng)于當(dāng)前動作的后續(xù)的測試動作的測試畫面的編號,同時監(jiān)控顯示畫面的編號,在顯示畫面的編號與測試畫面的編號一致時,確認(rèn)顯示畫面切換成功,以對顯示畫面進(jìn)行定位。具體地,上述步驟S2中,若當(dāng)前的顯示畫面的編號與當(dāng)前動作的后續(xù)動作對應(yīng)的測試畫面的編號一致,則認(rèn)為當(dāng)前的顯示畫面切換成功,從而將該顯示畫面定位為當(dāng)前動作的后續(xù)動作的測試畫面。
本發(fā)明的另一個較佳的實(shí)施例中,上述步驟S2具體包括:獲取對應(yīng)于當(dāng)前動作的后續(xù)的測試畫面的編號,同時監(jiān)控顯示畫面的編號,在顯示畫面的編號與測試畫面的編號一致時,確認(rèn)顯示畫面切換成功,以對顯示畫面進(jìn)行定位。具體地,上述步驟S2中,若當(dāng)前的顯示畫面的編號與當(dāng)前動作的后續(xù)畫面的編號一致,則認(rèn)為當(dāng)前的顯示畫面切換成功,從而將該顯示畫面定位為當(dāng)前動作的后續(xù)畫面。
本發(fā)明的較佳的實(shí)施例中,上述步驟S4中,在對控件進(jìn)行操作之前,首先判斷當(dāng)前動作的動作屬性,并根據(jù)動作屬性確定對當(dāng)前控件進(jìn)行操作:
若當(dāng)前動作的動作屬性為設(shè)值,則對當(dāng)前控件進(jìn)行的操作為給控件賦值,例如對控件賦予一個預(yù)先設(shè)定的數(shù)值等。
若當(dāng)前動作的動作屬性為執(zhí)行操作命令,則對當(dāng)前控件進(jìn)行的操作為執(zhí)行操作命令以操作控件,例如操作命令為“點(diǎn)擊”,則可以對當(dāng)前控件執(zhí)行點(diǎn)擊控件的操作。
若當(dāng)前動作的動作屬性為采用功能鍵組合的方式進(jìn)行操作,則通過向系統(tǒng)的輸入裝置發(fā)送對應(yīng)的功能鍵組合命令的方式操作當(dāng)前控件,例如功能鍵組合為組合輸入鍵盤上的“Shift”按鍵、“Alt”按鍵和“Enter”按鍵,則系統(tǒng)可以向鍵盤發(fā)送相應(yīng)的功能鍵組合命令,以通知鍵盤輸出上述三個按鍵的組合按鍵指令。
若當(dāng)前動作的動作屬性為發(fā)送文字列消息,則操作當(dāng)前控件發(fā)送對應(yīng)的文字列消息,具體地可以通過瀏覽器發(fā)送對應(yīng)的文字列消息。
若當(dāng)前動作的動作屬性為內(nèi)存復(fù)制,則將當(dāng)前控件的賦值保存于系統(tǒng)內(nèi)存中;具體地,可以將當(dāng)前控件的賦值或者其他特定值保存到系統(tǒng)內(nèi)存中,即實(shí)現(xiàn)系統(tǒng)內(nèi)存的“剪貼板”功能。
若當(dāng)前動作的動作屬性為內(nèi)存賦值,則可以根據(jù)當(dāng)前動作的動作屬性,將系統(tǒng)內(nèi)存中已經(jīng)保存的值賦到當(dāng)前控件中。
若當(dāng)前動作的動作屬性為邏輯判斷,則可以對內(nèi)存中保存的值進(jìn)行判斷,并根據(jù)判斷結(jié)果跳過預(yù)設(shè)的后續(xù)的測試動作。具體地,所謂邏輯判斷,其為對系統(tǒng)內(nèi)存中表示賦值的表達(dá)式進(jìn)行判斷,例如判斷該表達(dá)式是否大于/小于某個預(yù)設(shè)值,或者判斷系統(tǒng)內(nèi)存中保存的值是否為true/false。而上述表示跳過動作的跳過方案可以預(yù)設(shè)在不同的測試動作的測試屬性中。具體的判斷過程可以為:判斷上述系統(tǒng)內(nèi)存中保存的數(shù)值的表達(dá)式,并根據(jù)判斷結(jié)果確定是否需要執(zhí)行上述預(yù)設(shè)的跳過方案,來跳過一個或多個后續(xù)的測試動作。上述實(shí)施例中,上述跳過方案中同樣可以不包括任何一個后續(xù)動作,即無論判斷結(jié)果如何,都不需要跳過任何一個后續(xù)動作。
本發(fā)明的較佳的實(shí)施例中,如上文中所述,若當(dāng)前的畫面發(fā)生跳轉(zhuǎn),則可以監(jiān)控瀏覽器的顯示內(nèi)容,進(jìn)而定位到新的畫面編號,以及定位到新的測試控件。
本發(fā)明的較佳的實(shí)施例中,上述步驟S5中,根據(jù)操作結(jié)果的類型進(jìn)行操作結(jié)果與預(yù)想結(jié)果之間的比較:
若操作結(jié)果為操作顯示畫面的控件的結(jié)果,則系統(tǒng)讀取瀏覽器中的顯示畫面中包括的對應(yīng)的控件的信息,并將讀取到的信息與預(yù)想結(jié)果進(jìn)行比較;具體地,在對控件的信息和預(yù)想結(jié)果進(jìn)行比較時,是對一批控件進(jìn)行統(tǒng)一比較,例如抓取當(dāng)前的顯示畫面中的所有控件對應(yīng)的信息,并分別與預(yù)想結(jié)果進(jìn)行比較。
若操作結(jié)果為對應(yīng)于瀏覽器中的一欄數(shù)據(jù)的結(jié)果,則系統(tǒng)讀取瀏覽器中對應(yīng)的一欄數(shù)據(jù),并將讀取到的信息與預(yù)想結(jié)果進(jìn)行比較;
若操作結(jié)果為系統(tǒng)的數(shù)據(jù)庫中的數(shù)據(jù),則系統(tǒng)讀取數(shù)據(jù)庫中的數(shù)據(jù),并讀取到的信息與預(yù)想結(jié)果進(jìn)行比較。
具體地,本發(fā)明的較佳的實(shí)施例中,上述預(yù)想結(jié)果預(yù)先設(shè)置的設(shè)置界面如圖8-10所示:
圖8中示出畫面中控件的預(yù)想結(jié)果,其中可以包括控件的ID,控件標(biāo)題,預(yù)想結(jié)果的類型以及預(yù)想結(jié)果的值。
圖9中示出表格類的預(yù)想結(jié)果,其中可以包括控件ID、控件的標(biāo)題,預(yù)想件數(shù)、比較件數(shù)以及表格數(shù)據(jù)等屬性。
圖10中示出了數(shù)據(jù)庫類的預(yù)想結(jié)果,其中可以包括檢索條件、排序條件、限制條數(shù)以及數(shù)據(jù)等屬性。
則本發(fā)明的較佳的實(shí)施例中:
若為控件比較,則系統(tǒng)讀取瀏覽器中對應(yīng)控件的信息,并將讀取到的信息與預(yù)想結(jié)果進(jìn)行比較;
若為一欄數(shù)據(jù)的比較,則系統(tǒng)讀取瀏覽器中對應(yīng)的一欄數(shù)據(jù),并將讀取到的信息與預(yù)想結(jié)果進(jìn)行比較;
若為數(shù)據(jù)庫的比較,則系統(tǒng)讀取指定的數(shù)據(jù)庫中的數(shù)據(jù),并將讀取到的信息與預(yù)想結(jié)果進(jìn)行比較。
本發(fā)明的較佳的實(shí)施例中,上述步驟S5中,判斷當(dāng)前動作是否執(zhí)行成功:
若是,則保存關(guān)聯(lián)于當(dāng)前動作的操作結(jié)果,隨后繼續(xù)執(zhí)行步驟S5;
若否,則結(jié)束當(dāng)前用例的測試,并跳轉(zhuǎn)至下一個測試用例,隨后返回步驟S1。
具體地,本發(fā)明的較佳的實(shí)施例中:
若當(dāng)前動作執(zhí)行成功,則自然跳轉(zhuǎn)到同一個當(dāng)前用例的下一個測試動作并執(zhí)行(繼續(xù)執(zhí)行步驟S5),同時保存執(zhí)行成功的操作結(jié)果。
若當(dāng)前動作執(zhí)行失敗,則結(jié)束當(dāng)前用例的測試,并跳轉(zhuǎn)至下一個測試用例執(zhí)行(返回步驟S1),在動作列表中即為跳過當(dāng)前用例對應(yīng)的后續(xù)的測試動作,從下一個測試用例的第一個測試動作重新開始進(jìn)行測試。
本發(fā)明的較佳的實(shí)施例中,在一個當(dāng)前動作的操作結(jié)果完成時,可以對瀏覽器的顯示頁面(即表示操作結(jié)果的頁面)進(jìn)行截圖保存,并且在截圖中標(biāo)注出當(dāng)前動作對應(yīng)的控件的位置(通過之前的控件定位進(jìn)行標(biāo)注)。
本發(fā)明的一個較佳的實(shí)施例中,上述步驟S5中,將對應(yīng)的比較結(jié)果保存為當(dāng)前動作的測試結(jié)果后,跳轉(zhuǎn)至下一個測試動作:
若跳轉(zhuǎn)至的下一個測試動作表示對全局的控件進(jìn)行操作,則返回步驟S4。
本發(fā)明的一個較佳的實(shí)施例中,上述步驟S5中,將對應(yīng)的比較結(jié)果保存為當(dāng)前動作的測試結(jié)果后,跳轉(zhuǎn)至下一個測試動作。
本發(fā)明的較佳的實(shí)施例中,上述測試設(shè)計書生成方法以及相應(yīng)的自動測試方法可以適用于任何一個主流的軟件系統(tǒng)中,這是因?yàn)樵陬A(yù)設(shè)上述測試用例、測試動作、測試控件、測試畫面等的數(shù)據(jù)庫中預(yù)先保證了主流軟件系統(tǒng)中需要用到的驅(qū)動方法的實(shí)現(xiàn)方式,從而保證了主流軟件系統(tǒng)中的動作方法的驅(qū)動。
以上所述僅為本發(fā)明較佳的實(shí)施例,并非因此限制本發(fā)明的實(shí)施方式及保護(hù)范圍,對于本領(lǐng)域技術(shù)人員而言,應(yīng)當(dāng)能夠意識到凡運(yùn)用本發(fā)明說明書及圖示內(nèi)容所作出的等同替換和顯而易見的變化所得到的方案,均應(yīng)當(dāng)包含在本發(fā)明的保護(hù)范圍內(nèi)。