1.項(xiàng)目組調(diào)研選擇自動(dòng)化工具并開(kāi)會(huì)演示demo案例,我們主要是演示selenium和robotframework兩種。
2.搭建自動(dòng)化測(cè)試框架,在項(xiàng)目中逐步開(kāi)展自動(dòng)化。
3.把該項(xiàng)目的自動(dòng)化流程、框架固化成文檔
4.推廣到公司的其它項(xiàng)目組應(yīng)用
1.編寫(xiě)自動(dòng)化測(cè)試計(jì)劃
2.設(shè)計(jì)自動(dòng)化測(cè)試用例
3.編寫(xiě)自動(dòng)化測(cè)試框架和腳本
4.調(diào)試并維護(hù)腳本
5.無(wú)人值守測(cè)試
6.后期腳本維護(hù)(添加用例、開(kāi)發(fā)更新版本)
1.用例是自動(dòng)化測(cè)試工程師自己設(shè)計(jì)的,一般剛開(kāi)始已基本業(yè)務(wù)流程為主(登錄--完成一個(gè)業(yè)務(wù)--退出)
2.從系統(tǒng)測(cè)試用例中進(jìn)行篩選或由業(yè)務(wù)工程師提供
上一個(gè)項(xiàng)目中是定時(shí)執(zhí)行的,設(shè)置的執(zhí)行時(shí)間是晚上12點(diǎn),執(zhí)行完畢后會(huì)自動(dòng)發(fā)送郵件通知
不多,因?yàn)橹绊?xiàng)目組是把已經(jīng)測(cè)試通過(guò)的基本功能再進(jìn)行自動(dòng)化腳本編寫(xiě)和在后續(xù)版本執(zhí)行自動(dòng)化測(cè)試,它主要是保證已經(jīng)測(cè)試通過(guò)的功能在新版本更新后沒(méi)有問(wèn)題。
引用自動(dòng)化測(cè)試之后,能代替大量繁瑣的回歸測(cè)試工作,把業(yè)務(wù)測(cè)試人員解放出來(lái),既而讓業(yè)務(wù)測(cè)試人員把精力集中在復(fù)雜的業(yè)務(wù)功能模塊上,自動(dòng)化測(cè)試一般是對(duì)穩(wěn)定下來(lái)的功能進(jìn)行自動(dòng)化,保證不會(huì)因?yàn)楫a(chǎn)品的更新導(dǎo)致之前穩(wěn)定下來(lái)的功能出現(xiàn)BUG
有誤報(bào)過(guò),有時(shí)候自動(dòng)化測(cè)試報(bào)告中顯示發(fā)現(xiàn)了bug,實(shí)際去通過(guò)手工測(cè)試去確認(rèn)又不存在該bug。
誤報(bào)原因一般是:
1.元素定位不穩(wěn)定,需要盡量提高腳本的穩(wěn)定性;
2.開(kāi)發(fā)更新了頁(yè)面但是測(cè)試沒(méi)有及時(shí)更新維護(hù)!
1.頻繁地變更頁(yè)面,經(jīng)常要修改頁(yè)面對(duì)象類里面的代碼
2.自動(dòng)化測(cè)試偶爾出現(xiàn)過(guò)誤報(bào)
3.自動(dòng)化測(cè)試結(jié)果出現(xiàn)覆蓋的情況:Jenkins根據(jù)時(shí)間建立文件夾
4.自動(dòng)化測(cè)試代碼維護(hù)比較麻煩
5.自動(dòng)化測(cè)試進(jìn)行數(shù)據(jù)庫(kù)對(duì)比數(shù)據(jù)
可以說(shuō)出以下自己擅長(zhǎng)的一種:
1.python+selenium+unittest+htmltestrunner
2.python+selenium+pytest+allure
3. robotframework+Selenium2Library
當(dāng)然有:我們使用的群號(hào)是:695458161 有很多軟件測(cè)試和自動(dòng)化大神解決項(xiàng)目中的問(wèn)題,還會(huì)不定時(shí)的發(fā)放免費(fèi)資料。
主要是冒煙測(cè)試和回歸測(cè)試?;貧w測(cè)試主要寫(xiě)一些功能穩(wěn)定的場(chǎng)景,通過(guò)自動(dòng)化手段去實(shí)現(xiàn),節(jié)約測(cè)試時(shí)間。因?yàn)樽詣?dòng)化測(cè)試用例也是在不斷的更新和迭代,沒(méi)有刻意去統(tǒng)計(jì),大概在30%-40%左右!
這個(gè)其實(shí)就是利用javaScript去修改當(dāng)前元素的邊框樣式來(lái)到達(dá)高亮顯示的效果,
1.頁(yè)面加載元素過(guò)慢,加等待時(shí)間
2.頁(yè)面有frame框架頁(yè),需要先跳轉(zhuǎn)入frame框架再定位
3.可能該元素是動(dòng)態(tài)元素,定位方式要優(yōu)化,可以使用部分元素定位或通過(guò)父節(jié)點(diǎn)或兄弟節(jié)點(diǎn)定位。
4.可能識(shí)別了元素,但是不能操作,比如元素不可用,不可寫(xiě)等。需要使用js先把前置的操作完成,
id name classname link_text css xpath
先用driver.switch_to.frame()跳轉(zhuǎn)進(jìn)去frame,
然后再操作頁(yè)面元素,
操作完后使用driver.swith_to.default_content()跳轉(zhuǎn)出來(lái)
使用driver.switch_to.alert方法先跳轉(zhuǎn)到alert彈出窗口
然后再通過(guò)accept點(diǎn)擊確定按鈕,通過(guò)dismiss點(diǎn)擊取消難,通過(guò)text()獲得彈出窗口的文本。
這個(gè)多窗口之間跳轉(zhuǎn)處理,我們?cè)陧?xiàng)目中也經(jīng)常遇到。就是,當(dāng)你點(diǎn)擊一個(gè)鏈接,這個(gè)鏈接會(huì)在一個(gè)新的tab打開(kāi),然后你接下來(lái)要在新tab打開(kāi)的頁(yè)面查找元素,
1.我們?cè)邳c(diǎn)擊鏈接前使用driver.current_window_handle獲得當(dāng)前窗口句柄。
2.再點(diǎn)擊鏈接。點(diǎn)擊后通過(guò)driver.window_handles獲得所有窗口的句柄,
3.然后再循環(huán)找到新窗口的句柄,然后再通過(guò)driver.switch_to.window()方法跳轉(zhuǎn)到新的窗口。
定位元素后:分別通過(guò)isEnabled(),isSelected(),isDisplayed()三個(gè)方法進(jìn)行判斷。
在Selenium中有一個(gè)叫Select的類,這個(gè)類支持對(duì)下拉菜單進(jìn)行操作。使用方法如下:
1.定位元素
2.把定位的元素轉(zhuǎn)化成Select對(duì)象。
sel = Select(定位的元素對(duì)象)
3.通過(guò)下標(biāo)或者值或者文本選中下拉框。
sel.select_by_index(index);
sel.select_by_value(value);
sel.select_by_visible_text(text);
首先要分析當(dāng)前網(wǎng)頁(yè)試用日歷插件的前端代碼,看看能不能通過(guò)元素定位,點(diǎn)擊日期實(shí)現(xiàn),如果不能,可能需要借助javascript。還有些日歷控件一個(gè)文本輸入框,可以直接sendKeys()方法來(lái)實(shí)現(xiàn)傳入一個(gè)時(shí)間的數(shù)據(jù)。
常見(jiàn)的selenium異常有這些:
NoSuchElementException:沒(méi)有該元素異常
TimeoutException : 超時(shí)異常
ElementNotVisibleException :元素不可見(jiàn)異常
NoSuchAttributeException :沒(méi)有這樣屬性異常
NoSuchFrameException :沒(méi)有該frame異常
簡(jiǎn)單來(lái)說(shuō),兩個(gè)都可以實(shí)現(xiàn)退出瀏覽器session功能,close是關(guān)閉你當(dāng)前聚焦的tab頁(yè)面,而quit是關(guān)閉全部瀏覽器tab頁(yè)面,并退出瀏覽器session。知道這兩個(gè)區(qū)別,我們就知道quit一般用在結(jié)束測(cè)試之前的操作,close用在執(zhí)行用例過(guò)程中關(guān)閉某一個(gè)頁(yè)面的操作。
在Selenium中提供了一個(gè)get_screenshot_as_file()的方法來(lái)截圖的,一般結(jié)合try/except捕獲異常時(shí)使用,進(jìn)行錯(cuò)誤截圖。
定位元素后,直接使用send_keys()方法設(shè)置就行,參數(shù)為需要上傳的文件的路徑。
1.線程等待(強(qiáng)制等待)如time.sleep(2):線程強(qiáng)制休眠2秒鐘,2秒過(guò)后,再執(zhí)行后續(xù)的代碼。建議少用。
2.imlicitlyWait(隱式等待)會(huì)在指定的時(shí)間范圍內(nèi)不斷的查找元素,直到找到元素或超時(shí),特點(diǎn)是必須等待整個(gè)頁(yè)面加載完成。
3.WebDriverWait(顯式等待)通常是我們自定義的一個(gè)函數(shù)代碼,這段代碼用來(lái)等待某個(gè)元素加載完成,再繼續(xù)執(zhí)行后續(xù)的代碼
當(dāng)然可以,我寫(xiě)的用例可以在在IE,火狐和谷歌這三種瀏覽器上運(yùn)行。實(shí)現(xiàn)的思路是封裝一個(gè)方法,分別傳入一個(gè)瀏覽器的字符串,如果傳入IE就使用IE,如果傳入FireFox就使用FireFox,如果傳入Chrome就使用Chrome瀏覽器,并且使用什么瀏覽器可以在總的ini配置文件中進(jìn)行配置。需要注意的是每個(gè)瀏覽器使用的驅(qū)動(dòng)不一樣。
PO是Page Object 模式的簡(jiǎn)稱,它是一種設(shè)計(jì)思想,意思是,把一個(gè)頁(yè)面,當(dāng)做一個(gè)對(duì)象,頁(yè)面的元素和元素之間操作方法就是頁(yè)面對(duì)象的屬性和行為,PO模式一般使用三層架構(gòu),分別為:基礎(chǔ)封裝層BasePage,PO頁(yè)面對(duì)象層,TestCase測(cè)試用例層。
這個(gè)問(wèn)得最多,甚至有很多公司直接卸載招聘要求中
當(dāng)然可以,自動(dòng)化框架主要的核心框架就是分層+PO模式:分別為:基礎(chǔ)封裝層BasePage,PO頁(yè)面對(duì)象層,TestCase測(cè)試用例層。然后再加上日志處理模塊,ini配置文件讀取模塊,unittest+ddt數(shù)據(jù)驅(qū)動(dòng)模塊,jenkins持續(xù)集成模式組成。
我們有自己的軟件測(cè)試技術(shù)群:695458161:如果有任何軟件測(cè)試方面的疑問(wèn),關(guān)于軟件測(cè)試、接口測(cè)試、自動(dòng)化測(cè)試、性能測(cè)試、面試經(jīng)驗(yàn)等都可以在群里解決,群里有同行大神一起交流技術(shù)。共同進(jìn)步,一起成長(zhǎng)!
作者:諸葛
出處:http://www.360doc.com/showweb/0/0/906934354.aspx
原創(chuàng)不易,歡迎轉(zhuǎn)載,但未經(jīng)作者同意請(qǐng)保留此段聲明,并在文章頁(yè)面明顯位置給出原文鏈接。
聯(lián)系客服