北京中電普華信息技術(shù)有限公司 張露雨 李 佳
軟件開(kāi)發(fā)技術(shù)發(fā)展得越來(lái)越快的同時(shí)對(duì)軟件質(zhì)量的要求越來(lái)越高,測(cè)試變得尤為重要,軟件測(cè)試是質(zhì)量保證的重要手段。隨著開(kāi)發(fā)周期日益縮短以及系統(tǒng)越來(lái)越復(fù)雜,手工測(cè)試很難在短時(shí)間內(nèi)完成高質(zhì)量的測(cè)試,會(huì)耗費(fèi)大量的人力物力。引入自動(dòng)化測(cè)試,可以明顯縮短測(cè)試工期,減少人力物力成本。自動(dòng)化測(cè)試已經(jīng)被廣泛應(yīng)用于各種類(lèi)型的測(cè)試中。本文主要內(nèi)容有:自動(dòng)化測(cè)試的優(yōu)缺點(diǎn)、適用范圍,自動(dòng)化測(cè)試框架及工具、Robot Framework在項(xiàng)目中的應(yīng)用、常見(jiàn)問(wèn)題處理方式等。
近幾年來(lái),人們對(duì)軟件質(zhì)量的要求越來(lái)越高,軟件生命周期中軟件測(cè)試工作變得越來(lái)越重要,軟件測(cè)試是軟件質(zhì)量保證的關(guān)鍵步驟。傳統(tǒng)的手工測(cè)試速度慢、效率低,當(dāng)測(cè)試周期很長(zhǎng)、重復(fù)性操作過(guò)多時(shí),手工測(cè)試很容易變得枯燥無(wú)味,也可能會(huì)出現(xiàn)由于間隔時(shí)間過(guò)長(zhǎng),缺陷描述不清晰等因素,導(dǎo)致回歸測(cè)試無(wú)法重現(xiàn)問(wèn)題;自動(dòng)化測(cè)試可以提高測(cè)試效率,減少測(cè)試時(shí)間,很好的解決了手工測(cè)試的瓶頸。本文將圍繞Robot框架分析研究自動(dòng)化測(cè)試技術(shù)在項(xiàng)目中的應(yīng)用。
自動(dòng)化測(cè)試是將手工測(cè)試行為轉(zhuǎn)換為機(jī)器執(zhí)行的一個(gè)過(guò)程,即通過(guò)自動(dòng)執(zhí)行程序語(yǔ)言編寫(xiě)的測(cè)試腳本模擬手工執(zhí)行測(cè)試用例對(duì)軟件進(jìn)行測(cè)試。我們通常所說(shuō)的自動(dòng)化測(cè)試主要是說(shuō)通過(guò)程序設(shè)計(jì),使計(jì)算機(jī)按照預(yù)定的流程自動(dòng)測(cè)試軟件,自動(dòng)記錄軟件缺陷以及自動(dòng)分析測(cè)試結(jié)果的一種測(cè)試,自動(dòng)化測(cè)試可以節(jié)省人力資源、時(shí)間和硬件資源,有效提高測(cè)試效率。
一般情況下,大型軟件開(kāi)發(fā)項(xiàng)目測(cè)試工作量普遍很大,測(cè)試又是軟件生命周期中十分重要的環(huán)節(jié),幾乎占據(jù)一半的時(shí)間來(lái)進(jìn)行軟件測(cè)試,一些可靠性要求非常高的軟件,測(cè)試甚至可以占據(jù)更多的時(shí)間,一個(gè)軟件從開(kāi)發(fā)到上線需要經(jīng)過(guò)很多次的回歸測(cè)試,每一次回歸測(cè)試工作存在大量重復(fù)性操作的情況,并要求做到細(xì)致準(zhǔn)確,自動(dòng)化測(cè)試最適合代替人工去完成大量的重復(fù)性工作。
表1展示了自動(dòng)化測(cè)試的優(yōu)勢(shì)及手工測(cè)試的局限性。
雖然與手工測(cè)試相比,自動(dòng)化測(cè)試具有很大優(yōu)勢(shì),但自動(dòng)化測(cè)試也有自己的限制,自動(dòng)化測(cè)試往往是提供一個(gè)框架、一種工具,維護(hù)難度較大,且不是所有的測(cè)試用例都可以轉(zhuǎn)化為自動(dòng)化測(cè)試用例,例如數(shù)據(jù)正確性、頁(yè)面布局是否美觀、業(yè)務(wù)邏輯是否滿(mǎn)足需求等還是需要手工測(cè)試來(lái)完成,此時(shí)手工測(cè)試發(fā)現(xiàn)的缺陷比自動(dòng)化測(cè)試發(fā)現(xiàn)的缺陷更多。自動(dòng)化測(cè)試可以提高效率、復(fù)用性、可靠性等,雖然有很多優(yōu)點(diǎn),但也只是軟件測(cè)試的一部分,無(wú)法完全代替手工測(cè)試,自動(dòng)化測(cè)試是對(duì)手工測(cè)試的一種補(bǔ)充。
表1 自動(dòng)化測(cè)試與手工測(cè)試
一般情況下,項(xiàng)目滿(mǎn)足以下幾點(diǎn)可采用自動(dòng)化測(cè)試。
(1)項(xiàng)目周期足夠長(zhǎng)
自動(dòng)化測(cè)試前期需要很多準(zhǔn)備工作,自動(dòng)化測(cè)試框架的設(shè)計(jì)、測(cè)試腳本的編寫(xiě)及調(diào)試均需要相對(duì)較長(zhǎng)的時(shí)間來(lái)完成。如果項(xiàng)目周期較短,沒(méi)有足夠的時(shí)間去支持以上工作,那么此類(lèi)項(xiàng)目就不適合做自動(dòng)化測(cè)試。
(2)軟件需求穩(wěn)定,不會(huì)頻繁變動(dòng)
測(cè)試腳本維護(hù)成本很大程度上會(huì)受測(cè)試腳本穩(wěn)定性的影響,針對(duì)頻繁變動(dòng)需求的項(xiàng)目來(lái)說(shuō),測(cè)試人員需時(shí)刻關(guān)注并更新與變更后需求相關(guān)的測(cè)試腳本。測(cè)試腳本的維護(hù)本身也是一個(gè)代碼開(kāi)發(fā)、調(diào)試的過(guò)程,必要的時(shí)候可能還需要修改自動(dòng)化測(cè)試框架,如果維護(hù)測(cè)試腳本的成本高于節(jié)省人力的成本,則說(shuō)明此類(lèi)項(xiàng)目不適合進(jìn)行自動(dòng)化測(cè)試。如果一個(gè)項(xiàng)目中部分模塊需求穩(wěn)定,則可僅針對(duì)這些模塊進(jìn)行自動(dòng)化測(cè)試,其余模塊依然采用手工測(cè)試。
(3)需要在多種平臺(tái)上重復(fù)運(yùn)行相同測(cè)試場(chǎng)景
對(duì)于需要在多種瀏覽器或者大量不同移動(dòng)端上執(zhí)行相同測(cè)試場(chǎng)景的項(xiàng)目,如果采用手工測(cè)試則需要將每個(gè)測(cè)試用例反復(fù)執(zhí)行多次,自動(dòng)化測(cè)試是此類(lèi)項(xiàng)目一個(gè)不錯(cuò)的選擇,可以減少大量重復(fù)性操作,提高測(cè)試效率。
自動(dòng)化測(cè)試已經(jīng)在測(cè)試行業(yè)廣泛應(yīng)用,如何選擇一個(gè)合適的測(cè)試框架變得尤為重要。為此,我們需要了解目前行業(yè)中主流的自動(dòng)化測(cè)試框架,這樣才能從中選擇最適合自己接觸的項(xiàng)目的測(cè)試框架?,F(xiàn)在主流的自動(dòng)化測(cè)試框架有:Robot Framework、RedwoodHQ、Jasmine、Pytest等。
(1)Robot Framework
Robot Framework(RF)是用于驗(yàn)收測(cè)試和驗(yàn)收測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(ATDD)的自動(dòng)化測(cè)試框架?;赑ython編寫(xiě),但也可以在Jython(Java)和IronPython(.NET)上運(yùn)行,提供跨平臺(tái)支持(Windows、Linux或MacOS)。
首先Robot Framework使用關(guān)鍵字驅(qū)動(dòng)測(cè)試的方法,這樣簡(jiǎn)化了自動(dòng)化測(cè)試過(guò)程,對(duì)于沒(méi)有編程經(jīng)驗(yàn)的測(cè)試人員來(lái)說(shuō)使用Robot Framework編寫(xiě)的測(cè)試數(shù)據(jù)更加便于理解。其次Robot Framework由各種獨(dú)立項(xiàng)目開(kāi)發(fā)的測(cè)試庫(kù)和工具組成,生態(tài)系統(tǒng)相對(duì)較為豐富,且Robot Framework具有較高的可擴(kuò)展性,對(duì)于未來(lái)市場(chǎng)和行業(yè)出現(xiàn)的變化有較好的應(yīng)對(duì)能力。
(2)RedwoodHQ
RedwoodHQ可以使用大部分流行的編程語(yǔ)言來(lái)編寫(xiě)測(cè)試腳本,比如JAVA、C#、Python,并且RedwoodHQ支持多人協(xié)作編寫(xiě)并運(yùn)行測(cè)試用例。RedwoodHQ關(guān)注一個(gè)重大項(xiàng)目的全部測(cè)試過(guò)程,可以說(shuō)是目前主流平臺(tái)中對(duì)用戶(hù)、測(cè)試人員最友好的測(cè)試平臺(tái)。
(3)Jasmine
Jasmine適用于網(wǎng)頁(yè)項(xiàng)目、Node.js項(xiàng)目,是一個(gè)由JavaScript的行為驅(qū)動(dòng)開(kāi)發(fā)的測(cè)試框架,也是一個(gè)單元測(cè)試框架。但是除了JavaScript之外Jasmine還可以在Python、Ruby語(yǔ)言運(yùn)行,并且可以在服務(wù)器端運(yùn)行客戶(hù)端測(cè)試。Cis支持比較廣泛,且內(nèi)置用于斷言的語(yǔ)法,使用起來(lái)十分方便。但是Jasmine難以異步測(cè)試且大多數(shù)情況下Jasmine需要一個(gè)測(cè)試運(yùn)行器才能進(jìn)行測(cè)試。
(4)Pytest
Pytest是基于python語(yǔ)言的單元測(cè)試框架,適用于復(fù)雜度低且規(guī)模較小的項(xiàng)目。使用起來(lái)相當(dāng)簡(jiǎn)潔高效。最大的特點(diǎn)就是易于使用,它入門(mén)簡(jiǎn)單,對(duì)沒(méi)有代碼編程經(jīng)驗(yàn)的人相對(duì)容易上手。官方提供了相當(dāng)多的支持文檔與參考實(shí)例,支持參數(shù)化操作,支持部分測(cè)試步驟的跳過(guò),可以重復(fù)執(zhí)行失敗的case,對(duì)第三方插件兼容性較高,并支持自定義擴(kuò)展。且Pytest編寫(xiě)代碼相對(duì)簡(jiǎn)單,代碼容錯(cuò)率較高,可以搭配圖形用戶(hù)界面一起使用,使測(cè)試工作可以進(jìn)行得更加輕松。但是Pytest只適用于復(fù)雜度、系統(tǒng)規(guī)模都不大的項(xiàng)目,性能和運(yùn)行效率方面無(wú)法支持市面上規(guī)模較大的系統(tǒng)。
綜上所述,從擴(kuò)展性、易用性、測(cè)試人員能力等方面綜合考慮得出結(jié)論Robot Framework框架是最適合當(dāng)前公司項(xiàng)目使用的自動(dòng)測(cè)試框架。
Robot Framework是一款使用python創(chuàng)建的用于功能自動(dòng)化測(cè)試框架,由于Robot Framework支持多個(gè)客戶(hù)端或者多個(gè)接口同時(shí)同步測(cè)試,又具有很高的擴(kuò)展性,且可以通過(guò)關(guān)鍵字驅(qū)動(dòng),使用效率較高、難度較低,所以Robot Framework目前在測(cè)試行業(yè)中應(yīng)用廣泛。
(1)Robot Framework使用txt文件保存測(cè)試用例,使用制表符分隔數(shù)據(jù),便于適應(yīng)不同的編輯軟件使用,甚至可以使用excel等軟件創(chuàng)建用例,使用十分方便。沒(méi)有編程基礎(chǔ)的業(yè)務(wù)人員也可以使用Robot Framework框架編寫(xiě)測(cè)試用例。
(2)設(shè)計(jì)測(cè)試用例時(shí)可以根據(jù)使用需要設(shè)置變量,且Robot Framework架構(gòu)支持常用的循環(huán)語(yǔ)句,有利于測(cè)試用例的泛用和復(fù)用。
(3)支持標(biāo)簽操作,可以對(duì)測(cè)試用例進(jìn)行分類(lèi),便于規(guī)范測(cè)試用例。執(zhí)行時(shí)可以只執(zhí)行部分測(cè)試用例。
(4)Robot Framework框架支持?jǐn)?shù)據(jù)驅(qū)動(dòng)、關(guān)鍵字驅(qū)動(dòng)在內(nèi)的多種驅(qū)動(dòng)。
(5)Robot Framework框架支持對(duì)現(xiàn)有關(guān)鍵字的調(diào)用,可以以現(xiàn)有關(guān)鍵字為基礎(chǔ)創(chuàng)建新的關(guān)鍵字,方便創(chuàng)建更加復(fù)雜更加高級(jí)的測(cè)試用例。
(6)Robot Framework框架生成的測(cè)試報(bào)告、測(cè)試日志均是html格式文件,方便閱讀,方便提供給沒(méi)有編程能力的管理人員閱讀。
(7)Robot Framework自帶事件的監(jiān)聽(tīng)接口,用戶(hù)可以自行定義測(cè)試用例執(zhí)行前執(zhí)行后的對(duì)應(yīng)動(dòng)作。方便自定義測(cè)試用例中的前置條件和后置條件,便于測(cè)試用例的連續(xù)操作,能有效提高測(cè)試用例的泛用性和復(fù)用性。
(8)Robot Framework內(nèi)置命令接口,可以使用XML格式進(jìn)行輸出,可以與其他測(cè)試工具、管理工具結(jié)合使用,進(jìn)而實(shí)現(xiàn)整個(gè)測(cè)試過(guò)程的持續(xù)集成。
(9)Robot Framework內(nèi)含大量的測(cè)試庫(kù),可自動(dòng)識(shí)別、操縱被測(cè)對(duì)象。
(10)Robot Framework提供了遠(yuǎn)程測(cè)試執(zhí)行的接口、支持遠(yuǎn)程調(diào)試,方便線上交流。非集中辦公的項(xiàng)目也可以使用Robot Framework進(jìn)行測(cè)試。
(11)Robot Framework基于python語(yǔ)言開(kāi)發(fā),相對(duì)較為便于初學(xué)者理解。
我司電力營(yíng)銷(xiāo)系統(tǒng)開(kāi)發(fā)周期較長(zhǎng),系統(tǒng)功能較多,涉及了三百多個(gè)功能,功能結(jié)構(gòu)類(lèi)似,其中增刪改查等基本維護(hù)類(lèi)操作占據(jù)整個(gè)系統(tǒng)功能的70%左右,為了適應(yīng)大眾的瀏覽器使用習(xí)慣,該系統(tǒng)需要做目前主流瀏覽器(IE8及以上、chrome50及以上、firefox50及以上版本)的兼容性測(cè)試。如果單純靠手工來(lái)進(jìn)行測(cè)試,需要做大量重復(fù)性操作,既費(fèi)力又耗時(shí),重復(fù)性操作持續(xù)時(shí)間過(guò)長(zhǎng)的話,可能會(huì)有一些測(cè)試點(diǎn)會(huì)被遺漏,回歸測(cè)試時(shí)也不能確保盡可能覆蓋測(cè)試點(diǎn)。針對(duì)這些功能開(kāi)發(fā)自動(dòng)化腳本進(jìn)行測(cè)試是一個(gè)很不錯(cuò)的選擇,接下來(lái)簡(jiǎn)單介紹下基于Robot框架的自動(dòng)化測(cè)試應(yīng)用,選取新增渠道類(lèi)型功能為例。
(1)安裝python,安裝完成后配置環(huán)境變量。
(2)安裝wxPython。
(3)安裝Robot framework。
(4)安裝robotframework-ride(RIDE是一個(gè)圖形界面的用于創(chuàng)建、組織、運(yùn)行測(cè)試的軟件)。
(5)安裝selenium2library。
(6)下載各瀏覽器版本對(duì)應(yīng)的驅(qū)動(dòng)并拷貝到python安裝目錄下。
登錄腳本編寫(xiě)及調(diào)試:
該系統(tǒng)需要對(duì)瀏覽器兼容性進(jìn)行測(cè)試,可以在open browser的瀏覽器參數(shù)部分輸入chrome、ie(默認(rèn)為firefox,可不用輸入),并輸入測(cè)試地址、用戶(hù)名密碼進(jìn)行登錄操作,由于后續(xù)操作基于登錄功能,為了節(jié)省腳本錄制時(shí)間,將登錄腳本進(jìn)行封裝,后續(xù)操作時(shí)可直接使用,如圖1所示。
新增功能腳本編寫(xiě)及調(diào)試:
(1)調(diào)試腳本時(shí),如果遇到頁(yè)面跳轉(zhuǎn)后一直返回找不到元素的錯(cuò)誤,先不用急著改腳本,可能原因是切換新頁(yè)面后頁(yè)面內(nèi)容較多,部分元素還沒(méi)有加載完畢,導(dǎo)致找不到元素,可以在定位元素之前插入一條sleep操作,一般可以解決由于頁(yè)面內(nèi)容未加載完導(dǎo)致的定位元素失敗問(wèn)題,如果插入sleep依然找不到元素,接下來(lái)可以繼續(xù)查看是否是元素定位有誤。
(2)自動(dòng)化測(cè)試常用元素定位方法有8種,包括:id定位、name定位、class定位、tag定位、link定位、partial_link定位、xpath定位、CSS定位。其中xpath定位時(shí),使用瀏覽器中開(kāi)發(fā)人員工具(F12)選中頁(yè)面元素后,右鍵copy其XPath,粘貼至ride中,部分頁(yè)面元素的XPath沒(méi)有明顯的id、name等唯一值屬性,只能從頁(yè)面html標(biāo)簽開(kāi)始向下尋找,如“/html/body/div /test /div/div/……/div[2]/button”,直接將其粘貼至ride中調(diào)試不成功,會(huì)報(bào)element not Found的錯(cuò)誤,出現(xiàn)這種情況的原因主要是根據(jù)維護(hù)的元素定位路徑未找到元素,此時(shí)需要將其格式轉(zhuǎn)化為腳本執(zhí)行時(shí)要求的格式,以//開(kāi)始,//后面為元素唯一標(biāo)識(shí)(路徑唯一的部分可用*替代)。
(3)selenium2library測(cè)試庫(kù)中常用點(diǎn)擊操作相關(guān)關(guān)鍵字包括:click button、click element、click link、click image等,由于該系統(tǒng)功能菜單/功能按鈕大多使用鼠標(biāo)放在菜單名稱(chēng)處無(wú)需點(diǎn)擊即可顯示下級(jí)菜單,因此不能單純采用click element、click button等點(diǎn)擊操作關(guān)鍵字來(lái)編寫(xiě)該測(cè)試腳本,需要引入mouse up關(guān)鍵字來(lái)進(jìn)行編寫(xiě)。由于該模塊功能均需要進(jìn)入同一模塊菜單進(jìn)行操作,為了方便復(fù)用,將進(jìn)入菜單過(guò)程進(jìn)行封裝,如圖2所示。
圖1 登錄腳本編寫(xiě)及調(diào)試
圖2 新增功能腳本編寫(xiě)及調(diào)試
圖3 新增功能腳本編寫(xiě)及調(diào)試
(4)參數(shù)化,robot framework-ride提供參數(shù)化設(shè)置,通過(guò)參數(shù)化設(shè)置可在腳本中引入變量,以此來(lái)解決一些特殊場(chǎng)景的需求。如頁(yè)面字段存在超長(zhǎng)字符校驗(yàn)時(shí),可將該字段參數(shù)值設(shè)置為固定長(zhǎng)度的變量,以此來(lái)避免手動(dòng)輸入大量數(shù)據(jù)帶來(lái)的工作量。如果遇到頁(yè)面字段需要輸入唯一值的情況,也可將該字段參數(shù)值設(shè)置為變量的形式,為該變量賦值為隨機(jī)數(shù)等不易重復(fù)生成的數(shù)據(jù),如圖3所示。
(5)添加檢查點(diǎn),檢查點(diǎn)需要根據(jù)實(shí)際系統(tǒng)實(shí)現(xiàn)來(lái)進(jìn)行查找并添加,該系統(tǒng)新增成功后返回查詢(xún)頁(yè)面,頁(yè)面提示“成功”,因此添加檢查點(diǎn)可以使用關(guān)鍵字Page Should Contain,查找內(nèi)容為“成功”。如果可以找到“成功”,說(shuō)明該用例執(zhí)行后新增數(shù)據(jù)成功,否則新增失敗,如圖4所示。
執(zhí)行方式選擇pybot,點(diǎn)擊【start】開(kāi)始執(zhí)行測(cè)試用例腳本,用例執(zhí)行結(jié)束后,輸出信息、運(yùn)行日志以及結(jié)果報(bào)告生成保存至臨時(shí)文件夾,可以直接使用瀏覽器打開(kāi)路徑進(jìn)行查看,如圖5所示。
圖4 新增功能腳本編寫(xiě)及調(diào)試
圖5 執(zhí)行腳本
圖6 分析結(jié)果
圖7 分析結(jié)果
Report顯示所有用例執(zhí)行結(jié)果,包括用例總數(shù)、成功數(shù)、失敗數(shù)以及執(zhí)行時(shí)間,Pass為用例通過(guò),F(xiàn)ail為用例不通過(guò),如圖6所示。
如果想查看具體執(zhí)行情況,可點(diǎn)擊用例名稱(chēng)鏈接跳轉(zhuǎn)至運(yùn)行日志頁(yè)面查看詳情,如圖7所示。
錄制測(cè)試用例腳本需要耗費(fèi)大量時(shí)間,對(duì)于中小型項(xiàng)目來(lái)說(shuō),使用自動(dòng)化測(cè)試偶反而會(huì)拖慢項(xiàng)目的進(jìn)度。對(duì)于開(kāi)發(fā)初期的項(xiàng)目,由于各個(gè)流程尚未開(kāi)發(fā)完成,需求變化比較頻繁,編寫(xiě)好的用例可能沒(méi)多久就完全不能用了,導(dǎo)致自動(dòng)化測(cè)試用例的復(fù)用性大幅度降低。對(duì)以上類(lèi)型項(xiàng)目可轉(zhuǎn)換測(cè)試策略:對(duì)于中小型項(xiàng)目,主要采取手工測(cè)試的方法,只對(duì)某些復(fù)用性較強(qiáng)且需要反復(fù)測(cè)試的項(xiàng)目進(jìn)行自動(dòng)化測(cè)試。對(duì)于大型項(xiàng)目,項(xiàng)目初期不進(jìn)行自動(dòng)化測(cè)試,通常等到項(xiàng)目中期,流程設(shè)計(jì)基本確定之后再進(jìn)行自動(dòng)化測(cè)試。
開(kāi)發(fā)修改代碼后再執(zhí)行用例報(bào)錯(cuò),需要重新閱讀代碼修改用例。
大型項(xiàng)目參與人員較多,不同開(kāi)發(fā)人員修改代碼經(jīng)常會(huì)導(dǎo)致以前的測(cè)試用例無(wú)法繼續(xù)執(zhí)行。測(cè)試需要重新閱讀代碼進(jìn)行排查,費(fèi)時(shí)費(fèi)力。有時(shí)由于測(cè)試人員代碼閱讀能力不夠,花很久也無(wú)法修正用例。對(duì)此團(tuán)隊(duì)可以安排測(cè)試人員和開(kāi)發(fā)人員不再按照職責(zé)化分工作,整個(gè)項(xiàng)目盡量按照負(fù)責(zé)模塊劃分,讓負(fù)責(zé)同一部分的業(yè)務(wù)、開(kāi)發(fā)、測(cè)試人員坐在一起,并要求在用例無(wú)法復(fù)用且問(wèn)題較難解決的時(shí)候開(kāi)發(fā)人員配合測(cè)試人員進(jìn)行修改。
自動(dòng)化測(cè)試只能發(fā)現(xiàn)既定的缺陷,對(duì)于新出現(xiàn)的缺陷有時(shí)無(wú)法識(shí)別。
自動(dòng)化測(cè)試可以驗(yàn)證流程不通,界面報(bào)錯(cuò)等問(wèn)題,但是對(duì)于界面設(shè)計(jì)錯(cuò)位或者不美觀、等GUI問(wèn)題一般無(wú)法識(shí)別。輸入預(yù)先設(shè)定的測(cè)試數(shù)據(jù)或測(cè)試數(shù)據(jù)組合之外的情況如果出現(xiàn)BUG,也無(wú)法識(shí)別。對(duì)此團(tuán)隊(duì)決定采用手工測(cè)試與自動(dòng)化測(cè)試結(jié)合的方式進(jìn)行測(cè)試。每輪首先進(jìn)行自動(dòng)化測(cè)試,在自動(dòng)化測(cè)試的主要問(wèn)題解決后開(kāi)始手工測(cè)試,盡量排查出自動(dòng)化測(cè)試無(wú)法識(shí)別的問(wèn)題。
現(xiàn)在常用的元素定位方法有8種:1)通過(guò)id定位;2)通過(guò)name定位;3)通過(guò)tag定位;4)通過(guò)class定位;5)通過(guò)css定位;6)通過(guò)link定位;7)通過(guò)partial_link定位;8)通過(guò)xpath定位。但是如果項(xiàng)目開(kāi)發(fā)時(shí)沒(méi)有為元素設(shè)置唯一的標(biāo)識(shí),那么定位元素會(huì)十分困難,且代碼修改后用例極有可能無(wú)法復(fù)用。對(duì)此團(tuán)隊(duì)可以規(guī)范開(kāi)發(fā)過(guò)程,盡量對(duì)所有元素設(shè)定唯一標(biāo)識(shí),并且規(guī)范標(biāo)識(shí)設(shè)定規(guī)則,這樣不僅規(guī)范了代碼書(shū)寫(xiě)要求,還使代碼更便于閱讀與整改。對(duì)于無(wú)法設(shè)定唯一標(biāo)識(shí)或者較難定位的元素,開(kāi)發(fā)人員將配合測(cè)試人員進(jìn)行定位。有時(shí)也可以為了方便測(cè)試對(duì)部分元素先設(shè)定臨時(shí)的唯一標(biāo)識(shí),項(xiàng)目測(cè)試基本結(jié)束時(shí)再刪去標(biāo)識(shí),進(jìn)行相關(guān)功能的手工測(cè)試,保證刪去標(biāo)識(shí)對(duì)系統(tǒng)流程驗(yàn)證沒(méi)有影響。
自動(dòng)化測(cè)試技術(shù)還在不斷的發(fā)展,雖然還有很多不成熟的地方,或許最終也無(wú)法完全取代手工測(cè)試,但是自動(dòng)化測(cè)試帶給項(xiàng)目的便利與效率是毋庸置疑的,在科技日新月異、技術(shù)突飛猛進(jìn)的時(shí)代,期待著自動(dòng)化測(cè)試在未來(lái)能帶給我們更多驚喜。