2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于Web的自動化測試框架的設(shè)計與實現(xiàn),Content,軟件測試是保障和提高軟件質(zhì)量的重要手段。軟件開發(fā)者和使用者必須對軟件進行充分的測試,以確保其正常工作。統(tǒng)計表明,在典型的軟件開發(fā)項目中,軟件測試工作量往往占軟件開發(fā)總工作量的40%以上。因此提高軟件測試過程的效率至關(guān)重要。為了提高測試效率,越來越多的測試工作引入了自動化測試的思想和方法。實踐證明,軟件自動化測試技術(shù)提高了軟件測試的速度和效率,節(jié)省了軟件測試成本,縮短了產(chǎn)品發(fā)布

2、周期。同時,自動化測試技術(shù)也完成了許多手工測試無法實現(xiàn)的工作。所以,采用自動化測試方法和相應(yīng)的測試框架成為了軟件開發(fā)組織測試工作的重要支撐手段。例如,采用自動化測試工具能在測試活動中減少一部分開銷,同時,有些測試活動是靠手工方式難以實現(xiàn)和度量的;自動化測試框架能夠提高測試效率,快速定位測試軟件各版本中的功能、性能缺陷。,軟件質(zhì)量的保證——測試,Traditional Software Test,傳統(tǒng)的軟件測試流程: 一般是在軟件

3、開發(fā)過程中進行少量的單元測試。然后在整個軟件開發(fā)結(jié)束階段,集中進行大量的測試,包括功能和性能的集成測試和系統(tǒng)測試。隨著軟件開發(fā)的越來越復(fù)雜,傳統(tǒng)的軟件測試流程不可避免的給我們帶來以下問題:,通過對需求規(guī)格的理解來設(shè)計測試用例,在測試用例通過評審之后,由測試人員根據(jù)測試用例中描述的規(guī)程一步步編寫相應(yīng)的測試代碼并執(zhí)行,記錄程序執(zhí)行后的結(jié)果并提交測試報告,最后將實際結(jié)果與期望結(jié)果進行比較。,自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機器執(zhí)行的一

4、種過程。自動化軟件測試就是在預(yù)設(shè)條件下對已有的測試用例集進行自動測試,生成測試結(jié)果后自動對結(jié)果進行評估并產(chǎn)生測試報告。(預(yù)先條件應(yīng)包括正常條件和異常條件),為了進一步節(jié)省測試中人力、時間或硬件資源,提高測試效率,便提出了自動化生成測試用例的概念。自動化測試用例是根據(jù)指定的需求表達規(guī)范或模型來自動生成測試中所需的測試用例。這些規(guī)范或模型通常表現(xiàn)為UML圖或是通用格式文檔(XML、HTML)等。,Overview,自動化測試框架,即是應(yīng)用于

5、自動化測試所用的框架。按照框架的定義,自動化測試框架要么是提供可重用的基礎(chǔ)自動化測試模塊,如:selenium 、watir等,它們主要提供最基礎(chǔ)的自動化測試功能,比如打開一個程序,模擬鼠標和鍵盤來點擊或操作被測試對象,最后驗證被測對象的屬性以判斷程序的正確性;要么是可以提供自動化測試執(zhí)行和管理功能的架構(gòu)模塊,它們本身不提供基礎(chǔ)的自動化測試支持,只是用于組織、管理和執(zhí)行那些獨立的自動化測試用例,測試完成后統(tǒng)計測試結(jié)果,通常這類框架一般都

6、會集成一個基礎(chǔ)自動化測試模塊。 自動化測試框架可以減少測試腳本實現(xiàn)和維護的成本,使測試人員把精力集中在測試用例的設(shè)計上。,Overview,1) 測試框架與被測應(yīng)用程序獨立 雖然測試的應(yīng)用程序不一樣,但被測應(yīng)用程序之間卻會有相同的地方,測試框架應(yīng)聚焦在不同測試應(yīng)用程序中共同的部分,把與具體應(yīng)用程序有關(guān)的部分從框架中移除。2) 測試框架應(yīng)易于擴展、維護 測試框架應(yīng)被高度模塊化,這樣可以提高框架的維護性。各個模塊之間

7、相互獨立,對模塊內(nèi)部的修改不應(yīng)該影響其他模塊。3) 測試腳本所使用的測試語言應(yīng)該是與框架獨立的 不同的測試框架可能在不同的應(yīng)用領(lǐng)域有不同的表現(xiàn),當需要從一個測試框架遷移到另外一個測試框架時,要保證不需重寫已有的測試腳本。4) 測試框架不應(yīng)該讓框架的復(fù)雜性影響到測試人員 對于一般的測試人員來說,測試框架的使用要簡單、測試語言要易于理解,這樣可以使他們專注于業(yè)務(wù)相關(guān)內(nèi)容的編寫。,Overview,a) 數(shù)據(jù)驅(qū)動測試框架(

8、The Data-Driven Testing Framework) 將測試數(shù)據(jù)與測試腳本分離,數(shù)據(jù)驅(qū)動最適合測試的業(yè)務(wù)邏輯固定不變的應(yīng)用程序,只有測試數(shù)據(jù)會變化。數(shù)據(jù)驅(qū)動提高了測試邏輯的使用效率和可維護性。b) 測試腳本模塊化框架(The Test Script Modularity Framework) 模塊驅(qū)動測試使用獨立的小腳本來對應(yīng)待測試的模塊、零件和子功能。這些不同層級的小腳本按照一定規(guī)則組合成更大級別的測

9、試,就能實現(xiàn)一個特定功能的測試用例。模塊驅(qū)動測試引入了抽象和封裝的原則,目的是提升自動化測試的可維護性和可擴展性。,Overview,c) 測試庫構(gòu)架框架(The Test Library Architecture Framework) 就是模塊化思想的升華,其為應(yīng)用程序的測試創(chuàng)造了庫文件(可以是APIs、DLLs等),這些庫文件為一系列函數(shù)的集合。其與模塊化思想不同的是,其拓展了接口思想,即可以通過接口去傳遞參數(shù),可以說是一個

10、帶有接口的交互型模塊。d) 關(guān)鍵字驅(qū)動測試框架(The Keyword-Driven Testing Framework) 關(guān)鍵字驅(qū)動(表驅(qū)動)是對數(shù)據(jù)驅(qū)動的邏輯擴展,它提供了一系列數(shù)據(jù)表和關(guān)鍵字,這些數(shù)據(jù)表和關(guān)鍵字獨立于執(zhí)行它們的測試自動化工具并可以用來驅(qū)動待測應(yīng)用程序和數(shù)據(jù)的測試腳本代碼。從關(guān)鍵字驅(qū)動的思想可以看出,該種測試框架不僅實現(xiàn)了將數(shù)據(jù)和腳本相分離,而且實現(xiàn)了數(shù)據(jù)和測試邏輯的分離,大大提高了腳本的復(fù)用度和維護性,

11、從而更大限度地實現(xiàn)了測試工具的自動化。,Web自動化測試框架,分布式計算將網(wǎng)絡(luò)服務(wù)帶到世界的每一個角落,這些服務(wù)又大都部署在web應(yīng)用系統(tǒng)中。如何保障高質(zhì)量的web服務(wù)是個非常重要的問題。對于一個復(fù)雜的web應(yīng)用系統(tǒng)需要測試的方面太多了,特別是那些開發(fā)周期很長的系統(tǒng),如果只依賴于手工來完成測試,顯然測試成本將非常高且易出錯,通過使用自動化測試工具,能夠極大的降低web系統(tǒng)維護的成本。但是存在一個問題:如何才能提高測試腳本的可復(fù)用性和移植

12、性?,Grinder,OpenSTA,Siege,JMeter,Pylot,Watir,Selenium,,,Common Test Automation Framework On Web,Selenium是一個開源的和便攜式的自動化軟件測試工具,用于測試Web應(yīng)用程序有能力在不同的瀏覽器和操作系統(tǒng)運行。Selenium真的不是一個單一的工具,而是一套工具,幫助測試者更有效地基于Web的應(yīng)用程序的自動化。,Selenium,Apache

13、 JMeter是Apache組織開發(fā)的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設(shè)計用于Web應(yīng)用測試,但后來擴展到其他測試領(lǐng)域。JMeter 可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負載,測試來自不同壓力類別下它們的強度和分析整體性能。,JMeter,Selenium & JMeter,1)測試瀏覽器的兼容性:測試應(yīng)用程序能否兼容工作在不同瀏覽器和操作系統(tǒng)之上。2)測試系統(tǒng)功能:錄制用例自動生成測試腳本,用于

14、回歸功能測試或者系統(tǒng)用例說明。,Function,The Detials of Selenium,Version,Selenium 引入了Remote Control Server 這樣一個代理 Server,JavaScript 腳本注入和與 Server 通訊都通過這個代理 Server 來進行。之所以引入這個代理 Remote Control Server 是因為“同源策略”的限制,通過這個代理服務(wù)器來“欺騙”遠程 Server,

15、達到使其以為是從同一個地方 load 代碼以正確返回請求數(shù)據(jù)的效果。流程說明:1.客戶端建立與 selenium-RC server 的連接。2.Selenium RC Server 啟動一個瀏覽器,并注入 JS 代碼3.將 Selenese 代碼傳到客戶端的 Selenium-Core 中。4.Selenium-Core 翻譯并解析執(zhí)行用戶錄制的操作。5.讓代理 Server 進行通訊6.Remote Control Se

16、rver 負責跟遠程 Web 應(yīng)用服務(wù)器進行通訊。7.操作完成,顯示結(jié)果,并執(zhí)行下一指令。,Implement Theory,The Theory of Selenium,可以看見測試人員的工作如紫色箭頭所示,而自動化工作如藍色箭頭所示。它能自動識別測試用例,并讀取配置文件以測試套件運行不同的測試用例。它還可以被合并到項目持續(xù)集成軟件中,定期地持續(xù)進行基于 Web 的功能性測試,并將報告以郵件形式通知管理人員。具體說明如下:1.由測

17、試人員錄制腳本并導(dǎo)出 JUnit。2.測試人員修改配置文件,將測試用例包含在測試套件中。3.合并在持續(xù)集成軟件后,框架會定期檢測配置的測試套件4.逐個加載測試用例。5.以測試套件為單位其執(zhí)行所有測試用例。6.執(zhí)行完成后將測試套件的結(jié)果報告以郵件形式通知管理人員,Effects,The Work Process,JMeter使用了不同技術(shù)和協(xié)議,是一款可以進行配置和執(zhí)行負載測試、性能測試和壓力測試的工具。它能夠模擬不同類型的請求

18、、訪問各種類型的數(shù)據(jù)庫、采用不同的協(xié)議,如FTP, HTTP, HTTPS,LDAP等。 ●負載測試: 這類測試使系統(tǒng)或者應(yīng)用程序在預(yù)先設(shè)計好的極端場景下測試運行。這類測試用來評估系統(tǒng)或者程序在極端條件下的行為。 ●性能測試: 這種測試被用來檢測系統(tǒng)的性能表現(xiàn),包括特定情況下,系統(tǒng)的響應(yīng)能力和穩(wěn)定性。 ●壓力測試: 這類測試通過載入更多的外部資源,并使系統(tǒng)組件超越其所設(shè)定的能力范圍,試圖使系統(tǒng)掛掉。,Introd

19、uction,The Detials of JMeter,Testing Type,JMeter是一款Java桌面應(yīng)用程序,它的用戶界面采用Swing Java API實現(xiàn)?;谶@兩點,JMeter是一個跨平臺工具,能夠運行在任何安裝了Java虛擬機的操作系統(tǒng)(Windows, Linux, Mac)的設(shè)備上。它的框架支持并發(fā)和多線程或者線程組的執(zhí)行。這對于配置負載測試和壓力測試非常有用。它是可擴展的,提供了大量的可用插件。,,1,線程

20、組,,3,定時器,,5,監(jiān)聽器,,2,采樣器,,4,邏輯控制器,,6,斷言,代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請求。,負責定義請求(線程)之間的延遲間隔,模擬對服務(wù)器的連續(xù)請求。,負責收集測試結(jié)果,同時也被告知了結(jié)果顯示的方式。,模擬發(fā)送請求到不同類型的服務(wù)器。它們是每一個測試計劃的基本要素,一切都圍繞這些采樣器而工作。,邏輯控制器允許你配置一個線程組內(nèi)不同采樣器的執(zhí)行順序。,用于來判斷請求響應(yīng)的結(jié)果是否如用戶所期望,是

21、否正確。,Component,Simple Demo,場景描述:自己建立一個服務(wù)器端,接受參數(shù):name和age,并將這些數(shù)據(jù)保存到數(shù)據(jù)庫中;http://localhost:8080/Server/SaveUserServlet?name=xxx&age=xxx我們通過JMeter對其進行壓力測試;目標:開1000個線程,每個線程循環(huán)1次,全部操作在3秒內(nèi)完成;圖形操作:,基于Selenium和JMeter的框架設(shè)

22、計,The Feature of new Skeleton,基于web的自動化測試框架常常會提供優(yōu)秀的接口,能夠方便地調(diào)用它們在web應(yīng)用上作模塊測試,性能測試,和負載測試等。 由于Selenium和JMeter運行在不同的層次上,Selenium工作在用戶層上,而JMeter工作在協(xié)議層上。為了便于在兩種測試框架之間運行不同的測試以及分配測試程序和測試數(shù)據(jù),這篇文章提出了一個綜合了Selenium和JMeter的自動化測試框架

23、。 通過實現(xiàn)這個新的自動化測試框架,能夠靈活地對web應(yīng)用做各種類型的測試,并且測試的重用性,可擴展性,綜合性和精確性都有很好的表現(xiàn)。使用這個框架,能夠有效的提高自動化測試的擴張性和可重用性,結(jié)果顯示新的框架能提高軟件生產(chǎn)的質(zhì)量并提高效率。,The Design and Implement,采用Selenium測試工具的測試自動化框架用來解決web應(yīng)用在瀏覽器上的兼容性;JMeter被引用是為了提供測試者一個工具去模擬瀏覽器發(fā)

24、送不同請求方法給web應(yīng)用服務(wù)器。使用這個新的測試自動化框架,測試者可以配置測試類型,通過修改測試配型轉(zhuǎn)換各種不同的測試,而不需要改變相關(guān)的測試用例單元。,Fig 1.The architecture of test framework,The Design and Implement,a.集成自動化測試框架的組成結(jié)構(gòu),模型指的是包含來自于XML的對象模型(實體)。如 動作(Action),斷言(Assertion),元素(Elemen

25、t),應(yīng)用數(shù)據(jù)(ApplicationData),用例(Cases),工具設(shè)置(ToolsSetting)。,The Design and Implement,轉(zhuǎn)換器用來將測試者準備好的測試用例轉(zhuǎn)換到一個能夠被特定測試工具識別的測試用例工具。整個過程分為兩步:第一步將測試用例歸納到與不同測試類型相關(guān)的動作集,比如前端(UI),后端(backend),負載測試(loading test);第二步將每一個動作集歸納到特定的命令或腳本工具,這

26、些命令或腳本工具依賴于所采用的實際的測試工具。轉(zhuǎn)換層步驟流程如下: 1)通過TranslatorName()函數(shù)獲得一個特定測試類型的轉(zhuǎn)換器名。 2)通過特定轉(zhuǎn)化器getTranslatorInstance()和translate()函數(shù)將測試用例轉(zhuǎn) 換到測試用例域。 3)通過getToolTranslatorName()函數(shù)獲得特定測試類型的的轉(zhuǎn)換器名。

27、 4)通過轉(zhuǎn)換器getToolTranslatorInstance()和translate()函數(shù)從測試用例域獲取測試用例工具。,The Design and Implement,The Design and Implement,執(zhí)行器(ActionWorker)的功能是調(diào)用相應(yīng)的工具執(zhí)行相關(guān)的動作。執(zhí)行器層步驟流程如下:1)通過getActionWorkerName()函數(shù)獲得一個執(zhí)行器(actionworker)2)通過ge

28、tActionWorkerInstance()獲得執(zhí)行器實例(actionworkerinstance)3)最后一步通過doAction()執(zhí)行。,The Design and Implement,這部分能夠確定測試用例是否成功。這部分手機測試結(jié)果和預(yù)期結(jié)果。然后對這兩種結(jié)果作比較。主要步驟如下: 1)通過getTestResultCollectorName()和個體TestResultCollectorInstance()實

29、例化一個測試結(jié)果收集器collectTestResult(). 2)通過collectExpectedResult()收集運行測試實例時的預(yù)期結(jié)果。 3)通過getComparatorName()和getComparatorInstance()實例化一個比較器實例。 4)通過compare()函數(shù)對測試結(jié)果和預(yù)期結(jié)果作比較并得到比較結(jié)果。,Whole Procedure,1)通過使用xmlObjectConvertor

30、()將測試用例轉(zhuǎn)換到測試用例(TestCase)實體,將測試用例的測試步驟轉(zhuǎn)換到測試用例動作(TestCaseAction)實體,將測試用例中的斷言轉(zhuǎn)換到斷言(Assertion)實體,將應(yīng)用背景XML轉(zhuǎn)換到應(yīng)用數(shù)據(jù)(ApplicationData)實體。2)聯(lián)合應(yīng)用數(shù)據(jù)和測試用例。3)通過使用translate()函數(shù)將用例(TestCase)轉(zhuǎn)換到TestToolCase.4)使用doAction()函數(shù)為指定的測試工具調(diào)用特

31、定的執(zhí)行器執(zhí)行TestToolAction.5)通過collectTestResult()函數(shù)為指定的測試工具收集測試結(jié)果。并且通過collectExpectedResult()收集預(yù)期測試結(jié)果,然后通過compare()比較測試結(jié)果和預(yù)期測試結(jié)果。,Experiment,,就像其他測試自動化框架被提出來一樣需要測試,我們必須評估它的可重用性,可擴展性,兼容性,一般性等詳細性能。為了測試框架在UI測試和性能測試上的共享測試過程和測試數(shù)

32、據(jù)的性能。測試過程設(shè)計如下: Step1:為測試工具配置項準備Web系統(tǒng)和數(shù)據(jù)所需的所有數(shù)據(jù)。也就是,為UI測試和負載測試準備測試用例和測試類型配置文件。 Step2:為Web系統(tǒng)啟動測試自動化框架,開始UI測試,在測試工具中修改配置項的默認瀏覽器類型。(如表格Ⅱ) Step3: 首先改變測試類型為負載測試,然后啟動測試自動化框架,最后修改負載測試的測試參數(shù)(如表Ⅲ),比如,每一個請求間隔時間,同時啟動的請求數(shù),實現(xiàn)請

33、求需要的線程數(shù)等。,Result,,Conclusions,文中構(gòu)造的新的測試自動化框架結(jié)合了Selenium和Jmeter,能夠在不同的測試中分享測試過程和測試數(shù)據(jù),比如UI測試,功能測試,負載測試等等。該測試自動化框架的評估結(jié)果體現(xiàn)了這個框架能夠提供給測試者一個高效的自動化工具為web應(yīng)用測試去方便地配置不同的瀏覽器。能夠通過直接配置數(shù)據(jù)源為性能測試準備大量的數(shù)據(jù)。能夠方便地修改測試類型來配置測試類型,并且能夠在許多許多不同的測

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論