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

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

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

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

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

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

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

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

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

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

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

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

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

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

  定位元素的策略

  ● 選擇一個(gè)定位策略

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

  → 元素的ID

  → 元素的name屬性

  → XPath語(yǔ)句

  → 通過(guò)一個(gè)鏈接的文本

  → 文檔對(duì)象模型(DOM)

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

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

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

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

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

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

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

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