版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于Web的自動(dòng)化測試框架的設(shè)計(jì)與實(shí)現(xiàn)自動(dòng)化測試框架ASeleinum和JMeterB新框架結(jié)構(gòu)的設(shè)計(jì)與實(shí)現(xiàn)C實(shí)驗(yàn)結(jié)果和總結(jié)DContent
軟件測試是保障和提高軟件質(zhì)量的重要手段。軟件開發(fā)者和使用者必須對(duì)軟件進(jìn)行充分的測試,以確保其正常工作。統(tǒng)計(jì)表明,在典型的軟件開發(fā)項(xiàng)目中,軟件測試工作量往往占軟件開發(fā)總工作量的40%以上。因此提高軟件測試過程的效率至關(guān)重要。
為了提高測試效率,越來越多的測試工作引入了自動(dòng)化測試的思想和方法。實(shí)踐證明,軟件自動(dòng)化測試技術(shù)提高了軟件測試的速度和效率,節(jié)省了軟件測試成本,縮短了產(chǎn)品發(fā)布周期。同時(shí),自動(dòng)化測試技術(shù)也完成了許多手工測試無法實(shí)現(xiàn)的工作。所以,采用自動(dòng)化測試方法和相應(yīng)的測試框架成為了軟件開發(fā)組織測試工作的重要支撐手段。例如,采用自動(dòng)化測試工具能在測試活動(dòng)中減少一部分開銷,同時(shí),有些測試活動(dòng)是靠手工方式難以實(shí)現(xiàn)和度量的;自動(dòng)化測試框架能夠提高測試效率,快速定位測試軟件各版本中的功能、性能缺陷。軟件質(zhì)量的保證——測試項(xiàng)目進(jìn)度難以控制,項(xiàng)目管理難度加大1對(duì)項(xiàng)目風(fēng)險(xiǎn)的控制能力較弱,項(xiàng)目風(fēng)險(xiǎn)在項(xiàng)目開發(fā)較晚的時(shí)候才能夠真正降低2軟件項(xiàng)目開發(fā)費(fèi)用超過預(yù)算3TraditionalSoftwareTest傳統(tǒng)的軟件測試流程:一般是在軟件開發(fā)過程中進(jìn)行少量的單元測試。然后在整個(gè)軟件開發(fā)結(jié)束階段,集中進(jìn)行大量的測試,包括功能和性能的集成測試和系統(tǒng)測試。隨著軟件開發(fā)的越來越復(fù)雜,傳統(tǒng)的軟件測試流程不可避免的給我們帶來以下問題:1手工測試2自動(dòng)化測試通過對(duì)需求規(guī)格的理解來設(shè)計(jì)測試用例,在測試用例通過評(píng)審之后,由測試人員根據(jù)測試用例中描述的規(guī)程一步步編寫相應(yīng)的測試代碼并執(zhí)行,記錄程序執(zhí)行后的結(jié)果并提交測試報(bào)告,最后將實(shí)際結(jié)果與期望結(jié)果進(jìn)行比較。自動(dòng)化測試是把以人為驅(qū)動(dòng)的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程。自動(dòng)化軟件測試就是在預(yù)設(shè)條件下對(duì)已有的測試用例集進(jìn)行自動(dòng)測試,生成測試結(jié)果后自動(dòng)對(duì)結(jié)果進(jìn)行評(píng)估并產(chǎn)生測試報(bào)告。(預(yù)先條件應(yīng)包括正常條件和異常條件)3自動(dòng)化測試用例為了進(jìn)一步節(jié)省測試中人力、時(shí)間或硬件資源,提高測試效率,便提出了自動(dòng)化生成測試用例的概念。自動(dòng)化測試用例是根據(jù)指定的需求表達(dá)規(guī)范或模型來自動(dòng)生成測試中所需的測試用例。這些規(guī)范或模型通常表現(xiàn)為UML圖或是通用格式文檔(XML、HTML)等。Overview
自動(dòng)化測試框架,即是應(yīng)用于自動(dòng)化測試所用的框架。按照框架的定義,自動(dòng)化測試框架要么是提供可重用的基礎(chǔ)自動(dòng)化測試模塊,如:selenium、watir等,它們主要提供最基礎(chǔ)的自動(dòng)化測試功能,比如打開一個(gè)程序,模擬鼠標(biāo)和鍵盤來點(diǎn)擊或操作被測試對(duì)象,最后驗(yàn)證被測對(duì)象的屬性以判斷程序的正確性;要么是可以提供自動(dòng)化測試執(zhí)行和管理功能的架構(gòu)模塊,它們本身不提供基礎(chǔ)的自動(dòng)化測試支持,只是用于組織、管理和執(zhí)行那些獨(dú)立的自動(dòng)化測試用例,測試完成后統(tǒng)計(jì)測試結(jié)果,通常這類框架一般都會(huì)集成一個(gè)基礎(chǔ)自動(dòng)化測試模塊。自動(dòng)化測試框架可以減少測試腳本實(shí)現(xiàn)和維護(hù)的成本,使測試人員把精力集中在測試用例的設(shè)計(jì)上。1自動(dòng)化測試框架的定義Overview1)測試框架與被測應(yīng)用程序獨(dú)立雖然測試的應(yīng)用程序不一樣,但被測應(yīng)用程序之間卻會(huì)有相同的地方,測試框架應(yīng)聚焦在不同測試應(yīng)用程序中共同的部分,把與具體應(yīng)用程序有關(guān)的部分從框架中移除。2)測試框架應(yīng)易于擴(kuò)展、維護(hù)測試框架應(yīng)被高度模塊化,這樣可以提高框架的維護(hù)性。各個(gè)模塊之間相互獨(dú)立,對(duì)模塊內(nèi)部的修改不應(yīng)該影響其他模塊。3)測試腳本所使用的測試語言應(yīng)該是與框架獨(dú)立的不同的測試框架可能在不同的應(yīng)用領(lǐng)域有不同的表現(xiàn),當(dāng)需要從一個(gè)測試框架遷移到另外一個(gè)測試框架時(shí),要保證不需重寫已有的測試腳本。4)測試框架不應(yīng)該讓框架的復(fù)雜性影響到測試人員對(duì)于一般的測試人員來說,測試框架的使用要簡單、測試語言要易于理解,這樣可以使他們專注于業(yè)務(wù)相關(guān)內(nèi)容的編寫。2自動(dòng)化測試框架的特點(diǎn)Overviewa)數(shù)據(jù)驅(qū)動(dòng)測試框架(TheData-DrivenTestingFramework)將測試數(shù)據(jù)與測試腳本分離,數(shù)據(jù)驅(qū)動(dòng)最適合測試的業(yè)務(wù)邏輯固定不變的應(yīng)用程序,只有測試數(shù)據(jù)會(huì)變化。數(shù)據(jù)驅(qū)動(dòng)提高了測試邏輯的使用效率和可維護(hù)性。b)測試腳本模塊化框架(TheTestScriptModularityFramework)模塊驅(qū)動(dòng)測試使用獨(dú)立的小腳本來對(duì)應(yīng)待測試的模塊、零件和子功能。這些不同層級(jí)的小腳本按照一定規(guī)則組合成更大級(jí)別的測試,就能實(shí)現(xiàn)一個(gè)特定功能的測試用例。模塊驅(qū)動(dòng)測試引入了抽象和封裝的原則,目的是提升自動(dòng)化測試的可維護(hù)性和可擴(kuò)展性。3自動(dòng)化測試框架的類型Overviewc)測試庫構(gòu)架框架(TheTestLibraryArchitectureFramework)就是模塊化思想的升華,其為應(yīng)用程序的測試創(chuàng)造了庫文件(可以是APIs、DLLs等),這些庫文件為一系列函數(shù)的集合。其與模塊化思想不同的是,其拓展了接口思想,即可以通過接口去傳遞參數(shù),可以說是一個(gè)帶有接口的交互型模塊。d)關(guān)鍵字驅(qū)動(dòng)測試框架(TheKeyword-DrivenTestingFramework)關(guān)鍵字驅(qū)動(dòng)(表驅(qū)動(dòng))是對(duì)數(shù)據(jù)驅(qū)動(dòng)的邏輯擴(kuò)展,它提供了一系列數(shù)據(jù)表和關(guān)鍵字,這些數(shù)據(jù)表和關(guān)鍵字獨(dú)立于執(zhí)行它們的測試自動(dòng)化工具并可以用來驅(qū)動(dòng)待測應(yīng)用程序和數(shù)據(jù)的測試腳本代碼。從關(guān)鍵字驅(qū)動(dòng)的思想可以看出,該種測試框架不僅實(shí)現(xiàn)了將數(shù)據(jù)和腳本相分離,而且實(shí)現(xiàn)了數(shù)據(jù)和測試邏輯的分離,大大提高了腳本的復(fù)用度和維護(hù)性,從而更大限度地實(shí)現(xiàn)了測試工具的自動(dòng)化。3自動(dòng)化測試框架的類型Web自動(dòng)化測試框架
分布式計(jì)算將網(wǎng)絡(luò)服務(wù)帶到世界的每一個(gè)角落,這些服務(wù)又大都部署在web應(yīng)用系統(tǒng)中。如何保障高質(zhì)量的web服務(wù)是個(gè)非常重要的問題。對(duì)于一個(gè)復(fù)雜的web應(yīng)用系統(tǒng)需要測試的方面太多了,特別是那些開發(fā)周期很長的系統(tǒng),如果只依賴于手工來完成測試,顯然測試成本將非常高且易出錯(cuò),通過使用自動(dòng)化測試工具,能夠極大的降低web系統(tǒng)維護(hù)的成本。但是存在一個(gè)問題:如何才能提高測試腳本的可復(fù)用性和移植性?GrinderOpenSTASiegeJMeterPylotWatirSeleniumCommonTestAutomationFrameworkOnWebSelenium是一個(gè)開源的和便攜式的自動(dòng)化軟件測試工具,用于測試Web應(yīng)用程序有能力在不同的瀏覽器和操作系統(tǒng)運(yùn)行。Selenium真的不是一個(gè)單一的工具,而是一套工具,幫助測試者更有效地基于Web的應(yīng)用程序的自動(dòng)化。SeleniumApacheJMeter是Apache組織開發(fā)的基于Java的壓力測試工具。用于對(duì)軟件做壓力測試,它最初被設(shè)計(jì)用于Web應(yīng)用測試,但后來擴(kuò)展到其他測試領(lǐng)域。JMeter可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,測試來自不同壓力類別下它們的強(qiáng)度和分析整體性能。JMeterSelenium&JMeter1)測試瀏覽器的兼容性:測試應(yīng)用程序能否兼容工作在不同瀏覽器和操作系統(tǒng)之上。2)測試系統(tǒng)功能:錄制用例自動(dòng)生成測試腳本,用于回歸功能測試或者系統(tǒng)用例說明。FunctionTheDetialsofSeleniumVersionSelenium引入了RemoteControlServer這樣一個(gè)代理Server,JavaScript腳本注入和與Server通訊都通過這個(gè)代理Server來進(jìn)行。之所以引入這個(gè)代理RemoteControlServer是因?yàn)椤巴床呗浴钡南拗?,通過這個(gè)代理服務(wù)器來“欺騙”遠(yuǎn)程Server,達(dá)到使其以為是從同一個(gè)地方load代碼以正確返回請求數(shù)據(jù)的效果。流程說明:1.客戶端建立與selenium-RCserver的連接。2.SeleniumRCServer啟動(dòng)一個(gè)瀏覽器,并注入JS代碼3.將Selenese代碼傳到客戶端的Selenium-Core中。4.Selenium-Core翻譯并解析執(zhí)行用戶錄制的操作。5.讓代理Server進(jìn)行通訊6.RemoteControlServer負(fù)責(zé)跟遠(yuǎn)程Web應(yīng)用服務(wù)器進(jìn)行通訊。7.操作完成,顯示結(jié)果,并執(zhí)行下一指令。ImplementTheoryTheTheoryofSelenium可以看見測試人員的工作如紫色箭頭所示,而自動(dòng)化工作如藍(lán)色箭頭所示。它能自動(dòng)識(shí)別測試用例,并讀取配置文件以測試套件運(yùn)行不同的測試用例。它還可以被合并到項(xiàng)目持續(xù)集成軟件中,定期地持續(xù)進(jìn)行基于Web的功能性測試,并將報(bào)告以郵件形式通知管理人員。具體說明如下:1.由測試人員錄制腳本并導(dǎo)出JUnit。2.測試人員修改配置文件,將測試用例包含在測試套件中。3.合并在持續(xù)集成軟件后,框架會(huì)定期檢測配置的測試套件4.逐個(gè)加載測試用例。5.以測試套件為單位其執(zhí)行所有測試用例。6.執(zhí)行完成后將測試套件的結(jié)果報(bào)告以郵件形式通知管理人員EffectsTheWorkProcess
JMeter使用了不同技術(shù)和協(xié)議,是一款可以進(jìn)行配置和執(zhí)行負(fù)載測試、性能測試和壓力測試的工具。它能夠模擬不同類型的請求、訪問各種類型的數(shù)據(jù)庫、采用不同的協(xié)議,如FTP,HTTP,HTTPS,LDAP等?!褙?fù)載測試:這類測試使系統(tǒng)或者應(yīng)用程序在預(yù)先設(shè)計(jì)好的極端場景下測試運(yùn)行。這類測試用來評(píng)估系統(tǒng)或者程序在極端條件下的行為。
●性能測試:這種測試被用來檢測系統(tǒng)的性能表現(xiàn),包括特定情況下,系統(tǒng)的響應(yīng)能力和穩(wěn)定性。
●壓力測試:這類測試通過載入更多的外部資源,并使系統(tǒng)組件超越其所設(shè)定的能力范圍,試圖使系統(tǒng)掛掉。IntroductionTheDetialsofJMeterTestingType
JMeter是一款Java桌面應(yīng)用程序,它的用戶界面采用SwingJavaAPI實(shí)現(xiàn)。基于這兩點(diǎn),JMeter是一個(gè)跨平臺(tái)工具,能夠運(yùn)行在任何安裝了Java虛擬機(jī)的操作系統(tǒng)(Windows,Linux,Mac)的設(shè)備上。它的框架支持并發(fā)和多線程或者線程組的執(zhí)行。這對(duì)于配置負(fù)載測試和壓力測試非常有用。它是可擴(kuò)展的,提供了大量的可用插件。
1線程組3定時(shí)器5監(jiān)聽器2采樣器4邏輯控制器6斷言代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請求。負(fù)責(zé)定義請求(線程)之間的延遲間隔,模擬對(duì)服務(wù)器的連續(xù)請求。負(fù)責(zé)收集測試結(jié)果,同時(shí)也被告知了結(jié)果顯示的方式。模擬發(fā)送請求到不同類型的服務(wù)器。它們是每一個(gè)測試計(jì)劃的基本要素,一切都圍繞這些采樣器而工作。邏輯控制器允許你配置一個(gè)線程組內(nèi)不同采樣器的執(zhí)行順序。用于來判斷請求響應(yīng)的結(jié)果是否如用戶所期望,是否正確。ComponentSimpleDemo場景描述:自己建立一個(gè)服務(wù)器端,接受參數(shù):name和age,并將這些數(shù)據(jù)保存到數(shù)據(jù)庫中;http://localhost:8080/Server/SaveUserServlet?name=xxx&age=xxx我們通過JMeter對(duì)其進(jìn)行壓力測試;目標(biāo):開1000個(gè)線程,每個(gè)線程循環(huán)1次,全部操作在3秒內(nèi)完成;圖形操作:
基于Selenium和JMeter的框架設(shè)計(jì)TheFeatureofnewSkeleton
基于web的自動(dòng)化測試框架常常會(huì)提供優(yōu)秀的接口,能夠方便地調(diào)用它們在web應(yīng)用上作模塊測試,性能測試,和負(fù)載測試等。
由于Selenium和JMeter運(yùn)行在不同的層次上,Selenium工作在用戶層上,而JMeter工作在協(xié)議層上。為了便于在兩種測試框架之間運(yùn)行不同的測試以及分配測試程序和測試數(shù)據(jù),這篇文章提出了一個(gè)綜合了Selenium和JMeter的自動(dòng)化測試框架。通過實(shí)現(xiàn)這個(gè)新的自動(dòng)化測試框架,能夠靈活地對(duì)web應(yīng)用做各種類型的測試,并且測試的重用性,可擴(kuò)展性,綜合性和精確性都有很好的表現(xiàn)。使用這個(gè)框架,能夠有效的提高自動(dòng)化測試的擴(kuò)張性和可重用性,結(jié)果顯示新的框架能提高軟件生產(chǎn)的質(zhì)量并提高效率。TheDesignandImplement
采用Selenium測試工具的測試自動(dòng)化框架用來解決web應(yīng)用在瀏覽器上的兼容性;JMeter被引用是為了提供測試者一個(gè)工具去模擬瀏覽器發(fā)送不同請求方法給web應(yīng)用服務(wù)器。使用這個(gè)新的測試自動(dòng)化框架,測試者可以配置測試類型,通過修改測試配型轉(zhuǎn)換各種不同的測試,而不需要改變相關(guān)的測試用例單元。Fig1.Thearchitectureoftestframework模型Model1轉(zhuǎn)換器Translator2執(zhí)行器Actionworker3比較器Comparator4結(jié)果收集器Test-resultCollector5TheDesignandImplementa.集成自動(dòng)化測試框架的組成結(jié)構(gòu)1模型(Model)模型指的是包含來自于XML的對(duì)象模型(實(shí)體)。如動(dòng)作(Action),斷言(Assertion),元素(Element),應(yīng)用數(shù)據(jù)(ApplicationData),用例(Cases),工具設(shè)置(ToolsSetting)。TheDesignandImplement2轉(zhuǎn)換器(Translator)
轉(zhuǎn)換器用來將測試者準(zhǔn)備好的測試用例轉(zhuǎn)換到一個(gè)能夠被特定測試工具識(shí)別的測試用例工具。整個(gè)過程分為兩步:第一步將測試用例歸納到與不同測試類型相關(guān)的動(dòng)作集,比如前端(UI),后端(backend),負(fù)載測試(loadingtest);第二步將每一個(gè)動(dòng)作集歸納到特定的命令或腳本工具,這些命令或腳本工具依賴于所采用的實(shí)際的測試工具。轉(zhuǎn)換層步驟流程如下:1)通過TranslatorName()函數(shù)獲得一個(gè)特定測試類型的轉(zhuǎn)換器名。2)通過特定轉(zhuǎn)化器getTranslatorInstance()和translate()函數(shù)將測試用例轉(zhuǎn)
換到測試用例域。3)通過getToolTranslatorName()函數(shù)獲得特定測試類型的的轉(zhuǎn)換器名。4)通過轉(zhuǎn)換器getToolTranslatorInstance()和translate()函數(shù)從測試用例域獲取測試用例工具。TheDesignandImplement3執(zhí)行器(Actionworker)TheDesignandImplement
執(zhí)行器(ActionWorker)的功能是調(diào)用相應(yīng)的工具執(zhí)行相關(guān)的動(dòng)作。執(zhí)行器層步驟流程如下:1)通過getActionWorkerName()函數(shù)獲得一個(gè)執(zhí)行器(actionworker)2)通過getActionWorkerInstance()獲得執(zhí)行器實(shí)例(actionworkerinstance)3)最后一步通過doAction()執(zhí)行。4比較器(Comparator)TheDesignandImplement這部分能夠確定測試用例是否成功。這部分手機(jī)測試結(jié)果和預(yù)期結(jié)果。然后對(duì)這兩種結(jié)果作比較。主要步驟如下:1)通過getTestResultCollectorName()和個(gè)體TestResultCollectorInstance()實(shí)例化一個(gè)測試結(jié)果收集器collectTestResult().2)通過collectExpectedResult()收集運(yùn)行測試實(shí)例時(shí)的預(yù)期結(jié)果。3)通過getComparatorName()和getComparatorInstance()實(shí)例化一個(gè)比較器實(shí)例。4)通過compare()函數(shù)對(duì)測試結(jié)果和預(yù)期結(jié)果作比較并得到比較結(jié)果。WholeProcedure1)通過使用xmlObjectConvertor()將測試用例轉(zhuǎn)換到測試用例(TestCase)實(shí)體,將測試用例的測試步驟轉(zhuǎn)換到測試用例動(dòng)作(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)用特定的執(zhí)行器執(zhí)行TestToolAction.5)通過collectTestResult()函數(shù)為指定的測試工具收集測試結(jié)果。并且通過collectExpectedResult()收集預(yù)期測試結(jié)果,然后通過compare()比較
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)街區(qū)消防系統(tǒng)升級(jí)改造協(xié)議
- 礦山開采彩鋼房安裝協(xié)議
- 科技館隔音墻施工合同
- 鐵路工程設(shè)備采購合同
- 玻璃行業(yè)安裝合同范例
- 測繪合同范例填寫規(guī)范
- 配套投資協(xié)議三篇
- 裝門維護(hù)合同范例
- 退休勞務(wù)合同書樣本
- 土工格室合同
- 透析出現(xiàn)房顫的護(hù)理
- 2024年《大學(xué)語文》期末考試復(fù)習(xí)題庫(含答案)
- 部編版二年級(jí)語文上冊第二單元大單元教學(xué)設(shè)計(jì)
- 工業(yè)園區(qū)物流服務(wù)調(diào)研報(bào)告
- 安寧療護(hù)個(gè)案護(hù)理匯報(bào)
- 有機(jī)硅皮革行業(yè)報(bào)告
- 電冰箱發(fā)泡作業(yè)指導(dǎo)書
- MOOC Python數(shù)據(jù)爬取與可視化-南華大學(xué) 中國大學(xué)慕課答案
- 上海汽車集團(tuán)股份有限公司本量利運(yùn)用分析
- 調(diào)解中心成立流程
- 《腫瘤與信號(hào)轉(zhuǎn)導(dǎo)》課件
評(píng)論
0/150
提交評(píng)論