欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

自動化軟件調測方法及系統(tǒng)的制作方法

文檔序號:6464381閱讀:277來源:國知局
專利名稱:自動化軟件調測方法及系統(tǒng)的制作方法
技術領域
本發(fā)明涉及軟件調測技術,尤其涉及一種能夠自動生成測試用例并通過模 擬器自動恢復執(zhí)行現(xiàn)場進行軟件調測的方法及系統(tǒng)。
背景技術
當開發(fā)人員需要對初步完成的軟件進行自測的時候,往往會根據(jù)用戶使用 系統(tǒng)的步驟, 一步一步地驗證系統(tǒng)是否按預計的方式運行,但這種測試方式比 較繁瑣,特別對于較大的、環(huán)節(jié)步驟較多的軟件系統(tǒng)來說,要發(fā)現(xiàn)和解決一個
缺陷(BUG)往往需要模擬很多次,在時間和精力上造成很大的浪費。
一些比較高級的自測方法可以對函數(shù)構建測試用例,然后通過測試用例對 函數(shù)進行單元測試,然而,這種測試方法往往會因為類成員函數(shù)涉及了多個其 他對象的數(shù)據(jù)而導致構建測試用例十分困難。例如,對于一個在函數(shù)體內部使 用了成員變量以及依賴其他運行對象的函數(shù)來說,在構建該函數(shù)的測試用例時, 不僅僅需要構建輸入?yún)?shù),而且還需要對其中的成員變量、所依賴的運行對象 進行初始化。 一個函數(shù)涉及的變量越多,構建起來會越復雜,需要花費很多時 間和精力。
不僅如此,有時設計測試用例時往往會忽略一些比較隱晦的問題,例如忽 略了某些邊界值、忽略了其他模塊的數(shù)據(jù)對當前測試模塊的影響、忽略了某些 特珠值導致的問題、忽略了網(wǎng)絡狀態(tài)不好的情況等,而當這些問題發(fā)生后使軟 件產(chǎn)生BUG時,開發(fā)人員卻不能即時的將產(chǎn)生BUG的現(xiàn)場保存下來形成一個 測試用例,用于以后對該BUG進行測試,如果要復現(xiàn)這個BUG又非常困難, 給軟件日后的使用造成隱患。此外,當測試用例很多的時候,測試人員對每個 測試用例手工進行測試的效率很低,非常浪費時間的精力。發(fā)明內容有鑒于此,本發(fā)明的目的之一在于提供一種自動化軟件調測方法及系統(tǒng), 以解決人工構建測試用例、人工模擬驗證所帶來的效率低下,自動化程度不高 等技術問題。為實現(xiàn)上述發(fā)明目的,本發(fā)明的主要技術方案為一種自動化軟件調測系統(tǒng),該系統(tǒng)包括程序模塊以及如下模塊消息接口模塊,用于記錄所述程序模塊所執(zhí)行的系統(tǒng)消息及測試數(shù)據(jù),并生成測試用例;用例存儲單元,用于存儲測試用例;模擬器,用于根據(jù)測試用例模擬被調測程序模塊的運行過程并恢復程序的 執(zhí)行現(xiàn)場;所述消息接口模塊將獲取的所述程序模塊所執(zhí)行的系統(tǒng)消息及測試數(shù)據(jù)形 成測試用例后存儲于所述用例存儲單元,所述模擬器讀取存儲在所述用例存儲 單元中的測試用例,自動恢復執(zhí)行現(xiàn)場,并配合調試器對所述程序模塊進行調基于上述方案,當系統(tǒng)包括多個程序模塊時,則所述消息接口模塊置于兩 個程序模塊之間,用于記錄驅動所述程序模塊的系統(tǒng)消息,以及所述程序模塊 之間的交互消息,并生成測試用例存儲于所述用例存儲單元;所述模擬器讀取 存儲在所述用例存儲單元中的測試用例,可分別對所述兩個程序模塊進行執(zhí)行 現(xiàn)場的恢復,并配合調試器所述程序模塊進行調測?;谏鲜龇桨福瑸榱肆私庀到y(tǒng)產(chǎn)生的斷言信息,所述系統(tǒng)還進一步包括斷 言統(tǒng)計接口,用于獲取所述程序模塊產(chǎn)生的斷言的位置及個數(shù)信息。本發(fā)明針對客戶服務器結構的軟件系統(tǒng),提出了如下技術方案所述程序模塊包括客戶端子程序模塊和服務端子程序模塊,分別位于客戶 端和服務端;所述消息接口模塊包括客戶端消息接口模塊及服務端消息接口模 塊,分別位于客戶端和服務端;所述用例存儲單元包括客戶端用例存儲單元及服務端用例存儲單元,分別位于客戶端和服務端;所述模擬器包括客戶端模擬
器及服務端模擬器,分別位于客戶端和服務端;
客戶端網(wǎng)絡接口模塊,用于為所述客戶端子程序模塊提供與服務端進行網(wǎng)
絡消息交互的通訊接口;服務端網(wǎng)絡接口模塊,用于為所述服務端子子程序模 塊提供與客戶端進行網(wǎng)絡消息交互的通訊接口 ;所述客戶端消息接口模塊連接 所述客戶端子程序模塊及所述客戶端網(wǎng)絡接口模塊,獲取與服務端的交互消息 并形成測試用例,存儲在客戶端用例存儲單元中;所述服務端消息接口模塊連 接所述服務端子程序模塊及所述服務端網(wǎng)絡接口模塊,獲取與客戶端的交互消 息并形成測試用例,存儲在服務端用例存儲單元中。
本發(fā)明的另一目的在于提供一種自動化軟件調測方法,為實現(xiàn)該目的,本 發(fā)明釆用了如下的技術方案
一種自動化軟件調測方法,該方法包括以下步驟
A、 記錄驅動程序運行的消息,并將其形成測試用例存儲;
B、 通過調用接口啟動待調測的程序;
C、 讀取所述測試用例,并根據(jù)用戶所選待調測消息位置通過調用接口自 動恢復執(zhí)行現(xiàn)場;
D、 對所述待調測程序進行調測。
基于上述方案,若是對單程序進行測試,則所述消息包括系統(tǒng)消息及測試 數(shù)據(jù);若是對存在消息交互的多個程序中的程序進行測試,則所述消息包括系 統(tǒng)消息及程序之間的交互消息。
基于上述方案,步驟B和步驟C中,所述接口為組件對象模型COM接 口、或普通函數(shù)接口,所述接口由所述程序或所述程序之間附加的消息接口提 供。
基于上述方案,步驟C中所述自動恢復執(zhí)行現(xiàn)場具體包括 Cl、選擇待調測消息位置;
C2、按照所述交互消息及系統(tǒng)消息產(chǎn)生的時間順序,通過模擬接口控制所 述待調測程序自動運行到所述待調測消息位置。基于上述方案,步驟A中還包括使用系統(tǒng)鉤子獲取所述程序產(chǎn)生斷言的 位置及個數(shù)信息。步驟C和步驟D中,還進一步包括獲取所述待調測程序所 產(chǎn)生的斷言的位置及個數(shù)信息,在運行完測試用例后與在步驟A中所獲得的所 述斷言的位置及個數(shù)信息進行比對,判斷對所述待調測程序的修改是否正確?;谏鲜龇桨?,步驟A中,通過系統(tǒng)鉤子獲取在執(zhí)行所述程序某函數(shù)之前 的所有交互消息及系統(tǒng)消息,從而形成所述函數(shù)的測試用例。由于本發(fā)明通過接口自動將程序模塊間的交互消息、程序模塊響應用戶的 系統(tǒng)消息記錄下來形成測試用例,然后通過模擬器讀取測試用例,根據(jù)測試用 例中存儲的交互消息、系統(tǒng)消息模擬程序模塊的運行,執(zhí)行自動的現(xiàn)場恢復, 從而使得開發(fā)測試人員在對測試用例進行重復驗證時省去了手工的重復勞動, 提高了調測的效率。本發(fā)明通過系統(tǒng)鉤子對特定函數(shù)構建測試用例,能夠在自動化的基礎上更 精確的定位程序BUG的位置,縮小調試范圍。本發(fā)明通過系統(tǒng)鉤子在構建測 試用例時和調測時獲取斷言的位置和數(shù)量,從而可以為調測人員提供一個簡單 而直觀的判斷依據(jù)來判別對程序BUG修改的效果。


圖1A為本發(fā)明所述系統(tǒng)的第一具體實施例的系統(tǒng)結構圖;圖1B為本發(fā)明第一具體實施例在調試狀態(tài)下的系統(tǒng)結構圖;圖1C為本發(fā)明第一具體實施例在調測狀態(tài)下另一種系統(tǒng)結構圖;圖2A為本發(fā)明所述系統(tǒng)的第二具體實施例的系統(tǒng)結構圖;圖2B為本發(fā)明第二具體實施例在調試狀態(tài)下的系統(tǒng)結構圖;圖3A為本發(fā)明所述系統(tǒng)的第三具體實施例的系統(tǒng)結構圖;圖3B為本發(fā)明第三具體實施例分別對客戶端子程序模塊及服務端子程序模塊進行調試時系統(tǒng)結構圖;圖3C為本發(fā)明第三具體實施例通過服務端模擬器對客戶端子程序模塊進行調試的系統(tǒng)結構圖;圖4為本發(fā)明所述方法的流程圖。
具體實施方式
下面通過具體實施例和附圖對本發(fā)明做進一步詳細說明。圖1A為本發(fā)明所述系統(tǒng)的第一具體實施例的系統(tǒng)結構圖。第一程序模塊 與第二程序模塊代表具有一定邏輯功能的程序模塊,第一程序模塊與第二程序 模塊在未添加實現(xiàn)自動化調測系統(tǒng)模塊的情況下,直接通過組件對象模型(COM, Component Object Model)接口 、標準網(wǎng)絡通信協(xié)議接口等方式進行 消息交互。為了實現(xiàn)對程序模塊的自動化的調測,本發(fā)明加入了消息接口模塊、用例 存儲單元、模擬器三個部分,其中消息接口模塊用于記錄所述程序模塊之間的 交互消息并生成測試用例;用例存儲單元,用于存儲測試用例數(shù)據(jù);模擬器, 用于調用所述測試用例對所述程序模塊進行調測。在測試用例的構建階段,不 需要模擬器的參與,但模擬器可分別對第一程序模塊與第二程序模塊進行調測。圖IB為本發(fā)明第一具體實施例在調測狀態(tài)下的系統(tǒng)結構圖,在調測狀態(tài)下,模擬器讀取存儲在用例存儲單元中的測試用例,并通過調用程序模塊提供的用于消息交互的COM接口或非COM的普通函數(shù)接口模擬與其它程序模塊間 的消息交互,以自動進行執(zhí)行現(xiàn)場的恢復,并配合調試器對待測試程序模塊進 行調測。圖1C為本發(fā)明第一具體實施例在調測狀態(tài)下另一種系統(tǒng)結構圖,與 圖1B不同的是,此結構下,模擬器直接調用消息接口模塊所提供的消息交互 接口來進行模擬及進行執(zhí)行現(xiàn)場的恢復。對于對實時性要求不高的單程序模塊,例如單機版棋牌類小游戲,來說, 沒有程序模塊間的消息交互,要實現(xiàn)自動測試需通過消息接口模塊記錄驅動該 程序模塊運行的鼠標、鍵盤等系統(tǒng)消息以及程序模擬時需要的一些測試數(shù)據(jù), 開發(fā)人員需自己定義存儲測試數(shù)據(jù)的事件,消息接口模塊需提供測試數(shù)據(jù)存儲 接口供開發(fā)人員在認為需要測試的程序位置調用該接口函數(shù)以存儲相關測試數(shù) 據(jù)。開發(fā)人員在程序模塊中需開放一個公用模擬接口給模擬器。當模擬器執(zhí)行測試用例時,如果遇到存儲相關測試數(shù)據(jù),模擬器調用所述公用模擬接口,開 發(fā)人員在公用模擬接口里根據(jù)存儲的測試數(shù)據(jù)執(zhí)行對應的模擬操作。多程序模 塊的技術方案相對于單程序模塊技術方案而言,由于主要關注于程序模塊間的 消息交互接口,因此其實現(xiàn)復雜程度較低,實用性更強。圖2A為本發(fā)明所述系統(tǒng)的第二具體實施例的系統(tǒng)結構圖,與所述系統(tǒng)的 第一具體實施例相比,其增加了斷言統(tǒng)計接口,用于捕獲所述程序模塊產(chǎn)生異 常時觸發(fā)的斷言,并獲取斷言的位置及個數(shù)信息,斷言統(tǒng)計接口可將斷言的位BUG修改的經(jīng)過,也可以不存儲,只是輸出顯示在屏幕上告知調測人員即可。圖2B為本發(fā)明所述系統(tǒng)的第二具體實施例在調試狀態(tài)下的系統(tǒng)結構圖, 在測試用例的構建狀態(tài)和調試狀態(tài)下分別通過斷言統(tǒng)計接口獲取被調測程序模 塊所產(chǎn)生斷言的位置及個數(shù)信息,其目的在于進行前后比對,以判斷對程序模 塊中BUG的修改的效果。圖3A為本發(fā)明所述系統(tǒng)第三具體實施例系統(tǒng)結構圖,此具體實施例的特 點在于包括客戶端和服務端兩個部分,客戶端與服務端分別擁有自己的消息接 口模塊、用例存儲單元及模擬器,客戶端和服務端分別可包括多個實現(xiàn)不同功 能的子程序模塊,客戶端各子程序模塊通過客戶端消息接口模塊與客戶端網(wǎng)絡 接口模塊連接,客戶端網(wǎng)絡接口模塊負責所有客戶端子程序模塊與服務端之間 的消息交互;服務端各子程序模塊通過服務端消息接口模塊與服務端網(wǎng)絡接口 模塊連接,服務端網(wǎng)絡接口模塊負責所有服務端子程序模塊與客戶端之間的消 息交互,服務端各子程序模塊通過服務端網(wǎng)絡接口模塊與客戶端進行消息交互。圖3B為分別對客戶端子程序模塊及服務端子程序模塊進行本端調試的系 統(tǒng)結構圖,服務端與客戶端進行本端調測只需要從本端的用例存儲單元中調用 本端的測試用例即可。圖3C為進行遠端調測的系統(tǒng)結構圖,利用服務端模擬器調用服務端的測 試用例對客戶端子程序模塊進行調測,同樣地,也可以利用客戶端模擬器調用 客戶端的測試用例來對服務端子程序進行調測。以服務端為例,服務端模擬器可通過遠程COM接口啟動客戶端子程序模塊,在分布式環(huán)境下,當測試用例 包含多個客戶端的交互消息時,服務端模擬器還可同時啟動多個客戶端上的多個子程序模塊。圖4為本發(fā)明所述方法的具體實施例的流程圖,以下結合附圖對本發(fā)明所 述方法的各步驟進行詳細描述步驟A、在程序模塊運行過程中,由消息接口模塊記錄驅動程序運行的消 息,并將其存儲形成測試用例;此步驟為測試用例的構建步驟,為了構造一個測試用例,需要在原有系統(tǒng) 的上附加一個或多個中間的調用接口,當用戶在使用原有系統(tǒng)的過程中,通過 中間接口記錄程序模塊間的網(wǎng)絡消息及系統(tǒng)消息,對于單程序模塊情況下,需 記錄用于模擬的測試數(shù)據(jù)及系統(tǒng)消息,從而創(chuàng)建相應的測試用例。例如要創(chuàng)建 用戶登錄和退出的測試用例,則只需要使用帶有消息接口模塊客戶端和服務端 執(zhí)行一下登錄和退出的操作,即可生成相應的測試用例。以圖1A系統(tǒng)結構為例,程序模塊之間通過COM接口相互通信, 一般用于通信的接口數(shù)量比較少,所以只需要在原有程序模塊的基礎上做少量的修改, 附加上消息接口模塊的調用即可將程序模塊之間的網(wǎng)絡消息及系統(tǒng)消息保存為 測試用例。以圖3A系統(tǒng)結構為例,對于客戶服務器結構,測試用例的構建主要分為 兩部分 一個是基于客戶端用例構建;另一個是基于服務端的用例構建。通常 客戶端子程序模塊主要是通過網(wǎng)絡消息及鼠標、鍵盤等輸入設備產(chǎn)生的系統(tǒng)消 息驅動的;服務端子程序模塊主要通過網(wǎng)絡消息驅動,因此,在進行系統(tǒng)使用 的時候,可以在客戶端子程序模塊與客戶端網(wǎng)絡接口模塊之間附加的消息接口 模塊中將網(wǎng)絡消息及系統(tǒng)消息的觸發(fā)時間和觸發(fā)內容存儲下來,形成 一個事件 驅動的客戶端測試用例。也可以在服務端子程序模塊與服務端網(wǎng)絡接口模塊之 間附加的消息接口模塊中將網(wǎng)絡消息存儲下來,形成 一個服務端的測試用例。 這樣做的好處是通過保存事件的測試用例就可以保存開發(fā)人員進行自測時所執(zhí) 行過的所有函數(shù)的測試用例,以便以后隨時對某個函數(shù)進行測試。更重要的是當開發(fā)人員在自測的時候遇到一個比較隱晦的問題時,實際上他已經(jīng)保存了這 個很難重現(xiàn)的必現(xiàn)用例,方便以后的調試和驗證。由于服務端是與各個客戶端通訊的中心,保存服務端的網(wǎng)絡消息作為測試 用例時,實際上是保存了所有客戶端的測試用例。客戶端與其他客戶端通訊的 時候通常都需要經(jīng)過服務端的驗證和處理然后通過網(wǎng)絡消息轉發(fā)給其它客戶 端,當其它客戶端收到該網(wǎng)絡消息的時候才做相應的處理。而服務端也只有在收到通過客戶端網(wǎng)絡接口模塊和服務端網(wǎng)絡接口模塊透明傳輸過來客戶端的網(wǎng) 絡消息后才做相應的邏輯搡作,因此保存服務端網(wǎng)絡通信的用例可以恢復該用 例情況下所有客戶端和服務端的執(zhí)行現(xiàn)場。通??蛻舳俗映绦蚰K與客戶端網(wǎng)絡接口模塊之間的用于通信的COM接 口數(shù)量很少,因此只需要開發(fā)少數(shù)中間接口就可以將客戶端子程序模塊通過客 戶端網(wǎng)絡接口模塊公布的通信接口所傳輸?shù)木W(wǎng)絡消息存儲下來,而其它鼠標、鍵盤的輸入設備產(chǎn)生的系統(tǒng)消息可通過另外的COM接口存儲。為了實現(xiàn)輸入 時間和輸入內容相綁定,可以使用如下的數(shù)據(jù)結構來儲存這些消息時間、模塊標識、消息分類標識符、長度、內容。其中模塊標識用于標識消息的發(fā)送者, 消息分類標識符用于識別程序模塊間的消息類型以及識別系統(tǒng)消息的類型,如 鼠標、鍵盤消息等。在服務器端,由于服務端子程序模塊與服務端網(wǎng)絡接口模 塊是通過接口進行通訊的,而服務端子程序模塊端不需要直接與客戶端進行消 息交互,因此基于服務端子程序模塊構造測試用例只需要開發(fā)相應的接口來記 錄進入過某個接口的網(wǎng)絡消息即可,消息記錄格式可借用客戶端的消息記錄數(shù) 據(jù)結構進行存儲,只是消息分類標識符的作用有區(qū)別,服務端的消息分類標識 符只是用來識別服務端網(wǎng)絡接口模塊調用服務端子程序模塊的某一個接口。步驟B、由模擬器通過接口啟動待調測的程序模塊;此步驟開始進入對程序模塊的調測狀態(tài),在調測開始之前需啟動模擬器, 由模擬器通過調用接口啟動待調測的程序模塊。步驟C、由所述模擬器讀取所述測試用例并根據(jù)用戶所選的待調測消息位 置自動恢復執(zhí)行現(xiàn)場;以圖3A的系統(tǒng)結構為例,實際上,將客戶端子程序模塊接收到的網(wǎng)絡消 息、鼠標和鍵盤事件的觸發(fā)時間和內容保存下來,形成測試用例,這個測試用 例就已經(jīng)保存了客戶端子程序模塊運行后所有函數(shù)的執(zhí)行現(xiàn)場。通過執(zhí)行測試 用例,就可以恢復每個函數(shù)的執(zhí)行現(xiàn)場,實現(xiàn)對某個函數(shù)的調試和驗證。由于 客戶端已經(jīng)保存了某輪測試中所有的網(wǎng)絡消息,相當于模擬了客戶端網(wǎng)絡接口 模塊、服務端網(wǎng)絡接口模塊和服務端子程序模塊的處理。因此,僅僅使用客戶 端的測試用例就可以完成對客戶端的測試。同理,在進行服務端子程序模塊的 測試用例時,實際上已經(jīng)模擬了所有客戶端子程序模塊、客戶端網(wǎng)絡接口模塊 和服務端網(wǎng)絡接口模塊的處理。因此,僅僅使用服務端子程序模塊的測試用例 也可以單獨對服務端子程序模塊進行測試。通常所有客戶端的網(wǎng)絡消息都通過服務端子程序模塊處理再轉發(fā),相當于 服務端子程序模塊是所有客戶端的中心,客戶端之間的數(shù)據(jù)通訊都需要通過服 務端子程序模塊。因此,在使用服務端子程序模塊測試用例對服務端子程序模 塊進行測試的同時,也可以對客戶端進行測試。當保存了服務端子程序模塊的測試用例后,服務端模擬器通過COM的方 式將開發(fā)人員所關心的一個或多個客戶端啟動起來,將測試用例記錄下來的數(shù) 據(jù)形成一個向所有客戶端或某個客戶端發(fā)送的網(wǎng)絡消息的列表,開發(fā)人員可通 過選擇窗口隨機選擇某條網(wǎng)絡消息進行測試。在擁有多個客戶端的情況下,開 發(fā)人員可以先對客戶端的進行選擇,然后開發(fā)人員根據(jù)自己的需要選擇某個網(wǎng) 絡事件,例如,是希望對服務端子程序模塊還是對客戶端的某個消息觸發(fā)后進 行測試,服務端模擬器會通過接口控制服務端子程序模塊自動恢復到發(fā)生這個網(wǎng)絡消息時的現(xiàn)場。這時,開發(fā)人員就可以直接使用集成開發(fā)調試環(huán)境,如vc或WinDBG等直接跟蹤和測試。自動恢復執(zhí)行現(xiàn)場的步驟主要是,模擬器通過模擬接口將記錄的網(wǎng)絡消息 順序的執(zhí)行到需要調試的某個網(wǎng)絡消息或某個函數(shù)位置,這時發(fā)生某個網(wǎng)絡消 息或某個函數(shù)被調用的現(xiàn)場即被恢復。對于客戶端或如圖1A的簡單系統(tǒng)結構 來說還包括系統(tǒng)消息的按時間順序的執(zhí)行。通過模擬器自動恢復執(zhí)行現(xiàn)場可以大大節(jié)省開發(fā)人員復現(xiàn)BUG的操作時間,提高調測效率。步驟D、在調試器的配合下對所述待調測程序模塊進行調測。 為了對程序模塊中的BUG進行調試,需使用集成開發(fā)調試環(huán)境來配合進 行,開發(fā)人員可將程序模塊的源程序與其執(zhí)行程序綁定,在所述程序模塊的執(zhí) 行程序被啟動之后,即可在集成開發(fā)調試環(huán)境中為程序設置端點。以VC( Visual Studio C++)為例,在編譯的時候可生成pdb文件,然后可以用Windbg或VC 將該pdb文件關聯(lián)到該程序模塊的執(zhí)行程序上,這樣就可以在代碼中設置斷點。 為了進一步縮小調試范圍,本發(fā)明還可以使用系統(tǒng)鉤子技術(APIHook) 來記錄測試用例執(zhí)行過的函數(shù)。還可以將多個測試用例中相同的函數(shù)用例提取 出來,形成函數(shù)的單元測試用例。即可以通過API函數(shù)枚舉某個EXE或某個 DLL的所有函數(shù),使用鉤子鉤取開發(fā)人員關心的函數(shù),記錄當時已執(zhí)行過的網(wǎng) 絡消息、系統(tǒng)消息,形成某個函數(shù)的測試用例。然后根據(jù)這個方法獲取該函數(shù) 的其他測試用例。當開發(fā)人員選擇對某個函數(shù)進行測試的時候,該函數(shù)發(fā)生之 前的所有的絡消息、系統(tǒng)消息會被模擬器自動觸發(fā),從而恢復了進入該函數(shù)前 的現(xiàn)場,使真實的環(huán)境得到模擬,最終形成了自動化的測試用例。為了能夠對在程序修改前后BUG的位置和數(shù)量進行比對,從而直觀的獲 得修改效果,本發(fā)明還使用API Hook的技術,在測試用例的構建狀態(tài)和調測狀 態(tài)下捕獲軟件系統(tǒng)運行時產(chǎn)生的斷言。還可以作為以后對軟件系統(tǒng)是否正常運 行的驗證用例。本系統(tǒng)主要統(tǒng)計了某個測試用例斷言的個數(shù)和斷言發(fā)生在程序 的位置,在開發(fā)人對系統(tǒng)進行自測的時候,本系統(tǒng)就收集了系統(tǒng)發(fā)生斷言的數(shù) 據(jù),并將其附加在測試用例里,當開發(fā)人員根據(jù)這些修改好BUG以后,就可 以再運行一次已經(jīng)記錄好的測試用例來檢查斷言還有沒有發(fā)生。甚至,當開發(fā) 人員對系統(tǒng)做了某些方面的修改后,可能會產(chǎn)生新的錯誤,導致原有的測試用 例發(fā)生斷言,這時,只需要重新運行一次所有的測試用例就可以判斷當前的修 改有沒有生成新的問題。以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局 限于此,任何熟悉該技術的人在本發(fā)明所揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內,
權利要求
1、一種自動化軟件調測系統(tǒng),包括程序模塊,其特征在于,該系統(tǒng)還包括消息接口模塊,用于記錄所述程序模塊所執(zhí)行的系統(tǒng)消息及測試數(shù)據(jù),并生成測試用例;用例存儲單元,用于存儲測試用例;模擬器,用于根據(jù)測試用例模擬被調測程序模塊的運行過程并恢復程序的執(zhí)行現(xiàn)場;所述消息接口模塊將獲取的所述程序模塊所執(zhí)行的系統(tǒng)消息及測試數(shù)據(jù)形成測試用例后存儲于所述用例存儲單元,所述模擬器讀取存儲在所述用例存儲單元中的測試用例,自動恢復執(zhí)行現(xiàn)場,并配合調試器對所述程序模塊進行調測。
2、 根據(jù)權利要求l所述的系統(tǒng),其特征在于,包括多個程序模塊,所述消 息接口模塊位于兩個程序模塊之間,用于記錄驅動所述程序模塊的系統(tǒng)消息, 以及所述程序模塊之間的交互消息,并生成測試用例存儲于所述用例存儲單元; 所述模擬器讀取存儲在所述用例存儲單元中的測試用例,可分別對所述兩個程 序模塊進行執(zhí)行現(xiàn)場的恢復,并配合調試器所述程序模塊進行調測。
3、 根據(jù)權利要求2所述的系統(tǒng),其特征在于,所述系統(tǒng)還進一步包括斷言 統(tǒng)計接口,用于獲取所述程序模塊產(chǎn)生的斷言的位置及個數(shù)信息。
4、 根據(jù)權利要求3所述系統(tǒng),其特征在于,所述系統(tǒng)釆用客戶服務器結構,所述程序模塊包括客戶端子程序模塊和服務端子程序模塊,分別位于客戶端和服務端;所述消息接口模塊包括客戶端消息接口模塊及服務端消息接口模塊,分別 位于客戶端和服務端;所述用例存儲單元包括客戶端用例存儲單元及服務端用例存儲單元,分別 位于客戶端和服務端;所述模擬器包括客戶端模擬器及服務端模擬器,分別位于客戶端和服務端;該系統(tǒng)還包括客戶端網(wǎng)絡接口模塊,用于為所述客戶端子程序模塊提供與服務端進行網(wǎng) 絡消息交互的通訊接口;服務端網(wǎng)絡接口模塊,用于為所述服務端子子程序模塊提供與客戶端進行 網(wǎng)絡消息交互的通訊接口;所述客戶端消息接口模塊連接所述客戶端子程序模塊及所述客戶端網(wǎng)絡接 口模塊,獲取與服務端的交互消息并形成測試用例,存儲在客戶端用例存儲單 元中;所述服務端消息接口模塊連接所述服務端子程序模塊及所述服務端網(wǎng)絡 接口模塊,獲取與客戶端的交互消息并形成測試用例,存儲在服務端用例存儲 單元中。
5、 一種自動化軟件調測方法,其特征在于,該方法包括以下步驟A、 記錄驅動程序運行的消息,并將其形成測試用例存儲;B、 通過調用接口啟動待調測的程序;C、 讀取所述測試用例,并根據(jù)用戶所選待調測消息位置通過調用接口自 動恢復執(zhí)行現(xiàn)場;D、 對所述待調測程序進行調測。
6、 根據(jù)權利要求5所述的方法,其特征在于,步驟A中,若是對單程序 進行測試,則所述消息包括系統(tǒng)消息及測試數(shù)據(jù)。
7、 根據(jù)權利要求5所述的方法,其特征在于,步驟A中,若是對存在消 息交互的多個程序中的程序進行測試,則所述消息包括系統(tǒng)消息及程序之間的 交互消息。
8、 根據(jù)權利要求5所述的方法,其特征在于,步驟B和步驟C中,所述 接口為組件對象模型COM接口、或普通函數(shù)接口,所述接口由所述程序或 所述程序之間附加的消息接口提供。
9、 根據(jù)權利要求7所述的方法,其特征在于,步驟C中所述自動恢復執(zhí) 行現(xiàn)場具體包括Cl、選擇待調測消息位置;C2、按照所述交互消息及系統(tǒng)消息產(chǎn)生的時間順序,通過模擬接口控制所 述待調測程序自動運行到所述待調測消息位置。
10、 根據(jù)權利要求5所述的方法,其特征在于,步驟A中還包括使用系統(tǒng)鉤子獲取所述程序產(chǎn)生斷言的位置及個數(shù)信息。
11、 根據(jù)權利要求IO所述的方法,其特征在于,步驟C和步驟D中,還進一步包括獲取所述待調測程序所產(chǎn)生的斷言的位置及個數(shù)信息,在運行完 測試用例后與在步驟A中所獲得的所述斷言的位置及個數(shù)信息進行比對,判斷對所述待調測程序的修改是否正確。
12、 根據(jù)權利要求7所述的方法,其特征在于,步驟A中,所述測試用例為函數(shù)的測試用例,通過系統(tǒng)鉤子獲取在執(zhí)行所述程序某函數(shù)之前的所有交互 消息及系統(tǒng)消息,形成所述函數(shù)的測試用例。
全文摘要
本發(fā)明涉及一種自動化軟件調測的方法和系統(tǒng),尤其涉及一種能夠自動生成測試用例并通過模擬器進行軟件調測的方法和系統(tǒng),本發(fā)明通過在進行消息交互的程序模塊之間附加消息記錄接口記錄交互消息及系統(tǒng)消息,從而在程序運行過程中自動化形成測試用例,并通過模擬器讀取并執(zhí)行所存儲的測試用例以進行自動化的現(xiàn)場恢復,從而很大程度上提高了程序調測的效率。
文檔編號G06F11/36GK101295280SQ20081011519
公開日2008年10月29日 申請日期2008年6月18日 優(yōu)先權日2008年6月18日
發(fā)明者陳亮鋒 申請人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
芦山县| 临湘市| 武强县| 靖远县| 衡山县| 会理县| 黑河市| 扶风县| 凤山县| 杭锦旗| 清涧县| 中江县| 柳河县| 西乡县| 遂平县| 盈江县| 治多县| 大邑县| 遂溪县| 红安县| 牡丹江市| 开鲁县| 龙川县| 芮城县| 新绛县| 巴青县| 克山县| 弥勒县| 陵川县| 辉南县| 苗栗县| 乐亭县| 额尔古纳市| 兴安盟| 东平县| 南宫市| 曲周县| 宝坻区| 新安县| 太湖县| 于都县|