基于Python+Selenium的web自動(dòng)化測(cè)試框架的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于Python+Selenium的web自動(dòng)化測(cè)試框架的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于Python+Selenium的web自動(dòng)化測(cè)試框架的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于Python+Selenium的web自動(dòng)化測(cè)試框架的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于Python+Selenium的web自動(dòng)化測(cè)試框架的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

摘要最近這些年來(lái),隨著科技與計(jì)算機(jī)行業(yè)的發(fā)展,軟件測(cè)試的重要性越來(lái)越突出,傳統(tǒng)方式的手工測(cè)試主要根據(jù)測(cè)試用例來(lái)手動(dòng)執(zhí)行測(cè)試,測(cè)試用例沒(méi)有覆蓋到的地方則采用錯(cuò)誤猜測(cè)的方式去彌補(bǔ),這樣大量的重復(fù)的勞動(dòng)容易產(chǎn)生疲勞,很容易導(dǎo)致錯(cuò)誤的產(chǎn)生和測(cè)試的盲點(diǎn)。使用自動(dòng)化測(cè)試可以測(cè)試UI界面的布局和排版、大小等等,還可以進(jìn)行兼容性測(cè)試、穩(wěn)定性測(cè)試等。在進(jìn)行工作的時(shí)候,能夠有效提高軟件測(cè)試的效率和靈活性,減短軟件開(kāi)發(fā)的周期;節(jié)約測(cè)試的花費(fèi),也可以使測(cè)試用例更加易于維護(hù)。本文主要研究的是軟件測(cè)試的理論基礎(chǔ)和相關(guān)的實(shí)現(xiàn)技術(shù),闡述了軟件自動(dòng)化測(cè)試框架的關(guān)鍵點(diǎn),設(shè)計(jì)并且實(shí)現(xiàn)了一個(gè)基于python+selenium的web自動(dòng)化測(cè)試框架,并在此自動(dòng)化測(cè)試框架的基礎(chǔ)上實(shí)現(xiàn)了簡(jiǎn)單的自動(dòng)化測(cè)試功能。關(guān)鍵詞:web自動(dòng)化測(cè)試selenium+python自動(dòng)化測(cè)試框架Abstract Inrecentyears,withthedevelopmentoftechnologyandcomputerindustry,softwaretestinghasbecomingmoreandmoreprominent.Thetraditionalmanualtestingismainlybasedontestcasestomanuallyperformtests,andtheplacesnotcoveredbytestcasesaremadeupbythewayoferrorguessing,soalotofrepeatedlaborispronetofatigue,whichiseasytoleadtothegenerationandtestingoferrorsTheblindspotof.Automatictestingcanbeusedtotestthelayout,layout,size,etc.ofUIinterface,aswellascompatibilitytestandstabilitytest.Intheprocessofwork,itcaneffectivelyimprovetheefficiencyandflexibilityofsoftwaretesting,reducethecycleofsoftwaredevelopment;savethecostoftesting,butalsomakethetestcaseseasiertomaintain;.Thispapermainlystudiesthetheoreticalbasisandrelatedkeytechnologiesofsoftwaretesting,andexpoundsthekeypointsofsoftwareautomatedtestingframework,includingsoftwareautomatedtestinglifecycle,howtobuildhigh-qualityautomatedtestingprocess,etc.DesignandimplementawebautomationtestingframeworkbasedonPython+selenium,andrealizetheautomationtestingfunctionbasedonthisframework.Keywords:WebautomatedtestingSelenium+PythonAutomatedtestingframework目錄第一章緒論 第一章緒論1.1課題研究背景隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,軟件測(cè)試是不可或缺的一部分,也是能夠保證軟件質(zhì)量的一種重要方式,進(jìn)行軟件測(cè)試,既能夠確保了軟件的質(zhì)量,也降低了軟件后期維護(hù)的成本。自動(dòng)化測(cè)試能夠在很大程度上杜絕人為工作出現(xiàn)的失誤和降低工作的難度,使工作流程更加精簡(jiǎn)。不僅提高了工作的效率,還保證了質(zhì)量的良好性,增加了軟件的可用性和投資的效益。近年來(lái),F(xiàn)irefox、Internet、Chrome等瀏覽器被很廣泛的使用,傳統(tǒng)的信息與數(shù)據(jù)庫(kù)、財(cái)政、娛樂(lè)、教育等許多方面都開(kāi)始使用和利用互聯(lián)網(wǎng),產(chǎn)生最大最長(zhǎng)遠(yuǎn)的價(jià)值。Web具有非常強(qiáng)大的并發(fā)性,因?yàn)樵诤芏痰臅r(shí)間內(nèi),Web內(nèi)的一個(gè)網(wǎng)頁(yè)能夠支持被成千上萬(wàn)的人去點(diǎn)擊請(qǐng)求查看或者使用。但是隨著用戶的增加,Web應(yīng)用程序日漸復(fù)雜的功能需求,Web系統(tǒng)中潛在的漏洞或者弊端也會(huì)越來(lái)越多。所以,對(duì)于一個(gè)網(wǎng)站來(lái)說(shuō),擁有一套高效的、可管理的測(cè)試框架是必不可少的。傳統(tǒng)的測(cè)試工作主要是使用手工進(jìn)行測(cè)試用例的編寫(xiě)并一條一條的去執(zhí)行用例。這種測(cè)試方式不僅工作量大,工作效率也低。繁瑣、重復(fù)枯燥的手工測(cè)試會(huì)導(dǎo)致測(cè)試人員工作疲勞和工作質(zhì)量下降,從而影響到軟件的質(zhì)量。因?yàn)樾枨笞兏坏貌贿M(jìn)行的大量的重復(fù)手工測(cè)試是最常見(jiàn)的。使用自動(dòng)化測(cè)試可以降低需求變更的時(shí)候的測(cè)試工作的成本以及減少工作量和提高測(cè)試的效率,也能使軟件各能夠更加滿足用戶的需求。而自動(dòng)化測(cè)試框架在進(jìn)行自動(dòng)化測(cè)試工作的時(shí)候也是極其重要的。本文將以百度和維普網(wǎng)站的業(yè)務(wù)為例,在詳細(xì)設(shè)計(jì)自動(dòng)化測(cè)試框架之后,實(shí)現(xiàn)基于此框架的自動(dòng)化測(cè)試功能。1.2國(guó)內(nèi)外發(fā)展現(xiàn)狀與發(fā)展過(guò)程1.2.1國(guó)內(nèi)發(fā)展歷史軟件相關(guān)的領(lǐng)域和行業(yè)越來(lái)越受到關(guān)注,在最近這幾年也在你朝著越來(lái)越好的方向發(fā)展飛速,因?yàn)橹袊?guó)在這個(gè)領(lǐng)域起步和發(fā)展的比較晚,在這方面不如其他發(fā)達(dá)國(guó)家發(fā)展的好,但是,近年來(lái)中國(guó)在軟件方面發(fā)展的越來(lái)越快,越來(lái)越好,在短視頻這方面也有著領(lǐng)先的趨勢(shì)。隨著Web應(yīng)用在政府、教育、教務(wù)、金融、娛樂(lè)等領(lǐng)域的廣泛使用,人們愈發(fā)認(rèn)識(shí)到Web應(yīng)用的實(shí)用性和便捷性,隨著軟件質(zhì)量要求的提高,必須要在經(jīng)過(guò)嚴(yán)格的測(cè)試以后才能將軟件正式的投入運(yùn)營(yíng)和使用,在計(jì)算機(jī)相關(guān)的行業(yè)里,軟件測(cè)試發(fā)展的越來(lái)越快,軟件測(cè)試方面的人才的需求也劇增。在國(guó)內(nèi),軟件測(cè)試的發(fā)展還不是特別好,還處于一個(gè)起步階段的狀態(tài)。但是軟件測(cè)試的發(fā)展前景光明,隨著軟件市場(chǎng)的發(fā)展與擴(kuò)大,軟件測(cè)試這個(gè)崗位越來(lái)越重要,作為開(kāi)發(fā)過(guò)程中不可或缺的軟件測(cè)試的需求以及網(wǎng)站也開(kāi)始增多。1.2.2國(guó)外研究現(xiàn)狀在國(guó)際上,軟件測(cè)試是軟件質(zhì)量監(jiān)控的一種方法,是一項(xiàng)非常重要并且不可或缺的工作任務(wù),測(cè)試也是一個(gè)獨(dú)立于其他工作的。在IBM、微軟等大型系統(tǒng)軟件公司,在較多重要的開(kāi)發(fā)項(xiàng)目團(tuán)里面,開(kāi)發(fā)人員通常是測(cè)試人員的兩倍甚至是四倍以上,比例相差非常的大。自動(dòng)化測(cè)試技術(shù)也在快速的發(fā)展。許多自動(dòng)化測(cè)試工具被開(kāi)發(fā)出來(lái)。自動(dòng)化測(cè)試系統(tǒng)正在朝著通越來(lái)越好、越來(lái)越智能化的方向高速穩(wěn)定發(fā)展。1.3本文的主要內(nèi)容和實(shí)現(xiàn)目標(biāo) 本文主要是針對(duì)web應(yīng)用,設(shè)計(jì)和實(shí)現(xiàn)一個(gè)能夠支持UI功能測(cè)試、兼容性測(cè)試和穩(wěn)定性測(cè)試的web自動(dòng)化測(cè)試框架,并且能夠生成自動(dòng)化測(cè)試報(bào)告和自動(dòng)發(fā)送測(cè)試集結(jié)果報(bào)告,提供一些比較實(shí)用的輔助功能。在進(jìn)行測(cè)試工作的時(shí)候使用這個(gè)自動(dòng)化測(cè)試框架,不僅能夠使腳本更利于維護(hù),而且能夠使腳本的復(fù)用性得到提升。能夠達(dá)到節(jié)省編寫(xiě)測(cè)試腳本的時(shí)間以及保證產(chǎn)品的質(zhì)量得到目的。 以下是本文的主要研究的對(duì)象和內(nèi)容: (1)在功能和非功能方面分別對(duì)web自動(dòng)化測(cè)試框架進(jìn)行相關(guān)的需求分析。 (2)針對(duì)本自動(dòng)化測(cè)試框架,進(jìn)行一個(gè)相關(guān)的整體框架的詳細(xì)設(shè)計(jì)和分層的設(shè)計(jì),本自動(dòng)化測(cè)試框架的整個(gè)框架分別分成Utility、Page、Test、UI和TestSuit這五層。 (3)對(duì)webdriver基于selenium的底層接口進(jìn)行二次封裝,實(shí)現(xiàn)提高腳本的可維護(hù)和可復(fù)用性的目的。1.4論文結(jié)構(gòu) 本論文的章節(jié)內(nèi)容如下所示: 第一章:緒論,這一章主要是進(jìn)行一個(gè)關(guān)于課題的研究背景、國(guó)內(nèi)的發(fā)展歷史、國(guó)外的發(fā)展現(xiàn)狀、本文主要說(shuō)明的內(nèi)容和實(shí)現(xiàn)的目標(biāo)的簡(jiǎn)單的敘述說(shuō)明。 第二章:試概述,這一章主測(cè)試和自動(dòng)化測(cè)試的定義、需要測(cè)試內(nèi)容和為什么要進(jìn)行自動(dòng)化測(cè)試進(jìn)行簡(jiǎn)單的介紹和說(shuō)明。 第三章:Web自動(dòng)化測(cè)試框架需求分析,這一章主要是在功能和非功能方面對(duì)自動(dòng)化測(cè)試框架進(jìn)行一個(gè)需求分析,對(duì)構(gòu)建測(cè)試框架的工具進(jìn)行簡(jiǎn)單的介紹說(shuō)明,以及對(duì)框架的繼承開(kāi)發(fā)環(huán)境的簡(jiǎn)單介紹說(shuō)明。 第四章:Web自動(dòng)化測(cè)試框架的設(shè)計(jì),這一章主要是框架的分層設(shè)計(jì)進(jìn)行一個(gè)詳細(xì)的說(shuō)明,以及對(duì)設(shè)計(jì)過(guò)程中需要注意的問(wèn)題進(jìn)行闡述。 第五章:Web自動(dòng)化測(cè)試框架的實(shí)現(xiàn),這一章主要是介紹和說(shuō)明了框架的結(jié)構(gòu)是怎樣的、框架實(shí)現(xiàn)的功能有哪些以及Selenium對(duì)瀏覽器的支持。 第六章:Web自動(dòng)化測(cè)試框架的應(yīng)用,這一章主要是針對(duì)本框架編寫(xiě)幾個(gè)簡(jiǎn)單的自動(dòng)化測(cè)試實(shí)例,在框架下成功運(yùn)行之后,對(duì)本自動(dòng)化測(cè)試框架實(shí)現(xiàn)的效果進(jìn)行一個(gè)展示。 總結(jié):總結(jié)主要是進(jìn)行一個(gè)關(guān)于框架的實(shí)現(xiàn)成果與預(yù)期結(jié)果的思考以及總結(jié),和對(duì)本框架不足的地方進(jìn)行簡(jiǎn)單的說(shuō)明以及對(duì)后續(xù)的發(fā)展進(jìn)行說(shuō)明。第二章傳統(tǒng)軟件測(cè)試概述2.1軟件測(cè)試概述2.1.1軟件測(cè)試的定義 如何能夠提高軟件的正確性、完整性以及質(zhì)量使在軟件測(cè)試過(guò)程中需要考慮和解決的問(wèn)題。也就是說(shuō)軟件測(cè)試工作是去審核一種過(guò)程?;蛘弑容^測(cè)試結(jié)束之后得到的實(shí)際結(jié)果和預(yù)期結(jié)果的一種過(guò)程。軟件測(cè)試是在規(guī)定的條件下去運(yùn)行和操作程序,然后發(fā)現(xiàn)程序的錯(cuò)誤。以此來(lái)測(cè)量待測(cè)試軟件的質(zhì)量,并且對(duì)這個(gè)軟件程序是否能夠滿足軟件設(shè)計(jì)的要求。軟件測(cè)試工作的執(zhí)行是為了發(fā)現(xiàn)錯(cuò)誤,去檢驗(yàn)程序或者產(chǎn)品是否能夠達(dá)到用戶的需和程序是否能夠提高用戶的使用體驗(yàn)。各種邊界條件都是在提高軟件應(yīng)用程序的質(zhì)量時(shí),設(shè)計(jì)測(cè)試用例的時(shí)候應(yīng)該要考慮到的。在一些比較特殊的情況下,還需要去制造極端和意外的狀態(tài)。根據(jù)二八原則可以知道,百分之八十在測(cè)試過(guò)程中發(fā)現(xiàn)的bug一般都來(lái)自百分之二十的模塊中。對(duì)于誤差結(jié)果的確認(rèn)過(guò)程,不可能去指定非常嚴(yán)格的測(cè)試計(jì)劃。對(duì)于測(cè)試過(guò)程中產(chǎn)生的所有文檔,都需要去妥善保存,以供查看。2.1.2軟件測(cè)試的分類軟件測(cè)試可以根據(jù)測(cè)試過(guò)程中使用的方法或者測(cè)試的對(duì)象和測(cè)試實(shí)施的地方進(jìn)行分類,常用的測(cè)試方法非常的多。包括單元測(cè)試、性能測(cè)試、手工和兼容性測(cè)試等。手工測(cè)試是屬于比較原始的一種測(cè)試方法,需要由人工手動(dòng)的被各個(gè)測(cè)試用例輸入,然后測(cè)試的結(jié)果和機(jī)器的實(shí)際反映,需要一個(gè)一個(gè)的進(jìn)行測(cè)試。雖然可以進(jìn)行發(fā)散思維無(wú)既定結(jié)果的測(cè)試,但是執(zhí)行的效率比較慢,量大易出錯(cuò)。自動(dòng)化測(cè)試是有前提條件的,需要在預(yù)先設(shè)定好的條件下去運(yùn)行指定的系統(tǒng)或者程序,然后對(duì)運(yùn)行得到的結(jié)果進(jìn)行一個(gè)對(duì)比和評(píng)價(jià)。簡(jiǎn)單來(lái)說(shuō),自動(dòng)化測(cè)試就是一個(gè)將手工測(cè)試行為轉(zhuǎn)變成為機(jī)器去執(zhí)行的一個(gè)過(guò)程。在自動(dòng)化測(cè)試工作中,功能自動(dòng)化測(cè)試占很大一部分。圖2-1軟件測(cè)試分類2.1.3軟件測(cè)試的過(guò)程模型(1)V模型這種模型是早期的測(cè)試模型,也是比較具有代表性的,在早期的開(kāi)發(fā)模型中,大家總是認(rèn)為在需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和編寫(xiě)腳本完成之后才可以進(jìn)行軟件測(cè)試工作。盡管整個(gè)項(xiàng)目的大部分時(shí)間都被測(cè)試工作占據(jù),還是會(huì)有一些人認(rèn)為測(cè)試工作的執(zhí)行只適合在軟件開(kāi)發(fā)完成以后再去進(jìn)行,并不任務(wù)測(cè)試工作也是軟件開(kāi)發(fā)的最主要的一個(gè)過(guò)程。通過(guò)V模型,我們可以很清楚的知道從開(kāi)發(fā)到測(cè)試的過(guò)程邏輯,并且可以很清晰的把測(cè)試的過(guò)程和軟件的開(kāi)發(fā)過(guò)程中各個(gè)不同的階段相對(duì)應(yīng)的關(guān)系都描述出來(lái)。V模型也不是比較比較完善的,也會(huì)具有一定的局限性,比如在V模型中,概要分析、軟件概要設(shè)計(jì)、軟件詳細(xì)設(shè)計(jì)以和編寫(xiě)代碼工作的完成是進(jìn)行測(cè)試工作的前提,而不是把軟件測(cè)試當(dāng)做開(kāi)發(fā)過(guò)程中一個(gè)重要的步驟。V模型主要是針對(duì)程序完成之后進(jìn)行測(cè)試,對(duì)在需求分析階段的問(wèn)題不能早期發(fā)現(xiàn),在以后的驗(yàn)收測(cè)試之前不太可能被發(fā)現(xiàn)。圖2-2軟件測(cè)試的V模型(2)W模型在W模型中,把測(cè)試的過(guò)程當(dāng)成是軟件開(kāi)發(fā)過(guò)程的核心部分,并且指出測(cè)試的對(duì)象不是唯一或者單一的,測(cè)試應(yīng)該是伴隨著開(kāi)發(fā)一起的,并不是開(kāi)發(fā)工作完成之后才可以進(jìn)行測(cè)試,而是完成一個(gè)部分的開(kāi)發(fā)就可以開(kāi)始進(jìn)行對(duì)應(yīng)部分的測(cè)試工作。同時(shí)進(jìn)行測(cè)試和開(kāi)發(fā),這樣就可以盡早的發(fā)現(xiàn)問(wèn)題并提出相應(yīng)的解決方案,W模型也具有一定的局限性,早期的測(cè)試并沒(méi)有在W模型中被表達(dá)出來(lái),需求、設(shè)計(jì)和編碼等過(guò)程在V模型和W模型中都被當(dāng)成是軟件開(kāi)發(fā)中的過(guò)程。必須有上一環(huán)節(jié)已經(jīng)順利完成的相關(guān)指令或者提示,才能夠繼續(xù)執(zhí)行下一環(huán)節(jié)的工作。圖2-3軟件測(cè)試的W模型2.1.4軟件測(cè)試相關(guān)流程和文檔(1)測(cè)試流程軟件測(cè)試的具體流程如下圖2-4所示。圖2-4軟件測(cè)試的流程(2)測(cè)試文檔概述在軟件測(cè)試的組成部分中,測(cè)試文檔是非常重要的一個(gè)部分,進(jìn)行測(cè)試工作的計(jì)劃、測(cè)試過(guò)程中記錄的報(bào)告、測(cè)試發(fā)現(xiàn)問(wèn)題的報(bào)告以及測(cè)試評(píng)估報(bào)告都是測(cè)試文檔的主要包括的。軟件的測(cè)試文檔標(biāo)準(zhǔn)主要分:和規(guī)范。一般來(lái)說(shuō),編寫(xiě)測(cè)試文檔的時(shí)候,用國(guó)際標(biāo)準(zhǔn)或者國(guó)內(nèi)規(guī)范標(biāo)準(zhǔn)去作為測(cè)試文檔的模板會(huì)比較好。測(cè)試工作人員建立具體項(xiàng)目的測(cè)試文檔時(shí),可以適當(dāng)?shù)膶?duì)文檔的格式進(jìn)行修改,時(shí)文檔更加符合項(xiàng)目的具體需求。(3)編寫(xiě)測(cè)試文檔測(cè)試的對(duì)象、組織、任務(wù)計(jì)劃、通過(guò)的標(biāo)準(zhǔn)、失敗的標(biāo)準(zhǔn)、風(fēng)險(xiǎn)、時(shí)間分配等都是在測(cè)試計(jì)劃文檔里需要確定的。測(cè)試方案跟測(cè)試計(jì)劃文檔比較相似,但是測(cè)試方案跟測(cè)試計(jì)劃文檔不同的是,測(cè)試方案更加偏向去規(guī)劃測(cè)試過(guò)程的技術(shù)因素。測(cè)試文檔的編寫(xiě)過(guò)程需要非常認(rèn)真和細(xì)心的去對(duì)待,因?yàn)檫@是一項(xiàng)細(xì)致繁瑣而且比較復(fù)雜的工作。一份好的測(cè)試文檔可以為后續(xù)的測(cè)試工作提供保障,使得測(cè)試工作的完成更加順利。所以在編寫(xiě)測(cè)試文檔的時(shí)候,不僅需要知道測(cè)試的內(nèi)容,還需要知道如何去測(cè)試,并對(duì)整個(gè)測(cè)試工作有一個(gè)大致的規(guī)劃。測(cè)試文檔主要包括的內(nèi)容如下圖2-5所示。圖2-5測(cè)試文檔2.2軟件自動(dòng)化測(cè)試相關(guān)理論2.2.1自動(dòng)化測(cè)試的定義在手工測(cè)試的基礎(chǔ)上,并相對(duì)手工測(cè)試的概念而發(fā)展出來(lái)的自動(dòng)化測(cè)試,指的是測(cè)試過(guò)程中無(wú)需人工干預(yù),不是用手工進(jìn)行軟件測(cè)試,而是完全由測(cè)試人員預(yù)先設(shè)計(jì)好的計(jì)算機(jī)程序或者機(jī)器去進(jìn)行測(cè)試工作。也就是說(shuō),通過(guò)執(zhí)行用程序語(yǔ)言編制的自動(dòng)化測(cè)試腳本去模擬手工測(cè)試的擦操作步驟,在執(zhí)行結(jié)束以后給出自動(dòng)化測(cè)試的結(jié)果。這包含了所有的測(cè)試階段和測(cè)試過(guò)程,它不僅能支持跨平臺(tái),而且它是獨(dú)立于進(jìn)程的。一般來(lái)說(shuō),測(cè)試人員在測(cè)試用例和評(píng)審?fù)瓿芍蟀凑諟y(cè)試用例中的描述去逐步進(jìn)行測(cè)試工作,最后再對(duì)比實(shí)際的結(jié)果與實(shí)際的結(jié)果。。這個(gè)是一個(gè)比較繁瑣和耗時(shí)的測(cè)試過(guò)程,為了能夠更加好的提高測(cè)試的效率、節(jié)省測(cè)試的花費(fèi)和人力物力,就引進(jìn)了自動(dòng)化測(cè)試的概念以及技術(shù)。理論上,手工測(cè)試的所有流程都能夠被自動(dòng)化測(cè)試覆蓋,但是并不是所有的項(xiàng)目都適合采用自動(dòng)化測(cè)試去進(jìn)行測(cè)試,也不是每一次都測(cè)試都進(jìn)行自動(dòng)化測(cè)試的。,需要考慮投資與產(chǎn)出的比較,一般來(lái)說(shuō),如果軟件整體已經(jīng)比較成熟,在比較穩(wěn)定的功能模塊可以嘗試進(jìn)行自動(dòng)化測(cè)試。,不同類型的自動(dòng)化測(cè)試也有不同發(fā)展。許多不一樣的自動(dòng)化測(cè)試工具被研發(fā)出來(lái),使自動(dòng)化測(cè)試工作可以更加順利并且高效的展開(kāi)。雖然自動(dòng)化測(cè)試的好處有很多,但是也有弊端,比如在軟件產(chǎn)品的功能不穩(wěn)定的時(shí)候,需要花費(fèi)很大在自動(dòng)化測(cè)試腳本的維護(hù)方面,所以在自動(dòng)化測(cè)試工作進(jìn)行的早期階段,測(cè)試效率不一定會(huì)比手工測(cè)試高,而且進(jìn)行自動(dòng)化測(cè)試時(shí),程序無(wú)法像人工一樣應(yīng)對(duì)各種突發(fā)情況。因此,無(wú)論是進(jìn)行自動(dòng)測(cè)試還是人工測(cè)試,都需要去結(jié)合工程的實(shí)際情況。2.2.2自動(dòng)化測(cè)試的對(duì)象自動(dòng)化測(cè)試的主要測(cè)試對(duì)象是像回歸測(cè)試、性能測(cè)試、負(fù)載測(cè)試等這些重復(fù)的工作。一般回歸測(cè)試需要測(cè)試的項(xiàng)目都比其他測(cè)試的要多,需要花費(fèi)非常多的時(shí)間。所以在沒(méi)有充足的時(shí)間能夠把自動(dòng)化實(shí)施到整個(gè)回歸測(cè)試中的時(shí)候,我們首先應(yīng)該考慮實(shí)現(xiàn)自動(dòng)延遲測(cè)試。開(kāi)發(fā)自動(dòng)測(cè)試的成本很高。如果只運(yùn)行一次,就不太值得大家去投資和開(kāi)發(fā)自動(dòng)檢測(cè)框架和系統(tǒng)。2.2.3自動(dòng)化測(cè)試框架的分類自動(dòng)化測(cè)試框架,根據(jù)名字的意思來(lái)說(shuō),是可以應(yīng)用自動(dòng)化測(cè)試腳本的框架,自動(dòng)化測(cè)試框架也是一種自動(dòng)化測(cè)試工具,一般提供一個(gè)或者幾個(gè)自動(dòng)化測(cè)試模塊。不同的開(kāi)發(fā)或者測(cè)試人員所編寫(xiě)出來(lái)的自動(dòng)化測(cè)試框架都是有一定區(qū)別的,但大體上還是相似的。下面顯示了幾種類型的自動(dòng)化測(cè)試框架。1.測(cè)試框架模塊化圖2-6模塊化測(cè)試框架2.測(cè)試庫(kù)框架圖2-7測(cè)試庫(kù)框架3.關(guān)鍵字驅(qū)動(dòng)的測(cè)試框架圖2-8關(guān)鍵字驅(qū)動(dòng)的測(cè)試框架圖2-9關(guān)鍵字驅(qū)動(dòng)的測(cè)試框架流程4.數(shù)據(jù)驅(qū)動(dòng)的測(cè)試框架圖2-10數(shù)據(jù)驅(qū)動(dòng)的測(cè)試框架

圖2-11數(shù)據(jù)驅(qū)動(dòng)測(cè)試框架流程2.2.4為什么要進(jìn)行自動(dòng)化測(cè)試隨著國(guó)家計(jì)算機(jī)信息的發(fā)展,軟件都是需要快速迭代,像一些重復(fù)性的工作可以通過(guò)自動(dòng)化來(lái)完成,從而提高工作的效率和準(zhǔn)確性,達(dá)到迭代的目的。圖2-12自動(dòng)化測(cè)試工作流2.3Web自動(dòng)化測(cè)試概述2.3.1Web應(yīng)用的測(cè)試內(nèi)容Web應(yīng)用的規(guī)模和系統(tǒng)的復(fù)雜度越來(lái)越大,用戶對(duì)使用軟件的質(zhì)量要求越來(lái)越高,,為了能夠保證web應(yīng)用的質(zhì)量,一般來(lái)說(shuō),都會(huì)對(duì)Web應(yīng)用進(jìn)行盡可能全面的測(cè)試,以達(dá)到上線的標(biāo)準(zhǔn)和滿足用戶的需求。以下是Web應(yīng)用比較常見(jiàn)的測(cè)試內(nèi)容。1.功能測(cè)試圖2-13功能測(cè)試2.性能測(cè)試圖2-14性能測(cè)試3.兼容性測(cè)試圖2-15兼容性測(cè)試第三章Web自動(dòng)化測(cè)試框架需求分析 因?yàn)閣eb用戶對(duì)軟件的質(zhì)量和要求越來(lái)越高,web應(yīng)用的更新迭代越來(lái)越頻繁,功能和業(yè)務(wù)流程也越來(lái)越復(fù)雜,所以為了能夠在web產(chǎn)品在上線之前做好質(zhì)量的保證,需要在產(chǎn)品上線之前對(duì)應(yīng)用進(jìn)行各種各樣充分的測(cè)試,以及大量的回歸測(cè)試。如果這些工作都是用人工去進(jìn)行手工測(cè)試,這對(duì)公司來(lái)說(shuō),不只是測(cè)試工作效率低,也會(huì)浪費(fèi)大量的人力和物力,支出與收獲不成正比,所以現(xiàn)在越來(lái)越多的公司開(kāi)始引進(jìn)自動(dòng)化測(cè)試技術(shù)。在進(jìn)行自動(dòng)化工作的過(guò)程中,也需要去考慮非常多的問(wèn)題。在技術(shù)和使用方面,需要考慮選擇什么樣的軟件測(cè)試工具和軟件測(cè)試開(kāi)發(fā)語(yǔ)言、測(cè)試腳本的兼容性、測(cè)試執(zhí)行的策略、還需要考慮如何才能實(shí)現(xiàn)真正的無(wú)人干預(yù)、如何才能提高自動(dòng)化測(cè)試腳本的復(fù)用性、如何才能獲得可靠的測(cè)試結(jié)果等問(wèn)題。對(duì)以上問(wèn)題經(jīng)過(guò)思考與研究之后發(fā)現(xiàn),我們需要設(shè)計(jì)和研發(fā)一個(gè)web自動(dòng)化測(cè)試框架把以上這些問(wèn)題進(jìn)行集中處理,才能夠解決這些問(wèn)題。3.1自動(dòng)化測(cè)試框架功能需求分析3.1.1自動(dòng)化框架支持的測(cè)試類型以下是對(duì)基于web應(yīng)用實(shí)施的自動(dòng)化測(cè)試所使用的自動(dòng)化測(cè)試框架的實(shí)際需求進(jìn)行的分析。圖3-1支持的測(cè)試類型 (1)Web應(yīng)用的兼容性測(cè)試 本框架能夠支持在主流的瀏覽器和版本上進(jìn)行web應(yīng)用的兼容性測(cè)試工作,Web應(yīng)用是因?yàn)槠湟撞僮骱头奖悴疟粡V大用戶所喜愛(ài)和使用的,只需要一個(gè)連接上網(wǎng)絡(luò)的瀏覽器就可以進(jìn)行操作了,但是用戶通常使用不同的操作系統(tǒng)和版本,如果web應(yīng)用不能夠支持在不同的瀏覽器或者瀏覽器版本上進(jìn)行操作,會(huì)給用戶帶來(lái)很大的不便。因此對(duì)web應(yīng)用需要進(jìn)行兼容性測(cè)試,保證web軟件應(yīng)用的UI顯示和功能能夠正常運(yùn)行。(2)Web應(yīng)用的UI自動(dòng)化測(cè)試UI測(cè)試也就是運(yùn)行編寫(xiě)的腳本模擬人對(duì)瀏覽器進(jìn)行的操作,進(jìn)行UI測(cè)試的時(shí)候,是不需要去關(guān)注應(yīng)用代碼的內(nèi)部邏輯的。本框架能夠支持UI自動(dòng)化測(cè)試,本框架在進(jìn)行UI自動(dòng)化測(cè)試的時(shí)候,能夠正確的打開(kāi)網(wǎng)址,然后自動(dòng)識(shí)別頁(yè)面的元素,再模擬人對(duì)頁(yè)面元素進(jìn)行操作,如在web頁(yè)面的文本框進(jìn)行文本輸入,點(diǎn)擊搜索等,然后將得到的實(shí)際結(jié)果與預(yù)期結(jié)果進(jìn)行對(duì)比。(3)Web應(yīng)用的穩(wěn)定性測(cè)試本框架能夠支持對(duì)Web應(yīng)用進(jìn)行穩(wěn)定性測(cè)試,也就是對(duì)web應(yīng)用在連續(xù)長(zhǎng)時(shí)間的運(yùn)行進(jìn)行穩(wěn)定性測(cè)試。通常情況下,進(jìn)行穩(wěn)定性測(cè)試會(huì)選擇使用用戶使用率高的功能模塊來(lái)進(jìn)行一個(gè)72小時(shí)的連續(xù)測(cè)試,然后通過(guò)計(jì)算嚴(yán)重問(wèn)題的數(shù)量和穩(wěn)定運(yùn)行的平均時(shí)長(zhǎng)去評(píng)估該web應(yīng)用的穩(wěn)定性測(cè)試是否可以通過(guò)。3.1.2自動(dòng)化框架支持的執(zhí)行策略本小節(jié)主要介紹了本自動(dòng)化測(cè)試框架能夠支持的執(zhí)行策略以及實(shí)現(xiàn)的方式。圖3-2框架支持的執(zhí)行策略(1)自動(dòng)構(gòu)建測(cè)試集圖3-3自動(dòng)構(gòu)建測(cè)試集(2)執(zhí)行單條測(cè)試用例圖3-4執(zhí)行單條測(cè)試用例(3)批量執(zhí)行測(cè)試用例圖3-5批量執(zhí)行測(cè)試用例(4)自動(dòng)執(zhí)行測(cè)試任務(wù)圖3-6自動(dòng)執(zhí)行測(cè)試任務(wù)(5)手工執(zhí)行測(cè)試任務(wù) 圖3-7手工執(zhí)行測(cè)試任務(wù)3.2自動(dòng)化測(cè)試框架內(nèi)部邏輯需求分析下面是幾點(diǎn)是關(guān)于自動(dòng)化測(cè)試框架功能需求以外的內(nèi)部邏輯的需求分析介紹:(1)自動(dòng)化測(cè)試的測(cè)試用例、測(cè)試數(shù)據(jù)以及頁(yè)面的元素應(yīng)該相互進(jìn)行獨(dú)立管理,這樣子在運(yùn)用需求進(jìn)行變更的時(shí)候,可以減少測(cè)試工作的工作量以及提高測(cè)試代碼的復(fù)用率和可維護(hù)性。(2)自動(dòng)化測(cè)試的腳本應(yīng)該采用分層的結(jié)構(gòu),因?yàn)闇y(cè)試腳本的開(kāi)發(fā)維護(hù)工作占到了自動(dòng)化測(cè)試實(shí)施期間的發(fā)部分時(shí)間,而且現(xiàn)在web應(yīng)用更新迭代塊,每次更新迭代都需要對(duì)應(yīng)用進(jìn)行測(cè)試和維護(hù),測(cè)試腳本也需要進(jìn)行維護(hù),工作量非常大。本框架對(duì)自動(dòng)化測(cè)試的腳本采用分層處理,可以以減少更新迭代需求變更頻繁時(shí)腳本的維護(hù)成本和提高自動(dòng)化測(cè)試腳本的復(fù)用性。(3)自動(dòng)化測(cè)試框架的代碼模塊之間的耦合性要低,這樣在需求變更的時(shí)候,或者在維護(hù)的時(shí)候,可以只對(duì)某一個(gè)模塊做出修改,維護(hù)的工作量減少,代碼模塊之間互不影響。3.3測(cè)試腳本集成開(kāi)發(fā)環(huán)境 本web自動(dòng)化測(cè)試框架使用python3進(jìn)行編寫(xiě)的,因?yàn)閜ython是一種免費(fèi)的開(kāi)源語(yǔ)言,是輕量級(jí)的,環(huán)境純凈,簡(jiǎn)潔易讀懂,支持跨平臺(tái),相同的代碼可以在不同的操作系統(tǒng)上運(yùn)行,功能強(qiáng)大,不需要其他環(huán)境的支持,可以驅(qū)動(dòng)的軟件多,并且可以SeleniumWebDriver也能夠支持使用python語(yǔ)言去進(jìn)行開(kāi)發(fā)。 在用python語(yǔ)言開(kāi)發(fā)web自動(dòng)化開(kāi)發(fā)框架的時(shí)候,使用Pycharm作為集成開(kāi)發(fā)環(huán)境,因?yàn)镻ycharm不僅支持Python,而且能過(guò)支持多種編程語(yǔ)言以及能夠跨平臺(tái),是一款功能比較強(qiáng)大的python編輯器。3.4構(gòu)建工具的選擇 1、Jenkins Jenkins,是一款開(kāi)源自動(dòng)化的持續(xù)集成服務(wù)器,可以用它來(lái)配置自動(dòng)化測(cè)試的計(jì)劃、任務(wù)以及進(jìn)行自動(dòng)化任務(wù)執(zhí)行的持續(xù)監(jiān)控。 2、SeleniumWebDriver Selenium是為了各種各樣不同的瀏覽器而被開(kāi)發(fā)出來(lái)的,是一款免費(fèi)的開(kāi)源工具,使用起來(lái)簡(jiǎn)單靈活。它與瀏覽器持續(xù)集成??梢酝ㄟ^(guò)操作系統(tǒng)級(jí)別使用調(diào)用模擬用戶對(duì)瀏覽器的操作,也就是直接使用瀏覽器驅(qū)動(dòng)對(duì)瀏覽器進(jìn)行操作,加快測(cè)試執(zhí)行的速度。第四章Web自動(dòng)化測(cè)試框架的設(shè)計(jì)4.1自動(dòng)化測(cè)試框架的整體架構(gòu)本W(wǎng)eb自動(dòng)化測(cè)試框架主要有服務(wù)層和執(zhí)行層這兩大個(gè)主要的部分組成,服務(wù)器層是以集成服務(wù)器為主所構(gòu)成的,整體架構(gòu)圖如圖4-1所示,執(zhí)行層是由測(cè)試的腳本和測(cè)試代碼執(zhí)行的平臺(tái)構(gòu)成的,在測(cè)試框架設(shè)計(jì)時(shí)需要注意的這幾個(gè)事項(xiàng):(1)測(cè)試框架不應(yīng)該跟應(yīng)用程序結(jié)合在一起,是獨(dú)立于應(yīng)用程序的。(2)相同的測(cè)試腳本在不同的操作系統(tǒng)、瀏覽器上運(yùn)行都要能夠穩(wěn)定運(yùn)行。(3)測(cè)試的結(jié)果必須能夠保證正確性,并且要在測(cè)試過(guò)程出現(xiàn)錯(cuò)誤的時(shí)候能夠有詳細(xì)完整的日志去查看錯(cuò)誤。(4)測(cè)試腳本和測(cè)試數(shù)據(jù)不能夠放在一起管理,應(yīng)該分開(kāi)管理。圖4-1整體架構(gòu) 4.2自動(dòng)化測(cè)試框架服務(wù)層設(shè)計(jì)本框架的服務(wù)器層主要完成的任務(wù)是,將用戶在集成服務(wù)器上配置好的測(cè)試任務(wù)下發(fā)給執(zhí)行層執(zhí)行,執(zhí)行結(jié)束之后把測(cè)試結(jié)果返回給用戶,下圖是服務(wù)器層的生命周期圖。圖4-2任務(wù)生命周期從上圖4-2中可以看出來(lái),本框架的測(cè)試任務(wù)的生命周期,從開(kāi)始到結(jié)束,一共經(jīng)歷了五個(gè)環(huán)節(jié),以下是對(duì)本框架的任務(wù)生命周期的每個(gè)環(huán)節(jié)的詳細(xì)說(shuō)明和介紹:(1)源碼腳本的檢測(cè):圖4-3源碼測(cè)試腳本的檢測(cè)(2)執(zhí)行的觸發(fā)條件:圖4-4執(zhí)行的觸發(fā)條件(3)測(cè)試環(huán)境的準(zhǔn)備:圖4-5測(cè)試環(huán)境的準(zhǔn)備(4)測(cè)試的運(yùn)行:圖4-6測(cè)試的運(yùn)行(5)測(cè)試結(jié)果的分析:圖4-7測(cè)試結(jié)果的分析4.3自動(dòng)化測(cè)試框架執(zhí)行層設(shè)計(jì)對(duì)自動(dòng)化測(cè)試工作而言,只有去運(yùn)行測(cè)試腳本才能夠去驗(yàn)證測(cè)試的結(jié)果。在測(cè)試進(jìn)行的時(shí)候,測(cè)試運(yùn)行的時(shí)候模擬人對(duì)程序進(jìn)行操作所執(zhí)行的指令都是來(lái)源于測(cè)試腳本的,在腳本運(yùn)行期間,對(duì)測(cè)試期間會(huì)出現(xiàn)的異常情況,無(wú)法進(jìn)行人工干預(yù),腳本運(yùn)行期間會(huì)出現(xiàn)的問(wèn)題也非常多,需要處理的問(wèn)題也非常多。因此,執(zhí)行層的設(shè)計(jì)非常的重要。以下幾點(diǎn)是本web自動(dòng)化測(cè)試框架在設(shè)計(jì)執(zhí)行層需要注意的:圖4-8設(shè)計(jì)執(zhí)行層的注意事項(xiàng)通過(guò)以上幾點(diǎn)對(duì)執(zhí)行層框架設(shè)計(jì)的構(gòu)思與考慮,繪制的執(zhí)行層架構(gòu)設(shè)計(jì)圖如下圖4-3所示。圖4-9執(zhí)行層架構(gòu)設(shè)計(jì)(1)測(cè)試執(zhí)行驅(qū)動(dòng):圖4-10測(cè)試執(zhí)行驅(qū)動(dòng)(2)測(cè)試數(shù)據(jù)管理:圖4-11測(cè)試數(shù)據(jù)管理(3)自定義方法庫(kù):圖4-12自定義方法庫(kù)(4)維護(hù)腳本的分層結(jié)構(gòu)與模塊化:圖4-13腳本的分層與模塊化(5)測(cè)試結(jié)果的處理:圖4-14測(cè)試結(jié)果的處理4.4測(cè)試腳本分層架構(gòu)設(shè)計(jì)測(cè)試腳本的開(kāi)發(fā)和維護(hù)耗時(shí)在進(jìn)行自動(dòng)化測(cè)試工作中,占到自動(dòng)化測(cè)試的大部分時(shí)間。如果每次編寫(xiě)自動(dòng)化測(cè)試腳本,都按照測(cè)試用例去重新一步步編寫(xiě),沒(méi)有腳本架構(gòu),對(duì)于更新迭代較快的Web自動(dòng)化測(cè)試來(lái)說(shuō),一旦需求有變暖更,腳本維護(hù)的工作量相當(dāng)大,代碼耦合性高,可讀性差。針對(duì)這些問(wèn)題,本框架將通過(guò)對(duì)測(cè)試腳本進(jìn)行分層的架構(gòu)設(shè)計(jì)來(lái)處理,下面是本框架的分層設(shè)計(jì)。圖4-15框架的分層設(shè)計(jì)第五章Web自動(dòng)化測(cè)試框架的實(shí)現(xiàn)在上面的章節(jié),對(duì)本自動(dòng)化測(cè)試框架進(jìn)行了需求分析和詳細(xì)設(shè)計(jì),通過(guò)研究與學(xué)習(xí),本web自動(dòng)化測(cè)試框架的腳本編寫(xiě)和腳本的調(diào)試工作都已經(jīng)完成。接下來(lái)將對(duì)該測(cè)試框架腳本的封層架構(gòu)、執(zhí)行策略、支持的測(cè)試類型以及輔助功能的具體實(shí)現(xiàn)進(jìn)行介紹??蚣艿墓こ探Y(jié)構(gòu)圖如下圖5-1自動(dòng)化測(cè)試工程結(jié)構(gòu)圖所示。圖5-1自動(dòng)化測(cè)試工程結(jié)構(gòu)圖(1)common:存放公共元素,第三方庫(kù)。如URL、讀取Excel文件的方法、使用的信息等。主要用來(lái)定義公共的方法以及實(shí)現(xiàn)的輔助的功能。(2)data:存放測(cè)試過(guò)程中需要使用的數(shù)據(jù)和文件,如圖片、csv、txt、zip文件等。(3)drivers:存放測(cè)試過(guò)程中使用到的驅(qū)動(dòng)(4)logs:存放測(cè)試過(guò)程中產(chǎn)生的日志文件(5)page:存放封裝頁(yè)面的方法,初始化URL、二次封裝selenium底層對(duì)瀏覽器操作的函數(shù)。(6)report:存放測(cè)試生成的測(cè)試報(bào)告。(7)testcase:存放具體的測(cè)試用例腳本文件。(8)UI:存放整個(gè)工程中所有測(cè)試用例需要調(diào)用的web頁(yè)面元素。(9)run:運(yùn)行該run.py文件可以把單條的測(cè)試用例集合起來(lái)運(yùn)行,完成特定的測(cè)試任務(wù)。也可以執(zhí)行單條的測(cè)試任務(wù)。5.1自動(dòng)化測(cè)試腳本封層架構(gòu)的實(shí)現(xiàn)自動(dòng)化測(cè)試框架實(shí)現(xiàn)以后,測(cè)試腳本執(zhí)行的整個(gè)過(guò)程的基本流程圖如下圖5-2所示。圖5-2程序流程圖測(cè)試腳本的架構(gòu)一共分為UI、Page、Test、Utility、Testsuit這五層,下面將對(duì)架構(gòu)的這五層分別進(jìn)行介紹。5.1.1Utility層的實(shí)現(xiàn)在圖5-1自動(dòng)化測(cè)試框架結(jié)構(gòu)圖的Common文件中實(shí)現(xiàn)了Utility層。Utility層也就是公共元素層。它主要包括URL、測(cè)試報(bào)告發(fā)送的郵件地址,使用的信息、第三方庫(kù)等。根據(jù)Web自動(dòng)化測(cè)試測(cè)需求,對(duì)在該文件夾下的主要文件進(jìn)行簡(jiǎn)單的介紹:(1)HTMLTestRunner.py:HTMLTestRunner.py文件是一個(gè)第三方庫(kù),是一個(gè)基于unittest的單元測(cè)試的HTML報(bào)告,使用HTMLTestRunn可以生成精美、簡(jiǎn)約、易懂不難理解的HTML測(cè)試結(jié)果報(bào)告。這個(gè)文件是使用python2的語(yǔ)言編寫(xiě)的,由于本框架使用的是Python3,所以需要對(duì)導(dǎo)入的HTMLTestRunner進(jìn)行修改,下圖是對(duì)HTMLTestRunner修改的步驟。圖5-3修改的步驟(2)log.py:主要是生成測(cè)試過(guò)程中的日志文件,指定保存日志的文件的路徑,將日志存入到指定的文件夾中。下圖5-4是log.py文件寫(xiě)入并保存日志的方法。圖5-4寫(xiě)入并保存日志的方法(3)readExcel.py:主要是封裝讀取excel文件中保存的測(cè)試過(guò)程中需要的數(shù)據(jù)。下圖5-5是讀取excel文件數(shù)據(jù)的方法。圖5-5讀取excel文件的方法(4)sendEmail.py:此文件主要是實(shí)現(xiàn)自動(dòng)發(fā)送郵件的功能,在自動(dòng)化測(cè)試腳本運(yùn)行結(jié)束生成測(cè)試報(bào)告以后,此文件可以獲取最新的測(cè)試報(bào)告,然后向文件中已獲取授權(quán)碼的郵箱發(fā)送自動(dòng)化測(cè)試報(bào)告的html文件。下圖5-6和圖5-7分別是sendEmail中讀取測(cè)試報(bào)告生成郵件的方法和獲取最新的測(cè)試報(bào)告的方法。圖5-6生成測(cè)試報(bào)告的方法圖5-7獲取最新的測(cè)試報(bào)告的方法 (5)url.py:主要是測(cè)試過(guò)程中使用到的URL網(wǎng)址。5.1.2Page層的實(shí)現(xiàn)Page層的實(shí)現(xiàn),體現(xiàn)在Page文件夾中,在文件夾中設(shè)置了pyselenium.Py文件使測(cè)試腳本編寫(xiě)起來(lái)更加方便,也使元素的查找更加簡(jiǎn)便。把如初始化驅(qū)動(dòng)、URL、pagetitle等頁(yè)面公用的方法封裝在文件中,,把selenium底層對(duì)瀏覽器操作的函數(shù)進(jìn)行二次封裝.(1)pageObject.py:主要是將被測(cè)頁(yè)面的測(cè)試腳本與腳本中所使用到的頁(yè)面元素解耦,將PageElement構(gòu)造函數(shù)參數(shù)映射到webdriver定位器枚舉,將被測(cè)頁(yè)面的測(cè)試腳本文件放在testcase文件夾中,將測(cè)試腳本使用到的被測(cè)頁(yè)面元素放置在UI文件夾中。其中的定位器如下圖5-8所示:圖5-8定位器(2)pyselenium.py:該文件主要是對(duì)selenium代碼進(jìn)行簡(jiǎn)單的二次封裝,對(duì)頁(yè)面操作方法進(jìn)行封裝。其中查找頁(yè)面元素的方法封裝如下圖5-9所示:圖5-9查找頁(yè)面元素(3)webConfig.py:主要是配置測(cè)試過(guò)程中使用的瀏覽器。Page層中所定義的歲瀏覽器的操作方法執(zhí)行時(shí)程序的業(yè)務(wù)基本流程圖如下圖5-10所示。圖5-10操作方法執(zhí)行流程5.1.3Test層的實(shí)現(xiàn)Test層的實(shí)現(xiàn),是在圖5-1中的test層的testcase目錄,這個(gè)文件下保存的是根據(jù)測(cè)試用例編寫(xiě)的自動(dòng)化測(cè)試腳本。測(cè)試腳本的分層思路非常重要,因?yàn)樾枰WC腳本的可維護(hù)和可復(fù)用性。而且在編寫(xiě)自動(dòng)化測(cè)試腳本時(shí)候,把測(cè)試腳本劃分成可以再次調(diào)用的小模塊,可以降低測(cè)試腳本的維護(hù)成本。Test層調(diào)用其它層的結(jié)構(gòu)圖如下圖5-11所示。圖5-11Test層調(diào)用其他層的結(jié)構(gòu)5.1.4UI層的實(shí)現(xiàn)Page目錄中體現(xiàn)了UI層的實(shí)現(xiàn),該文件下存放了測(cè)試用例中要用的所有Web元素,把頁(yè)面中所用到的元素都定義在文件里面,把每個(gè)元素的定位封裝成一個(gè)方法。這是在WebDriver提供的底層函數(shù)上進(jìn)行的統(tǒng)一的封裝。UI頁(yè)面層元素進(jìn)行調(diào)用時(shí)業(yè)務(wù)執(zhí)行的基本操作流程如下圖5-12所示:圖5-12頁(yè)面元素調(diào)用流程測(cè)試的元素的XPath值是直接編寫(xiě)到測(cè)試用例腳本當(dāng)中的。測(cè)試的數(shù)據(jù)和測(cè)試的數(shù)據(jù)進(jìn)行分離,測(cè)試的數(shù)據(jù)獨(dú)立存儲(chǔ)在file文件夾中,可以調(diào)高腳本的可維護(hù)性。降低測(cè)試腳本的維護(hù)成本。因?yàn)閃eb頁(yè)面元素經(jīng)常發(fā)生變化,所以選擇XPath方法進(jìn)行定位。一般需要通過(guò)這幾個(gè)步驟來(lái)進(jìn)行WebDriver自動(dòng)化測(cè)試腳本的開(kāi)發(fā):(1)導(dǎo)入WebDriver相關(guān)模塊。(2)進(jìn)行WebDriver驅(qū)動(dòng)對(duì)應(yīng)瀏覽器的實(shí)例化。(3)通過(guò)瀏覽器句柄訪問(wèn)對(duì)應(yīng)網(wǎng)頁(yè)的URL。(4)通過(guò)句柄訪問(wèn)對(duì)應(yīng)的網(wǎng)頁(yè)的URL。(5)關(guān)閉瀏覽器。5.1.5Testsuit層的實(shí)現(xiàn)Testsuit層的實(shí)現(xiàn),體現(xiàn)在run.py文件中。這個(gè)文件的主要工作是將不同的測(cè)試用例集合成一個(gè)特定的測(cè)試任務(wù)。通過(guò)main()方法,將所有要執(zhí)行的測(cè)試用例都加載到run.py文件中去,然后通過(guò)執(zhí)行HTMLTestRunner類中的run()方法來(lái)執(zhí)行測(cè)試所有的自動(dòng)化測(cè)試用例。下圖是測(cè)試集合的組成及運(yùn)行:圖5-13測(cè)試集合的組成及運(yùn)行5.2提供的執(zhí)行策略本web自動(dòng)化測(cè)試框架一共支持自動(dòng)構(gòu)建測(cè)試集、執(zhí)行單條測(cè)試用例、批量執(zhí)行測(cè)試用例、和手工執(zhí)行測(cè)試任務(wù)這四種執(zhí)行策略,下圖分別介紹了這幾種執(zhí)行策略是如何實(shí)現(xiàn)的。圖5-14執(zhí)行策略的實(shí)現(xiàn)方式5.3自動(dòng)化測(cè)試框架的實(shí)現(xiàn)本web自動(dòng)化測(cè)試框架一共支持UI層功能測(cè)試、兼容性測(cè)試、穩(wěn)定性測(cè)試這三種測(cè)試類型。以下是這幾種測(cè)試類型的具體實(shí)現(xiàn)方式。圖5-15測(cè)試的實(shí)現(xiàn)方式下圖5-16是Selenium請(qǐng)求一個(gè)特定環(huán)境的時(shí)候調(diào)用的基本結(jié)構(gòu)圖。圖5-16Selenium調(diào)用的基本結(jié)構(gòu)圖(3)穩(wěn)定性測(cè)試在外部文件中存儲(chǔ)待測(cè)試功能模塊的測(cè)試用例以及數(shù)據(jù),在測(cè)試中自動(dòng)獲取待測(cè)試功能模塊的名稱和相關(guān)的測(cè)試用例的編號(hào),再把這些測(cè)試用例對(duì)應(yīng)的自動(dòng)化測(cè)試的腳本通過(guò)main()方法加載到TestSuit中去。最后將這些測(cè)試集定義成長(zhǎng)時(shí)間運(yùn)行,觀察所測(cè)試應(yīng)用的功能和系統(tǒng)是否能夠正確使用和運(yùn)行。5.4輔助功能以下是自動(dòng)化測(cè)試框架支持的輔助功能的實(shí)現(xiàn)的介紹:(1)自動(dòng)生成測(cè)試結(jié)果報(bào)告本web自動(dòng)化測(cè)試框架的生成的測(cè)試結(jié)果報(bào)告是HTML格式的,報(bào)告里面有多個(gè)sheet,包含自動(dòng)化測(cè)試執(zhí)行概況sheet。自動(dòng)化測(cè)試結(jié)果報(bào)告生成的基本流程圖如下圖5-17所示。圖5-17測(cè)試結(jié)果報(bào)告生成流程(2)自動(dòng)發(fā)送測(cè)試報(bào)告到指定郵箱在測(cè)試用例執(zhí)行結(jié)束以后,本地report文件夾生成測(cè)試結(jié)果報(bào)告以后,會(huì)自動(dòng)向指定的郵箱發(fā)送web自動(dòng)化測(cè)試報(bào)告。5.5測(cè)試數(shù)據(jù)存儲(chǔ)存儲(chǔ)測(cè)試過(guò)程中需要使用到的數(shù)據(jù)的文件主要儲(chǔ)存在file文件中,在本web自動(dòng)化測(cè)試框架中,測(cè)試過(guò)程中需要是使用到的測(cè)試數(shù)據(jù)都是跟測(cè)試腳本分開(kāi)存儲(chǔ)的,運(yùn)行測(cè)試的時(shí)候直接調(diào)用就可以了。這樣在需求發(fā)生變更的時(shí)候,只需要去修改相應(yīng)的數(shù)據(jù)就可以了,這樣不僅降低了維護(hù)成本,也方便了維護(hù)。1.測(cè)試用例存儲(chǔ)把測(cè)試用例用到的數(shù)據(jù)保存在file文件中,在運(yùn)行測(cè)試的時(shí)候調(diào)用讀取數(shù)據(jù)的文件就可以把需要用到的數(shù)據(jù)讀取出來(lái)。把測(cè)試頁(yè)面的頁(yè)面元素保存在UI文件中,可以按照測(cè)試的功能模塊來(lái)劃分測(cè)試用例和頁(yè)面元素。2.測(cè)試數(shù)據(jù)存儲(chǔ)在進(jìn)行web自動(dòng)化測(cè)試的時(shí)候,需要頻繁的調(diào)用測(cè)試用例的數(shù)據(jù)、頁(yè)面元素的xpath值等。為了能夠更加方便的維護(hù)腳本和進(jìn)行數(shù)據(jù)的統(tǒng)一管理,把這些測(cè)試需要的數(shù)據(jù)存儲(chǔ)在SearchPage文件中以供調(diào)用。5.6測(cè)試結(jié)果輸出 report文件夾中主要存放的是自動(dòng)化測(cè)試執(zhí)行生成的測(cè)試報(bào)告。主要包含的是自動(dòng)化測(cè)試的總用例數(shù)、測(cè)試通過(guò)的用例數(shù)、測(cè)試失敗的用例數(shù)、測(cè)試的結(jié)果和測(cè)試通過(guò)率等。下圖5-18和圖5-19分別是自動(dòng)化測(cè)試報(bào)告中的用例執(zhí)行概況表格圖和用例執(zhí)行概況餅狀圖示例。圖5-18用例執(zhí)行概況表格 圖5-19用例執(zhí)行概況餅狀圖 5.7Selenium對(duì)瀏覽器的支持在開(kāi)源的web自動(dòng)化測(cè)試工具中,SeleniumWebDriver因?yàn)楣δ鼙容^強(qiáng)大所以深受開(kāi)發(fā)者和用戶的喜歡,因?yàn)樗募嫒菪院軓?qiáng),可以兼容IE、MozillaFirefox、Chrome等瀏覽器,還可以在測(cè)試的頁(yè)面里模擬用戶對(duì)頁(yè)面的操作??梢哉{(diào)用不同瀏覽器的驅(qū)動(dòng)去在不同的瀏覽器里進(jìn)行測(cè)試。在進(jìn)行web自動(dòng)化測(cè)試的時(shí)候,比較常用的瀏覽器有MozillaFirefox和Chrome瀏覽器。其中SeleniumWebDriver對(duì)Firefox的支持更好。但是在頁(yè)面識(shí)別和操作的時(shí)候,尤其是持續(xù)集成的時(shí)候,速度會(huì)比較慢。使用HtmIUnitDriver可以提高持續(xù)集成的速度,但是它使用起來(lái)不方便,因?yàn)闊o(wú)法在測(cè)試執(zhí)行期間看到對(duì)頁(yè)面的操作,(1)FirefoxDriver優(yōu)點(diǎn):SeleniumWebDriver對(duì)FireFox的支持相對(duì)來(lái)說(shuō)比較成熟一些。它在打開(kāi)瀏覽器之后可以模擬用戶對(duì)web頁(yè)面進(jìn)行操作,方便進(jìn)行測(cè)試腳本的調(diào)試。Firefox對(duì)JS的支持技術(shù)相對(duì)來(lái)說(shuō)也比較成熟,F(xiàn)ireFoxWebDriver基本上可以模擬實(shí)現(xiàn)web頁(yè)面上用JS實(shí)現(xiàn)的基本操作,并且同時(shí)支持多平臺(tái),如Linux、Windows和macOS操作系統(tǒng)。缺點(diǎn):在用Firefox進(jìn)行web自動(dòng)化測(cè)試的時(shí)候,它是在打開(kāi)瀏覽器之后再對(duì)web頁(yè)面進(jìn)行實(shí)際操作的,所以相對(duì)來(lái)說(shuō)速度會(huì)比較慢一些。并且有時(shí)候會(huì)因?yàn)槌掷m(xù)集成一直在頻繁的打開(kāi)關(guān)閉FirefoxWebDriver,可能會(huì)導(dǎo)致瀏覽器停止運(yùn)行。函數(shù)調(diào)用:driver=WebDriver.Firefox()。5.8自動(dòng)化測(cè)試腳本開(kāi)發(fā)遵循的原則在自動(dòng)化測(cè)試工作進(jìn)行的過(guò)程當(dāng)中,占據(jù)了自動(dòng)化前期準(zhǔn)備工作的很大一部分時(shí)間的主要是自動(dòng)化測(cè)試腳本的開(kāi)發(fā)。如果不去調(diào)用外部的公共方法和公共庫(kù),每個(gè)測(cè)試用例都手工一個(gè)個(gè)的去寫(xiě)成測(cè)試腳本,會(huì)造成重復(fù)的腳本代碼多、工作效率低等問(wèn)題。自動(dòng)化測(cè)試腳本的維護(hù)也會(huì)很費(fèi)時(shí)。自動(dòng)化測(cè)試腳本的原則如果沒(méi)有統(tǒng)一,去維護(hù)自動(dòng)化測(cè)試腳本的成本會(huì)很大而且效率也會(huì)很低。所以,為了能夠更好地把自動(dòng)化腳本的開(kāi)發(fā)工作以及維護(hù)工作進(jìn)行下去,自動(dòng)化測(cè)試團(tuán)隊(duì)需要遵循一套統(tǒng)一的測(cè)試腳本框架,下面這幾點(diǎn)是在進(jìn)行自動(dòng)化測(cè)試腳本的開(kāi)發(fā)工作的時(shí)候非常需要重視的基本原則。圖5-20基本原則第六章web自動(dòng)化測(cè)試框架的應(yīng)用實(shí)例6.1百度搜索測(cè)試用例6.1.1百度搜索用例的設(shè)計(jì)對(duì)百度搜索框的校驗(yàn)的測(cè)試用例的設(shè)計(jì):(1)根據(jù)文件中保存的百度的URL網(wǎng)址進(jìn)入百度的首頁(yè)(2)進(jìn)入百度首頁(yè)之后,在百度的搜索框中輸入“廣東東軟學(xué)院”(3)點(diǎn)擊百度搜索按鈕,根據(jù)輸入的內(nèi)容進(jìn)行搜索操作,并與設(shè)置的斷言進(jìn)行對(duì)比預(yù)期的結(jié)果:跳轉(zhuǎn)到搜索框搜索的內(nèi)容頁(yè)面。 6.1.2測(cè)試腳本的創(chuàng)建在testcase這個(gè)文件夾下創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試用例,用python去編寫(xiě),在這個(gè)python文件中編寫(xiě)自動(dòng)化測(cè)試的腳本,在腳本中設(shè)置斷言,調(diào)用執(zhí)行這個(gè)腳本,運(yùn)行結(jié)束以后,就能得到結(jié)果。以下是百度搜索自動(dòng)化測(cè)試用例的腳本:classTestLgin(unittest.TesttCase):

deftest_search(self):

#使用pageObject模式時(shí)的web頁(yè)面自動(dòng)化測(cè)試代碼

self.page.search=self.page.search_content

self.page.search_btn.click()

time.sleep(2)

#斷言

self.assertIn(self.page.search_content_assert,self.driver.page_source)

deftest_search1(self):

#錯(cuò)誤的斷言導(dǎo)致測(cè)試用例failed】

self.page.search=self.page.search_content

self.page.search_btn.click()

time.sleep(2)

self.assertIn(self.page.search_content_assert_wrong,self.driver.page_source)

deftest_search2(self):

#元素值錯(cuò)誤,導(dǎo)致的自動(dòng)化測(cè)試用例error

self.page.wrong_search=self.page.search_content

self.page.search_btn.click()

time.sleep(2)

self.assertIn(self.page.search_content_assert,self.driver.page_source)

if__name__=='__main__':unittest.main()6.2百度登錄測(cè)試用例6.2.1百度搜索用例的設(shè)計(jì) 對(duì)百度登錄的測(cè)試用例的設(shè)計(jì): (1)根據(jù)網(wǎng)址進(jìn)入百度首頁(yè) (2)點(diǎn)擊百度頁(yè)面的登錄按鈕,跳轉(zhuǎn)到百度的登錄頁(yè)面 (3)點(diǎn)擊百度登錄頁(yè)面的用戶名登錄按鈕,跳轉(zhuǎn)到用戶名登錄頁(yè)面 (4)輸入正確的用戶名和密碼,點(diǎn)擊登錄 (5)對(duì)登錄操作的結(jié)果進(jìn)行是否成功登錄的驗(yàn)證,如果登陸成功則進(jìn)行登出操作6.2.2測(cè)試腳本的創(chuàng)建 以下是百度登錄自動(dòng)化測(cè)試的腳本:importunittest,timefromcommonimportpyselenium,webConfigimportddtfromcommon.readExcelimportreadExcelfrompage.searchPageimportSearchPageex=readExcel('../file/test1.csv')data=ex.getCsvData()@ddt.ddtclassbaiduTest(unittest.TestCase):@classmethoddeftearDownClass(cls):cls.driver.quit()@classmethoddefsetUpClass(cls):ex=readExcel('../file/test1.csv')data=ex.getCsvData()cls.driver=pyselenium.pyselenium(webConfig.browers)#百度登陸,并判斷是否正常登陸系統(tǒng)@ddt.data(*data)deftestLogin(self,data):username,password=dataurl=SearchPage.urlself.driver.openUrl(url)time.sleep(3)#點(diǎn)擊登錄,進(jìn)入登錄頁(yè)面self.driver.clinkElement(by="xpath",value="http://*[@id='u']/a[2]")time.sleep(3)#點(diǎn)擊用戶名登錄,進(jìn)入用戶登錄頁(yè)面self.driver.clinkElement(by='xpath',value="http://*[@id='TANGRAM__PSP_3__footerULoginBtn']")#輸入用戶名的值self.driver.findElement(by="xpath",value="http://*[@id='TANGRAM__PSP_3__userName']").send_keys(username)time.sleep(3)#輸入密碼的值self.driver.findElement(by="xpath",value="http://*[@id='TANGRAM__PSP_3__password']").send_keys(password)print("username:"+username+",password:"+"******")self.driver.clinkElement(by="xpath",value="http://*[@id='TANGRAM__PSP_3__submit']")time.sleep(3)#檢查是否存在用戶個(gè)人中心按鈕,存在,登錄成功,否則登錄失敗close=self.driver.findElement(by='xpath',value="http://*[@id='app']/div[1]/div/div[1]/div/div[1]/div[1]/div[2]")print(close)#如果登錄成功,退出登錄ifclose!=None:self.assertEqual(1,1)time.sleep(3)self.driver.clinkElement(by='xpath',value="http://*[@id='manageHeader']/div/div/img")time.sleep(1)self.driver.clinkElement(by='xpath',value="http://*[@id='manageHeader']/div/div/div/a")else:self.assertEqual(1,0)time.sleep(3)6.3維普查看個(gè)人信息測(cè)試用例6.3.1維普查看個(gè)人信息用例的設(shè)計(jì) 對(duì)維普網(wǎng)站查看個(gè)人信息的測(cè)試用例的設(shè)計(jì) (1)根據(jù)文件中保存的維普網(wǎng)址進(jìn)入維普網(wǎng)站首頁(yè) (2)輸入維普網(wǎng)站的用戶名、密碼,點(diǎn)擊登錄 (3)點(diǎn)擊登錄以后等待頁(yè)面跳轉(zhuǎn),然后進(jìn)行一個(gè)登錄成功與否的判斷 (4)如果登錄成功,則進(jìn)行查看個(gè)人信息 (5)查看完個(gè)人信息,進(jìn)行登出操作6.3.1測(cè)試腳本的創(chuàng)建 以下是維普網(wǎng)站查看個(gè)人信息的自動(dòng)化測(cè)試腳本:importunittest,timefrompageimportpyselenium,webConfigimportddtfromcommon.readExcelimportreadExcelfromUI.weipuimportweipuElementfromcommon.logimportLoggerlogger=Logger("baiduTest").getlog()ex=readExcel('../data/weipu.csv')data=ex.getCsvData()@ddt.ddtclassbaiduTest(unittest.TestCase):@classmethoddeftearDownClass(cls):cls.driver.quit()@classmethoddefsetUpClass(cls):ex=readExcel('../data/weipu.csv')data=ex.getCsvData()cls.driver=pyselenium.pyselenium(webConfig.browers)#新浪登陸,并判斷是否正常登陸系統(tǒng)@ddt.data(*data)deftestLogin(self,data):username,password=dataurl=weipuElement.urlself.driver.openUrl(url)time.sleep(3)#輸入用戶名的值self.driver.findElement(by="name",value='username').send_keys(username)time.sleep(3)#輸入密碼的值self.driver.findElement(by="name",value='password').send_keys(password)print("username:"+username+",password:"+password)time.sleep(3)#點(diǎn)擊登錄self.driver.clinkElement(by="xpath",value='//*[@id="btnSumit"]')time.sleep(3)#檢查是否存在角色按鈕,存在,登錄成功,否則登錄失敗close=self.driver.findElement(by='xpath',value="/html/body/div[2]/div[2]/a")print(close)#如果登錄成功,退出登錄ifclose!=None:self.assertEqual(1,1)("登錄成功")time.sleep(1)#選擇角色權(quán)限self.driver.clinkElement(by="xpath",value='/html/body/div[2]/div[2]/a')time.sleep(3)#點(diǎn)擊個(gè)人信息(父類)self.driver.clinkElement(by="xpath",value='//*[@id="side-menu"]/li[9]/a/span[1]')time.sleep(3)#點(diǎn)擊個(gè)人信息(子類)self.driver.clinkElement(by="xpath",value='//*[@id="side-menu"]/li[9]/ul/li/a')time.sleep(3)#點(diǎn)擊添加/self.driver.clinkElement(by="xpath",value='//*[@id="side-menu"]/li[1]/div[1]/a/span/span[2]/b')time.sleep(5)#點(diǎn)擊文本框self.driver.clinkElement(by="xpath",value='//*[@id="side-menu"]/li[1]/div[1]/ul/li[5]/a')else:logger.error("登錄失敗")self.assertEqual(1,0)time.sleep(3)6.4運(yùn)行測(cè)試用例及查看測(cè)試報(bào)告(1)運(yùn)行測(cè)試用例運(yùn)行測(cè)試用例,只需要運(yùn)行run.py文件,就可以執(zhí)行所有測(cè)試用例,運(yùn)行結(jié)束之后會(huì)向指定的郵箱發(fā)送測(cè)試報(bào)告文件和在本地生成測(cè)試報(bào)告結(jié)果。以下是run.py文件的代碼。importunittest

importHTMLTestRunner

importtime

fromcommon.sendEmailimportSendEmail

defget_test_cases(dirpath):

#dirpath是存放測(cè)試用例的文件路徑

test_cases=unittest.TestSuite()

#測(cè)試用例均使用"test_"開(kāi)頭命名

suites=unittest.defaultTestLoader.discover(dirpath,'test_*.py',top_level_dir=dirpath)

forsuiteinsuites:

test_cases.addTests(suite)

returntest_cases

if__name__=='__main__':

cases=get_test_cases('../testcase')

present=tiem.strftime("%Y-%m-%d%H_%M_%S")

test_result_report_address='../report'filename='../report/'+present+'report.html'ftp=open(filename,'wb')

runner=HTMLTestRunner.HTMLTestRunner(stream=ftp,title='Web自動(dòng)化測(cè)試',description='詳細(xì)測(cè)試結(jié)果如下:')

runner.run(cases)

fp.close()

#向指定郵箱發(fā)送測(cè)試報(bào)告的html文件

time.sleep(6)

#查找最新生成的測(cè)試報(bào)告地址

new_test_result_report_address=SendEmail().acquire_report_address(test_result_report_address)

#自動(dòng)發(fā)送郵件

SendEmail().send_email(new_test_result_report_address)下圖6-1是所有自動(dòng)化測(cè)試腳本集成運(yùn)行成功的結(jié)果所示圖:圖6-1腳本運(yùn)行成功結(jié)果圖(2)查看測(cè)試報(bào)告run.py文件運(yùn)行結(jié)束以后,會(huì)在report文件夾生成測(cè)試報(bào)告以及會(huì)向指定的郵箱發(fā)送測(cè)試報(bào)告。測(cè)試報(bào)告按照測(cè)試生成的時(shí)間來(lái)命名,在report文件夾中找到對(duì)應(yīng)的測(cè)試報(bào)告,用瀏覽器打開(kāi),就能夠看到生成的HTML報(bào)告。下圖6-2和圖6-3分別是本地生成的HTML測(cè)試報(bào)告結(jié)果和指定郵箱接收到的測(cè)試結(jié)果報(bào)告。圖6-2測(cè)試報(bào)告圖圖6-3郵箱接收到的測(cè)試報(bào)告第七章總結(jié)由于本人在自動(dòng)化測(cè)試框架這個(gè)方面還研究不夠深入,本測(cè)試框架也還有很多需要完善的地方,在以后的研究過(guò)程中還需要繼續(xù)加強(qiáng),認(rèn)真虛心學(xué)習(xí)。1、針對(duì)自動(dòng)化測(cè)試數(shù)據(jù)的存儲(chǔ)這方面,采用的是存儲(chǔ)在腳本的方法中,沒(méi)有能夠完全的脫離代碼,希望以后能夠使用Excel的形式更加方便的管理自動(dòng)化測(cè)試數(shù)據(jù)。2、當(dāng)系統(tǒng)中出現(xiàn)異常的情況的時(shí)候,不能夠智能的去屏蔽或者跳過(guò)這個(gè)異常,測(cè)試過(guò)程中捕獲的信息也不夠充分,比較簡(jiǎn)單,且不能夠?qū)σ苿?dòng)端app進(jìn)行測(cè)試,希望后期可以將app和web應(yīng)用一起全部集成到自動(dòng)化測(cè)試框架中。3、沒(méi)有將頁(yè)面元素的XPath值與測(cè)試用例徹底的剝離開(kāi)來(lái),代碼耦合度相對(duì)來(lái)說(shuō)還是比較高的,在以后的學(xué)習(xí)中,希望能夠?qū)⒈究蚣芾^續(xù)完善。4、不能夠自動(dòng)識(shí)別并且填寫(xiě)登錄的時(shí)候需要填寫(xiě)的驗(yàn)證碼,希望在日后的學(xué)習(xí)中能夠?qū)崿F(xiàn)這個(gè)功能。參考文獻(xiàn)[1]黃華林.使用Selenium進(jìn)行web應(yīng)用進(jìn)行自動(dòng)化測(cè)試的研究[J],2012[2]何正光.軟件測(cè)試自動(dòng)化工具的研究與開(kāi)發(fā),2016[3]金虎.自動(dòng)化軟件測(cè)試技術(shù)研究,2016[4]陳曉伍.PythonWeb自動(dòng)化測(cè)試設(shè)計(jì)與實(shí)現(xiàn),,2019[5]梁月圓.軟件自動(dòng)化測(cè)試方法研究及系統(tǒng)開(kāi)發(fā),2013[6]宋潔.軟件測(cè)試技術(shù)及自動(dòng)測(cè)試工具的實(shí)現(xiàn),2007[7]韓旭.面向Web服務(wù)的自動(dòng)化測(cè)試研究[D].陜西師范大學(xué),2014.[8]李瑋.軟件自動(dòng)化測(cè)試混合框架的研究與實(shí)現(xiàn)[D],2007.[9]冷知見(jiàn).軟件自動(dòng)化測(cè)試方法的研究與應(yīng)用[D].《武漢理工大學(xué)碩士論文》,2011[10]羅明宇.基于Selenium的安全自動(dòng)測(cè)試技術(shù)的研究與實(shí)現(xiàn)[D],2015[11]柴旭琴.基于Selenium的Web應(yīng)用性能測(cè)試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D],2012[12]黃愛(ài)明.國(guó)內(nèi)軟件測(cè)試現(xiàn)狀及對(duì)策研究[J],2007[13]史寧寧.一種面向Web應(yīng)用系統(tǒng)的自動(dòng)化測(cè)試框架[D].《吉林大學(xué)碩士論文》,2011致謝 天下沒(méi)有不會(huì)散的宴席,四年的大學(xué)生活轉(zhuǎn)眼就即將結(jié)束。雖然大學(xué)四年的生活多半是呆在學(xué)校里面,但是在寫(xiě)論文致謝語(yǔ)的這一刻,也真的標(biāo)志著我與學(xué)校就此離別了,有很多的遺憾和不舍,但是不如意的事總是十有八九。未來(lái)還需要向前看,非常感謝在學(xué)習(xí)期間給過(guò)我?guī)椭椭更c(diǎn)的同學(xué)和老師們,在以后的學(xué)習(xí)生活中我將會(huì)加倍努力對(duì)給與我?guī)椭膶W(xué)校、老師以及同學(xué)們回報(bào)。在此特向我的導(dǎo)師葉老師表示衷心的謝意,是在葉老師的悉心教導(dǎo)是和幫助下我才能夠完成這一片論文。葉老師的博學(xué)多才、見(jiàn)識(shí)廣博、對(duì)學(xué)術(shù)問(wèn)題實(shí)事求是的態(tài)度和精神為我營(yíng)造了一種良好的學(xué)術(shù)氛圍,在葉老師身上學(xué)習(xí)到了許許多多,也了解了許多與人打交道的原則。最后,非常感謝母校對(duì)我悉心的栽培,讓我能夠更加自信和勇敢的走向社會(huì)。

怎樣提高電腦系統(tǒng)運(yùn)行速度WindowsXP的啟動(dòng)速度比Windows2000要快30%左右,但相對(duì)于Windows98仍然要慢了不少,不過(guò),我們可以通過(guò)優(yōu)化設(shè)置,來(lái)大大提高WindowsXP的啟動(dòng)速度。加快系統(tǒng)啟動(dòng)速度主要有以下方法:盡量減少系統(tǒng)在啟動(dòng)時(shí)加載的程序與服務(wù);對(duì)磁盤(pán)及CPU等硬件進(jìn)行優(yōu)化設(shè)置;修改默認(rèn)設(shè)置,減少啟動(dòng)等待時(shí)間等。這些方法大部分既可減少系統(tǒng)啟動(dòng)的時(shí)間,又可以節(jié)省系統(tǒng)資源,加快電腦運(yùn)行速度。1.加快系統(tǒng)啟動(dòng)速度WindowsXP的啟動(dòng)速度比Windows2000要快30%左右,但相對(duì)于Windows98仍然要慢了不少,不過(guò),我們可以通過(guò)優(yōu)化設(shè)置,來(lái)大大提高WindowsXP的啟動(dòng)速度。加快系統(tǒng)啟動(dòng)速度主要有以下方法:盡量減少系統(tǒng)在啟動(dòng)時(shí)加載的程序與服務(wù);對(duì)磁盤(pán)及CPU等硬件進(jìn)行優(yōu)化設(shè)置;修改默認(rèn)設(shè)置,減少啟動(dòng)等待時(shí)間等。這些方法大部分既可減少系統(tǒng)啟動(dòng)的時(shí)間,又可以節(jié)省系統(tǒng)資源,加快電腦運(yùn)行速度。(1)MsconfigWindowsXP的啟動(dòng)速度在系統(tǒng)安裝初期還比較快,但隨著安裝的軟件不斷增多,系統(tǒng)的啟動(dòng)速度會(huì)越來(lái)越慢,這是由于許多軟件把自己加在了啟動(dòng)程序中,這樣開(kāi)機(jī)即需運(yùn)行,大大降低了啟動(dòng)速度,而且也占用了大量的系統(tǒng)資源。對(duì)于這樣一些程序,我們可以通過(guò)系統(tǒng)配置實(shí)用程序Msconfig將它們從啟動(dòng)組中排除出去。選擇“開(kāi)始”菜單中的“運(yùn)行”命令,在“運(yùn)行”對(duì)話框中鍵入“Msconfig”,回車后會(huì)彈出“系統(tǒng)配置實(shí)用程序”對(duì)話框,選擇其中的“啟動(dòng)”選項(xiàng)卡(如圖1),該選項(xiàng)卡中列出了系統(tǒng)啟動(dòng)時(shí)加載的項(xiàng)目及來(lái)源,仔細(xì)查看每個(gè)項(xiàng)目是否需要自動(dòng)加載,否則清除項(xiàng)目前的復(fù)選框,加載的項(xiàng)目越少,啟動(dòng)的速度就越快。設(shè)置完成后需要重新啟動(dòng)方能生效。(2)BootvisBootvis是微軟提供的一個(gè)啟動(dòng)優(yōu)化工具,可提高WindowsXP的啟動(dòng)速度。用BootVis提升WindowsXP的啟動(dòng)速度必須按照正確的順序進(jìn)行操作,否則將不會(huì)起到提速的效果。其正確的操作方法如下:?jiǎn)?dòng)Bootvis,從其主窗口(如圖2)中選擇“工具”菜單下的“選項(xiàng)”命令,在“符號(hào)路徑”處鍵入Bootvis的安裝路徑,如“C:\ProgramFiles\Bootvis”,單擊“保存”退出。從“跟蹤”菜單中選擇“下次引導(dǎo)”命令,會(huì)彈出“重復(fù)跟蹤”對(duì)話框,單擊“確定”按鈕,BootVis將引導(dǎo)WindowsXP重新啟動(dòng),默認(rèn)的重新啟動(dòng)時(shí)間是10秒。系統(tǒng)重新啟動(dòng)后,BootVis自動(dòng)開(kāi)始運(yùn)行并記錄啟動(dòng)進(jìn)程,生成啟動(dòng)進(jìn)程的相關(guān)BIN文件,并把這個(gè)記錄文件自動(dòng)命名為T(mén)RACE_BOOT_1_1。程序記錄完啟動(dòng)進(jìn)程文件后,會(huì)重新啟動(dòng)BootVis主界面,在“文件”菜單中選擇剛剛生成的啟動(dòng)進(jìn)程文件“TRACE_BOOT_1_1”。窗口中即會(huì)出現(xiàn)“CPU>使用”、“磁盤(pán)I/O”、“磁盤(pán)使用”、“驅(qū)動(dòng)程序延遲”等幾項(xiàng)具體圖例供我們分析,不過(guò)最好還是讓BootVis程序來(lái)自動(dòng)進(jìn)行分析:從“跟蹤”菜單中選擇“系統(tǒng)優(yōu)化”命令,程序會(huì)再次重新啟動(dòng)計(jì)算機(jī),并分析啟動(dòng)進(jìn)程文件,從而使計(jì)算機(jī)啟動(dòng)得更快。(3)禁用多余的服務(wù)WindowsXP在啟動(dòng)時(shí)會(huì)有眾多程序或服務(wù)被調(diào)入到系統(tǒng)的內(nèi)存中,它們往往用來(lái)控制Windows系統(tǒng)的硬件設(shè)備、內(nèi)存、文件管理或者其他重要的系統(tǒng)功能。但這些服務(wù)有很多對(duì)我們用途不大甚至根本沒(méi)有用,它們的存在會(huì)占用內(nèi)存和系統(tǒng)資源,所以應(yīng)該將它們禁用,這樣最多可以節(jié)省70MB的內(nèi)存空間,系統(tǒng)速度自然也會(huì)有很大的提高。選擇“開(kāi)始”菜單中的“運(yùn)行”命令,在“運(yùn)行”對(duì)話框鍵入“services.msc”后回車,即可打開(kāi)“服務(wù)”窗口。窗口的服務(wù)列表中列出了系統(tǒng)提供的所有服務(wù)的名稱、狀態(tài)及啟動(dòng)類型。要修改某個(gè)服務(wù),可從列表雙擊它,會(huì)彈出它的屬性對(duì)話框(如圖3),你可從“常規(guī)”選項(xiàng)卡對(duì)服務(wù)進(jìn)行修改,通過(guò)單擊“啟動(dòng)”、“停止”、“暫?!?、“恢復(fù)”四個(gè)按鈕來(lái)修改服務(wù)的狀態(tài),并可從“啟動(dòng)類型”下拉列表中修改啟動(dòng)類型,啟動(dòng)類型有“自動(dòng)”、“手動(dòng)”、“已禁用”三種。如果要禁止某個(gè)服務(wù)在啟動(dòng)自動(dòng)加載,可將其啟動(dòng)類型改為“已禁用”。WindowsXP提供的所有服務(wù)有36個(gè)默認(rèn)是自動(dòng)啟動(dòng)的,實(shí)際上,其中只有8個(gè)是必須保留的(見(jiàn)下表),其他的則可根據(jù)自己的需要進(jìn)行設(shè)置,每種服務(wù)的作用在軟件中有提示。4)修改注冊(cè)表來(lái)減少預(yù)讀取,減少進(jìn)度條等待時(shí)間WindowsXP在啟動(dòng)過(guò)程中會(huì)出現(xiàn)一個(gè)進(jìn)度條,我們可以通過(guò)修改注冊(cè)表,讓進(jìn)度條只跑一圈就進(jìn)入登錄畫(huà)面。選擇“開(kāi)始”菜單中的“運(yùn)行”命令,在“運(yùn)行”對(duì)話框鍵入“regedit”命令后回車,即可啟動(dòng)注冊(cè)表編輯器,在注冊(cè)表中找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters,選擇其下的EnablePrefetcher鍵,把它的鍵值改為“1”即可。(5)減少開(kāi)機(jī)磁盤(pán)掃描等待時(shí)間當(dāng)Windows日志中記錄有非正常關(guān)機(jī)、死機(jī)引起的重新啟動(dòng),系統(tǒng)就會(huì)自動(dòng)在啟動(dòng)的時(shí)候運(yùn)行磁盤(pán)掃描程序。在默認(rèn)情況下,掃描每個(gè)分區(qū)前會(huì)等待10秒鐘,如果每個(gè)分區(qū)都要等上10秒才能開(kāi)始進(jìn)行掃描,再加上掃描本身需要的時(shí)間,會(huì)耗費(fèi)相當(dāng)長(zhǎng)的時(shí)間才能完成啟動(dòng)過(guò)程。對(duì)于這種情況我們可以設(shè)置取消磁盤(pán)掃描的等待時(shí)間,甚至禁止對(duì)某個(gè)磁盤(pán)分區(qū)進(jìn)行掃描。選擇“開(kāi)始→運(yùn)行”,在運(yùn)行對(duì)話框中鍵入“chkntfs/t:0”,即可將磁盤(pán)掃描等待時(shí)間設(shè)置為0;如果要在計(jì)算機(jī)啟動(dòng)時(shí)忽略掃描某個(gè)分區(qū),比如C盤(pán),可以輸入“chkntfs/xc:”命令;如果要恢復(fù)對(duì)C盤(pán)的掃描,可使用“chkntfs/dc:”命令,即可還原所有chkntfs默認(rèn)設(shè)置,除了自動(dòng)文件檢查的倒計(jì)時(shí)之外。2.提高系統(tǒng)運(yùn)行速度提升系統(tǒng)運(yùn)行速度的思路與加快啟動(dòng)的速度類似:盡量?jī)?yōu)化軟硬件設(shè)置,減輕系統(tǒng)負(fù)擔(dān)。以下是一些常用的優(yōu)化手段。(1)設(shè)置處理器二級(jí)緩存容量WindowsXP無(wú)法自動(dòng)檢測(cè)處理器的二級(jí)緩存容量,需要我們自己在注冊(cè)表中手動(dòng)設(shè)置,首先打開(kāi)注冊(cè)表,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”,選擇其下的“SecondLevelDataCache”,根據(jù)自己所用的處理器設(shè)置即可,例如PIIICoppermine/P4Willamette是“256”,AthlonXP是“384”,P4Northwood是“512”。(2)提升系統(tǒng)緩存同樣也是在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”位置,把其下的“LargeSystemCache”鍵值從0改為1,WindowsXP就會(huì)把除了4M之外的系統(tǒng)內(nèi)存全部分配到文件系統(tǒng)緩存中,這樣X(jué)P的內(nèi)核能夠在內(nèi)存中運(yùn)行,大大提高系統(tǒng)速度。通常來(lái)說(shuō),該優(yōu)化會(huì)使系統(tǒng)性能得到相當(dāng)?shù)奶嵘?,但也有可能?huì)使某些應(yīng)用程序性能降低。需要注意的是必須有256M以上的內(nèi)存,激活LargeSystemCache才可起到正面的作用,否則不要輕易改動(dòng)它。(3)改進(jìn)輸入/輸出性能這個(gè)優(yōu)化能夠提升系統(tǒng)進(jìn)行大容量文件傳輸時(shí)的性能,不過(guò)這只對(duì)服務(wù)器用戶才有實(shí)在意義。我們可在中新建一個(gè)DWORD(雙字節(jié)值)鍵值,命名為IOPageLockLimit。一般情況下把數(shù)據(jù)設(shè)置8~16MB之間性能最好,要記住這個(gè)值是用字節(jié)來(lái)計(jì)算的,例如你要分配10MB的話,就是10×?1024×1024,也就是10485760。這里的優(yōu)化也需要你的機(jī)器擁有大于256M的內(nèi)存。(4)禁用內(nèi)存頁(yè)面調(diào)度在正常情況下,XP會(huì)把內(nèi)存中的片斷寫(xiě)入硬盤(pán),我們可以阻止它這樣做,讓數(shù)據(jù)保留在內(nèi)存中,從而提升系統(tǒng)性能。在注冊(cè)表中找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”下的“DisablePagingExecutive”鍵,把它的值從0改為1即可禁止內(nèi)存頁(yè)面調(diào)度了。(5)關(guān)閉自動(dòng)重新啟動(dòng)功能當(dāng)WindowsXP遇到嚴(yán)重問(wèn)題時(shí)便會(huì)突然重新開(kāi)機(jī),可從注冊(cè)表將此功能取消。打開(kāi)注冊(cè)表編輯器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\”將Aut

溫馨提示

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

評(píng)論

0/150

提交評(píng)論