1. 如何用python做自動化測試
用python做自動化測試,主要是介面測試和UI自動化測試。
一、介面測試:
http協議的舉例:
可以用python自帶的urllib\urllib2模擬,模擬前端向伺服器發送數據,獲取返回值後,進行校驗和判斷來進行介面測試。
網上的例子也比較多,這里簡單說一下,
比如request中data的邊界值測試、字元測試、非空為空測試等等,都可以做
二、UI自動化測試:
html頁面(python+selenium)或者一些安卓app(python+appiun)可以用。
主要是頁面元素的檢查、輸入等。
比如可以寫一個腳本,自動登錄網路頁面,搜索某一個關鍵字,並且獲得此關鍵字的網路搜索數量。
2. c#winform關於動態顯示tooltip提示信息的方法
增加一個ToolTip控制項toolTip1,設置需要提示的按鈕btn1的tooltip屬性為true,通過toolTip1.SetToolTip(btn1,
"提示信息1");實現
3. 網頁的動態消息提示、消息監聽要怎麼做
有人給力留言或者回復了你就把這條記錄存在資料庫中並設置狀態為0(未讀)
然後在前端頁面用js寫一個定時器 每個10秒鍾向後台請求一次查看有沒有對應你這個用戶id的並且信息狀態為0的信息,如果有處理一下返回信息,沒有就算了,一般來說信息系統都是用定時器的功能實現的
4. java自動化怎樣校驗應答包欄位的值
從二進制開始檢查,最常用的SUM校驗。。。。。。各二進制位累加,再&0xff
~~~~
5. 在html中怎樣實現表單驗證並在控制項後面輸出動態提示
你好 做個例子給你 但是純html是不可能的 必須附帶js 我這里用的jquery方便點
<input type="text" name="checkname" id="a"/>
<div id="b" style="width:20px;height:20px;border:1px solid red;display:none;"></div>
下面jquery 假設驗證必須為數字 並為6位數
function check(){
$("#b").show
var reg = /^\d{6}$/
if(!reg.test($("#a").val())){
$("#b").text("錯誤")
}else{
$("#b").text("正確")
}
}
$(function(){
$("#a").blur(function(){
check();
})
})
效果就是 本來提示都是隱藏的
然後文本框失去焦點時觸發 提示的div顯示 並且 若文本框中的值不滿足6位數字 顯示錯誤
否則 顯示正確
另外 樓上的朋友說的也沒錯 不過 動態驗證需要ajax 如若是這種定死的 則不需要
而且 格式驗證是不會用ajax做的 都是js做 不然浪費多少伺服器資源? 只有判斷用戶名是否重復 這種才會用ajax去資料庫中間查詢返回結果
希望能幫到你 謝謝
6. 西門子氣動調節閥如何校驗手動校驗與自動校驗詳細過程
一、自動校驗,按著進入鍵幾秒後自動進入校驗菜單,第一個是選擇角行程還是直行程的,第二個是行程的轉角. 第4個就是自動校驗了,選擇了,按最後一個鍵幾秒鍾自動執行,定位器會自動校正量程限位,力矩等等,大約2分鍾左右自動校正完成,直接按第一個鍵幾秒後退出校正清單。
二、手動校驗,同上,第5個菜單就是執行手動校驗的,手動校驗,你將閥門關死,上面輸入0 全開100(反作用的相反)作個5點連校就可以了。
(6)怎樣用自動化校驗動態提示信息擴展閱讀
1、西門子氣動調節閥自動校驗:按進入鍵進入校驗菜單, 第4個是自動校驗菜單,選中,按最後一個鍵執行,定位器會自動校正量程限位,力矩等,自動校正完成後,按第一個鍵退出校正。
2、手動校驗,同上,第5個菜單是手動校驗菜單,手動校驗時,將閥門關死,上面輸入0 全開100(反作用的相反)作個5點連校。
3、氣動調節閥就是以壓縮氣體為動力源,以氣缸為執行器,並藉助於閥門定位器、轉換器、電磁閥、保位閥、儲氣罐、氣體過濾器等附件去驅動閥門,實現開關量或比例式調節,接收工業自動化控制系統的控制信號來完成調節管道介質的。
4、流量、壓力、溫度、液位等各種工藝過程參數。氣動調節閥的特點就是控制簡單,反應快速,且本質安全,不需另外再採取防爆措施。
特點:
A、氣動調節閥的用途與特點用途 是一種直角回轉結構,它與閥門定位器配套使用,可實現比例調節; V型閥芯最適用於各種調節場合,具有額定流量系數大,可調比大,密封效果好,調節性能靈敏,體積小,可豎卧安裝。適用於控制氣體、蒸汽、液體等介質。
B、特點:是一種直角回轉結構,由V型閥體、氣動執行機構、定位器及其他附件組成;有一個近似等百比的固有流量特性;採用雙軸承結構,啟動扭矩小,具有極好的靈敏度和感應速度;超強的剪切能力。
C、氣動活塞執行機構採用壓縮空氣作動力源,通過活塞的運動帶動曲臂進行90度回轉,達到使閥門自動啟閉。它的組成部分為:調節螺栓、執行機構箱體、曲臂、氣缸體、氣缸軸、活塞、連桿、萬向軸。
D、氣動調節閥的工作原理:氣動調節閥由執行機構和調節機構組成。執行機構是調節閥的推力部件,它按控制信號壓力的大小產生相應的推力,推動調節機構動作。閥體是氣動調節閥的調節部件,它直接與調節介質接觸,調節該流體的流量。
E、有在用的調節閥,配的西門子定位器SP2,手動開或關動作正常。參數檢查設置正常,自動校驗時候總是到第二步run2 ,出現故障顯DLU,後不動了。
7. 如何實現接收手機簡訊驗證碼的自動化測試
搞一個廣播,監聽手機是否收到簡訊,然後根據手機簡訊內容,根據裡面的關鍵字來判斷簡訊是否是簡訊驗證碼的信息,然後根據正則表達式來獲取到連續幾位的數字。
8. 在玩網路游戲時,掛機會出現驗證窗口,這樣的驗證要怎樣用VC++編程自動化啊, 游戲窗口驗證怎麼編程自動化
沒有這樣的函數。
在游戲里,這個驗證是為了防止長時間掛機的一個方式。
出現驗證正常的方式應該是這樣的:客戶端長時間無操作,會向伺服器發送消息,伺服器接到消息會向客客端發送圖片,客戶端由人來識別圖片,給客戶端輸入,客戶端給伺服器發送,最後是正確還是錯誤(包括未發送等)的處理。
這個過程有兩個地方可以利用,1長時間無操作,2由人來識別圖片。
先說2,現在沒有一個很好,很完善的圖像識別系統或內置模塊,更沒有函數可以讓你調用。你可以從網上找一找大家編寫的圖像識別相關的東西,看看有沒有幫助。
另外,有一些游戲,由其是棒子的游戲,好多都是客戶端驗證,就是說會把圖片對應的字元串從伺服器端發到客戶端,甚至還有從生成到驗證整個過程都從客戶端完成的。這樣其實掛機驗沒意義不是很大。如果是這樣的話,你可以找到內存地址,讀出數據,進行模擬輸入就行了。當然這樣的畢竟是少數,但棒子游戲居多。不妨可以試試。
再說1,其實長時間無操作,這個很好辦了吧。一個一直玩著游戲的人是不會看到這個驗證窗口的吧?就是在出驗證窗口之前,以模擬方式,模擬用戶操作。sendmessage(…)等,最好是全局的鍵盤模擬keybd_event(…)或滑鼠模擬mouse_event(…)等。
說的還算明白吧?其實一個…過程,從頭至尾分析每一個環節,就不難看出哪個環節可以利用了。
等你採納了。
9. 如何進行介面自動化測試
曾經有一段時間,人們習慣於在MSExcel裡面編寫單元測試用例,然後開發人員就按照單元測試用例一步一步的來實現用例。這通常是很耗時的漫長的過程,尤其是如果應用很大或者UI很復雜的話。這一套單元測試的執行過程常常成為瓶頸,因為任何代碼修改都會帶來手工執行大量單元測試,以確保新的修改沒有破壞原有功能。如今是個快節奏時代,人們希望工作能夠無需人工介入、自動化的快速完成。每個人都喜歡執行一個命令就能把工作搞定,而且在執行期間不需要人工介入。需要做的僅僅是檢查一下最終的輸出結果。當這個世界正在邁向自動化時,自動化測試也不甘落後,不論是在功能測試方面還是UI測試方面。每天我們都能聽說自動化測試方面涌現出的新軟體。本文提供了一些信息給那些想用CodedUI自動測試框架來進行應用界面自動化的.Net開發者。什麼是CodedUI?最近我一直在尋找一個自動化的用戶介面測試的解決方案。用戶介面測試需要用戶多次進行手工輸入操作,這是一個既枯燥又費時的過程。因此,我想尋找一種更智能的自動化UI測試的方案,這種UI測試在不需要人工干預下,能夠被保存,記錄並提供支持,快速測試代碼的改變。CodedUI採用用戶介面來驅動應用的進行自動化測試。這些測試包括UI控制的功能性測試。他們使你可以驗證整個應用的功能是否正確,其中包括了用戶介面。CodedUI尤其適合用於用戶介面中存在校驗或者其它的登錄方式的測試,比如網頁。CodedUI也可以用於人工測試用例的自動化。CodedUI測試幫助用戶測試應用程序的用戶介面。這些測試允許用戶驗證應用程序的功能。CodedUI多數時間用於幫助驗證在UI層本身的有效邏輯。它能夠驗證值對用戶介面的控制的正確性。其它方案市場有許多自動化用戶介面的方案,比如HP的QuickTestProfessional,IBMRationalFunctionalTester.其它著名的,易於使用的開源工具解決用戶介面自動化問題的有Selenium,也能夠記錄測試,需要的時候回放。市場上還有來自Microsoft的也能不需要太多努力做同樣的事。用VisualStudioMicrosoft還有CodedUI的方案用於單元測試。CodedUI適合在哪兒用?大多數安裝了VisualStudio的開發者都喜歡在VisualStudio的環境里進行單元測試,而不是使用第三方工具。由微軟提供的CodedUI,在VisualStudio環境里可謂上手即用。在開發者的機器上無需另外安裝任何東西。一旦你安裝了VisualStudio的Premium版或者Ultimate版,你就同時也安裝好了CodedUI。CodedUI可用性為了使用CodedUI,需要安裝VisualStudio2010/2012/2013的Premium版或者Ultimate版。CodedUI測試的組成CodedUI測試的組成容易理解。它可分成下列文件:UIMap.uitest這個文件是UIMap類的XML表示。UIMap類包括視窗,控制項,屬性,方法,斷言和動作。UIMap.cs對UIMap的自定義部分都存在這文件里。如果修改直接存在UIMap.designer.vb文件的話,那些修改都會在記錄結束後丟失,因為這個文件重新創建了。給每個在測應用程序中的每個模塊創建一個獨立的UIMap文件。UIMap.Designer.cs這是部分類表達各種類。這各種類是給多樣的控制項和他們的范圍,屬性,方法的類。提示:不要直接修改UIMap.Designer.cs。加入你這樣做,這個修改會被覆蓋掉。CodedUITest.cs這類表示的實際的CodeUI測試類,方法調用,和斷言調用,所有的方法和斷言默認都是從UIMap.Designer.cs文件調用的。這類有具有【codedUITest]屬性TestClass和包含具有【TestMethod]屬性的多種方法。CodedUI的特性/好處進行用戶界面測試的同時進行校驗.生成VB.Net/C#代碼.測試用例可以被記錄和重放.集成了ALMStory能夠作為每日構建的一部分來運行.根據需要進行高級擴展.和VisualStudio集成在一起,所以無需單獨購買許可.CodedUI對Web和Windows應用同樣適用.著名的Microsoft支持.創建CodedUI測試CodedUI測試可以用下列方式創建使用MTM進行快速自動構建從現有的記錄(從手動測試中記錄下來的操作)中創建CodedUI在CodedUITestBuilder創建的底稿的基礎上創建一個新的CodedUI測試.自己寫CodedUI.這個白皮書的范圍僅限於「在CodedUITestBuilder創建的底稿之上創建一個新的CodedUI測試」。小貼士:盡量使用CodedUITestBuilder。CodedUITestBuilder每一個CodedUI測試的生成都需要遵從下列步驟.記錄/停止/暫停編輯記錄下來的步驟添加斷言生成代碼創建CodedUI測試創建新的CodedUI項目要開始使用CodedUI,首先我們需要創建一個測試項目,用來保存所有CodedUI測試。創建一個新的CodedUI項目包含下列步驟打開VisualStudio2012選擇File>New>Project選擇需要的語言模板(C#orVB.Net).我們選擇了C#.選擇CodedUIProject輸入一個名字點擊OK按鈕添加CodedUI測試VisualStudio默認配置為創建CodedUI測試使用""提示:在測試的應用程序中,當你創建UI控制項時盡量使用有意義的名稱,從而對於自動生成的控制項顯得更加有意義和可用。一旦CodedUI測試工程創建完成,將會自動打開生成CodedUI測試代碼的對話框,請給出以下選項的設置。記錄操作,編輯UI地圖或添加斷言使用一個已經存在的操作記錄默認情況下選擇記錄操作,編輯UI地圖或添加斷言,無需做任何操作,然後點擊"ok"CodedUITestBuilder選擇了上述選項後,CodedUITestBuilder就會被打開,同時VisualStudio窗口被最小化。這意味著我們已經為記錄操作做好了准備。正如之前描述的,CodedUITestBuilder基於下列4個操作來做記錄(AddAssertions)GenerateCode小貼士:如果用戶界面(UI)變化了,就重新記錄測試方法或斷言方法,或者重新記錄一個既有測試方法中受影響的部分。記錄一個序列的操作.記錄一個操作主要需要下列幾步.StartRecording,通過選擇Record按鈕即可.PauseRecording,用來處理記錄過程中的其它操作,即GenerateCode.Edit/Delete操作,以防錯誤的操作被記錄。Generatecode為記錄下來的操作創建編號。會給每一個記錄下來的操作都生成編號。AddAssertions用來校驗結果。小貼士:創建斷言最好使用CodedUITestBuilder,因為它會在UIMap.Designer.cs文件中自動添加一個斷言方法。為記錄動作做計劃任何事情的成功都取決於它計劃得有多好。較好地計劃最大限度保證了任務成功完成。這樣總是比較好,在開始記錄動作之前,我們計劃好所有的所有要計劃的步驟。這里我們將要使用應用程序Windows計算器來記錄步驟。我們要自動地加和減兩個數字。在記錄加和減兩個數字的時候,下面的步驟將會用到。。點擊「開始記錄」控制項。到開始,點擊執行。在執行窗口,輸入」calc"。停止記錄,看記錄的步驟。刪除錯誤的步驟(存在的話)。產生代碼;提供和動作相匹配的名字。比如,打開計算器。提示:當你產生一個方法時候,使用一個有意義的方法的名字,代替默認名字。有意義的名字幫助識別方法的木的。。重新記錄,提供第一個數字,暫停記錄產生代碼。重新記錄,提供操作(加或者減),暫停記錄,產生代碼。重新記錄,提供第二個數字,暫停記錄,產生代碼。。加斷言提示:產生你的測試作為一系列記錄的方法提示:可以的時候,限制每個方法小於10個動作。這模塊化的方法讓UI改變時候容易替換方法。我們已經看到了CodedUI可以使開發者的生活變得多麼輕松,尤其是遇到每次都需要進行很多輸入的復雜頁面的時候。這時,測試用例只需要被記錄一次,就可以按照需要執行任意多次。使用CodedUI比使用其它工具的好處是,它能自動適配Web頁面和Windows窗口應用。CodedUI測試可以用VisualStudio2010來運行,也可以用任何版本的VS來運行,它們的功能正變得越來越強大。無需多說,CodedUI是一個由技術領導者提供的強大工具,想要體驗CodedUI測試的強大,我們應該開始在項目中使用它看看它能帶來多少ROI,我確信CodedUI不會讓你失望。
10. 什麼是自動化測試
一般是指軟體測試的自動化,軟體測試就是在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常條件和異常條件。自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。
基本信息
中文名稱
自動化測試
外文名稱
Test
定 義
人為驅動測試為轉為機器執行過程
應 用
軟體測試的自動化
工 具
QTP
自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。通常,在設計了測試用例並通過評審之後,由測試人員根據測試用例中描述的規程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,為了節省人力、時間或硬體資源,提高測試效率,便引入了自動化測試的概念。
折疊編輯本段工具介紹
折疊QTP
全名HP QuickTest Professional software ,2012年12月6日發布11.5版本,並更名為Unified Functional Testing
QTP是quicktest Professional的簡稱,是一種自動測試工具。使用QTP的目的是想用它來執行重復的手動測試,主要是用於回歸測試和測試同一軟體的新版本。因此你在測試前要考慮好如何對應用程序進行測試,例如要測試那些功能、操作步驟、輸入數據和期望的輸出數據等
QuickTest針對的是GUI應用程序,包括傳統的Windows應用程序,以越來越流行的Web應用。它可以覆蓋絕大多數的軟體開發技術,簡單高效,並具備測試用例可重用的特點。其中包括:創建測試、插入檢查點、檢驗數據、增強測試、運行測試、分析結果和維護測試等方面。
折疊WinRunner
Mercury Interactive公司的WinRunner是一種企業級的功能測試工具,用於檢測應用程序是否能夠達到預期的功能及正常運行。通過自動錄制、檢測和回放用戶的應用操作,WinRunner能夠有效地幫助測試人員對復雜的企業級應用的不同發布版進行測試,提高測試人員的工作效率和質量,確保跨平台的、復雜的企業級應用無故障發布及長期穩定運行。
企業級應用可能包括Web應用系統,ERP系統,CRM系統等等。這些系統在發布之前,升級之後都要經過測試,確保所有功能都能正常運行,沒有任何錯誤。如何有效地測試不斷升級更新且不同環境的應用系統,是每個公司都會面臨的問題。
折疊RationalRobot
是業界最頂尖的功能測試工具,它甚至可以在測試人員學習高級腳本技術之前幫助其進行成功的測試。它集成在測試人員的桌面IBM Rational Test Manager上,在這里測試人員可以計劃、組織、執行、管理和報告所有測試活動,包括手動測試報告。這種測試和管理的雙重功能是自動化測試的理想開始。
折疊AdventNetQEngine
AdventNet QEngine是一個應用廣泛且獨立於平台的自動化軟體測試工具,可用於Web功能測試、web性能測試、Java應用功能測試、Java API測試、SOAP測試、回歸測試和Java應用性能測試。支持對於使用HTML、JSP、ASP、.NET、PHP、JavaScript/VBScript、XML、SOAP、WSDL、e-commerce、傳統客戶端/伺服器等開發的應用程序進行測試。此工具以Java開發,因此便於移植和提供多平台支持。
折疊SilkTest
是業界領先的、用於對企業級應用進行功能測試的產品,可用於測試Web、Java或是傳統的C/S結構。SilkTest提供了許多功能,使用戶能夠高效率地進行軟體自動化測試。這些功能包括:測試的計劃和管理;直接的資料庫訪問及校驗;靈活、強大的4Test腳本語言,內置的恢復系統(Recovery System);以及具有使用同一套腳本進行跨平台、跨瀏覽器和技術進行測試的能力。
折疊QARun
QARun的測試實現方式是通過滑鼠移動、鍵盤點擊操作被測應用,即而得到相應的測試腳本,對該腳本可以進行編輯和調試。在記錄的過程中可針對被測應用中所包含的功能點進行基線值的建立,換句話說就是在插入檢查點的同時建立期望值。在這里檢查點是目標系統的一個特殊方面在一特定點的期望狀態。通常,檢查點在QARun提示目標系統執行一系列事件之後被執行。檢查點用於確定實際結果與期望結果是否相同
折疊TestPartner
是一個自動化的功能測試工具,它專為測試基於微軟、Java和Web技術的復雜應用而設計。它使測試人員和開發人員都可以使用可視的腳本編制和自動向導來生成可重復的測試,用戶可以調用VBA的所有功能,並進行任何水平層次和細節的測試。TestPartner的腳本開發採用通用的、分層的方式來進行。沒有編程知識的測試人員也可以通過TestPartner的可視化導航器來快速創建測試並執行。通過可視的導航器錄制並回放測試,每一個測試都將被展示為樹狀結構,以清楚地顯現測試通過應用的路徑。
折疊Holodeck
-強大的故障植入軟體測試工具
Holodeck is an advanced fault-injection tool that gives you the power to attack an application while it monitors and logs everything your application does - every function call, registry entry, piece of data read or written.
折疊TelelogicTAU
TAU第二代包含三個最新的、最強大的技術用來加速大規模軟體開發和測試:統一建模語言(UML)及它的許多最新修訂版本中的特性,UML2.0;功能強大的測試語言TTCN-3和新的構造系統的方法:Model Driven Architecture(模型驅動構架)。這三個新的業界標准結合成TAU的已經過認可的軟體開發平台,形成了一個系統,一個一流的穩定可靠的工具解決方案。TAU第二代是系統與軟體開發解決方案的一個突破,它把業界從使用了太長時間的手工、易出錯、以代碼為中心的方法中釋放出來,自然而然地邁向下一步,一個更加可視化、自動化及可靠的開發方法。Telelogic TAU/Tester是基於通用測試語言TTCN-3,用於自動化的系統和集成測試的強大工具。TAU/Tester以現代化的開發工具為基礎,提供高層測試功能,支持整個測試生命周期,加速自動化測試。TAU/Tester可使用戶特別關注於測試的開發,因為TTCN-3語言是獨立於開發語言或測試設備的,且是抽象和可移植的。
折疊AutoRunner
AutoRunner是黑盒測試工具,可以用來完成功能測試、回歸測試,可以提高測試效率,降低測試人工成本。
產品可以對以下類型對象進行GUI功能性測試:
1 Windows類型對象,一般為用C++/Delphi/VB/VFP/PB/.NetForm等技術開發的桌面程序。
2 IE網頁對象,一般性的網站,比如大的門戶類網站。
3 Java對象,一般為用AWT/Swing/SWT等技術開發的桌面程序。
4 Flex對象,網頁的內容是用Flex開發的。
5 Silverlight對象,網頁的內容是用Silverlight開發的。
6 WPF對象,一般為用WPF技術開發的桌面程序。
7 QT對象,一般為用QT技術開發的桌面程序。
折疊PhoenixFramework
Phoenix Framework是一款基於 Selenium,Webdriver,autoIt研發的一款集資源管理和測試於一體的Web自動化測試工具。最新版本是1.1.8,該工具支持無腳本執行模式,無人值守執行模式,自由定製模式。不僅執行模式可以定製,功能模塊也支持定製。使用該工具的界面創建用例,組裝腳本,啟動執行。使用該工具其他開放的介面,可手動創建腳本,組裝並執行。它支持兩種部署模式,第一種是Server-Client方式,Server與Client均為EXE程序,通信協議是Socket;另一種是WEB版部署,方便與現有系統集成,支持Linux,將Server與Client放到Tomcat或Weblogic伺服器下部署,通信協議為Http,通過WEB頁面控制並監控Client端的執行。
折疊編輯本段前提條件
實施自動化測試之前需要對軟體開發過程進行分析,以觀察其是否適合使用自動化測試。通常需要同時滿足以下條件:
1) 需求變動不頻繁
測試腳本的穩定性決定了自動化測試的維護成本。如果軟體需求變動過於頻繁,測試人員需要根據變動的需求來更新測試用例以及相關的測試腳本,而腳本的維護本身就是一個代碼開發的過程,需要修改、調試,必要的時候還要修改自動化測試的框架,如果所花費的成本不低於利用其節省的測試成本,那麼自動化測試便是失敗的。
項目中的某些模塊相對穩定,而某些模塊需求變動性很大。我們便可對相對穩定的模塊進行自動化測試,而變動較大的仍是用手工測試。
2) 項目周期足夠長
自動化測試需求的確定、自動化測試框架的設計、測試腳本的編寫與調試均需要相當長的時間來完成,這樣的過程本身就是一個測試軟體的開發過程,需要較長的時間來完成。如果項目的周期比較短,沒有足夠的時間去支持這樣一個過程,那麼自動化測試便成為笑談。
3) 自動化測試腳本可重復使用
如果費盡心思開發了一套近乎完美的自動化測試腳本,但是腳本的重復使用率很低,致使其間所耗費的成本大於所創造的經濟價值,自動化測試便成為了測試人員的練手之作,而並非是真正可產生效益的測試手段了。
另外,在手工測試無法完成,需要投入大量時間與人力時也需要考慮引入自動化測試。比如性能測試、配置測試、大數據量輸入測試等。
折疊編輯本段適用場合
通常適合於軟體測試自動化的場合:
(1)回歸測試,重復單一的數據錄入或是擊鍵等測試操作造成了不必要的時間浪費和人力浪費;
(2)此外測試人員對程序的理解和對設計文檔的驗證通常也要藉助於測試自動化工具;
(3)採用自動化測試工具有利於測試報告文檔的生成和版本的連貫性;
(4)自動化工具能夠確定測試用例的覆蓋路徑,確定測試用例集對程序邏輯流程和控制流程的覆蓋。
隨著測試流程的不斷規范以及軟體測試技術的進一步細化,軟體測試自動化已經日益成為一支不可忽視的力量。能否藉助於這支外在力量以及如何藉助於這支力量來規范企業測試流程、提高特定測試活動的效率,正是本期所要討論的話題。
軟體測試自動化的研究領域主要集中在軟體測試流程的自動化管理以及動態測試的自動化(如單元測試、功能測試以及性能方面)。在這兩個領域,與手工測試相比,測試自動化的優勢是明顯的。首先自動化測試可以提高測試效率,使測試人員更加專注於新的測試模塊的建立和開發,從而提高測試覆蓋率;其次,自動化測試更便於測試資產的數字化管理,使得測試資產在整個測試生命周期內可以得到復用,這個特點在功能測試和回歸測試中尤其具有意義;此外,測試流程自動化管理可以使機構的測試活動開展更加過程化,這很符合CMMI過程改進的思想。根據OppenheimerFunds的調查,在2001年前後的3年中,全球范圍內由於採用了測試自動化手段所實現的投資回報率高達1500%。
折疊編輯本段選型原則
然而存在優勢是否就一定意味著選擇自動化測試方案都能為企業帶來效益回報呢?也不盡然,任何一種產品化的測試自動化工具,都可能存在與某具體項目不甚貼切的地方。再加上,在企業內部通常存在許多不同種類的應用平台,應用開發技術也不盡相同,甚至在一個應用中可能就跨越了多種平台;或同一應用的不同版本之間存在技術差異。所以選擇軟體測試自動化方案必須深刻理解這一選擇可能帶來的變動、來自諸多方面的風險和成本開銷。
以下筆者給出企業用戶進行軟體測試自動化方案選型的參考性原則,這些原則是從筆者實際工作中凝練而成的,它包括以下六個方面的建議:
●選擇盡可能少的自動化產品覆蓋盡可能多的平台,以降低產品投資和團隊的學習成本;
●測試流程管理自動化通常應該優先考慮,以滿足為企業測試團隊提供流程管理支持的需求;
●在投資有限的情況下,性能測試自動化產品將優先於功能測試自動化被考慮;
●在考慮產品性價比的同時,應充分關注產品的支持服務和售後服務的完善性;
●盡量選擇趨於主流的產品,以便通過行業間交流甚至網路等方式獲得更為廣泛的經驗和支持;
●應對測試自動化方案的可擴展性提出要求,以滿足企業不斷發展的技術和業務需求。
折疊編輯本段過程
自動化測試與軟體開發過程從本質上來講是一樣的,無非是利用自動化測試工具(相當於軟體開發工具),經過對測試需求的分析(軟體過程中的需求分析),設計出自動化測試用例(軟體過程中的需求規格),從而搭建自動化測試的框架(軟體過程中的概要設計),設計與編寫自動化腳本(詳細設計與編碼),測試腳本的正確性,從而完成該套測試腳本(即主要功能為測試的應用軟體)。
1) 自動化測試需求分析。
當測試項目滿足了自動化的前提條件,並確定在該項目中需要使用自動化測試時,我們便開始進行自動化測試需求分析。此過程需要確定自動化測試的范圍以及相應的測試用例、測試數據,並形成詳細的文檔,以便於自動化測試框架的建立。
2)自動化測試框架的搭建。
所謂自動化測試框架便是像軟體架構一般,定義了在使用該套腳本時需要調用哪些文件、結構,調用的過程,以及文件結構如何劃分。
而根據自動化測試用例,我們很容易能夠定位出自動化測試框架的典型要素:
a. 公用的對象。
不同的測試用例會有一些相同的對象被重復使用,比如窗口、按鈕、頁面等。這些公用的對象可被抽取出來,在編寫腳本時隨時調用。當這些對象的屬性因為需求的變更而改變時,只需要修改該對象屬性即可,而無需修改所有相關的測試腳本。
b. 公用的環境。
各測試用例也會用到相同的測試環境,將該測試環境獨立封裝,在各個測試用例中靈活調用,也能增強腳本的可維護性。
c. 公用的方法。
當測試工具沒有需要的方法時,而該方法又會被經常使用,我們便需要自己編寫該方法,以方便腳本的調用。
d. 測試數據。
也許一個測試用例需要執行很多個測試數據,我們便可將測試數據放在一個獨立的文件中,由測試腳本執行到該用例時讀取數據文件,從而達到數據覆蓋的目的。
在該框架中需要將這些典型要素考慮進去,在測試用例中抽取出公用的元素放入已定義的文件,設定好調用的過程。
折疊編輯本段腳本編寫
該編寫過程便是具體的測試用例的腳本轉化。初學的自動化測試人員均會使用錄制腳本到修改腳本的過程。但專業化的建議是以錄制為參考,以編寫腳本為主要行為,以避免錄制腳本帶來的冗餘、公用元素的不可調用、腳本的調試復雜等問題。
折疊編輯本段測試運行
事實上,當每一個測試用例所形成的腳本通過測試後,並不意味著執行多個甚至所有的測試用例就不會出錯。輸入數據以及測試環境的改變,都會導致測試結果受到影響甚至失敗。而如果只是一個個執行測試用例,也僅能被稱作是半自動化測試,這會極大的影響自動化測試的效率,甚至不能滿足夜間自動執行的特殊要求。
因此,腳本的測試與試運行極為重要,它需要詳查多個腳本不能依計劃執行的原因,並保證其得到修復。同時他也需要經過多輪的腳本試運行,以保證測試結果得一致性與精確性。
自動化測試引入的原因是就把軟體測試人員從枯燥乏味的機械性手工測試勞動中解放出來,以自動化測試工具取而代之,使測試人員的精力真正花在提高軟體產品質量本身。
折疊編輯本段注意事項
首先,一個企業實施測試自動化,絕對不是拍腦袋說干就能幹好的,它不僅涉及測試工作本身流程上、組織結構上的調整與改進,甚至也包括需求、設計、開發、維護及配置管理等其他方面的配合。如果對這些必要的因素沒有考慮周全的話,必然在實施過程中處處碰壁,既定的實施方案也無法開展。其次,盡管自動化測試可以降低人工測試的工作量,但並不能完全取代手工測試。100%的自動化測試只是一個理想目標,根據筆者的經驗,即便一些如SAP、OracleERP等測試庫規劃十分完善的套件,其測試自動化率也不會超過70%。所以一味追求測試自動化只會給企業帶來運作成本的急劇上升。再次,實施測試自動化需要企業有相對規模的投入,對企業運作來說,投入回報率將是決定是否實施軟體測試自動化的最終指揮棒,筆者建議企業在決定實施軟體測試自動化之前,必須要做量化的投資回報分析。此外,實施軟體測試自動化並不意味著必須采購強大的自動化軟體測試工具或自動化管理平台,畢竟軟體質量的保證不是依靠產品或技術,更多的因素在於高素質的人員和合理有效的流程。
折疊編輯本段實戰模擬
折疊背景介紹
A公司是一家大型保險公司,擁有近20個城市的分公司,並在其中5個城市建立了IT支持中心。平均每年的上線應用數量在20個左右(新業務系統和原有業務系統的主要版本發布)。A公司的專職測試團隊人數不足30人而且測試團隊的測試人員技能參差不齊測試只是作為項目上線前的一道工序而已。在測試團隊內部也幾乎沒有自動化的手段,主要依靠手工測試。由於已上線應用系統的問題,開發團隊必須分出一部分資源去維護和修復上線應用,而同時測試團隊的測試成果和效率卻無法和這些應用質量掛鉤,也更無從談起對軟體質量的控制。所以,A公司決定在軟體質量和測試方面進行投入,他們考慮以下幾方面:
●引進軟體測試流程管理的自動化,提高軟體測試過程的管理水平,使軟體測試和軟體開發一樣可被評估、被衡量。
●實現性能測試自動化,所有應用上線之前必須有應用性能風險評估報告和相關部門的確認
●逐步實現功能測試的自動化,在目前人員配置的情況下,把部分手工測試變成自動化測試,提高測試可信度,降低人為錯誤。
●通過軟體測試自動化,管理軟體測試中的案例、缺陷、報告等資產,進一步提升軟體測試的效率並建立測試基礎庫。
●在規劃中,將來的2~3年內使所有的應用系統上線都必須有數字化的測試數據作為依據。
折疊系統的情況
由於保險公司的業務種類繁多,同時在經過了幾十年的經營後,公司內的應用系統從早期的終端方式到現代的J2EE和.NET等應有盡有,魚龍混雜。IT部門已經建立的3年規劃,即在未來的3年時間內將所有終端和C/S方式的應用轉換成B/S架構,但當前仍然需要對這些舊應用系統進行維護,以保證業務的順利進行。對於開發部門來說,新應用開發基本上已經以B/S架構為主,主要是基於J2EE架構的WebHTTP應用和部分Window.NETForm的應用。
折疊公司現狀
企業機構在做測試自動化選型時一定要考慮清楚企業內部哪些部分可以實施自動化、哪些部分暫不實施自動化、哪些部分僅在某幾個項目做自動化試點。切忌匆忙上馬或盲目否定,缺乏實事求是的理性思考。
測試部門僅負責系統測試和對用戶驗證測試進行管理,對於之前的單元測試和集成測試主要由開發團隊中劃分出的一部分臨時測試人員完成。由於缺乏監測手段,測試部門也無法收集和確定集成測試和單元測試的完成情況,在整個軟體測試過程中,業務需求是由開發部門通過RationalRequisitePro進行管理,但測試需求尚沒有提出要求,測試案例主要通過在公司公用的文件伺服器中的目錄管理方式管理,對測試中缺陷流程等管理主要依靠郵件的流轉進行處理90%以上的測試是通過Excel和Word等測試案例文檔來完成,測試人員對軟體測試自動化的認識僅停留在"記錄+回放"的認識上。
折疊方案
方案A:A公司可以採用美科利(Mercury)公司產品為主的軟體測試自動化方案。
●依照原先的郵件流轉過程配置TestDirector缺陷管理流程,為每個保險業務的開發小組和測試團隊分配相應的用戶許可證,取消原有郵件方式。
●部署MercuryQuickTestProfessional,以便完成應用程序相關功能測試。
●部署MercuryLoad-Runner。從測試團隊中分化出專職的性能測試自動化工程師和小組,和業務部門協調,建立A公司應用系統上線性能指標,通過LoadRunner給出測試指標。
●建議A公司成立專門的質量控制部門,對TestDirector中的數據定期進行分析,建立相關質量模型,以便於企業量化管理和過程改進。
方案B:A公司也可以採用IBMRational產品為主的軟體測試自動化方案。
●採用RationalTestmanager來進行整個測試流程的管理,為相關開發和測試小組成員分配相應許可權,改變以前通過郵件以及Word、Excel文檔管理測試的工作方式。
●部署RationalRobot,用它來完成功能相關的測試工作以及新版本發布時的冒煙測試。此外,RationalRobot也能較好地完成性能相關測試。統一的操作方式降低了工具的學習周期和培訓帶來的大筆開銷。
●部署RationalPurifyplus,使測試工作前移到開發階段。由於Purifyplus能較好地支持白盒測試,編程人員在編碼階段引入的錯誤能盡早被檢測到,這大幅降低了後期測試的開銷。
●建議A公司成立專門的質量控制部門,對Testmanager中的數據定期進行分析,建立相關質量模型,以便於企業量化管理和過程改進。
方案C:A公司也可以採用開源軟體為主的軟體測試自動化方案。
●採用Bugzilla來進行Bug跟蹤管理,採用BugzillaTestRunner進行測試用例管理,採用CVS進行測試資源的配置管理。
●採用MaxQ和WebInject對B/S結構的應用系統進行功能測試。
●採用DBMonster、Open-STA、LoadSim進行性能相關測試。
●可採用Xunit架構的開源工具對不同語言的程序單元進行單元測試。
●建議A公司成立專門的開源軟體維護小組,以解決可能會碰到的工具維護工作。
●建議A公司成立專門的質量控制部門,對Bugzilla、TestRunner、CVS中的數據定期進行分析,建立相關質量模型,以便於企業量化管理和過程改進。
折疊方案評價
由於不同客戶在組織架構、員工素質以及流程管理水平等方面的不同,我們很難用一個實例、一兩句話來說明不同解決方案的適用性。在上面的例子中,筆者給出了3種可行的方案,具體選擇哪一個,需要仔細權衡。這里筆者給出一般性的意見,對於不想受制於某個測試自動化廠家的企業,開源絕對是一個理想的選擇。此外,它不需要支付成本,工具的源代碼可以隨意修改,因而具有較好的靈活性。但開源工具的弊端也是明顯的:缺乏使用培訓和技術支持,工具的用戶界面一般也較為粗糙。而對於那些比較看重培訓和售後支持的企業,筆者建議選擇IBMRational或Mercury或其他廠家的產品。這樣雖然需要支付一部分費用,但省去了工具維護所需要的大量工作。至於具體選擇哪個廠家的產品為好,筆者尚無結論性意見。相信讀者朋友都有一些見仁見智的看法,不妨來信交流。