一種基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法
【專利摘要】本發(fā)明公開了一種基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法,其步驟包含:記錄用戶對(duì)某移動(dòng)應(yīng)用的一次執(zhí)行蹤跡;分析該執(zhí)行蹤跡,并確定若干個(gè)停止點(diǎn);重放應(yīng)用的執(zhí)行蹤跡,直至某個(gè)停止點(diǎn);從停止點(diǎn)開始,執(zhí)行自動(dòng)化測(cè)試方法。本發(fā)明利用少量的用戶執(zhí)行蹤跡信息引導(dǎo)自動(dòng)化測(cè)試過程,以一種簡(jiǎn)單可行的方式彌補(bǔ)了自動(dòng)化方法難以處理復(fù)雜交互的不足,大大增強(qiáng)了代碼的覆蓋率,從而提高了測(cè)試效率和質(zhì)量。
【專利說明】一種基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及移動(dòng)應(yīng)用測(cè)試領(lǐng)域,具體涉及的是一種基于用戶執(zhí)行蹤跡重放的測(cè)試 方法。
【背景技術(shù)】
[0002] 目前針對(duì)移動(dòng)應(yīng)用的測(cè)試方法主要包括兩大類:人工測(cè)試和自動(dòng)測(cè)試。人工測(cè)試 完全借助于人力產(chǎn)生各種類型的測(cè)試用例。它雖然可以借助人的力量獲得有價(jià)值的測(cè)試用 例,達(dá)到更好的測(cè)試效果。但是長(zhǎng)時(shí)間的測(cè)試會(huì)讓測(cè)試人員感到枯燥無聊,容易出錯(cuò)。自動(dòng) 化測(cè)試大致可以分為Monkey工具和基于模型的測(cè)試方法。Monkey是Android系統(tǒng)自帶的 工具,用以隨機(jī)產(chǎn)生輸入事件。該工具無法滿足生成大量有效測(cè)試用例的需求。而基于模 型的方法通過構(gòu)建相關(guān)模型,有序地遍歷簡(jiǎn)單交互能夠到達(dá)的各個(gè)界面,提升了測(cè)試 效果和效率。但由于移動(dòng)應(yīng)用中的GUI事件夾雜大量復(fù)雜交互,基于模型的自動(dòng)化方法遇 到了自身不可逾越的障礙。
【發(fā)明內(nèi)容】
[0003] 針對(duì)現(xiàn)有技術(shù)存在的問題,本發(fā)明提供了一種基于用戶執(zhí)行蹤跡重放的測(cè)試方 法,能夠彌補(bǔ)全自動(dòng)方法的不足,利用少量的用戶信息,處理自動(dòng)化方法不能解決的復(fù)雜交 互問題,增強(qiáng)代碼的覆蓋率,從而提高測(cè)試效率和質(zhì)量。
[0004] 本發(fā)明的技術(shù)解決方案是:一種基于用戶執(zhí)行蹤跡重放的測(cè)試方法,其步驟為:
[0005] 步驟一:用戶執(zhí)行蹤跡記錄;
[0006] 步驟二:停止點(diǎn)識(shí)別;
[0007] 步驟三:重放引擎;
[0008] 步驟四:自動(dòng)化測(cè)試引擎。
[0009] 步驟一中,所述用戶執(zhí)行蹤跡記錄是指記錄用戶對(duì)移動(dòng)應(yīng)用的一次執(zhí)行蹤跡。所 述事件記錄部分的主要功能是記錄移動(dòng)設(shè)備的各種傳感器輸入事件序列;
[0010] 所述用戶是指有一定移動(dòng)設(shè)備使用經(jīng)驗(yàn)的人群,此類用戶可以沒有移動(dòng)平臺(tái)甚至 普通程序開發(fā)經(jīng)驗(yàn);在用戶使用移動(dòng)設(shè)備的過程中,所有的交互都是用戶與傳感器之間完 成,此類交互事件最終都匯集到移動(dòng)設(shè)備系統(tǒng)輸入處理單元;
[0011] 所述記錄是指深入到移動(dòng)設(shè)備輸入處理單元,將其中的所有事件序列保存為用戶 執(zhí)行蹤跡;
[0012] 所述移動(dòng)應(yīng)用是指運(yùn)行在移動(dòng)設(shè)備上、能夠完成各種任務(wù)的程序,一般利用了移 動(dòng)設(shè)備的多種傳感器來完成復(fù)雜交互;
[0013] 所述移動(dòng)設(shè)備是指口袋大小、一般搭載智能操作系統(tǒng)、能夠幫助用戶完成多種多 樣任務(wù)的便攜式計(jì)算設(shè)備,所述的移動(dòng)設(shè)備典型例子包括智能手機(jī)和平板電腦;
[0014] 所述執(zhí)行蹤跡是指用戶在無任何提示信息的情況下,日常使用移動(dòng)應(yīng)用所產(chǎn)生的 操作輸入事件序列,是按照事件發(fā)生時(shí)間順序排列。
[0015] 步驟二中,所述停止點(diǎn)識(shí)別是分析執(zhí)行蹤跡,并確定若干個(gè)停止點(diǎn)。所述停止點(diǎn)識(shí) 別部分的主要功能是根據(jù)給定原則識(shí)別出輸入事件序列中若干個(gè)應(yīng)用應(yīng)該停止的點(diǎn)。
[0016] 所述停止點(diǎn)是指用戶執(zhí)行蹤跡重放時(shí)的停止位置;所述停止位置是用戶執(zhí)行蹤跡 中的某個(gè)事件;在按照事件時(shí)間順序排列的用戶執(zhí)行蹤跡的基礎(chǔ)上,停止點(diǎn)的確定原則為: 執(zhí)行用戶執(zhí)行蹤跡中某一事件后,某個(gè)新的GUI界面產(chǎn)生,此事件即為停止點(diǎn);執(zhí)行用戶執(zhí) 行蹤跡中某一事件后,某個(gè)含有大量元素的界面動(dòng)態(tài)生成,此事件即為停止點(diǎn);比較用 戶執(zhí)行蹤跡中相鄰兩個(gè)事件的時(shí)間間隔,間隔超過某閾值,此間隔的前事件即為停止點(diǎn);所 述停止點(diǎn)可由上述部分或全部原則識(shí)別生成。所述閾值是指若干個(gè)顯著較大的時(shí)間間隔的 最小值。
[0017] 步驟三中,所述重放引擎是指重放應(yīng)用的執(zhí)行蹤跡,直至某個(gè)停止點(diǎn);具體是指向 移動(dòng)設(shè)備寫入收集的用戶執(zhí)行蹤跡的部分事件序列,其包含:?jiǎn)?dòng)應(yīng)用程序、將用戶執(zhí)行蹤 跡包含的事件寫入移動(dòng)設(shè)備系統(tǒng)輸入處理單元以達(dá)到用戶重新操作一遍應(yīng)用的效果、在上 一步確定的某個(gè)停止點(diǎn)停止寫入;所述輸入事件是指移動(dòng)設(shè)備接受到的所有傳感器輸入信 息,包含事件時(shí)間、事件源和事件參數(shù)信息;所述事件參數(shù)信息包括事件類型、代碼和值。
[0018] 步驟四中,所述自動(dòng)化測(cè)試方法是指可以用于移動(dòng)應(yīng)用全自動(dòng)化測(cè)試的若干方 法;在本發(fā)明中,特指隨機(jī)方法和深度優(yōu)先搜索方法,可以是已有的或者測(cè)試人員自己提出 的方法,它們一般都包含如下三步:首先,獲取應(yīng)用在運(yùn)行時(shí)刻的⑶I動(dòng)態(tài)布局信息,包括 各種GUI元素;然后,在得到的GUI元素信息基礎(chǔ)上,根據(jù)自動(dòng)化策略決定下一個(gè)輸入動(dòng)作; 這里所述的自動(dòng)化策略可以是隨機(jī)選擇或者是深度優(yōu)先搜索;最后將輸入動(dòng)作發(fā)送到移動(dòng) 設(shè)備并執(zhí)行。
[0019] 本發(fā)明與現(xiàn)有技術(shù)相比,其優(yōu)點(diǎn)在于:本發(fā)明將人工測(cè)試方法與自動(dòng)化測(cè)試方法 相結(jié)合,發(fā)揮了人工方法善于通過復(fù)雜交互探索程序框架的優(yōu)勢(shì)和自動(dòng)化方法長(zhǎng)于對(duì)特定 位置所有狀態(tài)遍歷的特點(diǎn),大大增強(qiáng)了代碼的覆蓋率,從而提高了測(cè)試效率和質(zhì)量;從人工 參與的成本上看,本發(fā)明僅僅需要收集少量的用戶執(zhí)行蹤跡,一般需要不超過10分鐘的用 戶參與。
【專利附圖】
【附圖說明】
[0020] 圖1為本發(fā)明工作原理圖一;
[0021] 圖2為本發(fā)明工作原理圖二;
[0022] 圖3為本發(fā)明工作原理圖三;
[0023] 圖4為本發(fā)明工作流程圖;
[0024] 圖5為本發(fā)明用戶執(zhí)行蹤跡示意圖。
【具體實(shí)施方式】
[0025] 以下結(jié)合附圖,通過具體實(shí)施例對(duì)本發(fā)明技術(shù)方案做進(jìn)一步的說明。
[0026] 如圖1、圖2、圖3所示,圖1為本發(fā)明工作原理圖一;圖2為本發(fā)明工作原理圖 二;圖3為本發(fā)明工作原理圖三;圖中樹狀表示需要測(cè)試應(yīng)用的狀態(tài)空間;圓圈代表程序狀 態(tài);邊代表各種交互,包括點(diǎn)擊按鈕、繪制解鎖圖案等。圖1表示收集的一次用戶執(zhí)行,圖中 101-106代表一次用戶執(zhí)行蹤跡;陰影部分107表示用戶執(zhí)行覆蓋了五個(gè)點(diǎn);圖2是純自動(dòng) 化方法的情況,受限于虛線110表示的復(fù)雜交互,自動(dòng)化方法大概只能遍歷到一半的點(diǎn),如 陰影部分111所示;本發(fā)明收集了用戶執(zhí)行蹤跡101-106,然后識(shí)別出用戶執(zhí)行蹤跡中兩個(gè) 事件為停止點(diǎn),如圖3的同心圓所示,從這兩個(gè)點(diǎn)開始的自動(dòng)化測(cè)試過程覆蓋了圖中的所 有點(diǎn),即陰影部分121和122,所以,本發(fā)明能夠大大提高測(cè)試代碼覆蓋率。
[0027] 如圖4、圖5所示,圖4為本發(fā)明工作流程圖;圖5為本發(fā)明用戶執(zhí)行蹤跡示意圖; 本實(shí)施例以流行的Android系統(tǒng)為例進(jìn)行介紹。該基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試 方法包含事件記錄、停止點(diǎn)識(shí)別、重放引擎、測(cè)試引擎和移動(dòng)測(cè)試框架五大部分。各部分完 成以下四步:
[0028] 步驟一:記錄用戶執(zhí)行蹤跡。如圖4左側(cè)部分所示,用戶在使用移動(dòng)設(shè)備過程中, 所有對(duì)傳感器的操作事件都寫入/dev/input/event*(210)中。本步驟讀取寫入到/dev/ input/event*中的所有事件,組成用戶執(zhí)行蹤跡211。圖5是記錄下的兩次"按下-松開"時(shí) 屏幕的用戶執(zhí)行蹤跡,每一行代表一個(gè)事件,從左往右分別為事件的時(shí)間、事件源(設(shè)備) 和事件參數(shù),事件參數(shù)包括類型、代碼和值,圖5中所述的所有事件都是按照時(shí)間戳進(jìn)行排 序。
[0029] 用戶執(zhí)行蹤跡是指用戶在操作移動(dòng)設(shè)備的過程中,移動(dòng)設(shè)備所有傳感器的輸入事 件序列。在用戶使用移動(dòng)設(shè)備的過程中,所有的交互都是用戶與傳感器之間完成。此類交 互事件最終都匯集到移動(dòng)設(shè)備系統(tǒng)輸入處理單元。所述記錄是指深入到移動(dòng)設(shè)備輸入處理 單元,將其中的所有事件序列保存為用戶執(zhí)行蹤跡。
[0030] 步驟二:識(shí)別停止點(diǎn)。所述停止點(diǎn)是指下一步重放時(shí)的停止位置,它具體是指上述 獲得的用戶執(zhí)行蹤跡中的某個(gè)事件。在按照事件時(shí)間順序排列的用戶執(zhí)行蹤跡的基礎(chǔ)上, 停止點(diǎn)按照如下三個(gè)原則確定:
[0031] 執(zhí)行用戶執(zhí)行蹤跡中某一事件后,某個(gè)新的⑶I界面產(chǎn)生,此事件可能成為停止 點(diǎn),例如圖5中第二個(gè)"按下-松開"動(dòng)作完成之后,移動(dòng)設(shè)備出現(xiàn)新的屏幕,第14個(gè)事件 即為停止點(diǎn)。
[0032] 執(zhí)行用戶執(zhí)行蹤跡中某一事件后,某個(gè)含有大量元素的界面動(dòng)態(tài)生成,此事 件可能成為停止點(diǎn),例如在第一次"按下-松開"動(dòng)作完成之后,大量動(dòng)態(tài)元素出現(xiàn)在 屏幕,第7個(gè)事件即為停止點(diǎn)。
[0033] 比較用戶執(zhí)行蹤跡中相鄰兩個(gè)事件的時(shí)間間隔,間隔越大,此間隔的前事件越可 能成為停止點(diǎn),例如,計(jì)算圖5任何兩個(gè)連續(xù)事件之間事件間隔,第7個(gè)到第8個(gè)和第14個(gè) 到第15個(gè)事件間隔較大,所以,第7個(gè)事件和第14個(gè)事件都可能是停止點(diǎn)。
[0034] 所述停止點(diǎn)識(shí)別(212)可由上述部分或全部原則生成。
[0035] 步驟三:重放應(yīng)用執(zhí)行蹤跡,直至某個(gè)停止點(diǎn)(213)。具體來說包括如下幾步:
[0036] 將用戶執(zhí)行蹤跡和所有的停止點(diǎn)發(fā)送給移動(dòng)設(shè)備。
[0037]啟動(dòng)移動(dòng)設(shè)備,然后將收到的用戶執(zhí)行蹤跡中的事件按照時(shí)間順序?qū)懭?dev/ input/event* (移動(dòng)設(shè)備系統(tǒng)輸入處理單元210),以達(dá)到用戶重新操作移動(dòng)設(shè)備的效果, 此步驟的移動(dòng)設(shè)備需獲得ROOT權(quán)限,此外,各個(gè)事件寫入的間隔應(yīng)該與記錄時(shí)的間隔一 致。
[0038] 到達(dá)某個(gè)停止點(diǎn)時(shí),停止事件的重放,并將該停止點(diǎn)從停止點(diǎn)列表中刪除。
[0039] 上述所述重放過程在步驟四完成之后,繼續(xù)重復(fù)執(zhí)行,直至停止點(diǎn)列表為空。
[0040] 步驟四,從停止點(diǎn)開始,執(zhí)行自動(dòng)化測(cè)試方法(214)。所述自動(dòng)化測(cè)試方法可以是 已有的或者測(cè)試人員自己提出的方法,它們一般都包含如下三步:首先獲取應(yīng)用在運(yùn)行時(shí) 亥IJ的GUI動(dòng)態(tài)布局信息,包括各種GUI元素;然后在得到的GUI元素信息基礎(chǔ)上,根據(jù)自動(dòng) 化策略決定下一個(gè)輸入動(dòng)作,所述的自動(dòng)化策略可以是隨機(jī)選擇或者是深度優(yōu)先搜索;最 后將輸入動(dòng)作發(fā)送到移動(dòng)設(shè)備并執(zhí)行。
[0041] 典型的自動(dòng)化測(cè)試過程包括隨機(jī)算法RND和深度優(yōu)先搜索算法DFS ;隨機(jī)算法在 自動(dòng)化決策時(shí)從所有可選動(dòng)作中隨機(jī)選擇下一個(gè)動(dòng)作,而深度優(yōu)先算法會(huì)按照?qǐng)D遍歷算法 中深度優(yōu)先的方式訪問模型中的所有點(diǎn)和邊。
[0042] 雖然本發(fā)明已以較佳實(shí)施例公開如上,但它們并不是用來限定本發(fā)明,任何熟習(xí) 此技藝者,在不脫離本發(fā)明之精神和范圍內(nèi),自當(dāng)可作各種變化或潤(rùn)飾,但同樣在本發(fā)明的 保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 一種基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法,其特征在于,步驟為: 步驟一、用戶執(zhí)行蹤跡記錄; 步驟二、停止點(diǎn)識(shí)別; 步驟三、重放引擎; 步驟四、自動(dòng)化測(cè)試引擎。
2. 根據(jù)權(quán)利要求1所述的基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法,其特征在于: 所述用戶執(zhí)行蹤跡記錄是指記錄用戶對(duì)移動(dòng)應(yīng)用的一次執(zhí)行蹤跡,指記錄移動(dòng)設(shè)備的 各種傳感器輸入事件序列; 所述停止點(diǎn)識(shí)別是分析執(zhí)行蹤跡,并確定若干個(gè)停止點(diǎn),指根據(jù)給定原則識(shí)別出輸入 事件序列中若干個(gè)停止點(diǎn); 所述重放引擎是指重放應(yīng)用的執(zhí)行蹤跡,直至某個(gè)停止點(diǎn),指將記錄的部分輸入事件 序列重新寫入移動(dòng)設(shè)備; 所述自動(dòng)化測(cè)試引擎是指,從停止點(diǎn)開始,執(zhí)行自動(dòng)化測(cè)試方法,完成移動(dòng)設(shè)備的自動(dòng) 化測(cè)試過程。
3. 根據(jù)權(quán)利要求2所述的基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法,其特征在于: 步驟一中,用戶在使用移動(dòng)設(shè)備過程中,所有對(duì)傳感器的操作都是事件,所有輸入事件 組成用戶執(zhí)行蹤跡; 步驟二中,停止點(diǎn)是指下一步重放時(shí)的停止位置,具體是指步驟一中獲得的用戶執(zhí)行 蹤跡中的某個(gè)事件,在按照事件發(fā)生時(shí)間順序排列的用戶執(zhí)行蹤跡的基礎(chǔ)上,停止點(diǎn)確定 的原則:執(zhí)行用戶執(zhí)行蹤跡中某一事件后,某個(gè)新的界面產(chǎn)生,此事件可能成為停止 點(diǎn);執(zhí)行用戶執(zhí)行蹤跡中某一事件后,某個(gè)含有大量元素的界面動(dòng)態(tài)生成,此事件可能 成為停止點(diǎn);比較用戶執(zhí)行蹤跡中相鄰兩個(gè)事件的時(shí)間間隔,間隔越大,此間隔的前事件越 可能成為停止點(diǎn);所述停止點(diǎn)識(shí)別可由上述部分或全部原則生成; 步驟三中,具體為:將用戶執(zhí)行蹤跡和所有的停止點(diǎn)發(fā)送給移動(dòng)設(shè)備;啟動(dòng)移動(dòng)設(shè)備, 然后將收到用戶執(zhí)行蹤跡中的事件按照時(shí)間順序?qū)懭胍苿?dòng)設(shè)備系統(tǒng)輸入處理單元,以達(dá)到 用戶重新操作移動(dòng)設(shè)備的效果,此時(shí)移動(dòng)設(shè)備需獲得ROOT權(quán)限,各個(gè)事件寫入的間隔應(yīng) 該與記錄時(shí)的間隔一致;到達(dá)某個(gè)停止點(diǎn)時(shí)停止事件的重放,并將該停止點(diǎn)從停止點(diǎn)列表 中刪除,進(jìn)入步驟四;所述重放過程在步驟四完成之后,繼續(xù)重復(fù)執(zhí)行,直至停止點(diǎn)列表為 空; 步驟四中,獲取應(yīng)用在運(yùn)行時(shí)刻的GUI動(dòng)態(tài)布局信息,包括各種GUI元素;在得到的 GUI元素信息基礎(chǔ)上,根據(jù)自動(dòng)化策略決定下一個(gè)輸入動(dòng)作,所述的自動(dòng)化策略可以是隨機(jī) 選擇或者是深度優(yōu)先搜索;將輸入動(dòng)作發(fā)送到移動(dòng)設(shè)備并執(zhí)行,如此重復(fù),直至完成自動(dòng)化 測(cè)試任務(wù)。
4. 根據(jù)權(quán)利要求2或3所述的基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法,其特征在 于: 所述用戶是指有一定移動(dòng)設(shè)備使用經(jīng)驗(yàn)的人群; 所述移動(dòng)應(yīng)用是指運(yùn)行在移動(dòng)設(shè)備上、能夠完成各種任務(wù)的程序,一般利用了移動(dòng)設(shè) 備的多種傳感器來完成復(fù)雜交互; 所述記錄是指深入到移動(dòng)設(shè)備輸入處理單元,將其中的所有事件序列保存為用戶執(zhí)行 蹤跡; 所述執(zhí)行蹤跡是指用戶在無任何提示信息的情況下,日常使用移動(dòng)應(yīng)用所產(chǎn)生的操作 輸入事件序列; 所述記錄執(zhí)行蹤跡是指收集用戶操作移動(dòng)設(shè)備時(shí)產(chǎn)生的輸入事件序列; 所述停止點(diǎn)是指用戶執(zhí)行蹤跡重放時(shí)的停止位置; 所述停止位置是用戶執(zhí)行蹤跡中的某個(gè)事件; 所述重放是指向移動(dòng)設(shè)備寫入收集的用戶執(zhí)行蹤跡的部分事件序列; 所述自動(dòng)化測(cè)試方法是指可以用于移動(dòng)應(yīng)用全自動(dòng)化測(cè)試的若干方法。
5. 根據(jù)權(quán)利要求4所述的基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法,其特征在于: 所述移動(dòng)設(shè)備是指口袋大小、一般搭載智能操作系統(tǒng)、能夠幫助用戶完成多種多樣任 務(wù)的便攜式計(jì)算設(shè)備,包括智能手機(jī)和平板電腦; 所述輸入事件是指移動(dòng)設(shè)備接受到的所有傳感器輸入信息,包含事件時(shí)間、事件源和 事件參數(shù)信息; 所述輸入事件是指移動(dòng)設(shè)備接受到的所有傳感器輸入信息; 所述事件包含事件時(shí)間、事件源和事件參數(shù)信息; 所述事件參數(shù)包括事件類型、代碼和值。
6. 根據(jù)權(quán)利要求3所述的基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法,其特征在于: 步驟二中,比較用戶執(zhí)行蹤跡中相鄰兩個(gè)事件的時(shí)間間隔,間隔超過某閾值,此間隔的前事 件即為停止點(diǎn)。
7. 根據(jù)權(quán)利要求3所述的基于用戶執(zhí)行蹤跡重放的移動(dòng)應(yīng)用測(cè)試方法,其特征在于: 所述閾值是指若干個(gè)顯著較大的時(shí)間間隔的最小值。
8. 如權(quán)利要求3所述的重放步驟,其特征在于,根據(jù)事件時(shí)間信息,精確地控制寫入時(shí) 間間隔,完成用戶執(zhí)行蹤跡的準(zhǔn)確重放。
【文檔編號(hào)】G06F11/36GK104156308SQ201410364808
【公開日】2014年11月19日 申請(qǐng)日期:2014年7月29日 優(yōu)先權(quán)日:2014年7月29日
【發(fā)明者】馬曉星, 許暢, 呂建, 李秀江, 蔣炎巖 申請(qǐng)人:南京大學(xué)