您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
Selenium自動化測試用例設(shè)計注意事項(xiàng)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/1/25 14:02:31 ] 推薦標(biāo)簽:

  驗(yàn)證結(jié)果

  ● 斷言assert與驗(yàn)證verify

  什么時候使用斷言命令,什么時候使用驗(yàn)證命令?這取決于你。差別在于在檢查失敗時,你想讓測試程序做什么。你想讓測試終止,還是想繼續(xù)而只簡單地記錄檢查失?

  這需要權(quán)衡。如果您使用的斷言,測試將在檢查失敗時停止,并不運(yùn)行任何后續(xù)的檢查。有時候,也許是經(jīng)常的,這是你想要的。如果測試失敗,你會立刻知道測試沒有通過。TestNG和JUnit等測試引擎提供在開發(fā)測試腳本時常用的插件,可以方便地標(biāo)記那些測試為失敗的測試。優(yōu)點(diǎn):你可以直截了當(dāng)?shù)乜吹綑z查是否通過。缺點(diǎn):當(dāng)檢查失敗,后續(xù)的檢查不會被執(zhí)行,無法收集那些檢查的結(jié)果狀態(tài)。

  相比之下,驗(yàn)證命令將不會終止測試。如果您的測試只使用驗(yàn)證,可以得到保證是—假設(shè)沒有意外的異常—測試會被執(zhí)行完畢,而不管是否發(fā)現(xiàn)缺陷。缺點(diǎn):你必須做更多的工作,以檢查您的測試結(jié)果。也是說,你不會從TestNG和JUnit得到反饋。您將需要在打印輸出控制臺或日志文件中查看結(jié)果。每次運(yùn)行測試,你都需要花時間去查看結(jié)果輸出。如果您運(yùn)行的是數(shù)以百計的測試,每個都有它自己的日志,這將耗費(fèi)時間。及時得到反饋會更合適,因此斷言通常比驗(yàn)證更常使用。

  ● 權(quán)衡:assertTextPresent,assertElementPresent和assertText

  您現(xiàn)在應(yīng)該熟悉這些命令及使用它們的機(jī)制。如果沒有,請參閱相關(guān)章節(jié)。在構(gòu)建你的測試時,你需要決定

  → 只檢查在頁面上的文本嗎?(verify/ assertTextPresent)

  → 只檢查是否在頁面上存在HTML元素嗎?即文本,圖像,或其他沒被檢查的內(nèi)容,只要和HTML標(biāo)記相關(guān)。(verify/ assertElementPresent)

  → 需要同時檢查元素和它的文本內(nèi)容?(verify/ assertText)

  沒有正確的答案。這取決于您的測試要求。如有疑問,請使用assertText,因?yàn)檫@是嚴(yán)格的類型檢查點(diǎn)。您可以隨后更改它,但至少你不會遺漏任何潛在的故障。

  Verify/ assertText是特殊的測試類型。HTML元素(標(biāo)簽)或文本的不符合都會導(dǎo)致測試失敗。也許你的網(wǎng)頁設(shè)計師經(jīng)常改變頁面面,而你不希望在他們改變頁面時,你的測試失敗,因?yàn)檫@是期望中的周期性變更。但是,假如你仍然需要檢查的頁面上的東西,如段落、標(biāo)題文本或圖像。在這種情況下,您可以使用verify/ assertElementPresent。這將確保一個特定類型的元素存在(如果使用XPath,可以確保它相對頁面內(nèi)其他對象的存在)。但你不關(guān)心的內(nèi)容是什么,你只關(guān)心某個特定的元素,比方說,一個圖片在一個特定的位置。

  隨著時間的推移和經(jīng)驗(yàn)的積累,如何決定使用還是非常簡單的。

  定位元素的策略

  ● 選擇一個定位策略

  有多種方式選擇頁面上的對象。但面對這些定位類型,如何權(quán)衡呢?回想一下,我們定位一個對象的方式:

  → 元素的ID

  → 元素的name屬性

  → XPath語句

  → 通過一個鏈接的文本

  → 文檔對象模型(DOM)

  使用元素的ID或name定位符,在測試執(zhí)行方面來說,是有效的方式。也讓你的測試代碼更具可讀性,如果在頁面源代碼中的ID或name屬性被友好命名的話。XPath語句需要更長的時間來處理,因?yàn)闉g覽器必須運(yùn)行它的XPath處理器。在Internet Explorer 7,XPath出了名的慢。

  使用鏈接的文本進(jìn)行定位是很方便的,并運(yùn)行起來也不錯。這種技術(shù)只適用于鏈接。另外,如果鏈接文本很可能會經(jīng)常改變,使用<a>標(biāo)簽定位元素將是更好的選擇。

  不過,有時你必須使用XPath定位。如果一個頁面元素沒有一個ID或者name屬性,除了XPath定位沒得選擇。(DOM定位器不再普遍使用,因?yàn),XPath可以做得更好。DOM定位器只簡單地為遺留測試而存在)。

  相對使用ID或name屬性定位,使用XPath進(jìn)行定位有一個獨(dú)特的優(yōu)勢。使用XPath(DOM)中,你可以找到頁面上相對于其他對象的一個對象。例如,如果有一個鏈接必須存在<div>標(biāo)簽里的第二個段落內(nèi),您可以使用XPath進(jìn)行定位。使用ID和name屬性定位,你只能得出它們存在指定的頁面,而不知具體的頁面位置。如果你必須測試顯示公司標(biāo)志的圖像出現(xiàn)在頁面頂部的頭部分,XPath定位可能是更好的選擇。

  ● 定位動態(tài)元素

  正如前面測試類型部分所述,動態(tài)元素的頁面標(biāo)識在不同的頁面實(shí)例上市不同的。例如,

<a class="button" id="adminHomeForm" onclick="return oamSubmitForm('adminHomeForm',     'adminHomeForm:_ID38');" href="#">View Archived Allocation Events</a>

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd