1. 什麼是自動化測試
原文
首先我們從招聘崗位需求說起。看近期的職業機會,提到「軟體測試工程師」,基本上都有關於自動化測試的要求。例如:
了解 selenium、appium或者其他自動化測試框架;
至少熟悉一門面向對象開發語言,有一定的代碼功底優先;
熟悉Java或者python,有一定的測試自動化經驗和代碼閱讀能力;
了解介面集成測試,會使用JMeter、Postman、SoapUI等介面測試工具;
等等,上述內容不再一一列舉。突然自動化測試遍地開花,好像測試工程師的自動化測試能力成為了標配一般。本文就從自動化測試的要求入手,簡單的進行自動化測試掃盲,爭取讓各位在一分鍾之內了解自動化測試。
那麼我們就從「自動化測試」五個字來剖析。
一、測試
測試:這個我們熟悉。最經典的一個解釋「程序測試是為了發現錯誤而執行的過程。」這個來自於G.J.Myers的經典著作《軟體測試的藝術》的定義,給我們展示了測試的本質:過程。
測試是為了發現軟體的錯誤,而執行的過程,這個過程可以是以下內容:
運行被測試的軟體,執行軟體的功能;
運行其他工具,去檢查軟體的內部和外部。
總而言之,是一個過程,執行的過程。接下來就一張最常見的測試示意圖:
這個呢?自動化測試示意圖
2. 自動化測試的工具有哪些
商業工具:
1、RFTRational Functional Tester 的基礎是針對於Java、.NET的對象技術和基於 Web 應用程序的錄制、回放功能。工具為測試者的活動提供的自動化的幫助,如數據驅動測試。IBM RFT是一個用於功能和回歸測試的數據驅動的測試平台。它支持大范圍的應用,例如.Net、Java、SAP、Flex和Ajax。RFT使用Visual Basic。Net和Java作為腳本語言。RFT有一個獨特的功能,稱為 Storyboard 測試,用戶的動作被記錄下來,並通過應用截圖在 Storyboard 格式中可視化。RFT的另一個有趣特性是它與IBM Jazz應用生命周期管理系統(如IBM Rational Team Concert和Rational Quality Manager)的集成。
2、kylinTOP:這是一款國產的自動化測試工具,支持WEB和APP的自動化測試,其中元素智能定位是這款自動化軟體主要特點,是設計理念比較超前的測試工具,算是國內眾多自動化測試工具中,做的比較突出的一款。與傳統的RFT和UFT相比,的確有過人之處,算是後起之秀,使用起來,簡單高效、穩定。這樣描述估計也沒幾個人能體會到的。說白一點就是一個人可以干三個人的活,使用者只需關注業務即可。
3、UFT:UFT(別名:QuickTest Professional簡稱QTP)是一種自動化測試工具,以VBScirpt為內嵌語言,其前身是QTP。UFT支持功能測試和回歸測試自動化,可用於軟體應用程序和環境的測試。UFT自動化測試的基本功能包括:創建測試、檢驗數據、增強測試、運行測試腳本、分析測試結果、維護測試;UFT支持兩種視圖,一種是Keyword View(關鍵字視圖),另一種是Expert View(專家視圖)。是一款老牌的自動化測試工具。
4、SilkTest:這個也是比較相對著名的工具,不過同樣還是沒有了解過,對於商業的工具,因為其佔地面積大,還要破解等麻煩事,最關鍵的是使用的公司少,所以只使用過QTP,其它的一概未了解過
開源工具:1、Selenium:這個應該大多數人都知道的,現在也是大多數互聯網公司在使用的測試框架;selenium僅支持web的UI級別測試,但是其優點在於:a、支持多種語言編寫測試腳本,比如:java、python、ruby、perl等;同時也就意味著其後的支持類庫也是很多的b、支持多瀏覽器,如:ie,ff,safari、chrome等c、支持多平台,如:windows、linux、MAC、android、iphone等d、支持分布式執行,一套測試用例可以同時分布到不同的測試機上執行,而且還可以進行任務細化,比如:針對liunx執行系統只分配linux下需要執行的用例此外還有錄制工具支持,簡單也說,web類測試基本上是首選,不過對flash的支持好像不是太好其主要分2個版本,1.X版本是以js驅動來進行自動化實現的;2.X重新開發了webdriver來代替js驅動,直接調用瀏覽器底層介面來完成自動化實現的前提:如果使用remote或者RC功能,需安裝jre下載地址:http://seleniumhq.org/download/
2、EFT【easy function testing】:這個是在.net3.0 的UIAutomatuon的基礎上封裝的一個dll文件,同樣還封裝了部分windows api以實現滑鼠和鍵盤事件。所以這個只能叫測試類庫,且僅支持windows程序,而且同樣支持uiautomain所支持的WPF程序的測試。前提:安裝了.net3.0使用:引入該文件,uiautomation 相關dll,VS環境下編寫測試用例
3、UIAutomation:這個是微軟提供的UI自動化框架,當然它的初衷並不僅僅是為自動化測試而產生的,它的任務是給更多的開發或者應用去調用windows的UI控制項,不過還是可以用於自動化測試的;因為之前微軟就有類似的工具,而這個是重新設計的ui操作類框架,其目的是為了兼容支持windows系列操作系統的UI自動化操作【xp,vista,server2003】,還有就是天然支持WPF。當然其設計與通常的自動化工具就不一樣了,比如:沒有把控制項支持的方法綁定在控制項對象本身,沒有提供專門的滑鼠/鍵盤事件,但是卻提供了特定控制項對象的事件響應監聽及處理方法的定製。其工作流程大概是這樣的:a、先獲取特定的元素對象,有多種方法。如:句柄,屬性值b、獲取這個元素對象的模式。模式是這個框架的設計的獨具之處,成就了它的靈活性,統一性c、通過這個模式在進行具體的方法調用,屬性值獲取等d、監聽指定對象的特定事件,一旦發生則執行指定的事件處理函數
4、Robot FrameworkRobot Framework是一個完全基於關鍵字測試驅動的框架,它即能夠基於它的一定規則,導入你需要的測試庫(例如:其集成了selenium的測試庫,即可以理解為操作web控制項的測試底層庫),然後基於這些測試庫,你能應用HTML、TXT等文檔形式編寫自己的關鍵字(這些關鍵字即你的庫組成),之後,再編寫測試用例(測試用例由測試關鍵字組成)進行測試。例如:一個簡單的登陸測試由:登陸+輸入密碼+登出三個關鍵字組成,也可以由一個關鍵字登陸組成,關鍵字顆粒的大小可以自行定製。
3. 圖形界面自動化測試的前途在哪裡
降低自動化測試的門檻是很多自動化測試工具提供商努力的目標。尤其是對於圖形界面的自動化測試,就更是這樣。 於是,「錄制與回放」就成了圖形界面自動化測試的主流。不論是 Web 界面的,還是基於 Windows API 界面的,還是 Java GUI 界面的,「錄制與回放」的工具,不論是商用的,還是開源的,都不少。在技術上,大家也在「錄制」上下足了功夫。 錄制就需要先識別。現在 Web 頁面的顯示技術在向基於客戶端的軟體的界面靠攏,於是工具要識別各種動態界面的不同組件,不同編程語言實現的動態效果。你能夠適應 .NET 和 ASP 編寫的界面,我可以使用動態的 Javascript, AJAX。 Web 的動態顯示技術層出不窮,先是基於伺服器端的動態頁面顯示,再後來又可以把代碼傳送並放到客戶端來由瀏覽器解釋了再動態顯示,現在又可以局部更新頁面的部分信息,很多頁面又開始使用 Flash 等等。於是,如何自動識別這些動態的顯示技術,並保證錄制與回放的正確,就成了各個自動化測試工具廠商最求的目標。也就是基本上是在跟著動態顯示技術發展的屁股後面跑。然而「錄制與回放」有一個大問題,就是「錄制」下來的腳本的維護問題。Web 界面的變化是非常頻繁的。通常市場部門的一個反饋,界面就要做比較大的調整,而這個調整,會導致之前「錄制」好的腳本的重用性變得很差。 需要維護。 如果不想維護,再錄制一遍的話也會造成人力的浪費。 畢竟,腳本和真正的程序代碼雖然都是編程的產物,但人家代碼是公司研發的最終產品,是可以賣錢的;腳本只是測試的一個中間環節,腳本執行的結果才是我們測試人員想得到的東西,花費很大力氣來維護一個中間產品,任何一個研發部分都要好好考慮一下投入與產出是否值得了。可維護性差是「錄制與回放」技術需要攻克的技術難題。而解決這個難題,需要兩方面的努力:腳本良好的封裝,與 API (關鍵字)介面的完整定義 開發人員對於界面元素賦予唯一標示的 ID。 解決圖形界面自動化腳本的可維護性,還需要開發的幫助,為界面元素提供唯一的標識。這樣,不論以後界面如何變化,只要標識不變,之前的腳本一樣可以復用。而良好的腳本封裝是「錄制與回放」幾乎難以逾越的一座技術大山。「錄制」決定了前期很少進行軟體設計,腳本也是順序執行的。這與預先設計完整的 API 介面,再進行腳本開發的流程是相違背的。從長遠考慮,每一個軟體開發企業在圖形界面的自動化測試上,都應該力求向關鍵字編程靠攏,而不是過度的依賴自動化測試工具廠商的「錄制與回放」技術。 這,才應該是圖形界面測試自動化的未來。
4. 做軟體的自動化測試一般用什麼工具
1、測試類型可以包括:白盒測試、黑盒測試(功能測試、性能測試)等。
2、不同的測試類型使用的自動化測試方法不同,白盒測試主要針對代碼級的單元測試、黑盒測試主要面對功能級和系統級的驗證測試。
3、自動化測試,針對白盒測試,一般需要有一定的編程基礎,即能夠基於功能代碼寫測試代碼,常用的單元測試方面的自動化測試工具很多,上網一搜全是。
4、自動化測試,針對功能測試,有幾種情況,基於CLI、API和GUI的測試;基於CLI、API的測試,即應用腳本技術向設備模擬發送CLI命令或者API請求,以達到控制設備的效果。基於GUI功能測試,即應用傳統的界面自動化測試工具(例如:RFT、QTP等)控制界面控制項操作的方法,以達到模擬用戶操作,這幾種方式都需要你有一定的編碼基礎;基於CLI、API的需要你懂腳本技術(例如:tcl、python、ruby等),RFT需要你懂java或者.net、QTP需要VB等。
5. 自動化測試工具有哪些
自動化測試工具有如下幾種:
1、WinRunner
Mercury Interactive公司的WinRunner是一種企業級的功能測試工具,用於檢測應用程序是否能夠達到預期的功能及正常運行。
通過自動錄制、檢測和回放用戶的應用操作,WinRunner能夠有效地幫助測試人員對復雜的企業級應用的不同發布版進行測試,提高測試人員的工作效率和質量,確保跨平台的、復雜的企業級應用無故障發布及長期穩定運行。企業級應用可能包括Web應用系統,ERP系統,CRM系統等等。
2、Rational Robot
是業界最頂尖的功能測試工具,它甚至可以在測試人員學習高級腳本技術之前幫助其進行成功的測試。它集成在測試人員的桌面IBM Rational Test Manager上,在這里測試人員可以計劃、組織、執行、管理和報告所有測試活動,包括手動測試報告。
這種測試和管理的雙重功能是自動化測試的理想開始。
3、AdventNet QEngine
AdventNet QEngine是一個應用廣泛且獨立於平台的自動化軟體測試工具,可用於Web功能測試、web性能測試、Java應用功能測試、Java API測試、SOAP測試、回歸測試和Java應用性能測試。
支持對於使用HTML、JSP、ASP、.NET、PHP、JavaScript/VBScript、XML、SOAP、WSDL、e-commerce、傳統客戶端/伺服器等開發的應用程序進行測試。此工具以Java開發,因此便於移植和提供多平台支持。
4、SilkTest
是業界領先的、用於對企業級應用進行功能測試的產品,可用於測試Web、Java或是傳統的C/S結構。SilkTest提供了許多功能,使用戶能夠高效率地進行軟體自動化測試。
這些功能包括:測試的計劃和管理;直接的資料庫訪問及校驗;靈活、強大的4Test腳本語言,內置的恢復系統(Recovery System);以及具有使用同一套腳本進行跨平台、跨瀏覽器和技術進行測試的能力。
5、QA Run
QARun的測試實現方式是通過滑鼠移動、鍵盤點擊操作被測應用,即而得到相應的測試腳本,對該腳本可以進行編輯和調試。在記錄的過程中可針對被測應用中所包含的功能點進行基線值的建立,換句話說就是在插入檢查點的同時建立期望值。
在這里檢查點是目標系統的一個特殊方面在一特定點的期望狀態。通常,檢查點在QARun提示目標系統執行一系列事件之後被執行。檢查點用於確定實際結果與期望結果是否相同
6. 什麼是自動化測試
自動化測試,簡單點說就是把由人工對軟體的測試行為轉化為由程序執行測試的一種實踐,對於最常見的 GUI 測試來說,就是由自動化測試工具模擬人工對軟體界面的操作的過程,並且自動驗證其結果是否符合預期。如果感興趣,可以從黑馬程序員獲取相關資料做進一步了解。
7. 做軟體的自動化測試一般用什麼工具和黑盒測試工具一樣么用loadrunner怎麼樣
一、對於你的問題,首先明確測試類型,然後才能明確自動化測試類型,最後定位哪個類型用哪個方面的自動化測試工具
1、測試類型可以包括:白盒測試、黑盒測試(功能測試、性能測試)等。
2、不同的測試類型使用的自動化測試方法不同,白盒測試主要針對代碼級的單元測試、黑盒測試主要面對功能級和系統級的驗證測試。
3、自動化測試,針對白盒測試,一般需要有一定的編程基礎,即能夠基於功能代碼寫測試代碼,常用的單元測試方面的自動化測試工具很多,上網一搜全是。
4、自動化測試,針對功能測試,有幾種情況,基於CLI、API和GUI的測試;基於CLI、API的測試,即應用腳本技術向設備模擬發送CLI命令或者API請求,以達到控制設備的效果。基於GUI功能測試,即應用傳統的界面自動化測試工具(例如:RFT、QTP等)控制界面控制項操作的方法,以達到模擬用戶操作,這幾種方式都需要你有一定的編碼基礎;基於CLI、API的需要你懂腳本技術(例如:tcl、python、ruby等),RFT需要你懂java或者.net、QTP需要VB等。
5、你說的loadrunner就是性能測試方面的工具,即是測試軟體性能、例如多用戶操作等性能、也需要寫代碼,LR腳本支持的語言有:java、c、Visual Basic、vbscrīpt。默認的腳本生成語言為 C;其實我想說的是,性能測試工具不重要,你需要掌握其性能測試的方法才是更重要的。
二、我感覺你想入門自動化測試,但是從你問的問題來看,有一定盲目性,我簡單說一下自動化測試吧:
1、自動化測試,其理念就是應用各種手段模擬人工操作,節省人力測試成本,保證產品測試質量。
2、你想學好自動化軟體測試,不是單單靠學習幾個自動化工具就能掌握的,但是你可以從工具入手,
首先,告訴你自動化測試的基礎是
1)編程技巧,包括高級語言和腳本語言,腳本語言是初期的掌握,可以有,tcl、phython、ruby等而高級語言,要好好學好一門,例如,我是對java為重點。還有,如果你是對web自動化測試的話,那麼jsp、php、HTML、CSS等web語言是必須掌握的。
2)操作系統技巧;因為軟體自動化測試是構建在操作系統上的,其技巧需要能善於利用到操作系統的各種技巧,例如:注冊表、環境變數、句柄等。
3)資料庫知識,要善於利用資料庫知識去存儲管理。
4)業務知識,這也是重點。你所在軟體行業的軟體業務,要知道你的軟體的工作方式。
5)質量與流程管理理念。
然後,你的學習步驟
1)可以從工具入手,根據具體的項目去學習;例如:java軟體界面測試(RFT、QTP的java插件等)、web界面測試(QTP、selenium等)、性能測試(RPT、loadrunner等)。但記住,學習其工具,重點不是簡單的使用,而是如何利用工具去擴展。
2)然後,重點學習以上的基礎,以編程為重點,其餘的結合學習,順便說一句,其實自動化測試的理念與軟體設計模式理念很像,你可以從中有所領悟。
3)之後,再學習去拓建自己的自動化測試框架,何謂框架,一下說不清楚,我給你推薦一下
注意:如果沒有自動化測試方面的實踐項目的話,最好先從基礎學起,因為基礎學好了,自動化測試入門會很快的。
4(至於性能測試,也是一樣,可以先從工具入手,但不要局限於工具,性能測試最重要的是環境的構建方法以及對測試結果的分析方法,所以性能測試重點在於分析和實現過程,而不是工具使用過程。
或者對自動化測試有興趣的,可以發短消息或者郵件我。([email protected]),有機會一起學習探討下
或者,可以看一下一個我的專注於自動化測試博客,呵呵,想看就看,我只是將我對自動化測試的想法和心得記錄下來:「散步的SUN」的博客