<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          測(cè)試開(kāi)發(fā):分享幾點(diǎn)提高GUI自動(dòng)化測(cè)試穩(wěn)定性解決方案

          共 2080字,需瀏覽 5分鐘

           ·

          2021-06-18 06:14


          針對(duì)"GUI自動(dòng)化測(cè)試穩(wěn)定性問(wèn)題"這個(gè)問(wèn)題,最典型的情景就是:同樣的測(cè)試用例,在同樣的測(cè)試執(zhí)行環(huán)境下,測(cè)試的結(jié)果有時(shí)是Success,有時(shí)是Fail,這嚴(yán)重降低了GUI測(cè)試的可信度,同時(shí)也是GUI層面的自動(dòng)化測(cè)試位于金字塔最頂端的原因之一。

          在實(shí)際的項(xiàng)目過(guò)程中,GUI測(cè)試幾乎不可能做到100%穩(wěn)定,根據(jù)我的經(jīng)驗(yàn),如果能夠做到 90% 以上的穩(wěn)定性,就已經(jīng)非常不錯(cuò)了,這需要整個(gè)產(chǎn)品技術(shù)團(tuán)隊(duì)的共同努力才有希望達(dá)成。

          要提高 GUI 測(cè)試穩(wěn)定性,首先我們需要知道到底是什么原因引起的不穩(wěn)定。我們必須找出盡可能多的不穩(wěn)定因素,然后找到每一類不穩(wěn)定因素對(duì)應(yīng)的解決方案。

          我列舉了幾種常見(jiàn)的造成GUI測(cè)試不穩(wěn)定的因素,如下:

          1、非預(yù)期的彈框

          在用例執(zhí)行過(guò)程中,操作系統(tǒng)或被測(cè)系統(tǒng)可能會(huì)突然彈出預(yù)期范圍之外的對(duì)話框,GUI自動(dòng)化測(cè)試有可能就會(huì)因此而失敗。

          解決方案:常用的解決方式,引入異常場(chǎng)景恢復(fù)模式或者采取無(wú)界面GUI自動(dòng)化測(cè)試來(lái)處理。

          2、頁(yè)面控件屬性的細(xì)微變化

          如果頁(yè)面控件的屬性發(fā)生了變化,哪怕只是細(xì)微的變化,也必定會(huì)導(dǎo)致測(cè)試腳本的元素定位失敗。這可以說(shuō)是GUI自動(dòng)化測(cè)試最大的痛點(diǎn)。

          目前,一些商用 GUI 自動(dòng)化測(cè)試工具,比如 UFT(原QTP),已經(jīng)集成了模糊匹配的功能。通常情況下,只需要啟用“模糊匹配”選項(xiàng)即可。如果某個(gè)對(duì)象的定位是通過(guò)模糊匹配完成的,那么,測(cè)試報(bào)告中將會(huì)顯示該信息,明確告知此次對(duì)象識(shí)別是基于模糊匹配完成的,因?yàn)?GUI 自動(dòng)化工具并不能保證每次模糊匹配都一定正確。

          解決方案:元素定位時(shí)采用模糊匹配技術(shù)。

          3、隨機(jī)的頁(yè)面延遲造成控件識(shí)別失敗

          隨機(jī)的頁(yè)面延遲,也是 GUI 測(cè)試防不勝防的。既然是隨機(jī)的,也就是說(shuō)我們沒(méi)有辦法去控制它,解決辦法是加入重試(retry)機(jī)制。重試機(jī)制是指,當(dāng)某一步 GUI操作失敗時(shí),框架會(huì)自動(dòng)發(fā)起重試。對(duì)于Robot Framework+SeleniumLirary,可以使用有wait until系列的關(guān)鍵字(智能等待),盡量少的使用sleep。

          Wait For Condition
          Wait Until Element Contains
          Wait Until Element Does Not Contain
          Wait Until Element Is Enabled
          Wait Until Element Is Not Visible
          Wait Until Element Is Visible
          Wait Until Page Contains
          Wait Until Page Contains Element
          Wait Until Page Does Not Contain
          Wait Until Page Does Not Contain Element

          解決方案:引入重試機(jī)制retry

          4、測(cè)試數(shù)據(jù)問(wèn)題

          測(cè)試數(shù)據(jù)問(wèn)題,也是造成 GUI 自動(dòng)化測(cè)試不穩(wěn)定的一個(gè)重要原因。比如,測(cè)試用例所依賴的數(shù)據(jù)被其他用例修改了。要解決此類的問(wèn)題,就要回歸到第一篇中所談到的內(nèi)容,必須要保證用例之間的獨(dú)立性和盡量減少對(duì)執(zhí)行環(huán)境的依賴。Robot框架本身不會(huì)規(guī)定Case執(zhí)行的順序,所以從某種程度上來(lái)說(shuō)同一層級(jí)的Cases是隨機(jī)執(zhí)行的。很典型的情況就是,測(cè)試用例在本地調(diào)試時(shí)怎么跑怎么過(guò),放到Server上所有Cases一起跑的時(shí)候就會(huì)Fail,還可能是偶發(fā)的,這種情況下就很可能是由于其他Case的痕跡影響到了它,查找問(wèn)題的根源往往比較耗時(shí)。

          解決方案:保證用例之間的獨(dú)立性和盡量減少對(duì)執(zhí)行環(huán)境的依賴

          5、小結(jié)

          界面自動(dòng)化測(cè)試,它最接近用戶真實(shí)場(chǎng)景,也容易發(fā)現(xiàn)問(wèn)題,但它的實(shí)現(xiàn)成本最高且太容易受外部依賴,容易影響腳本成功率。總體來(lái)說(shuō),適當(dāng)?shù)慕缑孀詣?dòng)化測(cè)試是有必要的,但是也大可不必在UI層投入太多精力。


          除了本文介紹,造成GUI自動(dòng)化測(cè)試不穩(wěn)定的因素以及對(duì)應(yīng)的解決方案還有很多,歡迎大家下方留言討論如果你覺(jué)得文章對(duì)你有用,幫忙 點(diǎn)贊轉(zhuǎn)發(fā)關(guān)注。


          推薦閱讀:

          1. Django+Vue+Docker搭建接口測(cè)試平臺(tái)實(shí)戰(zhàn)

          2. 接口自動(dòng)化測(cè)試,一鍵快速校驗(yàn)接口返回值全部字段

          3. 剛轉(zhuǎn)行1年測(cè)開(kāi)新手:學(xué)習(xí)編程幾點(diǎn)經(jīng)驗(yàn)分享


          END


          長(zhǎng)按二維碼/微信掃碼  添加作者


          掃描上面二維碼,備注【交流群】,加入技術(shù)交流群
          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐在线免费视频 | 国产内射在线视频 | 国产一区二区三区四区视频 | 青青青在线视频 | 草逼视频网址 |