目前,自動(dòng)化測(cè)試框架已經(jīng)基本成型。朋友們的一些建議,還在陸續(xù)消化中,在不久的將來(lái)或許都會(huì)加入到其中,謝謝大家的鼓勵(lì)和支持。
創(chuàng)新互聯(lián)建站專(zhuān)業(yè)提供溫江服務(wù)器租用服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購(gòu)買(mǎi)溫江服務(wù)器租用服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
最近,在一次技術(shù)交流會(huì)中,我的一位同事向我提起QTP(QuickTest Pro),肯定了它的描述性編程和我們框架中的設(shè)計(jì)有類(lèi)似之處,并指出QTP的可擴(kuò)展性比較強(qiáng),比如流程控制(IF、LOOP、SWITCH等)。特別是裝載數(shù)據(jù)批量操作軟件方面比較強(qiáng)。我深以為然。
因此,我開(kāi)始和我的另一位同事小賈琢磨。我們有兩種選擇,一是在腳本編輯中擴(kuò)展有關(guān)流程的節(jié)點(diǎn)(這點(diǎn)很像FinalBuilder),還有就是支持腳本語(yǔ)言。我們選擇了后者,因?yàn)榈谝环N雖然可以擴(kuò)展,但最終畢竟還是不靈活。
在對(duì)編程語(yǔ)法方面,一開(kāi)始考慮的是PascalScript,因?yàn)槲覀兌际鞘褂玫腄elphi。但是考慮到測(cè)試人員并不是熟悉Delphi的,況且,對(duì)于腳本化編程,我最先想到的是Ruby,而不是Delphi。因此我做了一個(gè)大膽的假設(shè),如果在我們引擎中,加入對(duì)Ruby的支持,應(yīng)該怎么做呢?
首先是引擎調(diào)用Ruby腳本。我查找了一下資料。發(fā)現(xiàn)Delphi下有現(xiàn)成的開(kāi)源控件,而且Ruby其實(shí)已經(jīng)公布了API了。因此這不是問(wèn)題了。
那么下面就是最重要的問(wèn)題了,Ruby腳本如何調(diào)用引擎去控制控件?我將所有針對(duì)引擎的操作,都?xì)w結(jié)于控件的操作,這簡(jiǎn)化了依賴(lài)性。但是關(guān)鍵的問(wèn)題還是在于技術(shù)上如何實(shí)現(xiàn)調(diào)用。
必須承認(rèn),我對(duì)Ruby的了解很少,這方面小賈是專(zhuān)家。在和小賈討論過(guò)程中,發(fā)現(xiàn)Delphi寫(xiě)Ruby的擴(kuò)展沒(méi)有明確的幫助,倒是有C的實(shí)現(xiàn)方式。我相信研究一下C的實(shí)現(xiàn)方式,應(yīng)該可以找到Delphi的實(shí)現(xiàn)方式。
但在這個(gè)時(shí)候,我們忽然提到了Http。這讓我想起了引擎中已經(jīng)存在的一個(gè)Http的Server。因此我提出直接通過(guò)Http調(diào)用引擎。這樣就跨越了語(yǔ)言的障礙。我們顯然是抓住了RPC的精髓。這個(gè)方案一下子得到了小賈的支持。
并且我還想到另外一個(gè)理由:先實(shí)現(xiàn)了再說(shuō)(Do it First)。這點(diǎn)小賈更是同意。
在這個(gè)基礎(chǔ)上,小賈更是提出了利用Ruby定義DSL的方式,來(lái)進(jìn)行編程。對(duì)于Ruby定義DSL我也是不怎么了解。在簡(jiǎn)單研究過(guò)范例之后,發(fā)現(xiàn)有一定的可行性,但是難度也確實(shí)不小。
下面是我和小賈討論的一些內(nèi)容,也能初步看出其中的難度。
有關(guān)DSL,還真麻煩。我考慮這樣的情況:DSL可以轉(zhuǎn)換成窗體實(shí)現(xiàn)。但是窗體實(shí)現(xiàn)并不完全對(duì)應(yīng)DSL描述。事實(shí)上,對(duì)于客戶的應(yīng)用來(lái)說(shuō),一個(gè)確定按鈕往往不是他的DSL描述的內(nèi)容,包括所謂的Edit啊,Grid啊都不是的。這些只是實(shí)現(xiàn)某類(lèi)DSL的方式。從反推的方式來(lái)設(shè)計(jì)DSL,確實(shí)有難度啊。控件的調(diào)用必須做到自動(dòng)識(shí)別了。
比如一個(gè)簡(jiǎn)單的Input對(duì)話框,只有一個(gè)Value的Edit控件。那么對(duì)于DSL描述,我希望是這樣的:在沒(méi)彈出對(duì)話框之前,就應(yīng)該是:設(shè)置 屬性 新值。對(duì)于對(duì)話框的彈出是在DSL中不可預(yù)計(jì)的
可見(jiàn),DSL的實(shí)現(xiàn)還是比較有挑戰(zhàn)的。而且這里面也存在一個(gè)疑問(wèn),DSL適合測(cè)試嗎?或者說(shuō)我說(shuō)的DSL原本是設(shè)計(jì)給需求人員或者程序員的,而不是特別給測(cè)試的。真正在自動(dòng)化測(cè)試中的DSL,應(yīng)該使用一種全新的方式去定義DSL。
不管怎么說(shuō),實(shí)現(xiàn)的方案已經(jīng)基本成熟了。我們也可以展望一下如果實(shí)現(xiàn)了Ruby的腳本支持,會(huì)帶來(lái)什么。
Anyway,擁抱Ruby的這個(gè)選擇,也許會(huì)讓我們這個(gè)系統(tǒng)走向世界也說(shuō)不定。
分享題目:自動(dòng)化測(cè)試框架:擁抱Ruby
當(dāng)前鏈接:http://aaarwkj.com/article18/igjggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、Google、關(guān)鍵詞優(yōu)化、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)