




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于Web的自動化測試框架的設計與實現自動化測試框架ASeleinum和JMeterB新框架結構的設計與實現C實驗結果和總結DContent
軟件測試是保障和提高軟件質量的重要手段。軟件開發者和使用者必須對軟件進行充分的測試,以確保其正常工作。統計表明,在典型的軟件開發項目中,軟件測試工作量往往占軟件開發總工作量的40%以上。因此提高軟件測試過程的效率至關重要。
為了提高測試效率,越來越多的測試工作引入了自動化測試的思想和方法。實踐證明,軟件自動化測試技術提高了軟件測試的速度和效率,節省了軟件測試成本,縮短了產品發布周期。同時,自動化測試技術也完成了許多手工測試無法實現的工作。所以,采用自動化測試方法和相應的測試框架成為了軟件開發組織測試工作的重要支撐手段。例如,采用自動化測試工具能在測試活動中減少一部分開銷,同時,有些測試活動是靠手工方式難以實現和度量的;自動化測試框架能夠提高測試效率,快速定位測試軟件各版本中的功能、性能缺陷。軟件質量的保證——測試項目進度難以控制,項目管理難度加大1對項目風險的控制能力較弱,項目風險在項目開發較晚的時候才能夠真正降低2軟件項目開發費用超過預算3TraditionalSoftwareTest傳統的軟件測試流程:一般是在軟件開發過程中進行少量的單元測試。然后在整個軟件開發結束階段,集中進行大量的測試,包括功能和性能的集成測試和系統測試。隨著軟件開發的越來越復雜,傳統的軟件測試流程不可避免的給我們帶來以下問題:1手工測試2自動化測試通過對需求規格的理解來設計測試用例,在測試用例通過評審之后,由測試人員根據測試用例中描述的規程一步步編寫相應的測試代碼并執行,記錄程序執行后的結果并提交測試報告,最后將實際結果與期望結果進行比較。自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。自動化軟件測試就是在預設條件下對已有的測試用例集進行自動測試,生成測試結果后自動對結果進行評估并產生測試報告。(預先條件應包括正常條件和異常條件)3自動化測試用例為了進一步節省測試中人力、時間或硬件資源,提高測試效率,便提出了自動化生成測試用例的概念。自動化測試用例是根據指定的需求表達規范或模型來自動生成測試中所需的測試用例。這些規范或模型通常表現為UML圖或是通用格式文檔(XML、HTML)等。Overview
自動化測試框架,即是應用于自動化測試所用的框架。按照框架的定義,自動化測試框架要么是提供可重用的基礎自動化測試模塊,如:selenium、watir等,它們主要提供最基礎的自動化測試功能,比如打開一個程序,模擬鼠標和鍵盤來點擊或操作被測試對象,最后驗證被測對象的屬性以判斷程序的正確性;要么是可以提供自動化測試執行和管理功能的架構模塊,它們本身不提供基礎的自動化測試支持,只是用于組織、管理和執行那些獨立的自動化測試用例,測試完成后統計測試結果,通常這類框架一般都會集成一個基礎自動化測試模塊。自動化測試框架可以減少測試腳本實現和維護的成本,使測試人員把精力集中在測試用例的設計上。1自動化測試框架的定義Overview1)測試框架與被測應用程序獨立雖然測試的應用程序不一樣,但被測應用程序之間卻會有相同的地方,測試框架應聚焦在不同測試應用程序中共同的部分,把與具體應用程序有關的部分從框架中移除。2)測試框架應易于擴展、維護測試框架應被高度模塊化,這樣可以提高框架的維護性。各個模塊之間相互獨立,對模塊內部的修改不應該影響其他模塊。3)測試腳本所使用的測試語言應該是與框架獨立的不同的測試框架可能在不同的應用領域有不同的表現,當需要從一個測試框架遷移到另外一個測試框架時,要保證不需重寫已有的測試腳本。4)測試框架不應該讓框架的復雜性影響到測試人員對于一般的測試人員來說,測試框架的使用要簡單、測試語言要易于理解,這樣可以使他們專注于業務相關內容的編寫。2自動化測試框架的特點Overviewa)數據驅動測試框架(TheData-DrivenTestingFramework)將測試數據與測試腳本分離,數據驅動最適合測試的業務邏輯固定不變的應用程序,只有測試數據會變化。數據驅動提高了測試邏輯的使用效率和可維護性。b)測試腳本模塊化框架(TheTestScriptModularityFramework)模塊驅動測試使用獨立的小腳本來對應待測試的模塊、零件和子功能。這些不同層級的小腳本按照一定規則組合成更大級別的測試,就能實現一個特定功能的測試用例。模塊驅動測試引入了抽象和封裝的原則,目的是提升自動化測試的可維護性和可擴展性。3自動化測試框架的類型Overviewc)測試庫構架框架(TheTestLibraryArchitectureFramework)就是模塊化思想的升華,其為應用程序的測試創造了庫文件(可以是APIs、DLLs等),這些庫文件為一系列函數的集合。其與模塊化思想不同的是,其拓展了接口思想,即可以通過接口去傳遞參數,可以說是一個帶有接口的交互型模塊。d)關鍵字驅動測試框架(TheKeyword-DrivenTestingFramework)關鍵字驅動(表驅動)是對數據驅動的邏輯擴展,它提供了一系列數據表和關鍵字,這些數據表和關鍵字獨立于執行它們的測試自動化工具并可以用來驅動待測應用程序和數據的測試腳本代碼。從關鍵字驅動的思想可以看出,該種測試框架不僅實現了將數據和腳本相分離,而且實現了數據和測試邏輯的分離,大大提高了腳本的復用度和維護性,從而更大限度地實現了測試工具的自動化。3自動化測試框架的類型Web自動化測試框架
分布式計算將網絡服務帶到世界的每一個角落,這些服務又大都部署在web應用系統中。如何保障高質量的web服務是個非常重要的問題。對于一個復雜的web應用系統需要測試的方面太多了,特別是那些開發周期很長的系統,如果只依賴于手工來完成測試,顯然測試成本將非常高且易出錯,通過使用自動化測試工具,能夠極大的降低web系統維護的成本。但是存在一個問題:如何才能提高測試腳本的可復用性和移植性?GrinderOpenSTASiegeJMeterPylotWatirSeleniumCommonTestAutomationFrameworkOnWebSelenium是一個開源的和便攜式的自動化軟件測試工具,用于測試Web應用程序有能力在不同的瀏覽器和操作系統運行。Selenium真的不是一個單一的工具,而是一套工具,幫助測試者更有效地基于Web的應用程序的自動化。SeleniumApacheJMeter是Apache組織開發的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設計用于Web應用測試,但后來擴展到其他測試領域。JMeter可以用于對服務器、網絡或對象模擬巨大的負載,測試來自不同壓力類別下它們的強度和分析整體性能。JMeterSelenium&JMeter1)測試瀏覽器的兼容性:測試應用程序能否兼容工作在不同瀏覽器和操作系統之上。2)測試系統功能:錄制用例自動生成測試腳本,用于回歸功能測試或者系統用例說明。FunctionTheDetialsofSeleniumVersionSelenium引入了RemoteControlServer這樣一個代理Server,JavaScript腳本注入和與Server通訊都通過這個代理Server來進行。之所以引入這個代理RemoteControlServer是因為“同源策略”的限制,通過這個代理服務器來“欺騙”遠程Server,達到使其以為是從同一個地方load代碼以正確返回請求數據的效果。流程說明:1.客戶端建立與selenium-RCserver的連接。2.SeleniumRCServer啟動一個瀏覽器,并注入JS代碼3.將Selenese代碼傳到客戶端的Selenium-Core中。4.Selenium-Core翻譯并解析執行用戶錄制的操作。5.讓代理Server進行通訊6.RemoteControlServer負責跟遠程Web應用服務器進行通訊。7.操作完成,顯示結果,并執行下一指令。ImplementTheoryTheTheoryofSelenium可以看見測試人員的工作如紫色箭頭所示,而自動化工作如藍色箭頭所示。它能自動識別測試用例,并讀取配置文件以測試套件運行不同的測試用例。它還可以被合并到項目持續集成軟件中,定期地持續進行基于Web的功能性測試,并將報告以郵件形式通知管理人員。具體說明如下:1.由測試人員錄制腳本并導出JUnit。2.測試人員修改配置文件,將測試用例包含在測試套件中。3.合并在持續集成軟件后,框架會定期檢測配置的測試套件4.逐個加載測試用例。5.以測試套件為單位其執行所有測試用例。6.執行完成后將測試套件的結果報告以郵件形式通知管理人員EffectsTheWorkProcess
JMeter使用了不同技術和協議,是一款可以進行配置和執行負載測試、性能測試和壓力測試的工具。它能夠模擬不同類型的請求、訪問各種類型的數據庫、采用不同的協議,如FTP,HTTP,HTTPS,LDAP等。●負載測試:這類測試使系統或者應用程序在預先設計好的極端場景下測試運行。這類測試用來評估系統或者程序在極端條件下的行為。
●性能測試:這種測試被用來檢測系統的性能表現,包括特定情況下,系統的響應能力和穩定性。
●壓力測試:這類測試通過載入更多的外部資源,并使系統組件超越其所設定的能力范圍,試圖使系統掛掉。IntroductionTheDetialsofJMeterTestingType
JMeter是一款Java桌面應用程序,它的用戶界面采用SwingJavaAPI實現。基于這兩點,JMeter是一個跨平臺工具,能夠運行在任何安裝了Java虛擬機的操作系統(Windows,Linux,Mac)的設備上。它的框架支持并發和多線程或者線程組的執行。這對于配置負載測試和壓力測試非常有用。它是可擴展的,提供了大量的可用插件。
1線程組3定時器5監聽器2采樣器4邏輯控制器6斷言代表一定數量的并發用戶,它可以用來模擬并發用戶發送請求。負責定義請求(線程)之間的延遲間隔,模擬對服務器的連續請求。負責收集測試結果,同時也被告知了結果顯示的方式。模擬發送請求到不同類型的服務器。它們是每一個測試計劃的基本要素,一切都圍繞這些采樣器而工作。邏輯控制器允許你配置一個線程組內不同采樣器的執行順序。用于來判斷請求響應的結果是否如用戶所期望,是否正確。ComponentSimpleDemo場景描述:自己建立一個服務器端,接受參數:name和age,并將這些數據保存到數據庫中;http://localhost:8080/Server/SaveUserServlet?name=xxx&age=xxx我們通過JMeter對其進行壓力測試;目標:開1000個線程,每個線程循環1次,全部操作在3秒內完成;圖形操作:
基于Selenium和JMeter的框架設計TheFeatureofnewSkeleton
基于web的自動化測試框架常常會提供優秀的接口,能夠方便地調用它們在web應用上作模塊測試,性能測試,和負載測試等。
由于Selenium和JMeter運行在不同的層次上,Selenium工作在用戶層上,而JMeter工作在協議層上。為了便于在兩種測試框架之間運行不同的測試以及分配測試程序和測試數據,這篇文章提出了一個綜合了Selenium和JMeter的自動化測試框架。通過實現這個新的自動化測試框架,能夠靈活地對web應用做各種類型的測試,并且測試的重用性,可擴展性,綜合性和精確性都有很好的表現。使用這個框架,能夠有效的提高自動化測試的擴張性和可重用性,結果顯示新的框架能提高軟件生產的質量并提高效率。TheDesignandImplement
采用Selenium測試工具的測試自動化框架用來解決web應用在瀏覽器上的兼容性;JMeter被引用是為了提供測試者一個工具去模擬瀏覽器發送不同請求方法給web應用服務器。使用這個新的測試自動化框架,測試者可以配置測試類型,通過修改測試配型轉換各種不同的測試,而不需要改變相關的測試用例單元。Fig1.Thearchitectureoftestframework模型Model1轉換器Translator2執行器Actionworker3比較器Comparator4結果收集器Test-resultCollector5TheDesignandImplementa.集成自動化測試框架的組成結構1模型(Model)模型指的是包含來自于XML的對象模型(實體)。如動作(Action),斷言(Assertion),元素(Element),應用數據(ApplicationData),用例(Cases),工具設置(ToolsSetting)。TheDesignandImplement2轉換器(Translator)
轉換器用來將測試者準備好的測試用例轉換到一個能夠被特定測試工具識別的測試用例工具。整個過程分為兩步:第一步將測試用例歸納到與不同測試類型相關的動作集,比如前端(UI),后端(backend),負載測試(loadingtest);第二步將每一個動作集歸納到特定的命令或腳本工具,這些命令或腳本工具依賴于所采用的實際的測試工具。轉換層步驟流程如下:1)通過TranslatorName()函數獲得一個特定測試類型的轉換器名。2)通過特定轉化器getTranslatorInstance()和translate()函數將測試用例轉
換到測試用例域。3)通過getToolTranslatorName()函數獲得特定測試類型的的轉換器名。4)通過轉換器getToolTranslatorInstance()和translate()函數從測試用例域獲取測試用例工具。TheDesignandImplement3執行器(Actionworker)TheDesignandImplement
執行器(ActionWorker)的功能是調用相應的工具執行相關的動作。執行器層步驟流程如下:1)通過getActionWorkerName()函數獲得一個執行器(actionworker)2)通過getActionWorkerInstance()獲得執行器實例(actionworkerinstance)3)最后一步通過doAction()執行。4比較器(Comparator)TheDesignandImplement這部分能夠確定測試用例是否成功。這部分手機測試結果和預期結果。然后對這兩種結果作比較。主要步驟如下:1)通過getTestResultCollectorName()和個體TestResultCollectorInstance()實例化一個測試結果收集器collectTestResult().2)通過collectExpectedResult()收集運行測試實例時的預期結果。3)通過getComparatorName()和getComparatorInstance()實例化一個比較器實例。4)通過compare()函數對測試結果和預期結果作比較并得到比較結果。WholeProcedure1)通過使用xmlObjectConvertor()將測試用例轉換到測試用例(TestCase)實體,將測試用例的測試步驟轉換到測試用例動作(TestCaseAction)實體,將測試用例中的斷言轉換到斷言(Assertion)實體,將應用背景XML轉換到應用數據(ApplicationData)實體。2)聯合應用數據和測試用例。3)通過使用translate()函數將用例(TestCase)轉換到TestToolCase.4)使用doAction()函數為指定的測試工具調用特定的執行器執行TestToolAction.5)通過collectTestResult()函數為指定的測試工具收集測試結果。并且通過collectExpectedResult()收集預期測試結果,然后通過compare()比較
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北工藝美術職業學院《傳感器與自動檢測技術》2023-2024學年第二學期期末試卷
- 上海歐華職業技術學院《木材識別與鑒定》2023-2024學年第二學期期末試卷
- 宜賓職業技術學院《飛行器氣動特性分析與設計》2023-2024學年第二學期期末試卷
- 保山學院《化學學科課程與教學論》2023-2024學年第二學期期末試卷
- 浙大寧波理工學院《針織成形技術》2023-2024學年第二學期期末試卷
- 溫州醫科大學仁濟學院《現代秘書學》2023-2024學年第二學期期末試卷
- 泉州信息工程學院《移動電商實務》2023-2024學年第二學期期末試卷
- 石家莊鐵道大學《英語聽說(3)》2023-2024學年第二學期期末試卷
- 寧夏職業技術學院《中國傳統文化書法》2023-2024學年第二學期期末試卷
- 西南財經大學《識圖實訓II》2023-2024學年第二學期期末試卷
- 上海嘉定區2025年公開招聘農村(村務)工作者筆試題帶答案分析
- 皮膚科臨床診療規范2020版
- 保密警示教育典型泄密案例教育學習
- 2025年注冊會計師《會計》所得稅會計模擬試題解析與答題技巧
- 封隔器加工合同協議
- 《大學生職業生涯規劃與就業指導(實踐版)》全套教學課件
- 建筑企業財務管理的風險控制與應對策略
- 抗生素合理使用研究試題及答案
- 批評不可怕課件
- 智能建造基礎考試題及答案
- 通信工程項目管理流程
評論
0/150
提交評論