自動化測試未來趨勢(一)自愈(Self-Healing)技術(shù)

自動化測試未來趨勢系列:

  1. 自愈(Self-Healing)技術(shù)

1. 自愈技術(shù)

自愈(Self-Healing)技術(shù)在計算機(jī)術(shù)語中是指:一種自我修復(fù)的管理機(jī)制。

類比生命體,當(dāng)生命體遭受到一些小的傷害時拟枚,它們的身體往往能夠通過自身的修復(fù)機(jī)制來實(shí)現(xiàn)自愈,而不需要外界加以干預(yù)胰挑。如壁虎的斷尾再生隅肥,或者蟹類的軀體再生能力那樣。

回到計算機(jī)領(lǐng)域训裆,自愈技術(shù)也在廣泛的使用眶根,比如芯片的信息通道自愈,軟件系統(tǒng)的故障自愈等边琉。那么我們這里要介紹的是在自動化測試方向上的一種自愈技術(shù):

可以發(fā)現(xiàn)其測試腳本執(zhí)行中的非預(yù)期錯誤并在無需人工干預(yù)的情況下自行更改属百,從而將自身恢復(fù)到更好的運(yùn)行狀態(tài)。

2. 技術(shù)原理

問題域:在自動化測試中使用自愈技術(shù)主要解決的是對象識別問題变姨。

傳統(tǒng)的自動化測試框架和工具使用應(yīng)用程序模型來定義應(yīng)用程序的組件和對象及其屬性族扰。然后使用這些定義來識別和操作應(yīng)用程序組件。但是應(yīng)用程序在更新時會經(jīng)常更改定欧∮婧牵可能是有意的開發(fā)人員變更或者是即時(由應(yīng)用程序系統(tǒng)或構(gòu)建過程)發(fā)生的。這些變化破壞了我們基于靜態(tài)定義的傳統(tǒng)自動化方式砍鸠。

自然語言處理(NLP)和機(jī)器學(xué)習(xí) (ML) 等智能技術(shù)已經(jīng)發(fā)展到測試腳本現(xiàn)在可以“學(xué)習(xí)”和“適應(yīng)”的地步扩氢。自愈測試自動化工具使用 AI 和機(jī)器學(xué)習(xí)技術(shù),根據(jù)用戶界面 (UI) 或應(yīng)用程序環(huán)境的變化可以自動更新和調(diào)整測試過程睦番。

在運(yùn)行測試時类茂,他們會掃描應(yīng)用程序的用戶界面以查看是否存在任何對象。然后他們將它們與之前為自動化測試生成的應(yīng)用程序模型進(jìn)行比較托嚣。如果應(yīng)用程序有任何更改巩检,則有一種技術(shù)可以讓測試適應(yīng)并自動更新。這種能力被稱為“自我修復(fù)”示启。屬性更改是自動感知的兢哭,內(nèi)部腳本在運(yùn)行時通過自我修復(fù)進(jìn)行自我修復(fù)。

自愈功能具有以下特點(diǎn):

  • 在執(zhí)行過程中夫嗓,如果某個測試步驟定位器無法被其默認(rèn)定位器值檢測到迟螺,則列表中的其他定位器策略將自動應(yīng)用,無需測試人員的任何手動干預(yù)舍咖。執(zhí)行將繼續(xù)矩父,就好像沒有發(fā)生任何故障一樣。
  • 在執(zhí)行過程中排霉,如果測試步驟定位器失敗并且無法使用任何其他定位器策略自動檢測到窍株,測試將暫停執(zhí)行,允許用戶選擇相關(guān)元素并繼續(xù)執(zhí)行。新的定位器策略將在下次執(zhí)行時自動更新球订。

下圖介紹了自愈技術(shù)的主要步驟:

Self-Healing Process

自動化測試自愈技術(shù)的優(yōu)勢主要有:

  • 減少測試失敗率

    測試執(zhí)行失敗很正常后裸,但是有時候失敗的根本原因僅僅是由于用戶界面發(fā)生了變化而測試腳本沒有同步變化。使用自愈技術(shù)后冒滩,由于無法正確識別的對象位置而影響腳本執(zhí)行失敗的情況就不太可能發(fā)生微驶。而傳統(tǒng)的自動化框架無法識別這些變化并自動更新。

  • 防止測試不穩(wěn)定

    如果我們測試過程中有flaky tests存在的話开睡,我們很難確定我們的測試是否是穩(wěn)定的因苹。”Nosuchelementexception“ 錯誤是導(dǎo)致測試設(shè)計不穩(wěn)定的幾個錯誤之一士八,測試團(tuán)隊(duì)很難完全控制這樣的現(xiàn)象發(fā)生容燕。當(dāng)我們的測試設(shè)計和應(yīng)用程序保持一致時,測試在執(zhí)行期間失敗的可能性較小婚度,并且執(zhí)行流程也更加流暢蘸秘。

  • 提高腳本維護(hù)性

    測試代碼中的更改與開發(fā)人員在應(yīng)用程序中所做的更改成正比。由于根本原因可能會發(fā)生變化并且不能反映 AUT 的真實(shí)狀態(tài)和性能蝗茁,因此失敗的測試結(jié)果會限制測試人員獲得有關(guān)其測試的有意義的見解醋虏。通過識別和更新用戶界面中的任何更改的測試用例,自愈技術(shù)節(jié)省了敏捷測試和開發(fā)團(tuán)隊(duì)的時間和精力哮翘。除了時間和精力之外颈嚼,測試自動化中的自我修復(fù)也顯著降低了測試維護(hù)成本。

3. 業(yè)內(nèi)實(shí)踐

我們可以看到饭寺,業(yè)內(nèi)已經(jīng)有一些比較好的實(shí)踐了阻课,比如Healenium項(xiàng)目。

以Healenium項(xiàng)目為例艰匙,看看自動化測試自愈技術(shù)是怎么工作的:

假設(shè)我們通過id 的方式來定位我們應(yīng)用程序界面上的一個按鈕限煞,定位器應(yīng)該是:#button

從上圖可以看到,元素可以被正確定位到员凝。Healnium會將正確的定位器保存下來署驻,作為下一次測試執(zhí)行的基準(zhǔn)值。

現(xiàn)在健霹,我們假設(shè)開發(fā)人員變更了應(yīng)用程序的UI界面旺上,改變了這個按鈕的id屬性,從#button變更為 #green_button糖埋。但是由于某種原因宣吱,測試團(tuán)隊(duì)沒有被通知到有這個變更,所以測試腳本也沒有更新瞳别。那么當(dāng)我們再次執(zhí)行腳本的時候凌节,在嘗試使用#button的舊定位器去定位按鈕的時候钦听,腳本就會報錯洒试,提示 “NoSuchElement”的錯誤異常倍奢。

在這種情況下,使用標(biāo)準(zhǔn)的 Selenium 實(shí)現(xiàn)測試將失敗垒棋,但使用 Healenium 則不會卒煞。 Healenium 捕獲 NoSuchElement 異常,觸發(fā)機(jī)器學(xué)習(xí)算法叼架,傳遞當(dāng)前頁面狀態(tài)畔裕,獲取之前成功的定位器路徑,比較它們乖订,并生成修復(fù)的定位器列表扮饶。它采用得分最高的定位器并使用該定位器執(zhí)行操作。正如我們看到的元素被成功找到并通過了測試乍构。

測試運(yùn)行后甜无,Healenium 生成報告,其中包含有關(guān)修復(fù)定位器哥遮、屏幕截圖和修復(fù)成功反饋按鈕的所有詳細(xì)信息岂丘。

如果修復(fù)成功,我們可以使用 Healenium Idea 插件更新我們的自動化測試代碼:插件使用修復(fù)定位器尋找修復(fù)和更新測試代碼眠饮。

Healenium 使用一種機(jī)器學(xué)習(xí)算法來分析當(dāng)前網(wǎng)頁的變化:基于權(quán)重的最長公共子序列算法

更多關(guān)于這個項(xiàng)目的詳情奥帘,可以訪問這個項(xiàng)目官網(wǎng):https://healenium.io/

基于權(quán)重的最長公共子序列算法

通過這個案例,我們來對比一下傳統(tǒng)自動化測試方式和基于自愈技術(shù)的自動化測試方式中對象維護(hù)的差異(如下圖所示):

傳統(tǒng)自動化測試方式和基于自愈技術(shù)的自動化測試方式

4. 小結(jié)

以上給大家簡單介紹了自動化測試自愈技術(shù)的背景和實(shí)踐仪召。自動化測試未來的發(fā)展趨勢必然是越來越智能化寨蹋,因此也會有更多的智能技術(shù)應(yīng)用到自動化測試領(lǐng)域,從而提升自動化測試的效率扔茅。

下篇我們會給大家介紹: 自動化測試未來趨勢:(二) AI 機(jī)器學(xué)習(xí)技術(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末已旧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咖摹,更是在濱河造成了極大的恐慌评姨,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萤晴,死亡現(xiàn)場離奇詭異吐句,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)店读,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門嗦枢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屯断,你說我怎么就攤上這事文虏÷屡担” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵氧秘,是天一觀的道長年鸳。 經(jīng)常有香客問我,道長丸相,這世上最難降的妖魔是什么搔确? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮灭忠,結(jié)果婚禮上膳算,老公的妹妹穿的比我還像新娘。我一直安慰自己弛作,他們只是感情好涕蜂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著映琳,像睡著了一般机隙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刊头,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天黍瞧,我揣著相機(jī)與錄音,去河邊找鬼原杂。 笑死印颤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的穿肄。 我是一名探鬼主播年局,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咸产!你這毒婦竟也來了矢否?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤脑溢,失蹤者是張志新(化名)和其女友劉穎僵朗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屑彻,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡验庙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了社牲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粪薛。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖搏恤,靈堂內(nèi)的尸體忽然破棺而出违寿,到底是詐尸還是另有隱情湃交,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布藤巢,位于F島的核電站搞莺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏菌瘪。R本人自食惡果不足惜腮敌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俏扩。 院中可真熱鬧,春花似錦弊添、人聲如沸录淡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫉戚。三九已至,卻和暖如春澈圈,著一層夾襖步出監(jiān)牢的瞬間彬檀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工瞬女, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窍帝,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓诽偷,卻偏偏與公主長得像坤学,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子报慕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容