Web自動化測試
Microsoft Engineering ExcellenceMicrosoft Confidential Web自動化測試 Microsoft Engineering ExcellenceMicrosoft Confidential 建立環(huán)境(一) Microsoft Engineering ExcellenceMicrosoft Confidential 建立環(huán)境(二) Microsoft Engineering ExcellenceMicrosoft Confidential 建立環(huán)境(三) Microsoft Engineering ExcellenceMicrosoft Confidential 建立環(huán)境(四 )打開IE,訪問http:/localhost/photogallery用你喜歡的任意用戶名登錄訪問網(wǎng)站通過Gallery和Categories訪問圖片添加至少一張圖片到snapshot album返回到主頁(Main)并結(jié)賬以 Charm方式結(jié)賬選擇“Buy Now”按鈕 點擊Complete Your Visit 鏈接,確保你最后到了 “Thank you for Dropping By” 頁面 Microsoft Engineering ExcellenceMicrosoft Confidential 建立環(huán)境(五 )注意 : 你做的這些步驟,將是你在Web測試中將要進行的操作(從新用戶登陸到結(jié)束頁面)將你所做的操作,用筆記錄下來,便于重現(xiàn)在結(jié)賬之前,你必須至少選擇一幅照片放入snapshot album中 Microsoft Engineering ExcellenceMicrosoft Confidential 課程目標(biāo)在成功完成本次課程后,你將能夠:記錄、運行并分析web測試調(diào)試并了解web測試步驟將抽象規(guī)則和驗證規(guī)則加入web測試創(chuàng)建并使用web測試插件掌握數(shù)據(jù)綁定進行web測試 Microsoft Engineering ExcellenceMicrosoft Confidential 目標(biāo)第一課:web測試基礎(chǔ)第二課:定制抽象規(guī)則和驗證規(guī)則第三課:插件第四課:web測試編碼第五課:數(shù)據(jù)綁定 Microsoft Engineering ExcellenceMicrosoft Confidential Web測試Web測試是以“錄制+重放”(Recorder and Playback)為基礎(chǔ),輔以編碼的測試測試人員可加入必要的驗證條件不僅僅為ASP.NET而設(shè)計適用于HTTP為基礎(chǔ)的任何網(wǎng)頁也可被用于測試Web服務(wù) Microsoft Engineering ExcellenceMicrosoft Confidential Web測試引擎web測試工作在HTTP層Web測試包含一系列的HTTP請求,請求主要由查詢字符串參數(shù)(QueryString),表單(Form)參數(shù)和URL組成。Web測試引擎執(zhí)行這些HTTP請求,從服務(wù)器端得到響應(yīng)常見誤解:因為錄制發(fā)生在IE中,所以web測試必須使用IE來執(zhí)行。實際情況:所有請求都直接使用web測試引擎,通過標(biāo)準(zhǔn)的HTTP請求/響應(yīng),與被測的web服務(wù)器進行通信 Microsoft Engineering ExcellenceMicrosoft Confidential Microsoft Engineering ExcellenceMicrosoft Confidential Microsoft Engineering ExcellenceMicrosoft Confidential 創(chuàng)建Web測試清空緩存、歷史記錄等有可能影響測試的信息通過TestNew TestWeb Performance Test創(chuàng)建新的web測試允許在錄制之前,給測試起名在web瀏覽器中,進行一系列要測試的操作,以添加測試步驟停止記錄,生成測試加入必要的驗證規(guī)則 Microsoft Engineering ExcellenceMicrosoft Confidential Demo 01 PhotoGalleryNewUser.webtest在.testrunconfig文件中,將瀏覽器類型改為IE6 Microsoft Engineering ExcellenceMicrosoft Confidential 操作web測試常用兩種方法操作Web測試右鍵上下文 (DEMO)工具欄 Microsoft Engineering ExcellenceMicrosoft Confidential 通過右鍵菜單插入請求(Add Request)插入web服務(wù)請求(Add Web Service Request )插入事務(wù)(Add Transaction)插入循環(huán)(Add Loop)插入條件(Add Condition)插入注釋(Add Comment)插入對web測試的調(diào)用(Add Call to Web Test)插入錄制(Add Recording) Microsoft Engineering ExcellenceMicrosoft Confidential 提取Web測試Web測試可以調(diào)用其它web測試讓web測試變成可重用的測試模塊創(chuàng)建過程在測試列表點右鍵,選擇提取web測試(Extract Web Test)選擇第一個和最后一個web請求 根據(jù)實際需要,決定要不要保留當(dāng)前測試的屬性,驗證規(guī)則和插件等 Microsoft Engineering ExcellenceMicrosoft Confidential Web測試觀察器(一)當(dāng)運行web測試時,出現(xiàn)在Visual Studio窗口的下端主要用于:檢查測試運行結(jié)果逐步跟蹤web測試的詳細過程 Microsoft Engineering ExcellenceMicrosoft Confidential Web測試觀察器(二)Web瀏覽器(Web Browser) :渲染當(dāng)前頁面請求(Request)響應(yīng)(Response)上下文(Context):名字/值 對細節(jié)(Details):驗證和抽象規(guī)則的執(zhí)行情況 Microsoft Engineering ExcellenceMicrosoft Confidential 驗證規(guī)則驗證文字,標(biāo)簽,屬性等響應(yīng)內(nèi)容,以判定web是否正常默認(rèn)驗證HTTP的錯誤代碼(400和599之間)右鍵web測試對應(yīng)的請求,選擇添加驗證規(guī)則(Add Validation Rule) Microsoft Engineering ExcellenceMicrosoft Confidential 默認(rèn)支持的驗證規(guī)則(一)Find Text:驗證在響應(yīng)中存在對應(yīng)文本Maximum Request Time:驗證請求必須在對應(yīng)時間內(nèi)結(jié)束Response Time Goal:驗證對應(yīng)請求的響應(yīng)時間要小于或等于設(shè)定的目標(biāo)值Response URL:驗證重定向后的響應(yīng)URL是不是與記錄的響應(yīng)URL一致 Microsoft Engineering ExcellenceMicrosoft Confidential 默認(rèn)支持的驗證規(guī)則(二)Selected Options: 驗證HTML的select標(biāo)簽的某選項Tag Inner Text:驗證HTML特定標(biāo)簽存在對應(yīng)的內(nèi)嵌文本Required Tag:驗證HTML中存在對應(yīng)的標(biāo)簽Form Field:驗證某具體的表單域確實存在 Required Attribute Value:驗證HTML特定標(biāo)簽中,存在對應(yīng)的屬性和值 Microsoft Engineering ExcellenceMicrosoft Confidential 練習(xí)1: web測試在本次練習(xí)中,你將創(chuàng)建web測試,同時添加驗證,最后分析測試結(jié)果01 PhotoGalleryTest.webtest Microsoft Engineering ExcellenceMicrosoft Confidential 目標(biāo)第一課:web測試基礎(chǔ)第二課:定制抽象規(guī)則和驗證規(guī)則第三課:插件第四課:web測試編碼第五課:數(shù)據(jù)綁定 Microsoft Engineering ExcellenceMicrosoft Confidential 抽象規(guī)則從web頁面中抓取數(shù)據(jù),該數(shù)據(jù)在其他頁面中使用從響應(yīng)來抓取數(shù)據(jù)數(shù)據(jù)存儲在上下文變量中,隨后的請求可使用系統(tǒng)默認(rèn)會自動抓取響應(yīng)的隱藏域這個頁面包含了數(shù)據(jù) ABC數(shù)據(jù)ABC將在此頁面中被使 用Page N Page N+1 Microsoft Engineering ExcellenceMicrosoft Confidential 將數(shù)據(jù)存儲在上下文數(shù)據(jù)以“關(guān)鍵字/值”(key/value)對的形式,存儲在上下文中通過上下文標(biāo)簽可以查看Web測試的抽象數(shù)據(jù)可執(zhí)行內(nèi)置的抽象規(guī)則以添加數(shù)據(jù)“關(guān)鍵字/值“對也可通過編程進行添加keyname, value ) Microsoft Engineering ExcellenceMicrosoft Confidential 從上下文中獲取數(shù)據(jù)通過關(guān)鍵字從上下文中獲取對應(yīng)值關(guān)鍵字(key)被大括號包圍也可通過編程進行獲取 Microsoft Engineering ExcellenceMicrosoft Confidential q右鍵web測試中的請求,然后選擇添加抽象規(guī)則命名一個關(guān)鍵字,該關(guān)鍵字將被加入上下文提取規(guī)則的屬性 Microsoft Engineering ExcellenceMicrosoft Confidential Microsoft Engineering ExcellenceMicrosoft Confidential 隱藏字段抽象隱藏字段抽象由系統(tǒng)自動添加這些自動添加的抽象通過序列號的方式命名可以對其進行重命名(不推薦)通常抽象的格式是$HIDDENsequenceNumber.hiddenfieldname value Microsoft Engineering ExcellenceMicrosoft Confidential Demo 02-1 PhotoGalleryExtractPrice.webtest Microsoft Engineering ExcellenceMicrosoft Confidential 定制驗證和抽象規(guī)則(一)創(chuàng)建測試項目創(chuàng)建一個類庫項目,該項目將用于存儲定制的規(guī)則在該類庫中,添加引用在源代碼文件中,添加using語句在源代碼中,重載必要的函數(shù)編譯類庫在測試項目中,添加對定制類庫的引用 Microsoft Engineering ExcellenceMicrosoft Confidential 定制驗證和抽象規(guī)則(二)抽象繼承ExtractionRule重載Extract( object sender, ExtractionEventArgs e)使用ExtractionEventArgs定制.Request.Response.WebTest.Context驗證繼承ValidationRule重載Validate( object sender, ValidationEventArgs e)使用ValidationEventArgs定制E.IsValidE.Message正確配置的定制抽象規(guī)則和驗證規(guī)則將自動出現(xiàn)在“添加”和 “添加驗證”對話框中 Microsoft Engineering ExcellenceMicrosoft Confidential Uses Custom Extraction.webtestMyExtractionRule.csMyValidationRule.cs Microsoft Engineering ExcellenceMicrosoft Confidential 在本次練習(xí)中,你將定制并使用web測試的抽象規(guī)則和驗證規(guī)則02-2 PhotoGalleryValidatePrice.webtestPriceValidation.cs Microsoft Engineering ExcellenceMicrosoft Confidential 目標(biāo)第一課:web測試基礎(chǔ)第二課:定制抽象規(guī)則和驗證規(guī)則第三課:插件第四課:web測試編碼第五課:數(shù)據(jù)綁定 Microsoft Engineering ExcellenceMicrosoft Confidential Web測試插件Web測試可與WebTestPlugin和WebTestRequestPlugin關(guān)聯(lián)WebTestPlugin在每次web測試迭代中,執(zhí)行一次包括了以下2個操作: PreWebTest PostWebTestWebTestRequestPlugin在每次web請求前/后執(zhí)行一次包括了以下2個操作: PreRequest PostRequest Microsoft Engineering ExcellenceMicrosoft Confidential Web測試執(zhí)行 http:/someserver/somedir/somepage.html一系列的web請求WebTestPlugin : PreWebtest WebTestPlugin : PostWebtestWebTestRequestPlugin: PreRequest抽象規(guī)則 驗證規(guī)則1 322WebTestRequestPlugin、抽象規(guī)則 Microsoft Engineering ExcellenceMicrosoft Confidential Exercise 3 - Cookies在本次練習(xí)中,你將提取并設(shè)置緩存03-1 GenerateCookie.webtest03-2 Returning User.webtestCookieManipulation.cs Microsoft Engineering ExcellenceMicrosoft Confidential 目標(biāo)第一課:web測試基礎(chǔ)第二課:定制抽象規(guī)則和驗證規(guī)則第三課:插件第四課:web測試編碼第五課:數(shù)據(jù)綁定 Microsoft Engineering ExcellenceMicrosoft Confidential 支持兩種語言:C# 和 VB支持條件語句和循環(huán)語句最常用的場景是:先錄制測試,再轉(zhuǎn)換成代碼,最后加入定制邏輯當(dāng)然,也可以不用先錄制而直接創(chuàng)建(不推薦) Microsoft Engineering ExcellenceMicrosoft Confidential 將web測試轉(zhuǎn)換成代碼錄制下來的web測試只是陳述式的通過工具欄可以方便將陳述式測試變成代碼代碼的可見部分是一個重載方法用yield return來返回WebTestRequest對象給web測試引擎 Microsoft Engineering ExcellenceMicrosoft Confidential Web測試編碼示例public override IEnumerator GetRequestEnumerator() WebTestRequest request3 = new WebTestRequest(“”); ExtractHttpHeader rule1 = new ExtractHttpHeader(); rule1.Header = Set-Cookie; rule1.Required = true; rule1.ContextParameterName = Cookie; request3.ExtractValues += new EventHandler(rule1.Extract); yield return request3; 可以添加分支,循環(huán),以及其他的條件邏輯 Microsoft Engineering ExcellenceMicrosoft Confidential 練習(xí) 4 web測試編碼本次練習(xí),將一個web測試轉(zhuǎn)換成代碼,并通過代碼修改,擴展測試功能PhotoGalleryValidatePriceCoded.csPriceValidation.cs02-2 PhotoGalleryValidatePrice.webtest Microsoft Engineering ExcellenceMicrosoft Confidential 目標(biāo)第一課:web測試基礎(chǔ)第二課:定制抽象規(guī)則和驗證規(guī)則第三課:插件第四課:web測試編碼第五課:數(shù)據(jù)綁定 Microsoft Engineering ExcellenceMicrosoft Confidential 默認(rèn)可以提供對HTTP請求的部分輸入比如:訪問憑據(jù) (用戶名,密碼)數(shù)據(jù)源包括.CSV文件, XML文件和SQL Server Microsoft Engineering ExcellenceMicrosoft Confidential 將數(shù)據(jù)庫綁定到web測試第一步: 連接到數(shù)據(jù)庫第二步: 綁定數(shù)據(jù)庫字段到請求中的數(shù)據(jù)項第三步: 配置web測試以使用綁定 Microsoft Engineering ExcellenceMicrosoft Confidential 綁定數(shù)據(jù)字段綁定到查詢字符串參數(shù)或表單Post參數(shù) 對于每一記錄運行一次 Microsoft Engineering ExcellenceMicrosoft Confidential 05 MuscleCars.webtest Microsoft Engineering ExcellenceMicrosoft Confidential 本次練習(xí),將綁定數(shù)據(jù)到web測試05 PhotoGalleryValidatePrice.webtestPriceValidation.cs Microsoft Engineering ExcellenceMicrosoft Confidential 其他工具Plugins包含了一些定制的抽象規(guī)則,驗證規(guī)則和web測試插件Fiddler支持HTTPS可以用來記錄Java Script 和Ajax請求