爲什麼需要Page Object?

爲什麼需要Page Object?

Page Object(PO)是界面自動化驗收測試中的一個常見模式,要和@槽神劉叫獸探討一下PO的必要性,顧寫這篇小文表達一下我的觀點。

PO的主要價值體現在對界面交互細節的封裝,這樣可以使測試案例可以更關注與業務而非界面細節,提高測試案例的可讀性,這其實都很有利 Behavior Driven Development(BDD),Acceptance Test Driven Development(ATDD) 或Specification By Example(SbE)的實施。

舉個小例子,例如,我有個信息頁面,需要輸入姓名,年齡,性別,證號等信息,如果不用PO,那麼我的測試用例可能是這樣的(java+selenium):
 driver.findElement(By.name("name_field")).sendKeys("God");
 driver.findElement(By.name("age_field")).sendKeys("balaba");
 driver.findElement(By.name("sex_field")).sendKeys("unknown");
 driver.findElement(By.name("social_id_field")).sendKeys("invalid");

可以看到,上述語句除了業務之外,包含許多實現層面的噪音,即便使用BrowserBot模式對這些噪音進行分裝,但是測試案例也會包含四個步驟:
MySendKeyByName("name_field","God");
MySendKeyByName("age_field","balaba");
MySendKeyByName("sex_field","Unknown");
MySendKeyByName("social_id_field","invalid");

噪音經過使用BrowserBot模式大爲降低,但是,還是有一些,如界面id等。如果使用PO模式,測試案例可以得到進一步簡化,
IDPage.InputBasiicInfo(“God”,”balaba”,”Unknown”,”invalid”);

這其實就形成了自己的針對特定應用的測試DSL,封裝了大量界面交互細節,提升測試案例的可讀性。

使用PO之後的另外一個大好處,就是有助於降低冗餘,如果我需要在10個案例裏面都輸入身份信息,那麼我不需要將這個4個步驟重複寫10遍,而是只需要調用InputBasicInfo十次即可,這將極大降低未來的案例維護成本。

因此,PO的威力在一個測試人員自己寫主場景測試案例時是不容易體會到的,因爲,他不需要和開發、業務交流案例,他也不會寫很多重複動作。但是,我相信, 當他真正開始嘗試ATDD,BDD或SbE時,當他開始寫一些重要的異常分支流程時,當他開始爲新需求頻繁維護修改案例時,我想他會更意識到PO的作用。

最後一句,PO不是萬靈藥,也不是唯一真理,提高測試案例可讀性,避免案例步驟冗餘纔是終極目標。

原文鏈接:http://blog.csdn.net/adwu73/article/details/9420459 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章