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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

7、相互獨(dú)立,對模塊內(nèi)部的修改不應(yīng)該影響其他模塊。3) 測試腳本所使用的測試語言應(yīng)該是與框架獨(dú)立的 不同的測試框架可能在不同的應(yīng)用領(lǐng)域有不同的表現(xiàn),當(dāng)需要從一個測試框架遷移到另外一個測試框架時,要保證不需重寫已有的測試腳本。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ū)動提高了測試邏輯的使用效率和可維護(hù)性。b) 測試腳本模塊化框架(The Test Script Modularity Framework) 模塊驅(qū)動測試使用獨(dú)立的小腳本來對應(yīng)待測試的模塊、零件和子功能。這些不同層級的小腳本按照一定規(guī)則組合成更大級別的測

9、試,就能實(shí)現(xiàn)一個特定功能的測試用例。模塊驅(qū)動測試引入了抽象和封裝的原則,目的是提升自動化測試的可維護(hù)性和可擴(kuò)展性。,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ū)動的邏輯擴(kuò)展,它提供了一系列數(shù)據(jù)表和關(guān)鍵字,這些數(shù)據(jù)表和關(guān)鍵字獨(dú)立于執(zhí)行它們的測試自動化工具并可以用來驅(qū)動待測應(yīng)用程序和數(shù)據(jù)的測試腳本代碼。從關(guān)鍵字驅(qū)動的思想可以看出,該種測試框架不僅實(shí)現(xiàn)了將數(shù)據(jù)和腳本相分離,而且實(shí)現(xiàn)了數(shù)據(jù)和測試邏輯的分離,大大提高了腳本的復(fù)用度和維護(hù)性,

11、從而更大限度地實(shí)現(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)維護(hù)的成本。但是存在一個問題:如何才能提高測試腳本的可復(fù)用性和移植

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

13、 JMeter是Apache組織開發(fā)的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設(shè)計用于Web應(yīng)用測試,但后來擴(kuò)展到其他測試領(lǐng)域。JMeter 可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,測試來自不同壓力類別下它們的強(qiáng)度和分析整體性能。,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 來進(jìn)行。之所以引入這個代理 Remote Control Server 是因?yàn)椤巴床呗浴钡南拗疲ㄟ^這個代理服務(wù)器來“欺騙”遠(yuǎn)程 Server,

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

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

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

18、、訪問各種類型的數(shù)據(jù)庫、采用不同的協(xié)議,如FTP, HTTP, HTTPS,LDAP等。 ●負(fù)載測試: 這類測試使系統(tǒng)或者應(yīng)用程序在預(yù)先設(shè)計好的極端場景下測試運(yùn)行。這類測試用來評估系統(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實(shí)現(xiàn)?;谶@兩點(diǎn),JMeter是一個跨平臺工具,能夠運(yùn)行在任何安裝了Java虛擬機(jī)的操作系統(tǒng)(Windows, Linux, Mac)的設(shè)備上。它的框架支持并發(fā)和多線程或者線程組的執(zhí)行。這對于配置負(fù)載測試和壓力測試非常有用。它是可擴(kuò)展的,提供了大量的可用插件。,,1,線程

20、組,,3,定時器,,5,監(jiān)聽器,,2,采樣器,,4,邏輯控制器,,6,斷言,代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請求。,負(fù)責(zé)定義請求(線程)之間的延遲間隔,模擬對服務(wù)器的連續(xù)請求。,負(fù)責(zé)收集測試結(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對其進(jìn)行壓力測試;目標(biāo):開1000個線程,每個線程循環(huán)1次,全部操作在3秒內(nèi)完成;圖形操作:,基于Selenium和JMeter的框架設(shè)

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

23、。 通過實(shí)現(xiàn)這個新的自動化測試框架,能夠靈活地對web應(yīng)用做各種類型的測試,并且測試的重用性,可擴(kuò)展性,綜合性和精確性都有很好的表現(xiàn)。使用這個框架,能夠有效的提高自動化測試的擴(kuò)張性和可重用性,結(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的對象模型(實(shí)體)。如 動作(Action),斷言(Assertion),元素(Elemen

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

26、些命令或腳本工具依賴于所采用的實(shí)際的測試工具。轉(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í)行器實(shí)例(actionworkerinstance)3)最后一步通過doAction()執(zhí)行。,The Design and Implement,這部分能夠確定測試用例是否成功。這部分手機(jī)測試結(jié)果和預(yù)期結(jié)果。然后對這兩種結(jié)果作比較。主要步驟如下: 1)通過getTestResultCollectorName()和個體TestResultCollectorInstance()實(shí)

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

30、()將測試用例轉(zhuǎn)換到測試用例(TestCase)實(shí)體,將測試用例的測試步驟轉(zhuǎn)換到測試用例動作(TestCaseAction)實(shí)體,將測試用例中的斷言轉(zhuǎn)換到斷言(Assertion)實(shí)體,將應(yīng)用背景XML轉(zhuǎn)換到應(yīng)用數(shù)據(jù)(ApplicationData)實(shí)體。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,,就像其他測試自動化框架被提出來一樣需要測試,我們必須評估它的可重用性,可擴(kuò)展性,兼容性,一般性等詳細(xì)性能。為了測試框架在UI測試和性能測試上的共享測試過程和測試數(shù)

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

33、求需要的線程數(shù)等。,Result,,Conclusions,文中構(gòu)造的新的測試自動化框架結(jié)合了Selenium和Jmeter,能夠在不同的測試中分享測試過程和測試數(shù)據(jù),比如UI測試,功能測試,負(fù)載測試等等。該測試自動化框架的評估結(jié)果體現(xiàn)了這個框架能夠提供給測試者一個高效的自動化工具為web應(yīng)用測試去方便地配置不同的瀏覽器。能夠通過直接配置數(shù)據(jù)源為性能測試準(zhǔn)備大量的數(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論