• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Robot框架下的軟件自動化測試技術(shù)

    2021-04-12 01:44:22北京中電普華信息技術(shù)有限公司張露雨
    電子世界 2021年5期
    關(guān)鍵詞:測試人員測試用例用例

    北京中電普華信息技術(shù)有限公司 張露雨 李 佳

    軟件開發(fā)技術(shù)發(fā)展得越來越快的同時對軟件質(zhì)量的要求越來越高,測試變得尤為重要,軟件測試是質(zhì)量保證的重要手段。隨著開發(fā)周期日益縮短以及系統(tǒng)越來越復(fù)雜,手工測試很難在短時間內(nèi)完成高質(zhì)量的測試,會耗費大量的人力物力。引入自動化測試,可以明顯縮短測試工期,減少人力物力成本。自動化測試已經(jīng)被廣泛應(yīng)用于各種類型的測試中。本文主要內(nèi)容有:自動化測試的優(yōu)缺點、適用范圍,自動化測試框架及工具、Robot Framework在項目中的應(yīng)用、常見問題處理方式等。

    近幾年來,人們對軟件質(zhì)量的要求越來越高,軟件生命周期中軟件測試工作變得越來越重要,軟件測試是軟件質(zhì)量保證的關(guān)鍵步驟。傳統(tǒng)的手工測試速度慢、效率低,當(dāng)測試周期很長、重復(fù)性操作過多時,手工測試很容易變得枯燥無味,也可能會出現(xiàn)由于間隔時間過長,缺陷描述不清晰等因素,導(dǎo)致回歸測試無法重現(xiàn)問題;自動化測試可以提高測試效率,減少測試時間,很好的解決了手工測試的瓶頸。本文將圍繞Robot框架分析研究自動化測試技術(shù)在項目中的應(yīng)用。

    1 自動化測試意義及適用項目特征

    1.1 自動化測試的意義

    自動化測試是將手工測試行為轉(zhuǎn)換為機(jī)器執(zhí)行的一個過程,即通過自動執(zhí)行程序語言編寫的測試腳本模擬手工執(zhí)行測試用例對軟件進(jìn)行測試。我們通常所說的自動化測試主要是說通過程序設(shè)計,使計算機(jī)按照預(yù)定的流程自動測試軟件,自動記錄軟件缺陷以及自動分析測試結(jié)果的一種測試,自動化測試可以節(jié)省人力資源、時間和硬件資源,有效提高測試效率。

    一般情況下,大型軟件開發(fā)項目測試工作量普遍很大,測試又是軟件生命周期中十分重要的環(huán)節(jié),幾乎占據(jù)一半的時間來進(jìn)行軟件測試,一些可靠性要求非常高的軟件,測試甚至可以占據(jù)更多的時間,一個軟件從開發(fā)到上線需要經(jīng)過很多次的回歸測試,每一次回歸測試工作存在大量重復(fù)性操作的情況,并要求做到細(xì)致準(zhǔn)確,自動化測試最適合代替人工去完成大量的重復(fù)性工作。

    表1展示了自動化測試的優(yōu)勢及手工測試的局限性。

    雖然與手工測試相比,自動化測試具有很大優(yōu)勢,但自動化測試也有自己的限制,自動化測試往往是提供一個框架、一種工具,維護(hù)難度較大,且不是所有的測試用例都可以轉(zhuǎn)化為自動化測試用例,例如數(shù)據(jù)正確性、頁面布局是否美觀、業(yè)務(wù)邏輯是否滿足需求等還是需要手工測試來完成,此時手工測試發(fā)現(xiàn)的缺陷比自動化測試發(fā)現(xiàn)的缺陷更多。自動化測試可以提高效率、復(fù)用性、可靠性等,雖然有很多優(yōu)點,但也只是軟件測試的一部分,無法完全代替手工測試,自動化測試是對手工測試的一種補(bǔ)充。

    表1 自動化測試與手工測試

    1.2 適合自動化測試項目特征

    一般情況下,項目滿足以下幾點可采用自動化測試。

    (1)項目周期足夠長

    自動化測試前期需要很多準(zhǔn)備工作,自動化測試框架的設(shè)計、測試腳本的編寫及調(diào)試均需要相對較長的時間來完成。如果項目周期較短,沒有足夠的時間去支持以上工作,那么此類項目就不適合做自動化測試。

    (2)軟件需求穩(wěn)定,不會頻繁變動

    測試腳本維護(hù)成本很大程度上會受測試腳本穩(wěn)定性的影響,針對頻繁變動需求的項目來說,測試人員需時刻關(guān)注并更新與變更后需求相關(guān)的測試腳本。測試腳本的維護(hù)本身也是一個代碼開發(fā)、調(diào)試的過程,必要的時候可能還需要修改自動化測試框架,如果維護(hù)測試腳本的成本高于節(jié)省人力的成本,則說明此類項目不適合進(jìn)行自動化測試。如果一個項目中部分模塊需求穩(wěn)定,則可僅針對這些模塊進(jìn)行自動化測試,其余模塊依然采用手工測試。

    (3)需要在多種平臺上重復(fù)運(yùn)行相同測試場景

    對于需要在多種瀏覽器或者大量不同移動端上執(zhí)行相同測試場景的項目,如果采用手工測試則需要將每個測試用例反復(fù)執(zhí)行多次,自動化測試是此類項目一個不錯的選擇,可以減少大量重復(fù)性操作,提高測試效率。

    2 自動化測試框架簡要介紹

    自動化測試已經(jīng)在測試行業(yè)廣泛應(yīng)用,如何選擇一個合適的測試框架變得尤為重要。為此,我們需要了解目前行業(yè)中主流的自動化測試框架,這樣才能從中選擇最適合自己接觸的項目的測試框架?,F(xiàn)在主流的自動化測試框架有:Robot Framework、RedwoodHQ、Jasmine、Pytest等。

    2.1 主流自動化測試框架簡介

    (1)Robot Framework

    Robot Framework(RF)是用于驗收測試和驗收測試驅(qū)動開發(fā)(ATDD)的自動化測試框架。基于Python編寫,但也可以在Jython(Java)和IronPython(.NET)上運(yùn)行,提供跨平臺支持(Windows、Linux或MacOS)。

    首先Robot Framework使用關(guān)鍵字驅(qū)動測試的方法,這樣簡化了自動化測試過程,對于沒有編程經(jīng)驗的測試人員來說使用Robot Framework編寫的測試數(shù)據(jù)更加便于理解。其次Robot Framework由各種獨立項目開發(fā)的測試庫和工具組成,生態(tài)系統(tǒng)相對較為豐富,且Robot Framework具有較高的可擴(kuò)展性,對于未來市場和行業(yè)出現(xiàn)的變化有較好的應(yīng)對能力。

    (2)RedwoodHQ

    RedwoodHQ可以使用大部分流行的編程語言來編寫測試腳本,比如JAVA、C#、Python,并且RedwoodHQ支持多人協(xié)作編寫并運(yùn)行測試用例。RedwoodHQ關(guān)注一個重大項目的全部測試過程,可以說是目前主流平臺中對用戶、測試人員最友好的測試平臺。

    (3)Jasmine

    Jasmine適用于網(wǎng)頁項目、Node.js項目,是一個由JavaScript的行為驅(qū)動開發(fā)的測試框架,也是一個單元測試框架。但是除了JavaScript之外Jasmine還可以在Python、Ruby語言運(yùn)行,并且可以在服務(wù)器端運(yùn)行客戶端測試。Cis支持比較廣泛,且內(nèi)置用于斷言的語法,使用起來十分方便。但是Jasmine難以異步測試且大多數(shù)情況下Jasmine需要一個測試運(yùn)行器才能進(jìn)行測試。

    (4)Pytest

    Pytest是基于python語言的單元測試框架,適用于復(fù)雜度低且規(guī)模較小的項目。使用起來相當(dāng)簡潔高效。最大的特點就是易于使用,它入門簡單,對沒有代碼編程經(jīng)驗的人相對容易上手。官方提供了相當(dāng)多的支持文檔與參考實例,支持參數(shù)化操作,支持部分測試步驟的跳過,可以重復(fù)執(zhí)行失敗的case,對第三方插件兼容性較高,并支持自定義擴(kuò)展。且Pytest編寫代碼相對簡單,代碼容錯率較高,可以搭配圖形用戶界面一起使用,使測試工作可以進(jìn)行得更加輕松。但是Pytest只適用于復(fù)雜度、系統(tǒng)規(guī)模都不大的項目,性能和運(yùn)行效率方面無法支持市面上規(guī)模較大的系統(tǒng)。

    綜上所述,從擴(kuò)展性、易用性、測試人員能力等方面綜合考慮得出結(jié)論Robot Framework框架是最適合當(dāng)前公司項目使用的自動測試框架。

    2.2 Robot Framework詳細(xì)介紹

    Robot Framework是一款使用python創(chuàng)建的用于功能自動化測試框架,由于Robot Framework支持多個客戶端或者多個接口同時同步測試,又具有很高的擴(kuò)展性,且可以通過關(guān)鍵字驅(qū)動,使用效率較高、難度較低,所以Robot Framework目前在測試行業(yè)中應(yīng)用廣泛。

    (1)Robot Framework使用txt文件保存測試用例,使用制表符分隔數(shù)據(jù),便于適應(yīng)不同的編輯軟件使用,甚至可以使用excel等軟件創(chuàng)建用例,使用十分方便。沒有編程基礎(chǔ)的業(yè)務(wù)人員也可以使用Robot Framework框架編寫測試用例。

    (2)設(shè)計測試用例時可以根據(jù)使用需要設(shè)置變量,且Robot Framework架構(gòu)支持常用的循環(huán)語句,有利于測試用例的泛用和復(fù)用。

    (3)支持標(biāo)簽操作,可以對測試用例進(jìn)行分類,便于規(guī)范測試用例。執(zhí)行時可以只執(zhí)行部分測試用例。

    (4)Robot Framework框架支持?jǐn)?shù)據(jù)驅(qū)動、關(guān)鍵字驅(qū)動在內(nèi)的多種驅(qū)動。

    (5)Robot Framework框架支持對現(xiàn)有關(guān)鍵字的調(diào)用,可以以現(xiàn)有關(guān)鍵字為基礎(chǔ)創(chuàng)建新的關(guān)鍵字,方便創(chuàng)建更加復(fù)雜更加高級的測試用例。

    (6)Robot Framework框架生成的測試報告、測試日志均是html格式文件,方便閱讀,方便提供給沒有編程能力的管理人員閱讀。

    (7)Robot Framework自帶事件的監(jiān)聽接口,用戶可以自行定義測試用例執(zhí)行前執(zhí)行后的對應(yīng)動作。方便自定義測試用例中的前置條件和后置條件,便于測試用例的連續(xù)操作,能有效提高測試用例的泛用性和復(fù)用性。

    (8)Robot Framework內(nèi)置命令接口,可以使用XML格式進(jìn)行輸出,可以與其他測試工具、管理工具結(jié)合使用,進(jìn)而實現(xiàn)整個測試過程的持續(xù)集成。

    (9)Robot Framework內(nèi)含大量的測試庫,可自動識別、操縱被測對象。

    (10)Robot Framework提供了遠(yuǎn)程測試執(zhí)行的接口、支持遠(yuǎn)程調(diào)試,方便線上交流。非集中辦公的項目也可以使用Robot Framework進(jìn)行測試。

    (11)Robot Framework基于python語言開發(fā),相對較為便于初學(xué)者理解。

    3 Robot框架在自動化測試中的應(yīng)用

    我司電力營銷系統(tǒng)開發(fā)周期較長,系統(tǒng)功能較多,涉及了三百多個功能,功能結(jié)構(gòu)類似,其中增刪改查等基本維護(hù)類操作占據(jù)整個系統(tǒng)功能的70%左右,為了適應(yīng)大眾的瀏覽器使用習(xí)慣,該系統(tǒng)需要做目前主流瀏覽器(IE8及以上、chrome50及以上、firefox50及以上版本)的兼容性測試。如果單純靠手工來進(jìn)行測試,需要做大量重復(fù)性操作,既費力又耗時,重復(fù)性操作持續(xù)時間過長的話,可能會有一些測試點會被遺漏,回歸測試時也不能確保盡可能覆蓋測試點。針對這些功能開發(fā)自動化腳本進(jìn)行測試是一個很不錯的選擇,接下來簡單介紹下基于Robot框架的自動化測試應(yīng)用,選取新增渠道類型功能為例。

    3.1 Robot framework自動化測試環(huán)境搭建

    (1)安裝python,安裝完成后配置環(huán)境變量。

    (2)安裝wxPython。

    (3)安裝Robot framework。

    (4)安裝robotframework-ride(RIDE是一個圖形界面的用于創(chuàng)建、組織、運(yùn)行測試的軟件)。

    (5)安裝selenium2library。

    (6)下載各瀏覽器版本對應(yīng)的驅(qū)動并拷貝到python安裝目錄下。

    3.2 編寫測試腳本

    登錄腳本編寫及調(diào)試:

    該系統(tǒng)需要對瀏覽器兼容性進(jìn)行測試,可以在open browser的瀏覽器參數(shù)部分輸入chrome、ie(默認(rèn)為firefox,可不用輸入),并輸入測試地址、用戶名密碼進(jìn)行登錄操作,由于后續(xù)操作基于登錄功能,為了節(jié)省腳本錄制時間,將登錄腳本進(jìn)行封裝,后續(xù)操作時可直接使用,如圖1所示。

    新增功能腳本編寫及調(diào)試:

    (1)調(diào)試腳本時,如果遇到頁面跳轉(zhuǎn)后一直返回找不到元素的錯誤,先不用急著改腳本,可能原因是切換新頁面后頁面內(nèi)容較多,部分元素還沒有加載完畢,導(dǎo)致找不到元素,可以在定位元素之前插入一條sleep操作,一般可以解決由于頁面內(nèi)容未加載完導(dǎo)致的定位元素失敗問題,如果插入sleep依然找不到元素,接下來可以繼續(xù)查看是否是元素定位有誤。

    (2)自動化測試常用元素定位方法有8種,包括:id定位、name定位、class定位、tag定位、link定位、partial_link定位、xpath定位、CSS定位。其中xpath定位時,使用瀏覽器中開發(fā)人員工具(F12)選中頁面元素后,右鍵copy其XPath,粘貼至ride中,部分頁面元素的XPath沒有明顯的id、name等唯一值屬性,只能從頁面html標(biāo)簽開始向下尋找,如“/html/body/div /test /div/div/……/div[2]/button”,直接將其粘貼至ride中調(diào)試不成功,會報element not Found的錯誤,出現(xiàn)這種情況的原因主要是根據(jù)維護(hù)的元素定位路徑未找到元素,此時需要將其格式轉(zhuǎn)化為腳本執(zhí)行時要求的格式,以//開始,//后面為元素唯一標(biāo)識(路徑唯一的部分可用*替代)。

    (3)selenium2library測試庫中常用點擊操作相關(guān)關(guān)鍵字包括:click button、click element、click link、click image等,由于該系統(tǒng)功能菜單/功能按鈕大多使用鼠標(biāo)放在菜單名稱處無需點擊即可顯示下級菜單,因此不能單純采用click element、click button等點擊操作關(guān)鍵字來編寫該測試腳本,需要引入mouse up關(guān)鍵字來進(jìn)行編寫。由于該模塊功能均需要進(jìn)入同一模塊菜單進(jìn)行操作,為了方便復(fù)用,將進(jìn)入菜單過程進(jìn)行封裝,如圖2所示。

    圖1 登錄腳本編寫及調(diào)試

    圖2 新增功能腳本編寫及調(diào)試

    圖3 新增功能腳本編寫及調(diào)試

    (4)參數(shù)化,robot framework-ride提供參數(shù)化設(shè)置,通過參數(shù)化設(shè)置可在腳本中引入變量,以此來解決一些特殊場景的需求。如頁面字段存在超長字符校驗時,可將該字段參數(shù)值設(shè)置為固定長度的變量,以此來避免手動輸入大量數(shù)據(jù)帶來的工作量。如果遇到頁面字段需要輸入唯一值的情況,也可將該字段參數(shù)值設(shè)置為變量的形式,為該變量賦值為隨機(jī)數(shù)等不易重復(fù)生成的數(shù)據(jù),如圖3所示。

    (5)添加檢查點,檢查點需要根據(jù)實際系統(tǒng)實現(xiàn)來進(jìn)行查找并添加,該系統(tǒng)新增成功后返回查詢頁面,頁面提示“成功”,因此添加檢查點可以使用關(guān)鍵字Page Should Contain,查找內(nèi)容為“成功”。如果可以找到“成功”,說明該用例執(zhí)行后新增數(shù)據(jù)成功,否則新增失敗,如圖4所示。

    3.3 執(zhí)行腳本

    執(zhí)行方式選擇pybot,點擊【start】開始執(zhí)行測試用例腳本,用例執(zhí)行結(jié)束后,輸出信息、運(yùn)行日志以及結(jié)果報告生成保存至臨時文件夾,可以直接使用瀏覽器打開路徑進(jìn)行查看,如圖5所示。

    圖4 新增功能腳本編寫及調(diào)試

    圖5 執(zhí)行腳本

    圖6 分析結(jié)果

    圖7 分析結(jié)果

    3.4 分析結(jié)果

    Report顯示所有用例執(zhí)行結(jié)果,包括用例總數(shù)、成功數(shù)、失敗數(shù)以及執(zhí)行時間,Pass為用例通過,F(xiàn)ail為用例不通過,如圖6所示。

    如果想查看具體執(zhí)行情況,可點擊用例名稱鏈接跳轉(zhuǎn)至運(yùn)行日志頁面查看詳情,如圖7所示。

    4 自動化測試常見問題的解決方案

    4.1 錄制腳本需要消耗大量時間

    錄制測試用例腳本需要耗費大量時間,對于中小型項目來說,使用自動化測試偶反而會拖慢項目的進(jìn)度。對于開發(fā)初期的項目,由于各個流程尚未開發(fā)完成,需求變化比較頻繁,編寫好的用例可能沒多久就完全不能用了,導(dǎo)致自動化測試用例的復(fù)用性大幅度降低。對以上類型項目可轉(zhuǎn)換測試策略:對于中小型項目,主要采取手工測試的方法,只對某些復(fù)用性較強(qiáng)且需要反復(fù)測試的項目進(jìn)行自動化測試。對于大型項目,項目初期不進(jìn)行自動化測試,通常等到項目中期,流程設(shè)計基本確定之后再進(jìn)行自動化測試。

    4.2 修改代碼后腳本無法復(fù)用

    開發(fā)修改代碼后再執(zhí)行用例報錯,需要重新閱讀代碼修改用例。

    大型項目參與人員較多,不同開發(fā)人員修改代碼經(jīng)常會導(dǎo)致以前的測試用例無法繼續(xù)執(zhí)行。測試需要重新閱讀代碼進(jìn)行排查,費時費力。有時由于測試人員代碼閱讀能力不夠,花很久也無法修正用例。對此團(tuán)隊可以安排測試人員和開發(fā)人員不再按照職責(zé)化分工作,整個項目盡量按照負(fù)責(zé)模塊劃分,讓負(fù)責(zé)同一部分的業(yè)務(wù)、開發(fā)、測試人員坐在一起,并要求在用例無法復(fù)用且問題較難解決的時候開發(fā)人員配合測試人員進(jìn)行修改。

    4.3 自動化測試不夠細(xì)致

    自動化測試只能發(fā)現(xiàn)既定的缺陷,對于新出現(xiàn)的缺陷有時無法識別。

    自動化測試可以驗證流程不通,界面報錯等問題,但是對于界面設(shè)計錯位或者不美觀、等GUI問題一般無法識別。輸入預(yù)先設(shè)定的測試數(shù)據(jù)或測試數(shù)據(jù)組合之外的情況如果出現(xiàn)BUG,也無法識別。對此團(tuán)隊決定采用手工測試與自動化測試結(jié)合的方式進(jìn)行測試。每輪首先進(jìn)行自動化測試,在自動化測試的主要問題解決后開始手工測試,盡量排查出自動化測試無法識別的問題。

    4.4 系統(tǒng)架構(gòu)復(fù)雜不好定位元素

    現(xiàn)在常用的元素定位方法有8種:1)通過id定位;2)通過name定位;3)通過tag定位;4)通過class定位;5)通過css定位;6)通過link定位;7)通過partial_link定位;8)通過xpath定位。但是如果項目開發(fā)時沒有為元素設(shè)置唯一的標(biāo)識,那么定位元素會十分困難,且代碼修改后用例極有可能無法復(fù)用。對此團(tuán)隊可以規(guī)范開發(fā)過程,盡量對所有元素設(shè)定唯一標(biāo)識,并且規(guī)范標(biāo)識設(shè)定規(guī)則,這樣不僅規(guī)范了代碼書寫要求,還使代碼更便于閱讀與整改。對于無法設(shè)定唯一標(biāo)識或者較難定位的元素,開發(fā)人員將配合測試人員進(jìn)行定位。有時也可以為了方便測試對部分元素先設(shè)定臨時的唯一標(biāo)識,項目測試基本結(jié)束時再刪去標(biāo)識,進(jìn)行相關(guān)功能的手工測試,保證刪去標(biāo)識對系統(tǒng)流程驗證沒有影響。

    自動化測試技術(shù)還在不斷的發(fā)展,雖然還有很多不成熟的地方,或許最終也無法完全取代手工測試,但是自動化測試帶給項目的便利與效率是毋庸置疑的,在科技日新月異、技術(shù)突飛猛進(jìn)的時代,期待著自動化測試在未來能帶給我們更多驚喜。

    猜你喜歡
    測試人員測試用例用例
    移動應(yīng)用眾包測試人員信譽(yù)度復(fù)合計算模型研究
    UML用例模型中依賴關(guān)系的比較與分析
    基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
    聯(lián)鎖軟件詳細(xì)設(shè)計的測試需求分析和用例編寫
    從出土文獻(xiàn)用例看王氏父子校讀古書的得失
    基于混合遺傳算法的回歸測試用例集最小化研究
    高校分析測試中心測試隊伍建設(shè)方案初探
    山東化工(2018年20期)2018-04-02 16:30:53
    淺析軟件測試中的心理學(xué)應(yīng)用
    基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
    犯罪心理測試人員素質(zhì)要求分析
    泗阳县| 博爱县| 当雄县| 儋州市| 赣榆县| 民和| 贵南县| 光山县| 墨竹工卡县| 临夏市| 宁化县| 岑巩县| 山西省| 襄垣县| 鱼台县| 观塘区| 宁河县| 扶余县| 三明市| 西吉县| 涿州市| 昆山市| 元江| 武清区| 林州市| 秭归县| 德庆县| 象州县| 石门县| 临沭县| 黎平县| 广西| 敦煌市| 哈巴河县| 宣化县| 搜索| 盐津县| 泗水县| 桐柏县| 本溪市| 普安县|