17792550360
掃描二維碼
關注卓目鳥學苑公眾號
掃描二維碼
關注卓目鳥學苑公眾號
江湖一直有著這么一句名言“天下武功,唯快不破"。那么在軟件測試領域,自然而然我們會想到軟件自動化測試。軟件自動化測試的實現(xiàn)自然離不開軟件自動化測試工具。軟件自動化測試工具是軟件自動化的載體,只有通過工 ...
江湖一直有著這么一句名言“天下武功,唯快不破"。那么在軟件測試領域,自然而然我們會想到軟件自動化測試。軟件自動化測試的實現(xiàn)自然離不開軟件自動化測試工具。軟件自動化測試工具是軟件自動化的載體,只有通過工具,我們才能實現(xiàn)。武林也是一樣,成為武功蓋世,除了武林秘決之外,還要有依天劍、屠龍刀的配合。 話說軟件開發(fā)模式有:瀑布模型、增量式開發(fā)、螺旋開發(fā)、敏捷開發(fā)。軟件業(yè)早期的開發(fā)模式主要以瀑布模型為主,后期逐漸專為敏捷開發(fā)。軟件開發(fā)效率和變更頻率也隨著開發(fā)模式的變化而變化,優(yōu)其到了敏捷開發(fā)模式。一些傳統(tǒng)的自動化測試工具顯示力不從心,很難應付軟件開發(fā)的快速迭代和變更,導致一些公司開展自動化測試,徒勞無功。主要原因有:自動化用例建設速度慢,跟不上軟件新增內容;軟件變更頻繁導致用例維護成本巨大;學習成本高。所有這些都是自動化測試在中國軟件業(yè)難以建樹的主要原因。 軟件自動化測試工具工作流程:新建用例->調試用例->行執(zhí)行用例->分析結果->輸出報告->維護用例。其中:新建用例和維護用例是消耗最大的工作量。敏捷開發(fā)模式的引入,導致維護工量大大提升,甚至一度有超過新建用例工作量的趨勢,這一直困擾軟件自動化測試的一個頭痛問題。 自動化用例維護環(huán)節(jié)中,元素定位失效是一個主要原因。下面我們看一下一些常用自動化工具的元素定位原理: 1、selenium元素定位樣例 以下是一段Python+ selenium的用例樣例,對元素的操作是以元素id為基礎的 from selenium import webdriver url = "http://10.98.110.44/egov-portal/egov/shIndex.html" # 打開瀏覽器,最大化瀏覽器 driver = webdriver.Chrome() driver.get( url ) driver.implicitly_wait( 10 ) driver.maximize_window() #輸入賬號 driver.find_element_by_id("username").send_keys(“zhangsan") #輸入密碼 driver.find_element_by_id("password").send_keys("ww1234") #點擊登錄按鈕 driver.find_element_by_id("submitButton").click() 2、robotFramwork+seleniuLibrary元素定位樣例 3、UFT工具元素定位方法樣例 Dialog("Login").WinEdit("AgentName:").Set "mercury"Dialog("Login_2").WinButton("Help").ClickDialog("Login_2").Dialog("FlightReservations").Static("The password is 'MERCURY'").CheckCheckPoint("The password is 'MERCURY'")Dialog("Login_2").Dialog("FlightReservations").WinButton("確定").ClickDialog("Login").WinButton("OK").ClickWindow("FlightReservation").ActivateWindow("FlightReservation").ActiveX("MaskEdBox").Type "102715"#選擇日期Window("Flight Reservation").WinComboBox("FlyFrom:").Select "Frankfurt" #從以上信息我看到,元素的定位都是通過元素的屬性定位,元素屬性主要有以下8種: 1、id定位: driver.find_element_by_id("kw") 2、name定位: driver.find_element_by_name("wd") 3、class定位: driver.find_element_by_class_name("s_ipt") 4、tag定位:driver.find_element_by_tag_name("input") 5、link定位:driver.find_element_by_link_text("新聞") 6、partial_link定位:driver.find_element_by_partial_link_text() 7、xpath定位: driver.find_element_by_xpath("/html/body/div[2]/div/form/div/input") 8、CSS定位:driver.find_element_by_css_selector 在現(xiàn)有的自動化軟件當中,都是以上述8種定位方式中的一種對元素進行定位?,F(xiàn)在現(xiàn)實的測試環(huán)境經常不是我們想象的那樣平靜。頁面中出現(xiàn)id,name,tag 重復的很多。也許在我們寫用例的不重復,經過一輪版本修改后很可能變得重復了。xpath是最不可能失效的,但是經常因父節(jié)點的修改而導致失效是常有的事。因此自動化設計人員疲于奔命的維護用例,工作量非常的巨大。 4、元素智能定位 kylinTOP的軟件,支持智能元素定位, 我比較感興趣就去研究了一下,該軟件的用例主要通過錄制生成,錄制生成一些可視化的腳本,如下所示: 上圖是點按鈕的步驟,步驟中記錄了按鈕的多個屬性:title|alt、src、border、alt、xpath以及它的孩子信息。有些屬性并不能唯一定位元素(頁面中存在重復),如:border。kylinTOP記錄下了按鈕元素的所有身份信息。當筆者嘗試修改頁面代碼中title|alt的值 ,使頁面中title|alt的值有重復。在腳本回放時,仍然可以正常運行?;謴蛅itle|alt值 ,重復上述修改步驟,逐個修改其它屬性值,仍然不影響腳本運行。通過測試發(fā)現(xiàn),修改按鈕任何屬性都不影響腳本執(zhí)行。 通過資料,說元素定位是根據元素的一系列屬性進行定位,并不依賴于某一個屬性,采取的是一種元素智能定位算法。在軟件自動化測試領域,kylinTOP的元素定位的確有過人之處,大大提高了自動化用例執(zhí)行的穩(wěn)定性,節(jié)省了用例的維護成本。 |
分享本篇文章給更多人:
2020-05-27
2020-02-24
2020-05-27
2022-12-05
2020-05-27
請發(fā)表評論