記錄外部過程的制作方法
【專利摘要】一種在測應用被啟動以記錄該應用響應于用戶輸入的反應。如果確定用戶輸入觸發(fā)了被另一程序啟動的外部過程使得該另一程序阻止記錄外部過程的被觸發(fā)的反應,則獲得與該外部過程的關聯(lián)。
【專利說明】記錄外部過程
【背景技術】
[0001]負載測試允許工程師評估暴露于繁重工作量的應用的性能。這種測試可以在將軟件應用運送給客戶之前實施。在負載測試中,測試工程師可以試圖理解人類用戶將如何與軟件應用交互并且設計測試計劃來使與此的人機交互自動化。這些已自動化的人機交互可以利用軟件測試程序(例如由惠普公司提供的LoadRunner?, WinRunner?和AstraQuickTest?產(chǎn)品)來進行。
【專利附圖】
【附圖說明】
[0002]圖1是用于實現(xiàn)這里公開的技術的示例計算機設備的框圖。
[0003]圖2是根據(jù)本公開的各方面的示例方法的流程圖。
[0004]圖3是根據(jù)本公開的各方面的工作示例。
[0005]圖4是根據(jù)本公開的各方面的另一示例。
【具體實施方式】
[0006]引言:測試工程師可以使用測試程序啟動在測應用并且然后可以在測試程序記錄該應用對用戶輸入的反應的同時與該應用交互。所述反應可以記錄在腳本中并且根據(jù)需要由此多次重播以模擬用戶輸入和評估該應用的性能。測試工程師可以執(zhí)行這些腳本的多個并發(fā)實例以確定該應用在壓力下如何反應。在一個示例中,反應可以被定義為響應于用戶輸入在在測應用的軟件部件之間傳送的函數(shù)調用、消息或事件。這些反應可以在它們發(fā)生時通過攔截它們而被記錄。在一個示例中,鉤子(hook)可以被定義為插入在在測應用中的攔截這些反應的代碼。被這些鉤子攔截的數(shù)據(jù)或業(yè)務量可以作為函數(shù)被記錄在腳本中。
[0007]由用戶的輸入可以引起在測應用調用外部過程。該外部過程可以由不同于測試程序的另一程序啟動;不幸的是,常規(guī)測試程序將鉤子插入由其本身或它的后代啟動并擁有的過程中。當其他程序啟動這些外部過程時,測試程序可以被阻止將必需的鉤子插入其中。例如,響應于用戶輸入,Windows操作系統(tǒng)中的基于web的應用可以調用組件對象模型(“COM”)服務器。COM服務器可以由稱為“svchost.exe”的程序啟動。如果LoadRunner?被用作測試工具,它可能不能夠記錄由這些COM服務器生成的反應,因為這些COM服務器被“svchost.exe”啟動和擁有。
[0008]鑒于前述,這里公開的多種示例提供一種系統(tǒng)、非臨時性計算機可讀介質和方法,其改善了在在測應用情況下用戶輸入的記錄。在一個示例中,在測應用可以被啟動以記錄其對用戶輸入的反應。在另一個示例中,可以確定用戶輸入是否觸發(fā)被另一程序啟動的外部過程,該另一程序阻止記錄在外部過程中被觸發(fā)的反應。如果確定用戶輸入觸發(fā)了由阻止記錄被觸發(fā)的反應的另一程序啟動的外部過程,則可以獲得與該外部過程的關聯(lián)以記錄其反應。
[0009]這里公開的技術允許測試程序記錄在應用外部的過程的反應以獲得由用戶輸入觸發(fā)的反應的完整記錄。照此,當包含所述反應的腳本被重播時,測試者可以肯定被腳本觸發(fā)的反應反映了實際情況。當參考下面的示例描述和附圖考慮時將認識到本公開的方面、特征和優(yōu)點。下面的描述不是限制本申請;更確切地說,本公開的范圍由所附權利要求及等效物限定。本公開被分成多個部分。標記為“部件”的第一部分描述了用于實施本公開的各方面的各種物理和邏輯部件的示例。標記為“操作”的第二部分提供了計算機設備、非臨時性計算機可讀介質和方法的工作示例。最后,標記為“結論”的部分總結了本公開。
[0010]部件:圖1給出根據(jù)本公開的各方面的描繪各部件的說明性計算機設備100的示意圖。計算機設備100可以包括通常結合計算機使用的所有部件。例如,它可以具有鍵盤和鼠標和/或各種其他類型的輸入裝置,例如筆輸入、操縱桿、按鈕、觸摸屏等,還具有顯示器,其可以包括例如CRT、IXD、等離子體屏幕監(jiān)控器、電視機、投影儀等。計算機設備100還可以包括網(wǎng)絡接口以使用常規(guī)協(xié)議(例如以太網(wǎng)、W1-F1、藍牙等)與其他裝置經(jīng)由網(wǎng)絡進行通信。
[0011 ] 計算機設備100還可以包含處理器110和存儲器112。存儲器112可以儲存可以由處理器I1檢索和執(zhí)行的指令。在一個示例中,存儲器112可以是隨機存取存儲器(“RAM”)器件。在另一個示例中,存儲器112可以被分成多個存儲段,其被組織成雙列直插式存儲器模塊(DIMM)??商鎿Q地,存儲器112可以包括其他類型的裝置,例如在軟盤驅動器、磁帶和硬盤驅動器上提供的存儲器,或可以直接或間接耦合到計算機設備100的其他存儲裝置。存儲器也還可以包括前述和/或其他裝置中的一個或多個的組合。處理器110可以是任何數(shù)目的公知的處理器,例如來自Intel?公司的處理器。在另一個示例中,處理器可以是用于執(zhí)行操作的專用控制器,例如專用集成電路(“ASIC”)。雖然計算機設備100的所有部件在圖1中從功能上被示為在同一框內,但是將理解所述部件可以被儲存或者可以不被儲存在同一物理外殼內。此外,計算機設備100實際上可以包括協(xié)同工作的多個處理器和存儲器。
[0012]駐留在存儲器112中的指令可以包括任何將被處理器110直接執(zhí)行的指令集(例如機器碼)或間接執(zhí)行的指令集(例如腳本)。在這方面,術語“指令”、“腳本”、“應用”、“程序”、“過程”和“模塊”在這里可以可互換地使用。計算機可執(zhí)行指令可以以任何計算機語言或格式(例如以目標代碼或者以源代碼的模塊)來儲存。此外,應理解所述指令可以以硬件、軟件或者硬件和軟件結合的形式來實施,并且這里的示例僅是說明性的。
[0013]測試程序115可以實施本公開中描述的技術并且可以以任何非臨時性計算機可讀介質來實現(xiàn)。在這方面,存儲器112可以是供指令執(zhí)行系統(tǒng)使用或者與其結合使用的非臨時性計算機可讀介質,所述指令執(zhí)行系統(tǒng)例如是計算機設備100、ASIC或能夠從非臨時性計算機可讀介質取來或獲得邏輯并執(zhí)行包含于其中的指令的其他系統(tǒng)?!胺桥R時性計算機可讀介質”可以是任何可以包含、儲存或維護供指令執(zhí)行系統(tǒng)使用或結合指令執(zhí)行系統(tǒng)使用的程序和數(shù)據(jù)的介質。非臨時性計算機可讀介質可以包括許多物理介質中的任何一個,比如,例如電子介質、磁介質、光介質、電磁介質或半導體介質。更多合適的非臨時性計算機可讀介質的具體示例包括,但不限于,便攜式磁性計算機盤,例如軟盤或硬盤驅動器、只讀存儲器(“ROM”)、可擦除可編程只讀存儲器、或便攜式致密盤。
[0014]在測應用(“AUT”)120可以是正在經(jīng)歷測試的任何客戶端服務器應用。在一個示例中,AUT 120可以是以任何合適的基于web的計算機語言(例如JAVA或.NET)編碼的基于web的應用。測試程序115可以指示處理器110記錄AUT 120對用戶輸入的反應。這種用戶輸入可以包括鼠標點擊、登錄信息輸入等。這些反應可以作為一系列函數(shù)被記錄在腳本中,其可以被重播以模擬用戶輸入。如上面所提到的,測試程序115可以將鉤子插入AUT120中以攔截和記錄其對用戶輸入的反應。在記錄期間被觸發(fā)的相同反應可以在重播腳本的實例時被觸發(fā)。
[0015]測試程序115可以是用于在產(chǎn)生實際工作量的同時檢查系統(tǒng)行為和性能的任何性能和負載測試應用。如上面所提到的,這種測試程序的示例可以是由惠普提供的LoadRunner?, WinRunner?和Astra QuickTest?程序。然而,應理解可以增加任何適當?shù)木W(wǎng)絡或負載監(jiān)控工具以實施這里公開的技術,并且所述任何適當?shù)木W(wǎng)絡或負載監(jiān)控工具被認為是在本公開的范圍內。如將在下面進一步討論的,鉤子支持模塊118可以是中間模塊,該中間模塊允許測試程序115獲得由另一程序啟動和擁有的外部過程的控制,其又許可測試程序115將由用戶輸入觸發(fā)的外部過程的反應記錄到AUT 120中。
[0016]操作:系統(tǒng)、方法和非臨時性計算機可讀介質的一個工作示例在圖2-4中示出。具體而言,圖2示出根據(jù)本公開的各方面的用于記錄外部過程的示例方法的流程圖。圖3-4示出根據(jù)這里公開的技術的工作示例。將在下面關于圖2的流程圖討論圖3-4中示出的動作。
[0017]如圖2的塊202中所示,在測應用中響應于用戶輸入的反應可以被記錄。圖3示出當測試程序115將其反應記錄到那的同時用戶輸入正被錄入AUT 120中。返回參考圖2,可以確定用戶交互是否觸發(fā)了由另一程序啟動的外部過程的反應使得第二程序阻止測試程序115記錄外部過程的被觸發(fā)的反應,如塊204中所示。返回參考圖3,程序302可以是控制外部過程304的另一程序。程序302可以是負責啟動在各應用之間共享的過程的服務程序。這種程序的一個示例是Windows操作系統(tǒng)的svchost.exe程序。另一示例可以是UNIX操作系統(tǒng)的互聯(lián)網(wǎng)服務常駐程序,其啟動與互聯(lián)網(wǎng)功能性相關聯(lián)的共享過程。這些服務程序可以啟動和擁有這些共享過程,其可以防止測試程序115記錄在其中通過用戶輸入觸發(fā)的反應。在一個示例中,程序302可以防止測試程序115將鉤子插入外部過程304中。
[0018]返回參考圖2,如果確定用戶輸入觸發(fā)了由第二程序啟動的外部過程的反應,則該外部過程可以與測試程序115相關聯(lián),如塊206中所示。外部過程的反應可以通過測試程序115被記錄,如塊208中所示。外部過程可以以多種方式與測試程序115相關聯(lián)。例如,如果測試程序115在Windows操作系統(tǒng)環(huán)境中執(zhí)行,則測試程序115可以生成Windows注冊表中的將外部過程304與鉤子支持模塊118相關聯(lián)的條目。這種注冊表條目可以指示W(wǎng)indows操作系統(tǒng)以調試模式使用鉤子支持模塊118啟動外部過程304,其可以將外部過程304的所有權傳送給測試程序115。Windows注冊表是儲存用于在平臺上運行的應用的配置設定的層次數(shù)據(jù)庫。下面是可以通過測試程序115被插入的示例Windows注冊表項:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ffindowsNT\CurrentVers1n\Image FileExecut1n 0pt1ns\{External Process to be recorded}\Debugger={name of hooksupport module}
[0019]如果上面的注冊表項存在,則Windows操作系統(tǒng)可以將在該項中啟動的外部過程與該項的值相關聯(lián),其可以是無論什么名稱被給予鉤子支持模塊118。測試程序115可以錄入上面的注冊表條目,如果確定被觸發(fā)的反應包括由單獨程序擁有的外部過程的那些的話。為了具有AUT 120的全面記錄,可能有必要記錄外部過程304的反應。當測試程序115完成記錄外部過程304的反應時,測試程序115可以刪除該注冊表條目以將外部過程304與鉤子支持模塊118解除關聯(lián)。將外部過程304與鉤子支持模塊118解除關聯(lián)可以相當于將外部過程304與測試程序115解除關聯(lián),因為鉤子支持模塊118可以用作將外部過程304的所有權傳送給測試程序115的中間模塊。盡管上面的示例涉及Windows操作系統(tǒng),但是相同的功能性可以在其他操作系統(tǒng)中實施。例如,在UNIX或MAC環(huán)境中,與外部過程304相關聯(lián)的配置文件可以改變?yōu)橐哉{試模式開始外部過程并且將其所有權給予測試程序115。照此,應理解使用Windows注冊表僅是測試程序115可以如何獲得外部過程304的所有權的一個示例并且可以利用給定操作系統(tǒng)的其他部件。
[0020]圖4是演示針對測試程序115獲取外部過程304的所有權以及記錄在其中被觸發(fā)的反應可能發(fā)生的一系列說明性事件的示例順序圖。在時刻tyAUT 120可以調用包含在外部過程304中的例程或函數(shù)。在圖4的示例中,該調用可以被轉發(fā)給操作系統(tǒng)402,其可以是Windows操作系統(tǒng)。在時刻h,操作系統(tǒng)402可以使用鉤子支持模塊118啟動外部過程304。如果操作系統(tǒng)402是Windows操作系統(tǒng),則操作系統(tǒng)402可以使用鉤子支持模塊118啟動外部過程304,如果前述注冊表條目存在的話。如上面所提到的,當測試程序115確定外部過程將被調用時,測試程序115可以生成適當?shù)年P聯(lián)。在時刻t2鉤子支持模塊118可以啟動外部過程304。在時刻t3,外部過程304的所有權可以被提供給測試程序115。在時刻t4,測試程序115可以將通過用戶輸入觸發(fā)的外部過程304的反應記錄到AUT 120中。
[0021]結論:有利的是,上述計算機設備、非臨時性計算機可讀介質和方法允許測試工程師記錄由在測應用調用的外部過程。在這方面,該應用的記錄可以是魯棒的,使得被記錄的函數(shù)是該應用對用戶輸入的反應的精確反映。繼而,測試工程師可以確保對用戶的每個反應可以被記錄和測試。
[0022]盡管這里已經(jīng)參考特定示例描述了本公開,但是應理解這些示例僅是本公開的原理的說明。因此應理解在不脫離如由所附權利要求限定的本公開的精神和范圍的情況下可以對這些示例進行多種修改并且可以設想其他布置。此外,盡管在附圖中以特定順序示出了具體過程,但是這種過程不局限于任何具體順序,除非這種順序在這里被明確闡述;更確切地說,可以以不同的順序或者同時執(zhí)行各過程并且可以添加或省略步驟。
【權利要求】
1.一種系統(tǒng),包括: 測試程序,其如果被執(zhí)行的話則指示處理器: 啟動在測應用并記錄所述應用對用戶輸入的反應; 確定所述用戶輸入是否觸發(fā)了由不同于所述測試程序的第二程序啟動的外部過程的反應,使得所述第二程序阻止所述測試程序記錄所述外部過程的被觸發(fā)的反應; 如果所述用戶輸入觸發(fā)了由所述第二程序啟動的所述外部過程的反應,則: 將所述外部過程與所述測試程序相關聯(lián); 啟動所述外部過程;以及 記錄由所述用戶輸入觸發(fā)的所述外部過程的所述反應。
2.根據(jù)權利要求1所述的系統(tǒng),其中所述測試程序進一步指示所述處理器在所述測試程序完成記錄由所述用戶輸入觸發(fā)的所述外部過程的所述反應時將所述外部過程與所述測試程序解除關聯(lián)。
3.根據(jù)權利要求1所述的系統(tǒng),其中為了記錄所述外部過程的所述反應,所述測試程序進一步指示所述處理器將鉤子插入到所述外部過程中,所述鉤子引起所述處理器記錄由所述用戶輸入觸發(fā)的所述外部過程的所述反應。
4.根據(jù)權利要求1所述的系統(tǒng),還包括Windows操作系統(tǒng)。
5.根據(jù)權利要求4所述的系統(tǒng),其中為了將所述外部過程與所述測試程序相關聯(lián),所述測試程序進一步指示所述處理器產(chǎn)生將所述外部過程與模塊相關聯(lián)的所述Windows操作系統(tǒng)的注冊表中的條目,使得所述模塊以調試模式啟動所述外部過程并將其所有權傳送給所述測試程序。
6.一種具有儲存于其中的指令的非臨時性計算機可讀介質,所述指令如果被執(zhí)行則引起處理器: 啟動在測應用并記錄所述應用響應于用戶輸入的反應; 確定所述用戶輸入是否引起另一程序調用外部過程使得所述另一程序控制所述外部過程并阻止記錄在其中被觸發(fā)的反應; 如果所述用戶輸入引起另一程序調用所述外部過程使得所述另一程序阻止所述記錄,則: 將所述外部過程與模塊相關聯(lián); 從所述模塊獲得所述外部過程的控制;以及 記錄由所述用戶輸入觸發(fā)的所述外部過程的反應。
7.根據(jù)權利要求6所述的非臨時性計算機可讀介質,其中儲存于其中的所述指令如果被執(zhí)行則進一步引起所述處理器在完成所述外部過程的被觸發(fā)的反應的記錄時將所述外部過程與所述模塊解除關聯(lián)。
8.根據(jù)權利要求6所述的非臨時性計算機可讀介質,其中儲存于其中的所述指令如果被執(zhí)行則進一步引起所述處理器使用Windows操作系統(tǒng)的注冊表將所述外部過程與所述模塊相關聯(lián)。
9.根據(jù)權利要求8所述的非臨時性計算機可讀介質,其中為了使用所述注冊表將所述外部過程與所述模塊相關聯(lián),儲存于其中的所述指令如果被執(zhí)行則進一步引起所述處理器在所述注冊表中錄入關聯(lián)使得所述Windows操作系統(tǒng)使得所述模塊能夠以調試模式啟動所述外部過程并許可訪問所述外部過程。
10.根據(jù)權利要求6所述的非臨時性計算機可讀介質,其中儲存于其中的所述指令當被執(zhí)行時進一步引起所述處理器將鉤子插入到所述外部過程中,所述鉤子引起所述處理器記錄由所述用戶輸入觸發(fā)的所述外部過程的所述反應。
11.一種方法,包括: 使用處理器記錄響應于用戶輸入啟動的在測應用的反應; 使用所述處理器確定所述用戶輸入是否引起所述在測應用調用外部過程; 使用所述處理器確定第二程序是否啟動所述外部過程使得所述第二程序阻止記錄所述外部過程中被觸發(fā)的反應; 如果所述用戶輸入引起所述應用調用所述外部過程并且使用所述第二程序啟動所述外部過程,則: 使用所述處理器通過使模塊與所述外部過程相關聯(lián)來使得所述模塊能夠啟動所述外部過程; 使用所述處理器從所述模塊獲得所述外部過程的控制;以及 使用所述處理器記錄所述外部過程中由所述用戶輸入觸發(fā)的反應。
12.根據(jù)權利要求11所述的方法,還包括當完成所述外部過程的被觸發(fā)的反應的記錄時使用所述處理器將所述外部過程與所述模塊解除關聯(lián)。
13.根據(jù)權利要求11所述的方法,其中記錄所述外部過程的被觸發(fā)的反應包括使用所述處理器將鉤子插入所述外部過程中,所述鉤子記錄由所述用戶輸入觸發(fā)的所述外部過程的反應。
14.根據(jù)權利要求11所述的方法,其中使得所述模塊能夠啟動所述外部過程包括使用所述處理器在Windows操作系統(tǒng)的注冊表中產(chǎn)生關聯(lián)使得所述模塊以調試模式啟動所述外部過程并許可訪問所述外部過程。
【文檔編號】G06F9/00GK104487935SQ201280074928
【公開日】2015年4月1日 申請日期:2012年7月27日 優(yōu)先權日:2012年7月27日
【發(fā)明者】羅 Y., 區(qū) Y. 申請人:惠普發(fā)展公司,有限責任合伙企業(yè)