基于人工智能的用例生成方法研究(Web)

【目標(biāo)】:讓機(jī)器像人一樣去測試未知的web頁面。(這里變換一下思路治筒,其實(shí)是研究基于人工智能的用例生成系統(tǒng))

【涉及到的問題】:驅(qū)動機(jī)器去測試的一些列動作邏輯從何而來屉栓?每個動作所攜帶的數(shù)據(jù)入口在哪兒?

【涉及到的難點(diǎn)】:如何讓機(jī)器像人一樣去理解新頁面耸袜,如何讓機(jī)器使用動作邏輯+數(shù)據(jù)對頁面進(jìn)行測試友多?斷言該怎么引入?

【探索的方向】:????1.? ? 基于前端埋點(diǎn)的數(shù)據(jù)大量收集整理???? 2. 模型驅(qū)動方法? ? 3.監(jiān)督學(xué)習(xí)下的圖像識別分析方法 ...(如有不同見解請留下寶貴意見)


下面結(jié)合問題堤框、難點(diǎn)對探索方向做進(jìn)一步的分析:

埋點(diǎn)+大數(shù)據(jù)歸類分析

該方法的大前提是在線上環(huán)境的源碼中“插樁”域滥,植入一段js,將用戶操作時的一系列動作軌跡和結(jié)果信息保存下來蜈抓,回傳給數(shù)據(jù)庫启绰,這樣做最終問題留給了數(shù)據(jù)分析,期望從一堆雜亂的數(shù)據(jù)中去抽取大概率的路徑覆蓋沟使,這樣做的結(jié)果會有3方面問題:

1.? ? 源碼插樁委可,開發(fā)會考慮性能問題;屬于強(qiáng)行介入式的,簡單粗暴着倾;不易達(dá)成共識拾酝;

2.? ? 用戶尚若發(fā)現(xiàn)自己的操作持續(xù)被窺探中,后果將不堪設(shè)想卡者;信息外泄事情就更大了蒿囤;因此這個方案看似簡單,實(shí)則考慮甚廣崇决;

3.? ? 一堆雜亂的使用數(shù)據(jù)沒有先后順序材诽,諸如先干啥后干啥此類信息不明;全為并列關(guān)系恒傻;

4.? ? 最核心的問題來了脸侥,即使是大量用戶使用也無法做到功能的全覆蓋,換句話說碌冶,用戶只是使用了自己認(rèn)為最常用的那些功能湿痢,而沒用到的功能或者沒有走過的路徑不敢保證其沒有問題;漏測扑庞。

模型驅(qū)動

模型的目的就是用來為構(gòu)造測試用例而進(jìn)行的被測系統(tǒng)描述譬重。一個測試模型可以由箭頭和節(jié)點(diǎn)組成如下圖所示:

一個箭頭,代表了一次測試動作罐氨;一個節(jié)點(diǎn)臀规,代表一次測試驗(yàn)證

Start頂點(diǎn):? ? start頂點(diǎn)不是必需的。如果使用栅隐,則必須有1個(且只有1個)頂點(diǎn)名稱為:start.

從start頂點(diǎn)出發(fā)只能有1個邊塔嬉。start頂點(diǎn)不會包括在任何生成的測試路徑中,它只表示一個開始位租悄。

頂點(diǎn)或邊的名字(name):? ? 名稱是第一個單詞谨究,位于標(biāo)簽中邊或頂點(diǎn)的第一行。

標(biāo)簽(Lable):? ? 標(biāo)簽是點(diǎn)或邊上的所有文字描述泣棋。

守衛(wèi)(Guards)僅用于Edge:? ? 守衛(wèi)guard是一種只與邊相關(guān)的機(jī)制胶哲。他們的角色與if語句相同,并且使邊有資格或者沒有資格被訪問潭辈。守衛(wèi)guard是一個用方括號括起來的JavaScript條件表達(dá)式只有一個鸯屿。[loggedIn == true]上面意味著如果屬性loggedIn等于true,則邊是可訪問的把敢。

操作(Action)僅用于Edge:? ? 動作是僅與邊相關(guān)聯(lián)的機(jī)制寄摆。這是我們要在模型中執(zhí)行的JavaScript代碼。它放在正斜杠之后修赞。Action可以有多個婶恼,每個語句必須以分號結(jié)尾。/loggedIn=false; rememberMe=true; action是動作代碼,它的執(zhí)行結(jié)果將作為數(shù)據(jù)傳遞給守衛(wèi)勾邦。

路徑生成器:? ??生成器是決定如何遍歷模型的算法联逻。不同的生成器將生成不同的測試序列,并且它們將以不同的方式遍歷模型检痰。多個發(fā)生器可以串聯(lián)。

random( some stop condition(s) )

以完全隨機(jī)的方式瀏覽模型锨推。也稱為“醉漢走路”或“隨機(jī)步行”铅歼。該算法通過隨機(jī)從頂點(diǎn)選擇出邊,并且在下一個頂點(diǎn)時重復(fù)此過程换可。

quick_random( some stop condition(s) )

嘗試運(yùn)行通過模型的最短路徑椎椰,但以快速的方式。這是算法的工作原理:

1.????選擇一個尚未被隨機(jī)訪問的邊沾鳄。

2.????使用Dijkstra算法選擇到該邊緣的最短路徑

3.????走該路徑慨飘,并將所有執(zhí)行的邊標(biāo)記為已訪問。

4.????當(dāng)在步驟1中達(dá)到選定的邊緣時译荞,從頭開始瓤的,重復(fù)步驟1-> 4。

該算法對于非常大的模型工作良好吞歼,并且生成合理的短序列圈膏。缺點(diǎn)是當(dāng)與EFSM結(jié)合使用時。該算法可以選擇被守衛(wèi)block的路徑篙骡。

a_star( a stop condition that names a vertex or an edge )

將生成到特定頂點(diǎn)或邊的最短路徑稽坤。

shortest_all_paths ==> (Not released yet)

將計(jì)算并生成通過模型的最短路徑。每個邊緣的成本設(shè)置為1. 不建議使用此算法糯俗,因?yàn)閷τ谳^大的模型尿褪,并且使用模型(EFSM)中的數(shù)據(jù),將需要相當(dāng)長的時間來計(jì)算得湘。

看起來杖玲,模型驅(qū)動的本事很大,可以從圖像中分析出邊和節(jié)點(diǎn)的關(guān)系忽刽,形成測試路線, 疊加數(shù)據(jù)形成測試用例天揖;但是實(shí)操起來,該中方式依然存在兩個方面的問題:

1.? ? 測試人員不得不去先畫這個測試邏輯+數(shù)據(jù)的關(guān)系圖跪帝,而隨著頁面復(fù)雜度的提高今膊,最終這個圖表也會面臨維護(hù)難度大的問題

2.? ? 畫圖耗費(fèi)了大量的前期人力,而且測試本身沒有測重伞剑,沒有優(yōu)先級斑唬,沒有重點(diǎn),不利于策略模式下的定制化測試;最終的結(jié)果是一種策略恕刘,一副邏輯圖缤谎,重復(fù)造了輪子。

監(jiān)督學(xué)習(xí)下的圖像識別分析方法

為什么使用監(jiān)督學(xué)習(xí)褐着?因?yàn)闄C(jī)器學(xué)習(xí)的能力尚不穩(wěn)定坷澡,沒有結(jié)合已知知識體系自我思考的過程,在學(xué)習(xí)過程中時常會引入不必要的錯誤數(shù)據(jù)(系統(tǒng)誤差數(shù)據(jù))含蓉,因此必須清晰劃定界限給予明確分類標(biāo)準(zhǔn)以減少系統(tǒng)誤差频敛。

使用圖像識別的考慮是在不完全依賴于網(wǎng)站源碼的基礎(chǔ)上,能結(jié)合人工智能馅扣,在N個網(wǎng)頁中學(xué)習(xí)出一套模糊的知識體系斟赚,能用于第N+1個未知網(wǎng)頁的模糊匹配,得出一個概率隊(duì)列差油,根據(jù)設(shè)置的權(quán)重參數(shù)拗军,最后能得出準(zhǔn)確的結(jié)論;由于不同公司的前端開發(fā)風(fēng)格不同蓄喇,因此無法從源碼上直接下手发侵。

該方法面臨的挑戰(zhàn):

1.? ? 思考如何獲取到動作邏輯

2.? ? 動作數(shù)據(jù)從何而來

3.? ? 若以VUE為前端框架寫的站點(diǎn),源碼如何獲裙薄器紧?(思考:FirePath的侵入方式)

先寫到這里,等后面徹底解決上述問題之后再來豐富楼眷,目前暫時只能突破到這里了2簟(歡迎探討)

訓(xùn)練集合測試集
圖像處理,信息分類
數(shù)據(jù)分析舉例
最終得出匹配度最接近的單元

時隔1周罐柳,在之前遺留問題的基礎(chǔ)上重點(diǎn)解決【動作邏輯】和【操作數(shù)據(jù)】問題掌腰,如今有了新的突破,先來看測試實(shí)時日志:

人工智能用例生成系統(tǒng)(功能塊)
人工智能用例生成系統(tǒng)日志(版權(quán)所有张吉,請勿轉(zhuǎn)載)

通過“數(shù)據(jù)字典”和“行為軌跡”的建立齿梁,能夠1.創(chuàng)建出指導(dǎo)機(jī)器行為的一系列“動作”(當(dāng)然,包括先后順序關(guān)系)2.綁定“數(shù)據(jù)”到動作上(例如:一個【輸入】動作肮蛹,攜帶一個【參數(shù)】)

上述問題解決后勺择,系統(tǒng)全覆蓋模擬生成一系列的【測試用例】,交由“回放系統(tǒng)”進(jìn)行回放伦忠,實(shí)時記錄操作日志省核;注意:全程不用人寫測試用例,也不用畫邏輯圖昆码,機(jī)器只負(fù)責(zé)學(xué)習(xí)然后測試气忠。大家可能會問個問題邻储,機(jī)器究竟學(xué)了什么?可以告訴大家旧噪,兩個方面:

1.? ? 學(xué)習(xí)頁面吨娜,機(jī)器自己熟悉新頁面的構(gòu)造(圖像識別)

2.? ? 學(xué)習(xí)過去的自動化用例(大數(shù)據(jù)分析),這里有些許壁壘淘钟,如果沒有特定的用例中間層宦赠,這個大數(shù)據(jù)分析可能得不到想要的東西。至于什么是“特定的用例中間層”米母,請大家翻看我之前的文章【W(wǎng)eb端自動化】所介紹的錄制工具袱瓮;“中間層”由這款錄制工具得來。

接下來做什么爱咬?

準(zhǔn)備使用樸素貝葉斯機(jī)器學(xué)習(xí)對生成的這些用例逐個求一個準(zhǔn)確率,最終衡量一下這套理論的可行性绊起!謝謝大家閱讀精拟,歡迎討論!

附錄:

系統(tǒng)切面圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虱歪,一起剝皮案震驚了整個濱河市蜂绎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌笋鄙,老刑警劉巖师枣,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異萧落,居然都是意外死亡践美,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門找岖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陨倡,“玉大人,你說我怎么就攤上這事许布⌒烁铮” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵蜜唾,是天一觀的道長杂曲。 經(jīng)常有香客問我,道長袁余,這世上最難降的妖魔是什么擎勘? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮泌霍,結(jié)果婚禮上货抄,老公的妹妹穿的比我還像新娘述召。我一直安慰自己,他們只是感情好蟹地,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布积暖。 她就那樣靜靜地躺著,像睡著了一般怪与。 火紅的嫁衣襯著肌膚如雪夺刑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天分别,我揣著相機(jī)與錄音遍愿,去河邊找鬼。 笑死耘斩,一個胖子當(dāng)著我的面吹牛沼填,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播括授,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼坞笙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荚虚?” 一聲冷哼從身側(cè)響起薛夜,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎版述,沒想到半個月后梯澜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渴析,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年晚伙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俭茧。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡撬腾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恢恼,到底是詐尸還是另有隱情民傻,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布场斑,位于F島的核電站漓踢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漏隐。R本人自食惡果不足惜喧半,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望青责。 院中可真熱鬧挺据,春花似錦取具、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至婉称,卻和暖如春块仆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背王暗。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工悔据, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俗壹。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓科汗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绷雏。 傳聞我的和親對象是個殘疾皇子肛捍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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