專利名稱:支持Python擴(kuò)展的測試方法
技術(shù)領(lǐng)域:
本方法一種支持Python擴(kuò)展的測試方法,涉及一種軟件自動化測試領(lǐng)域、語言應(yīng)用擴(kuò)展領(lǐng)域。能夠根據(jù)具體測試需求的變更,更加靈活的擴(kuò)展出新的測試應(yīng)用。本方法是利用Python測試腳本語言的靈活特性,以及其解釋器的快速移植性,將Python測試腳本語言的用于測試領(lǐng)域,對測試應(yīng)用提供更好的支持。該方法需要將Python解釋器嵌入測試系統(tǒng)中,并將系統(tǒng)的測試驅(qū)動模塊與Python本身的模塊相整合,使得Python腳本的執(zhí)行能夠驅(qū)動測試的運(yùn)行。同時(shí),針對測試的需求變更,系統(tǒng)支持對Python測試腳本語言的擴(kuò)展,從而進(jìn)一步提高腳本對測試的應(yīng)變支持能力。
背景技術(shù):
隨著移動終端設(shè)備在人們生活中的大量普及,移動終端所能完成的功能也日趨豐富多彩,但隨之而來是終端軟件的質(zhì)量問題不斷涌現(xiàn)。因此,在智能終端投放市場前對終端的全面測試便成了智能終端軟件開發(fā)商亟待解決的問題。
但是智能終端還處于一個(gè)不斷成熟和完善的階段,各種新的功能不斷被提出和實(shí)現(xiàn),因此對于這種終端軟件的測試方法的要求,除了能夠完成現(xiàn)有軟件功能的測試外,還需要具有良好的通用性,更重要的是要具有非常好的擴(kuò)展性,能夠在新的測試需求提出后,在最短的時(shí)間和代價(jià)內(nèi)完成對新需求的測試工作。
目前,主要的測試手段是腳本驅(qū)動的測試方式,在這種類型的測試方法的靈活性主要取決于兩點(diǎn), 一個(gè)是腳本語言本身的描述能力,另外一個(gè)是解釋器的解釋能力。因此,為了提高測試方法的擴(kuò)展性,需要從上述兩個(gè)方面入手選取描述能力比較強(qiáng)的腳本語言,如果必要,通過各種手段擴(kuò)充其腳本的描述能力;從解釋器部分入手,不僅僅將腳本的執(zhí)行局限在解釋器所能解釋的語義范圍內(nèi),而是將解釋的環(huán)節(jié)進(jìn)行擴(kuò)充或者修改,達(dá)到利于擴(kuò)展的目的。
發(fā)明內(nèi)容
本發(fā)明的目的在于,通過提供一種支持Python擴(kuò)展的測試方法,利用Python的語言靈活性,以及其解釋器的快速移植性,將Python的用于測試領(lǐng)域,對測試應(yīng)用提供更好的支持。該方法需要將Python解釋器嵌入測試系統(tǒng)中,并將系統(tǒng)的測試驅(qū)動模塊與Python解釋器本身的模塊相整合,使得Python腳本的執(zhí)行能夠驅(qū)動測試的運(yùn)行。同時(shí),針對測試的需求變更,系統(tǒng)支持用戶對Python的擴(kuò)展,從而進(jìn)一步提高腳本對測試的支持能力。
本發(fā)明是采用以下技術(shù)手段實(shí)現(xiàn)的
一種支持Python擴(kuò)展的測試方法,支持該方法的測試系統(tǒng)包括了 Python解釋器以及Python腳本編輯器,并將Python解釋器嵌入測試系統(tǒng)中,使系統(tǒng)的測試驅(qū)動模塊與Python解釋器本身的模塊相整合,從而Python腳本的執(zhí)行能夠驅(qū)動測試的運(yùn)行;同時(shí),針對測試的需求變更,系統(tǒng)支持用戶對Python的擴(kuò)展;包括以下步驟;
建立一個(gè)基于腳本驅(qū)動的測試環(huán)境;
a、 測試配置與用例設(shè)計(jì)模塊,按照被測終端的特點(diǎn)以及測試要求,配置相應(yīng)的測試環(huán)境,設(shè)計(jì)符合測試方案要求的測試用例;
b、 Python腳本編輯模塊,根據(jù)設(shè)計(jì)的測試用例將測試的輸入、輸出、判斷操作以腳本形式進(jìn)行描述;
c、 Python解釋器模i央,針對Python測試腳本語言的解釋工具,將腳本中描述的各項(xiàng)操作解釋為實(shí)際被測終端上的輸入數(shù)據(jù),并且根據(jù)測試的反饋數(shù)據(jù)對腳本執(zhí)行進(jìn)行邏輯調(diào)度;
d、 腳本解釋器的擴(kuò)展模塊,將解釋器的解釋能力開放給用戶,提供對解釋器的定制以及擴(kuò)充。
e、 測試驅(qū)動模塊,將解釋器解析出的輸入數(shù)據(jù)傳送到被測終端,并按照該數(shù)據(jù)驅(qū)動終端運(yùn)行,然后捕獲相應(yīng)的結(jié)果數(shù)據(jù);
f、 被測終端,為實(shí)際的被測系統(tǒng)。
前述的測試系統(tǒng)采用基于腳本語言的測試用例描述和測試驅(qū)動模式進(jìn)行構(gòu)建。測試腳本語言采用Python,并將Python解釋器嵌入測試系統(tǒng)。前述的測試用例使用Python腳本進(jìn)行描述;這種定義測試用例的Python腳
本內(nèi)容包括測試對象、測試動作、測試結(jié)果。
執(zhí)行測試時(shí),測試系統(tǒng)采用Python腳本定義的測試用例提交給腳本解釋器。前述的Python腳本解釋器解釋測試用例,并生成相應(yīng)的測試指令,測試指令
提交給測試系統(tǒng)中的測試驅(qū)動模塊。
測試驅(qū)動模塊根據(jù)測試指令產(chǎn)生相應(yīng)的測試動作,驅(qū)動被測終端,在被測試終
端上執(zhí)行并產(chǎn)生測試結(jié)果。
前述的測試系統(tǒng)支持用戶擴(kuò)展測試對象、測試動作、以及測試數(shù)據(jù)類型。前述的支持用戶擴(kuò)展測試對象、測試動作、以及測試數(shù)據(jù)類型,支持用戶在
Python中引入新的語言要素,擴(kuò)展腳本解釋模塊;系統(tǒng)支持用戶定義其引入的語
言要素的執(zhí)行,以及相應(yīng)的指令驅(qū)動方式。
本發(fā)明一種支持Python擴(kuò)展的測試方法,與現(xiàn)有技術(shù)相比,具有以下明顯的優(yōu)
勢和有益效果
本發(fā)明首先是將Python的嵌入測試系統(tǒng),使得測試系統(tǒng)能夠根據(jù)腳本解釋器的輸出相掛鉤,隨著解釋的進(jìn)行,系統(tǒng)根據(jù)解釋的輸出產(chǎn)生測試指令,并驅(qū)動測試執(zhí)行。然后針對不同的測試領(lǐng)域的測試驅(qū)動方式以及測試數(shù)據(jù)都的不同,擴(kuò)展出相應(yīng)的解釋模塊,以支持新的數(shù)據(jù)類型以及驅(qū)動方式,當(dāng)擴(kuò)展完成后,整個(gè)測試系統(tǒng)不
需要或只需要做很小的改動便可以支持新的測試需求。
基于腳本的測試過程,其靈活性很大程度上取決于腳本描述的能力以及解釋器的解釋能力。將Python應(yīng)用于測試領(lǐng)域,充分利用了 Python語言靈活的描述特性,以及其語法的嚴(yán)謹(jǐn)性,其描述能力有其先天的優(yōu)勢。另外,其解釋器的穩(wěn)定與高效性也提高了測試系統(tǒng)本身的測試穩(wěn)定性。
對于測試系統(tǒng)而言,其測試能力的首要標(biāo)準(zhǔn)是其對測試需求的滿足程度。隨著被測系統(tǒng)發(fā)展,將不斷提出新的測試需求,要求測試系統(tǒng)能夠快速提出解決方案并實(shí)施測試。本方法將測試系統(tǒng)建立在解釋器層次之上,對于新的需求直接從解釋器本身入手,根據(jù)統(tǒng)一標(biāo)準(zhǔn)擴(kuò)展出相應(yīng)的測試模塊,而這樣的模塊都能夠同系統(tǒng)進(jìn)行無縫連接,提高了系統(tǒng)的擴(kuò)展性,從而提高了系統(tǒng)的測試能力。本發(fā)明可以帶來如下有益效果
1、 測試方式的靈活性得到突出表現(xiàn)。本方法支持用戶在測試設(shè)計(jì)的過程中,不拘泥與測試平臺本身的能力,動態(tài)擴(kuò)展需要或更加易用的測試模塊,以達(dá)到測試的靈活實(shí)施。
2、 對于測試腳本語言本身,由于本方法是一種在原有腳本語言基礎(chǔ)上的擴(kuò)展支持,因此原有的語言特性以及通用模塊都可以用于現(xiàn)有的測試環(huán)境中,使得腳本語言本身的能力充分被利用起來。
3、 對于擴(kuò)展的支持,充分體現(xiàn)了對測試需求更新的適應(yīng)能力,對于一個(gè)增量型開發(fā)的軟件或系統(tǒng),給測試人員提供一套完善方法進(jìn)行遞進(jìn)式的測試支持,降低了測試成本,提高了測試開發(fā)、維護(hù)以及執(zhí)行的效率。
說明書附圖
圖1為Python擴(kuò)展測試方法的整體架構(gòu)示意圖;圖2為基于Python擴(kuò)展測試方法的模塊示意圖;圖3為基于Python擴(kuò)展的實(shí)施步驟示意圖。
具體實(shí)施例方式
為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明,下面通過具體實(shí)施方式
對本發(fā)明作進(jìn)一步的詳細(xì)和深入描述。
圖1中展示了基于Python擴(kuò)展測試方法的整體架構(gòu)。在一個(gè)基于腳本驅(qū)動的測試環(huán)境的中,測試步驟如圖l所示測試用例設(shè)計(jì)FOl,按照被測終端的特點(diǎn)以及測試要求,設(shè)計(jì)符合測試方案要求的測試用例,測試用例中需要標(biāo)明測試的輸入、輸出以及通過條件等;Python腳本編輯F02,是根據(jù)設(shè)計(jì)的測試用例將測試的輸入、輸出、判斷等操作以腳本形式進(jìn)行描述;Python解釋器F03,是針對Python腳本的解釋工具,能夠?qū)⒛_本中描述的各項(xiàng)操作解釋為實(shí)際被測終端上的輸入數(shù)據(jù),并
7且根據(jù)測試的反饋數(shù)據(jù)對腳本執(zhí)行進(jìn)行邏輯調(diào)度;測試驅(qū)動F04,將解釋器解析出的輸入數(shù)據(jù)傳送到被測終端,并按照該數(shù)據(jù)驅(qū)動終端運(yùn)行,然后捕獲相應(yīng)的結(jié)果數(shù)據(jù);F05被測終端,為實(shí)際的被測系統(tǒng);腳本解釋器的擴(kuò)展F06,是對傳統(tǒng)基于腳本解釋驅(qū)動測試在解釋器層次上的擴(kuò)展,該擴(kuò)展功能將解釋器的解釋能力開放給用
戶,提供對解釋器的定制以及擴(kuò)充功能,能夠使得測試腳本能力的擴(kuò)充更加靈活和方便。
圖2是基于Python擴(kuò)展測試方法的模塊設(shè)計(jì)。測試腳本存儲模塊MOl,用戶保存及規(guī)范化管理用戶定制的測試腳本,方便存取調(diào)度。
M02為測試腳本解釋器模塊,該模塊是以Python解釋器為核心,擴(kuò)展了測試相關(guān)解釋模塊,并通過測試函數(shù)執(zhí)行模塊將解釋所得的測試行為以規(guī)范化形式發(fā)送給測試驅(qū)動模塊,從而驅(qū)動被測終端的運(yùn)行。Python解釋器M21,是Python測試腳本語言自帶的解釋器,包含Python腳本語言基本的功能模塊,具備基本的解釋執(zhí)行能力;將Python腳本語言用于測試領(lǐng)域,需要擴(kuò)展出針對測試的測試原語,即固有測試函數(shù)擴(kuò)展模塊M22,這里提供了用戶對終端最基本的操作能力,包括信號激勵、信息捕獲等;用戶自定義測試函數(shù)擴(kuò)展模塊M23,針對特定被測終端可進(jìn)行特定測試能力的擴(kuò)展,由測試環(huán)境提供Python測試函數(shù)擴(kuò)展接口,用戶定義相應(yīng)的Python原語完成解釋相關(guān)的擴(kuò)展;解釋所得的測試行為由測試函數(shù)執(zhí)行模塊M24根據(jù)其參數(shù)配置轉(zhuǎn)換為測試指令發(fā)送到測試驅(qū)動模塊M03; M25為用戶自定義函數(shù)執(zhí)行模塊,即當(dāng)用戶自定義的測試函數(shù)的執(zhí)行需求超出了當(dāng)前執(zhí)行模塊的能力范圍時(shí),用戶可以利用測試環(huán)境提供的函數(shù)執(zhí)行擴(kuò)展接口進(jìn)行擴(kuò)充,擴(kuò)充后新的函數(shù)執(zhí)行模塊將自動被調(diào)度進(jìn)行函數(shù)的執(zhí)行工作。
測試驅(qū)動模塊M03,主要包括兩個(gè)模塊驅(qū)動執(zhí)行模塊和指令驅(qū)動模塊。指令驅(qū)動模塊包括固有指令驅(qū)動模塊M32,該模塊滿足基本的測試指令的驅(qū)動能力,其功能包括操作指令發(fā)送、大數(shù)據(jù)量數(shù)據(jù)發(fā)送和接受、以及異步接受被測終端信息等,可以滿足絕大部分終端應(yīng)用測試需求;但對于特殊終端的特定功能,需要指令驅(qū)動過程進(jìn)行相應(yīng)的擴(kuò)充調(diào)整,以完成相應(yīng)數(shù)據(jù)的處理工作,該功能由用戶自定義指令驅(qū)動模塊M33完成;驅(qū)動執(zhí)行模塊M31主要提供同終端的通訊、交互能力,
8以實(shí)現(xiàn)驅(qū)動在被測終端上的執(zhí)行。
被測終端M04主要是指有統(tǒng)一通訊協(xié)議的被測系統(tǒng)。
為了提高測試驅(qū)動模塊與測試腳本解釋模塊的獨(dú)立性,同時(shí)提高用戶升級的便
捷性,在兩個(gè)模塊之間設(shè)計(jì)了統(tǒng)一的通訊接口, IDriver(I01)和1Interpreter(102),用
戶進(jìn)行任意一個(gè)模塊的升級,不需要對另外一個(gè)模塊的處理進(jìn)行調(diào)整。
圖3基于Python擴(kuò)展的實(shí)施步驟,展示了用戶利用Python擴(kuò)展的詳細(xì)執(zhí)行步驟。構(gòu)建腳本驅(qū)動測試框架POl,安裝符合本專利要求的測試環(huán)境,并完成配置。
擴(kuò)展測試函數(shù)P02,根據(jù)用戶需求,擬定需要擴(kuò)充或修改的測試函數(shù),利用平臺提供的接口,完成函數(shù)名稱、返回值類型、參數(shù)三方面的編輯,即完成對測試函數(shù)的擴(kuò)展。然后將該測試函數(shù)歸入一種測試行為,基本的測試行為包括對終端的操作行為,測試邏輯控制行為,以及特殊功能函數(shù)行為。如果該行為涉及到非測試環(huán)境模塊的調(diào)用,還需要編輯該函數(shù)與外部模塊之間的調(diào)用方式,并正確部署該模塊以使得該調(diào)用能夠正確執(zhí)行。
判斷是否需要建立新的函數(shù)執(zhí)行方式P03,即判斷是否能夠?qū)⑿碌臏y試函數(shù)歸入已有的測試行為,其判斷依據(jù)為測試行為特征,特征包括是否發(fā)送指令、發(fā)送指令知否保存、發(fā)送指令后是否等待反饋,指令的反饋是否需要特殊處理等。根據(jù)上述特征,如果可以找到符合的測試行為,則不需要擴(kuò)展函數(shù)執(zhí)行方式,已完成擴(kuò)展P07。否則,進(jìn)入P04。
P04擴(kuò)展函數(shù)執(zhí)行方式,即根據(jù)測試函數(shù)需要的行為特征建立新的測試行為,并將該函數(shù)的歸入該行為。建立新的測試行為,首先為新測試行為命名,命名不可重復(fù),然后根據(jù)要求的特征,按照順序定義特征,如果特征中需要特殊的函數(shù)處理或者外部模塊調(diào)用,則需要編寫相應(yīng)的調(diào)用方式。
判斷是否需要建立新的驅(qū)動方式P05,即在測試行為的基礎(chǔ)上,判斷是否在驅(qū)動(通訊)過程需要特定的處理,現(xiàn)有的驅(qū)動方式是否能夠滿足需求?;镜尿?qū)動方式包括僅發(fā)送,發(fā)送并等待確認(rèn),發(fā)送并等待執(zhí)行結(jié)果,僅等待,等待特定類型結(jié)果等。當(dāng)測試行為的驅(qū)動要求在上述方式下都不能夠滿足時(shí),則需要擴(kuò)展新的驅(qū)動方式,否則擴(kuò)展完成P07。頁
擴(kuò)展驅(qū)動方式P06,測試平臺驅(qū)動模塊提供相應(yīng)驅(qū)動方式配置接口,用戶根據(jù)
需求配置相應(yīng)的驅(qū)動方式。配置步驟為首先定義驅(qū)動方式名稱,名稱不可重復(fù), 然后選擇配置該驅(qū)動方式的驅(qū)動流程,如果流程中涉及到原驅(qū)動流程以外的功能, 則需要用戶自行編寫相應(yīng)的功能模塊,并編寫相應(yīng)的調(diào)用方式。完成擴(kuò)展P07。
最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明而并非限制本發(fā)明所描述的技 術(shù)方案;因此,盡管本說明書參照上述的各個(gè)實(shí)施例對本發(fā)明已進(jìn)行了詳細(xì)的說明, 但是,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,仍然可以對本發(fā)明進(jìn)行修改或等同替換; 而一切不脫離發(fā)明的精神和范圍的技術(shù)方案及其改進(jìn),其均應(yīng)涵蓋在本發(fā)明的權(quán)利 要求范圍當(dāng)中。
權(quán)利要求
1、一種支持Python擴(kuò)展的測試方法,其特征在于支持該方法的測試系統(tǒng)包括了Python解釋器以及Python腳本編輯器,并將Python解釋器嵌入測試系統(tǒng)中,使系統(tǒng)的測試驅(qū)動模塊與Python解釋器本身的模塊相整合,從而Python腳本的執(zhí)行能夠驅(qū)動測試的運(yùn)行;同時(shí),針對測試的需求變更,系統(tǒng)支持用戶對Python的擴(kuò)展;包括以下步驟;建立一個(gè)基于腳本驅(qū)動的測試環(huán)境;a、測試配置與用例設(shè)計(jì)模塊,按照被測終端的特點(diǎn)以及測試要求,配置相應(yīng)的測試環(huán)境,設(shè)計(jì)符合測試方案要求的測試用例;b、Python腳本編輯模塊,根據(jù)設(shè)計(jì)的測試用例將測試的輸入、輸出、判斷操作以腳本形式進(jìn)行描述;c、Python解釋器模塊,針對Python測試腳本語言的解釋工具,將腳本中描述的各項(xiàng)操作解釋為實(shí)際被測終端上的輸入數(shù)據(jù),并且根據(jù)測試的反饋數(shù)據(jù)對腳本執(zhí)行進(jìn)行邏輯調(diào)度;d、腳本解釋器的擴(kuò)展模塊,將解釋器的解釋能力開放給用戶,提供對解釋器的定制以及擴(kuò)充。e、測試驅(qū)動模塊,將解釋器解析出的輸入數(shù)據(jù)傳送到被測終端,并按照該數(shù)據(jù)驅(qū)動終端運(yùn)行,然后捕獲相應(yīng)的結(jié)果數(shù)據(jù);f、被測終端,為實(shí)際的被測系統(tǒng)。
2、 根據(jù)權(quán)利1要求所述的支持Python擴(kuò)展的測試方法,其特征在于所述的測試系統(tǒng)采用基于腳本語言的測試用例描述和測試驅(qū)動模式進(jìn)行構(gòu)建。
3、 根據(jù)權(quán)利1要求所述支持Python擴(kuò)展的測試方法,其特征在于測試腳本語言采用Python,并將Python解釋器嵌入測試系統(tǒng)。
4、 根據(jù)權(quán)利l要求所述支持Python擴(kuò)展的測試方法,其特征在于所述的測試用例使用Python腳本進(jìn)行描述;這種定義測試用例的Python腳本內(nèi)容包括測試對象、測試動作、測試結(jié)果。
5、 根據(jù)權(quán)利l要求所述的支持Python擴(kuò)展的測試方法,其特征在于執(zhí)行測試時(shí),測試系統(tǒng)采用Python腳本定義的測試用例提交給腳本解釋器。
6、 根據(jù)權(quán)利1要求所述支持Python擴(kuò)展的測試方法,其特征在于所述的Python腳本解釋器解釋測試用例,并生成相應(yīng)的測試指令,測試指令提交給測試系統(tǒng)中的測試驅(qū)動模塊。
7、 根據(jù)權(quán)利1要求所述支持Python擴(kuò)展的測試方法,其特征在于測試驅(qū)動模塊根據(jù)測試指令產(chǎn)生相應(yīng)的測試動作,驅(qū)動被測終端,在被測試終端上執(zhí)行并產(chǎn)生測試結(jié)果。
8、 根據(jù)權(quán)利1要求所述支持Python擴(kuò)展的測試方法,其特征在于所述的測試系統(tǒng)支持用戶擴(kuò)展測試對象、測試動作、以及測試數(shù)據(jù)類型。
9、 根據(jù)權(quán)利1或8所述的支持Python擴(kuò)展的測試方法,其特征在于所述的支持用戶擴(kuò)展測試對象、測試動作、以及測試數(shù)據(jù)類型,支持用戶在Python中引入新的語言要素,擴(kuò)展腳本解釋模塊;系統(tǒng)支持用戶定義其引入的語言要素的執(zhí)行,以及相應(yīng)的指令驅(qū)動方式。
全文摘要
一種支持Python擴(kuò)展的測試方法,將Python解釋器嵌入測試系統(tǒng)中,并將系統(tǒng)的測試驅(qū)動模塊與Python本身的模塊相整合,使得Python腳本語言的執(zhí)行能夠驅(qū)動測試的運(yùn)行;同時(shí),針對測試的需求變更,系統(tǒng)支持對Python腳本語言的擴(kuò)展。主要實(shí)施步驟包括建立一個(gè)基于腳本驅(qū)動的測試環(huán)境;測試用例設(shè)計(jì)F01;Python腳本編輯F02;Python解釋器F03;測試驅(qū)動F04,將解釋器解析出的輸入數(shù)據(jù)傳送到被測終端,并按照該數(shù)據(jù)驅(qū)動終端運(yùn)行,然后捕獲相應(yīng)的結(jié)果數(shù)據(jù);被測終端F05的執(zhí)行;本發(fā)明對于擴(kuò)展的支持,充分體現(xiàn)了對測試需求更新的適應(yīng)能力,對于一個(gè)增量型開發(fā)的軟件或系統(tǒng),給測試人員提供一套完善方法,降低了測試成本,提高了測試開發(fā)、維護(hù)以及執(zhí)行的效率。
文檔編號G06F11/36GK101551778SQ200910083739
公開日2009年10月7日 申請日期2009年5月8日 優(yōu)先權(quán)日2009年5月8日
發(fā)明者斌 劉, 劉志方, 治 汪, 高小鵬, 翔 龍 申請人:劉志方;高小鵬;汪 治;殷永峰