自動化測試工具_(dá)自動化測試待遇_在做自動化測試之前你需要知道的
本文關(guān)鍵詞:自動化測試,由筆耕文化傳播整理發(fā)布。
什么是自動化測?
做測試好幾年了,真正學(xué)習(xí)和實(shí)踐自動化測試一年,自我感覺這一個年中收獲許多。一直想動筆寫一篇文章分享自動化測試實(shí)踐中的一些經(jīng)驗(yàn)。終于決定花點(diǎn)時間來做這件事兒。
當(dāng)然,我們更普遍的認(rèn)識把“自動化測試”看做“ 基于產(chǎn)品或項目UI層的自動化測試”。
分層的自動化測試
這個概念最近曝光度比較高,傳統(tǒng)的自動化測試更關(guān)注的產(chǎn)品UI層的自動化測試,而分層的自動化測試倡導(dǎo)產(chǎn)品的不同階段(層次)都需要自動化測試。
Web service 技術(shù)對外提供的一個公共接口,需要通過soapUI 等工具對其進(jìn)行測試。
在自動化測試中最怕的是變化,因?yàn)樽兓闹苯咏Y(jié)果就是導(dǎo)致測試用例的運(yùn)行失敗,那么就需要對自動化腳本進(jìn)行維護(hù);如何控制失敗,降低維護(hù)成本對自化的成敗至關(guān)重要。反過來講,一份永遠(yuǎn)都運(yùn)行成功的自動化測試用例是沒有價值。
我為什么要做自動化測試?
根據(jù)51testing的《中國軟件測試從業(yè)人員調(diào)查報告》,手工測試占到的89% ,相對開發(fā)來說,測試的門檻底,薪資普遍較底,所要求的知識面雖然有一定廣度,但缺乏深度。這是測試的普遍現(xiàn)狀。
好吧,這個問題不應(yīng)該出現(xiàn)討論技術(shù)的話題中,但他的確是大多測試人員不得不面對的一個問題。所以,從測試人員自身的發(fā)展來說,我其實(shí)非常需要通過自動化技術(shù)來增加自己有競爭力。當(dāng)然,做到一定年限測試人員會選擇轉(zhuǎn)管理或其它崗位,這又是另一個話題了。
從測試行業(yè)的發(fā)展來說,國內(nèi)產(chǎn)品由于產(chǎn)品特點(diǎn),世界級的產(chǎn)品不多,技術(shù)含量相對不高,質(zhì)量要求相對要求不高,外包國外項目,測試人力成本低廉,所以需要大量的手工測試人員。
所以,在不遠(yuǎn)的未來,我認(rèn)為純的工手測試人員的需求是遞減,公司更需要更高技術(shù)能力的測試。質(zhì)量需要測試,測試行為永遠(yuǎn)不會消失,但純的手工測試人員是否消失是有可能的。
好吧,你可以說測試多朝陽的行業(yè),我純屬在危言聳聽。不管未來如何,我們都需要提升自身的技能對吧!
什么項目適合做自動化測試?
假如你已經(jīng)決定要學(xué)習(xí)自動化測試了,如何學(xué)習(xí)是要面臨的下一個問題?這個問題以被測試產(chǎn)品為出發(fā)點(diǎn)進(jìn)行分析,假如你所學(xué)的技術(shù)不能得到應(yīng)用(驗(yàn)證),將會使你的學(xué)習(xí)過程寸步難行。
首先考考慮產(chǎn)品是否適合做自動化測試。這方法比較普遍的共識是從三個方面進(jìn)行權(quán)衡。
軟件需求變動不頻繁
測試腳本的穩(wěn)定性決定了自動化測試的維護(hù)成本。如果軟件需求變動過于頻繁,測試人員需要根據(jù)變動的需求來更新測試用例以及相關(guān)的測試腳本,而腳本的維護(hù)本身就是一個代碼開發(fā)的過程,需要修改、調(diào)試,必要的時候還要修改自動化測試的框架,如果所花費(fèi)的成本不低于利用其節(jié)省的測試成本,那么自動化測試便是失敗的。
項目中的某些模塊相對穩(wěn)定,而某些模塊需求變動性很大。我們便可對相對穩(wěn)定的模塊進(jìn)行自動化測試,而變動較大的仍是用手工測試。
項目周期較長
由于自動化測試需求的確定、自動化測試框架的設(shè)計、測試腳本的編寫與調(diào)試均需要相當(dāng)長的時間來完成。這樣的過程本身就是一個測試軟件的開發(fā)過程,需要較長的時間來完成。如果項目的周期比較短,沒有足夠的時間去支持這樣一個過程,那么自動化測試便成為笑談。
自動化測試腳本可重復(fù)使用
);所選擇的測試工具是否適應(yīng)這種差異;最后,測試人員是否有能力開發(fā)出適應(yīng)這種差異的自動化測試框架。
選擇什么工具進(jìn)行自動化測試
假如你已經(jīng)確認(rèn)了XX 項目適合做自動化測試,那么接下來你要做的就是選測試工具了。
桌面程序的工具有:QTP、 AutoRunner
AutoRunner、
java、python、ruby、php、C#、JavaScript 。
從語言應(yīng)用廣度來講,首選java、C#、php、
從語言相關(guān)測試技術(shù)成度(及 資料)來講:ruby ,python ,java
或者你可以考慮整個技術(shù)團(tuán)隊主流用什么語言,然后選擇相應(yīng)的語言。
selenium 用前須知
OK!經(jīng)過上的過程,我相信你一定做出的相應(yīng)的選擇,如果你選擇的是selenium 工具,那么接著往下閱讀。
首選你在開始selenium之前,需要花一到兩個月時間去學(xué)一門語言,這里是根據(jù)沒有語言基礎(chǔ)的同學(xué)而定的。我推薦ruby ,python ,java 任意一門語言來進(jìn)行學(xué)習(xí)。
當(dāng)然,已經(jīng)如果有很好的語言基礎(chǔ)略過這個環(huán)節(jié),或者你的豐富的java編程能力,那么學(xué)習(xí)python 可能只需要幾天時間或更短。
假如,你已經(jīng)搞定了一門語言的基礎(chǔ),接下來你需要先了解selenium ,selenium 并不是單純的一個工具,他是一組工具的集合,而且,他還有1.0與2.0之分,當(dāng)然3.0也已經(jīng)到來。
selenium 也不是簡單一個工具,而是由幾個工具組成,每個工具都有其特點(diǎn)和應(yīng)用場景。
selenium IDE
selenium IDE 是嵌入到Firefox瀏覽器中的一個插件,實(shí)現(xiàn)簡單的瀏覽器操作的錄制與回放功能。那么什么情況下用到它呢?
快速的創(chuàng)建bug重現(xiàn)腳本,在測試人員的測試過程中,發(fā)現(xiàn)了bug之后可以通過IDE將重現(xiàn)的步驟錄制下來,以幫助開發(fā)人員更容易的重現(xiàn)bug。
IDE錄制的腳本可以可以轉(zhuǎn)換成多種語言,從而幫助我們快速的開發(fā)腳本,關(guān)于這個功能后而用到時再詳細(xì)介紹。
selenium Grid
Selenium Grid是一種自動化的測試輔助工具,Grid通過利用現(xiàn)有的計算機(jī)基礎(chǔ)設(shè)施,能加快Web-app的功能測試。利用Grid,可以很方便地同時在多臺機(jī)器上和異構(gòu)環(huán)境中并行運(yùn)行多個測試事例。其特點(diǎn)為:
· 并行執(zhí)行
· 通過一個主機(jī)統(tǒng)一控制用例在不同環(huán)境、不同瀏覽器下運(yùn)行。
· 靈活添加變動測試機(jī)
selenium RC
selenium RC 是selenium 家族的核心工具,selenium RC 支持多種不同的語言編寫自動化測試腳本,通過selenium RC 的服務(wù)器作為代理服務(wù)器去訪問應(yīng)用從而達(dá)到測試的目的。
selenium RC 使用分Client Libraries和selenium Server,Client Libraries庫主要主要用于編寫測試腳本,用來控制selenium Server的庫。
Selenium Server負(fù)責(zé)控制瀏覽器行為,總的來說,Selenium Server主要包括3個部分:Launcher、Http Proxy、Core。其中Selenium Core是被Selenium Server嵌入到瀏覽器頁面中的。其實(shí)Selenium Core就是一堆JS函數(shù)的集合,就是通過這些JS函數(shù),我們才可以實(shí)現(xiàn)用程序?qū)g覽器進(jìn)行操作。Launcher用于啟動瀏覽器,把selnium Core加載到瀏覽器頁面當(dāng)中,并把瀏覽器的代理設(shè)置為Selenium Server 的Http Proxy。
selenium 2.0
搞清了selenium 1.0 的家族關(guān)系,selenium 2.0 是把WebDriver 加入到了這個家族中;簡單用公式表示為:
selenium 2.0 = selenium 1.0 + WebDriver
需要強(qiáng)調(diào)的是,在selenium 2.0 中主推的是WebDriver ,WebDriver 是selenium RC 的替代品,因?yàn)?nbsp;selenium 為了向下兼容性,所以selenium RC 并沒有徹底拋棄,如果你使用selenium開發(fā)一個新自動化測試項目,強(qiáng)列推薦使用WebDriver 。那么selenium RC 與webdriver 主要有什么區(qū)別呢?
selenium RC 在瀏覽器中運(yùn)行JavaScript應(yīng)用,使用瀏覽器內(nèi)置的JavaScript 翻譯器來翻譯和執(zhí)行selenese命令(selenese 是selenium命令集合)。
WebDriver通過原生瀏覽器支持或者瀏覽器擴(kuò)展直接控制瀏覽器。WebDriver針對各個瀏覽器而開發(fā),取代了嵌入到被測Web應(yīng)用中的JavaScript。與瀏覽器的緊密集成支持創(chuàng)建更高級的測試,避免了JavaScript安全模型導(dǎo)致的限制。除了來自瀏覽器廠商的支持,WebDriver還利用操作系統(tǒng)級的調(diào)用模擬用戶輸入。
如果是新項目直接學(xué)習(xí)webdriver 就OK了,RC是過時技術(shù)。
selenium學(xué)習(xí)路線
配置你的測試環(huán)境,真對你所學(xué)習(xí)語言,來配置你相應(yīng)的selenium 測試環(huán)境。selenium 好比定義的語義---“問好”,假如你使用的是中文,為了表術(shù)問好,你的寫法是“你好”,假如你使用的是英語,你的寫法是“hello”。 所以,同樣有語義在不同的語言下會有不同的寫法(語法)。
接著你需要熟悉webdriver API ,,API就是selenium 所定義一方法,用于定位,操作頁面上的各種元素。
定位元素的目的是為了操作元素,接就要學(xué)習(xí)各種元素有操作,輸入框,下拉框,按鈕點(diǎn)擊,文件上傳、下載,分頁,對話框,警告框...等等。
經(jīng)過一段時間的學(xué)習(xí),你可以游刃有余的模擬手工測試來操作頁面上的各種元素了。接著你需要做的就是把這些“用例”組織起來,統(tǒng)一來跑。
那么你需要做的就是學(xué)習(xí)并使用單元測試框架,單元測試框架本身就解決了用例的組織與運(yùn)行。
當(dāng)你寫了一些“測試用例” 之后,你會發(fā)現(xiàn)用例中有大量重復(fù)的操作,能不能寫到一個單獨(dú)的文件中,需要的時候調(diào)用這些操作?當(dāng)然可以,運(yùn)用你的編程能力來實(shí)現(xiàn)這一點(diǎn)將非常簡單。然后,你又發(fā)現(xiàn)每個用例中都有一些數(shù)據(jù),這些數(shù)據(jù)也是一樣的,但如果變化了修改起來非常麻煩,你也可以把他寫到一個單獨(dú)的文件中進(jìn)行讀取。
接著你又遇到了新的疑問,我寫的腳本(用例)都是流水式的,我怎么知道用例運(yùn)行失敗還是成功。那么就需要在腳本中加一些驗(yàn)證與斷言。
為解決這些問題,你不得不學(xué)習(xí)更多的編程技術(shù),然后你的“測試結(jié)構(gòu)”會功能越來越強(qiáng)大,越來越靈活。產(chǎn)生了一定的通用性和移植性。一個有模有樣的自動化測試框架誕生了。
本文關(guān)鍵詞:自動化測試,由筆耕文化傳播整理發(fā)布。
本文編號:79579
本文鏈接:http://sikaile.net/wenshubaike/jyzy/79579.html