[發明專利]一種基于上下文的移動應用執行序列約減方法在審
| 申請號: | 202111495962.5 | 申請日: | 2021-12-09 |
| 公開(公告)號: | CN114138662A | 公開(公告)日: | 2022-03-04 |
| 發明(設計)人: | 馮洋;郝蕊;周孟博;陳偉;黃澴 | 申請(專利權)人: | 南京慕測信息科技有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 210023 江蘇省南京市*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 上下文 移動 應用 執行 序列 方法 | ||
1.一種基于上下文的移動應用執行序列約減方法,其特征在于,針對安卓應用出現異常或報錯的執行序列,首先,使用靜態分析技術,通過soot插樁生成可輸出log的應用程序,通過數據流分析提取日志信息與原始執行序列進行匹配,用UI的變化特征輔助構建過濾無用事件的reduce算法,對執行序列進行第一步的過濾,在此基礎上應用程序切片技術,實現切片依賴關系的提取,對crash相應序列進行切片分析,從而生成必要事件的序列,在第二步縮減的生成樹算法的基礎上,利用必要事件去優化縮減序列的長度和順序,最終生成最小執行序列;該方法包括下列步驟:
1)soot插樁,對應用程序進行靜態分析,指定特定的主包來消除一些其他類的方法調用的影響,對于所有的方法調用行InvokeStmt,在代碼行中添加log語句,其中tag為output,value包含java資源行號Java source line number、類名、方法名、Jimple的語句表示,若為方法回調則添加CALLBACK字段,插樁之后使用cmd命令自動簽名應用程序;
本步驟的目的是在應用程序內添加輸出語句,保存該方法的基本信息和方法間的依賴信息,為后續的第一步過濾提供數據支持,使得運行執行序列的時候完成與序列的對應關系,無用事件即在執行序列的運行中不會對最后異常的狀態產生影響的事件,通過數據流的分析對無用事件的判定產生幫助;
2)序列過濾,在插樁后的應用程序上運行原始的執行序列,通過線程抓取日志信息,與執行序列同步輸出,若事件后跟隨沒有方法調用,且執行事件前后頁面的xml信息未變化,則判定為無用事件,從而判定執行序列包含哪些無用事件,保存數據usefulScripts,對無用事件進行過濾,生成新的scripts日志和execute日志,在應用程序上對新序列進行執行,若可以重現crash則表明第一步過濾成功;
3)程序切片,對程序進行soot插樁之后,收集運行時產生的具有特定標簽的日志信息,構建一個有效的PDG(程序依賴圖),該圖的構建需要執行一個運行后的按需靜態分析,將范圍縮小到只在運行期間執行過的應用程序部分,然后根據crash信息找到導致crash產生的程序語句,將該語句的執行日志作為切片標準,之后分析應用程序的日志信息并根據切片標準來生成特定的執行PDG,PDG是通過向后探索依賴關系,逐步添加節點和邊逐步構建的,其中PDG的依賴包括四個部分:同步和異步數據依賴、同步和異步控制依賴,最后根據腳本事件和PDG中的執行語句日志的對應關系來獲取對產生crash有影響的腳本序列;
4)生成樹約減,該步驟使用的是HDD算法(Hierarchical Delta Debugging),使用該算法之前需要根據GUI信息來構成GUI狀態層次樹,該樹使用GUI狀態的層次關系來表示它們對應的事件的層次關系,其中,節點由當前的GUI狀態和需要執行的事件構成,邊則表示兩個GUI狀態之間的父子關系,之后使用HDD算法對層次樹進行約減,每一次約減之后執行約減的事件序列,根據是否產生crash來進行下一步約減,算法約減完畢后獲取最終的事件序列。
2.根據權利要求1所述的基于上下文的移動應用執行序列約減方法,其特征在于,在步驟1)中,進行soot插樁;對原始應用程序進行靜態分析,獲取Body里所有的units,一個Body對應Java里一個方法的方法體,Unit代表里面的語句,將Unit強制轉換為Stmt,Stmt為Jimple里每條語句的表示,針對每個語句行,獲取android.util.Log類,構建toastUnits,在語句后插入Toast消息。
3.根據權利要求1所述的基于上下文的移動應用執行序列約減方法,其特征在于,在步驟2)中,進行序列過濾;通過PrintStream創建日志輸入流,啟動執行序列并實時輸出到日志中,同時創建抓取logcat的線程,兩者使用同一個PrintStream,生成輸出日志,根據事件行與方法調用行之間的關系判定是否觸發方法調用,用數組記錄事件的名稱,同時記錄每次事件前后頁面xml信息的變化,對于xml未產生變化且未產生方法調用的事件,在原始序列中進行過濾。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京慕測信息科技有限公司,未經南京慕測信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202111495962.5/1.html,轉載請聲明來源鉆瓜專利網。





