專利名稱:用于確認(rèn)應(yīng)用程序圖形顯示輸出的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上關(guān)于計(jì)算機(jī)軟件開發(fā)工具,具體地說(shuō),關(guān)于一種方法,用來(lái)確認(rèn)一個(gè)特定軟件應(yīng)用程序的圖形輸出在多個(gè)不同類型的操作系統(tǒng)平臺(tái)上是“一致的”。
Java,最早由SUN微系統(tǒng)公司開發(fā),是一種面向?qū)ο蟮模嗔魈幚淼?,可移植的,?dú)立于平臺(tái)的,安全的編程環(huán)境,用于開發(fā)、測(cè)試和維護(hù)軟件程序。Jave程序廣泛用于萬(wàn)維網(wǎng)上,它是互聯(lián)網(wǎng)的多媒體信息檢索系統(tǒng)。這些程序包括全特性人機(jī)對(duì)話,獨(dú)立應(yīng)用程序,以及被稱為applet的較小的程序,它運(yùn)行在一個(gè)能運(yùn)行Java的網(wǎng)絡(luò)瀏覽器或applet取景器中。
許多企業(yè)已開始寫Java應(yīng)用程序或applets。不過(guò),這些公司在有不同操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)中投資也很大。這樣,例如,一個(gè)特定的企業(yè)網(wǎng)可能支持一些運(yùn)行不同操作系統(tǒng)的機(jī)器,如IBM、OS/2、Microsoft Window95、Microsoft Window NT 4.0、UNIX、AIX、OS/400或其它類似系統(tǒng)。這些基于Java的程序生成圖形顯示輸出,這些輸出包括一般的接口顯示單元,如視窗、菜單、位圖、圖標(biāo)和其它基本的控制,它們構(gòu)成一個(gè)圖形用戶接口(‘GUI’),以及程序指定的顯示單元??偟鼗虿糠值卣f(shuō),這些單元為該應(yīng)用定義了一個(gè)“圖形輸出”,且軟件設(shè)計(jì)者的一個(gè)設(shè)計(jì)目的是,該應(yīng)用軟件的圖形輸出在不同操作系統(tǒng)平臺(tái)(以及在有其它硬件/軟件差別的同類平臺(tái))上是一致的。目前,還沒有有效的工具或方法,證實(shí)一個(gè)特定的基于Java的應(yīng)用程序或applet的操作在多個(gè)操作系統(tǒng)平臺(tái)上是相同的(或充分相似的)。類似的,原有技術(shù)不能提供任何合適的技術(shù),以確認(rèn)一個(gè)Java應(yīng)用程序或applet的多次執(zhí)行的輸出在一個(gè)給定的置信度范圍內(nèi)是“等效的”。若沒有這類工具,則很難使新的基于Java的應(yīng)用程序和applet的測(cè)試自動(dòng)化。
本發(fā)明用于解決該問(wèn)題。
本發(fā)明的一個(gè)主要目的是確認(rèn)一個(gè)給定軟件應(yīng)用程序的圖形輸出在多個(gè)操作系統(tǒng)平臺(tái)上是一致的。
本發(fā)明的另一個(gè)主要目的是確認(rèn)一個(gè)給定軟件應(yīng)用程序的圖形輸出在該應(yīng)用在一個(gè)特定計(jì)算機(jī)配置中的多次執(zhí)行間是一致的。
本發(fā)明的另一個(gè)主要目的是在多個(gè)操作系統(tǒng)平臺(tái)上確認(rèn)一個(gè)基于Java的應(yīng)用程序或applet,以簡(jiǎn)化一個(gè)企業(yè)計(jì)算機(jī)網(wǎng)中新的基于Java的應(yīng)用程序的設(shè)計(jì)、開發(fā)、測(cè)試和實(shí)施。
本發(fā)明的另一個(gè)目的是便于用于開發(fā)新的軟件應(yīng)用程序的測(cè)試方法自動(dòng)化。
本發(fā)明的另一個(gè)特定目的是,通過(guò)提供一個(gè)用于確認(rèn)一個(gè)應(yīng)用程序的圖形顯示輸出的自動(dòng)化工具,來(lái)增強(qiáng)一個(gè)Java程序開發(fā)環(huán)境。
本發(fā)明的另一個(gè)重要目的是,允許測(cè)試和確認(rèn)Java獨(dú)立于平臺(tái)的代碼。
本發(fā)明的一個(gè)副產(chǎn)品或優(yōu)點(diǎn)是減少設(shè)計(jì),開發(fā)和測(cè)試一個(gè)軟件應(yīng)用程序所必須的時(shí)間和努力,例如開發(fā)一個(gè)按獨(dú)立平臺(tái)編程環(huán)境寫成的應(yīng)用程序。
本發(fā)明的一個(gè)更一般的目的是減少與創(chuàng)建一個(gè)軟件應(yīng)用程序相關(guān)的開發(fā)時(shí)間和費(fèi)用。
本發(fā)明的這些和其它目的在一個(gè)方法中得到,該方法用于證實(shí)一個(gè)給定軟件應(yīng)用程序的圖形顯示輸出在各個(gè)操作系統(tǒng)上是一致的。按該方法的一個(gè)最佳實(shí)施例,當(dāng)一個(gè)軟件應(yīng)用程序在各個(gè)操作系統(tǒng)上執(zhí)行時(shí),捕捉在該軟件應(yīng)用程序的一個(gè)給定執(zhí)行點(diǎn)上一組圖形顯示輸出幀(例如,一對(duì)相鄰幀)。一個(gè)圖像幀抓取器被用于該目的。對(duì)各個(gè)操作系統(tǒng),處理每對(duì)圖像輸出幀以生成一個(gè)差值或“Δ”值。該特定Δ值包括這樣的信息。該信息為各操作系統(tǒng)屏蔽掉一些圖形顯示輸出結(jié)構(gòu),當(dāng)應(yīng)用程序運(yùn)行在給定執(zhí)行點(diǎn)時(shí),被屏蔽掉的圖形顯示輸出結(jié)構(gòu)在該對(duì)幀間是不改變,即非時(shí)變的。這樣的結(jié)構(gòu)可以包括,例如,視窗框、標(biāo)題條、滾動(dòng)棒及其它這類顯示控制單元。按本方法,處理步驟包括在一個(gè)位-位的基礎(chǔ)上,對(duì)幀執(zhí)行一條邏輯操作(例如,一個(gè)“異或”)。然后,比較各操作系統(tǒng)的Δ值以證實(shí)該應(yīng)用程序的圖形顯示輸出在各操作系統(tǒng)上是統(tǒng)一的或“一致的”。如果一個(gè)給定的顯示輸出在一個(gè)給定置信度(例如95%相似性)內(nèi)是相似或匹配的,則該輸出被稱為是“一致的”。最好,利用一個(gè)統(tǒng)計(jì)方法來(lái)執(zhí)行Δ值的比較,例如一個(gè)模式配對(duì)算法,一個(gè)實(shí)施模糊邏輯算法的神經(jīng)網(wǎng)絡(luò),或其它已知的或最近開發(fā)的統(tǒng)計(jì)算法。另外,可以將一種或多種確定性方法用于該目的。
本發(fā)明的方法被用于確認(rèn)任何類型的軟件應(yīng)用程序的圖形顯示輸出,不過(guò),一個(gè)特定的最佳實(shí)施例包括基于Java的應(yīng)用程序或applets的測(cè)試和確認(rèn)。
以上所述方法確認(rèn)某應(yīng)用程序的操作在不同操作系統(tǒng)平臺(tái)上是相同(或充分相似)的。本發(fā)明技術(shù)也適用于確認(rèn)一個(gè)給定應(yīng)用程序(例如一個(gè)Java應(yīng)用程序)在同類計(jì)算機(jī)系統(tǒng)(例如,一個(gè)有單一類型操作系統(tǒng)的計(jì)算機(jī)系統(tǒng))上的多次執(zhí)行的輸出是等值的。本發(fā)明方法最好在某一點(diǎn)上與前面所講的非常類似,即在應(yīng)用程序“運(yùn)行測(cè)試”期間,連續(xù)的顯示輸出幀在某特定“執(zhí)行”點(diǎn)被捕捉。對(duì)于各次運(yùn)行測(cè)試,處理連續(xù)圖形輸出幀以生成一個(gè)Δ值。該Δ值,如以上所提到的,屏蔽或“濾掉”每對(duì)幀間非時(shí)變的圖形顯示輸出結(jié)構(gòu)。利用一種統(tǒng)計(jì)方法,比較運(yùn)行測(cè)試(或一組給定的運(yùn)行測(cè)試)的Δ值以證實(shí)在多次運(yùn)行測(cè)試組間,軟件應(yīng)用程序的圖形顯示輸出是一致的。
以上已概述了本發(fā)明的一些更貼切的目的和特征。這些目的應(yīng)被看作僅是舉出本發(fā)明的一些更突出的特點(diǎn)和應(yīng)用。通過(guò)以不同方式提供所述方法,或如將要描述的那樣修改本發(fā)明,可以得到許多其它有用的結(jié)果。于是,參照以下對(duì)最佳實(shí)施例的具體描述,可以對(duì)本發(fā)明及其它目的有更全面的了解。
為了全面理解本發(fā)明及其中的優(yōu)點(diǎn),應(yīng)參照以下與附圖相聯(lián)系的具體描述,附圖中
圖1是一個(gè)有代表性的計(jì)算機(jī)的方塊圖;其中全部或部分地實(shí)施了本發(fā)明;圖2是本發(fā)明確認(rèn)工具的基本操作的一個(gè)流程,用于證實(shí)在運(yùn)行多種不同操作系統(tǒng)的計(jì)算機(jī)上的軟件應(yīng)用程序的圖形顯示輸出;圖3是一個(gè)方塊圖,舉例說(shuō)明了本發(fā)明確認(rèn)工具的主要處理功能;圖3是一個(gè)流程圖,舉例說(shuō)明了圖2中工具的最佳操作方法,且圖4是本發(fā)明確認(rèn)工具的基本操作的流程圖,用于在運(yùn)行同類操作系統(tǒng)的計(jì)算機(jī)上的多次運(yùn)行測(cè)試間確認(rèn)軟件應(yīng)用程序的圖形顯示輸出。
如在以下將要描述的,在一個(gè)計(jì)算機(jī)或通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)互連的一個(gè)或多個(gè)計(jì)算機(jī)上,可以執(zhí)行構(gòu)成本發(fā)明“確認(rèn)”工具的一個(gè)或多個(gè)過(guò)程。參照?qǐng)D1,示出了用于實(shí)施本發(fā)明的一個(gè)計(jì)算機(jī)。該計(jì)算機(jī)10有一個(gè)處理器12,一個(gè)操作系統(tǒng)14,一個(gè)操作系統(tǒng)應(yīng)用程序接口(API)16,一個(gè)圖形用戶接口18和RAM22。在本發(fā)明的一個(gè)實(shí)施例中,本工具用于確認(rèn)基于Java的應(yīng)用程序和/或applet,這樣,可以選擇地,該計(jì)算機(jī)還包括一個(gè)Java虛擬機(jī)(JVM)解釋器20。JVM是一個(gè)抽象的計(jì)算機(jī),它包括一個(gè)指令集并使用不同的內(nèi)存區(qū)域。在許多現(xiàn)有的互聯(lián)網(wǎng)瀏覽器應(yīng)用程序中,例如Netscape NavigatorTM和MicrosoftInternetExplorerTM的合適版本中,可以得到一個(gè)JVM。關(guān)于JVM的進(jìn)一步的細(xì)節(jié)見于JavaTM虛擬機(jī)指南,Tim Lindholm和Frank yellin,AddisonWesley(1997),ISBNO-201-63452-X,在此引入以供參考。
這樣,用于本發(fā)明的計(jì)算機(jī)可以是任何基于Intel,Power PC或RISC的個(gè)人計(jì)算機(jī)或工作站用戶,或是服務(wù)平臺(tái),它包括一個(gè)操作系統(tǒng),例如IBMOS/2,Microsoft Windows 95,Microsoft WindowsNT4.0,Unix,AIX,OS/400或類似的操作系統(tǒng)。一個(gè)有代表性的計(jì)算機(jī)運(yùn)行一個(gè)Intel X86處理器,OS/2 Warp 4.0版操作系統(tǒng),及JVM1.0.2版或更高版。換一種方式,該計(jì)算機(jī)運(yùn)行基于X86的處理器,Windows’95(或Windows NT)操作系統(tǒng),及JVM 1.0.2版或更高版。另一種替換方式是運(yùn)行一個(gè)有Power PC或基于RISC處理器的計(jì)算機(jī),AIX操作系統(tǒng),及JVM 1.0.2或更高版。
確認(rèn)工具25最好以軟件實(shí)施。更具體地,以Java寫成以便由Java虛擬機(jī)解釋器20執(zhí)行。盡管確認(rèn)工具25最好是基于Java的,但這并不是本發(fā)明的一個(gè)要求。不過(guò),基于Java的確認(rèn)工具在多個(gè)開發(fā)平臺(tái)上是可移植的。這樣,確認(rèn)工具碼本身在每個(gè)以上所述系統(tǒng)中是可操作的,盡管這些系統(tǒng)至少在操作系統(tǒng)級(jí)上是異構(gòu)的。確認(rèn)工具最好具有一個(gè)與此相關(guān)并由計(jì)算機(jī)控制的測(cè)試子系統(tǒng)26。測(cè)試子系統(tǒng)26一般包括合適的硬件,例如一個(gè)或多個(gè)圖象幀“抓取器”28,用于在計(jì)算機(jī)用戶接口上捕捉圖象幀輸出,以及任何必須的接口,控制和同步電路及部件。圖象幀抓取器的技術(shù)是已知的。測(cè)試子系統(tǒng)26的一些或所有部件和/或功能,都可以全部或部分地以軟件實(shí)施,或通過(guò)使用計(jì)算機(jī)自己的內(nèi)部資源及外圍設(shè)備來(lái)實(shí)施。
確認(rèn)工具25一般用于確認(rèn)正在開發(fā)(或正在測(cè)試)的一個(gè)給定應(yīng)用程序的操作在多個(gè)操作系統(tǒng)平臺(tái)上是否有一個(gè)一致性的顯示輸出;另一方面,確認(rèn)工具適用于確認(rèn)應(yīng)用軟件的圖形顯示輸出在有同一操作系統(tǒng)的一個(gè)系統(tǒng)上的多次執(zhí)行中是否一致。如本技術(shù)中所熟知的,一個(gè)與常規(guī)的“基于視窗”圖形用戶接口相關(guān)的顯示輸出包括一些單元,而這些單元非限制地包括窗口,菜單,標(biāo)題棒,框,滾動(dòng)條,位圖,圖標(biāo)及構(gòu)成GUI的其它控制。在獨(dú)立于平臺(tái)的軟件程序(例如Java應(yīng)用程序或小程序)的開發(fā)和設(shè)計(jì)中,開發(fā)者(或其他人)希望能夠確認(rèn)正在開發(fā)的特定軟件在多種不同計(jì)算機(jī)系統(tǒng)中是否呈現(xiàn)同樣的“外觀和感覺”。確認(rèn)工具25提供了一個(gè)有效和高度精確的機(jī)制,以確認(rèn)一個(gè)獨(dú)立于平臺(tái)的應(yīng)用程序在已知圖形用戶接口上呈現(xiàn)一個(gè)一致性的圖形顯示輸出,已知的圖形用戶接口例如,IBM OS/2圖象管理器,Microsoft WindowsNT,Microsoft Windows 95,Macintosh,和X Windows,以及其它接口。
圖2是本發(fā)明確認(rèn)工具的基本操作的流程,在運(yùn)行不同操作系統(tǒng)的計(jì)算機(jī)上確認(rèn)軟件應(yīng)用程序圖形顯示輸出。為討論起見,以下所做討論的范圍是只在兩個(gè)操作系統(tǒng)上測(cè)試應(yīng)用程序。不過(guò),對(duì)于一個(gè)具有一般技術(shù)的人來(lái)說(shuō),可以認(rèn)識(shí)到這并非是本發(fā)明的限制,因?yàn)槎啻芜\(yùn)行測(cè)試可以包括任意數(shù)量的異構(gòu)計(jì)算機(jī)平臺(tái)。
基本的例程包括一些處理步驟,它們可由計(jì)算機(jī)中的硬件或測(cè)試子系統(tǒng)執(zhí)行,或在確認(rèn)工具軟件自身中執(zhí)行。在步驟30開始例程,確定是否所有的運(yùn)行測(cè)試都已結(jié)束。如以上所提到的,一個(gè)給定的運(yùn)行測(cè)試包括一些(將在以下介紹),對(duì)在測(cè)試程序所測(cè)試的一個(gè)給定操作系統(tǒng)平臺(tái)上運(yùn)行的一個(gè)給定應(yīng)用程序的處理步驟。如果在第30步,該測(cè)試的結(jié)果是肯定的,則例程分支到第40步,該步將在以下做詳細(xì)介紹。如果在第30步,該測(cè)試的結(jié)果是否定的,則進(jìn)程在第32步繼續(xù),運(yùn)行下一次測(cè)試。以下步驟描述了基本操作。
在第34步進(jìn)行一次檢測(cè)以確定正在被測(cè)試的應(yīng)用程序是否已到達(dá)一個(gè)給定執(zhí)行點(diǎn)。按本發(fā)明,一個(gè)由確認(rèn)工具測(cè)試的應(yīng)用程序是由多次運(yùn)行測(cè)試來(lái)檢測(cè)的,但都在一個(gè)給定的執(zhí)行點(diǎn)。以這種方式,開發(fā)者可以確信,在給定執(zhí)行點(diǎn)不改變的指定操作GUI結(jié)構(gòu)可以被從分析中濾出(最好,如將要看到的那樣,使用一個(gè)統(tǒng)計(jì)分析)。給定執(zhí)行點(diǎn)最好可以由用戶提供,或是可以由一些系統(tǒng)控制改變。如果在第34步,檢測(cè)的結(jié)果是否定的,則例程循環(huán)并繼續(xù)重復(fù)該步驟。不過(guò),如果在第34步檢測(cè)的結(jié)果是肯定的,它表明特定的運(yùn)行測(cè)試已到達(dá)給定執(zhí)行點(diǎn),然后,例程在第36步繼續(xù)。
此時(shí),例程處理被測(cè)試應(yīng)用程序生成的一對(duì)圖形輸出幀。在一個(gè)最佳實(shí)施例中,利用測(cè)試子系統(tǒng)中的圖象幀抓取器捕獲該對(duì)幀,這對(duì)幀代表正好在給定執(zhí)行點(diǎn)(應(yīng)用程序中)之前顯示在GUI上的特定的幀和正好在給定執(zhí)行點(diǎn)之后顯示在GUI上的特定的幀。一個(gè)幀可以包含顯示圖象的所有或任何給定部分。所選的特定幀不需是連續(xù)幀或是具有規(guī)定的特定時(shí)間關(guān)系,不過(guò),其條件是,在多次運(yùn)行測(cè)試中要使用同一幀配對(duì)關(guān)系。
然后,例程在第38步繼續(xù),處理這對(duì)圖形輸出幀。按照一個(gè)最佳實(shí)施例,第38步包括對(duì)該幀做按位異或,以便為特定運(yùn)行測(cè)試生成一個(gè)Δ值。這樣,將為該次特定運(yùn)行測(cè)試生成Δ值(這里,該應(yīng)用程序是在一個(gè)第一給定操作系統(tǒng)上執(zhí)行的)。盡管最好對(duì)整個(gè)幀做按位異或邏輯操作,但這并不是本發(fā)明的要求。這樣,例如,可以以這種方式處理幀對(duì)的任何給定部分,只要隨后在其它運(yùn)行測(cè)試中檢測(cè)同一給定部分。另一方面,可以使用一些其它邏輯操作,而非異或,只要在其它運(yùn)行測(cè)試中也實(shí)施類似操作。
以這種方式處理這對(duì)幀具有顯著優(yōu)點(diǎn)。特別地,在幀對(duì)間不改變的所有GUI顯示結(jié)構(gòu)基本上被屏蔽掉或?yàn)V去,只留下存在于特定執(zhí)行點(diǎn)上的幀的“差值”。這樣,包括視窗框,標(biāo)題棒,滾動(dòng)棒,圖標(biāo)等,以及其它系統(tǒng)指定操作的輸出信息的這類顯示結(jié)構(gòu)被從確認(rèn)處理進(jìn)一步的考慮中消去。
在第39步保存Δ值以后,控制回到第40步。在該步,Δ值{Δ1,Δ2,……}被從存儲(chǔ)器中取出。這些值的每一個(gè)都代表連續(xù)的幀對(duì)輸出(即,從幀“n-1”到幀“n”)在應(yīng)用程序中同一給定執(zhí)行點(diǎn)處不同的程度(當(dāng)該應(yīng)用程序在多個(gè)操作系統(tǒng)平臺(tái)中指定的一個(gè)上執(zhí)行時(shí))。在第42步,例程挑選一個(gè)給定的統(tǒng)計(jì)方法來(lái)分析該Δ值。按本發(fā)明,可以使用任何合適的統(tǒng)計(jì)方法來(lái)比較在多次運(yùn)行測(cè)試中生成的Δ值。已知的統(tǒng)計(jì)方法包括,不加限制,模式匹配算法,模糊邏輯算法,一個(gè)具有一組學(xué)習(xí)規(guī)則的自適應(yīng)推理機(jī),及其它已知或最近開發(fā)的統(tǒng)計(jì)估計(jì)例程。在運(yùn)行在計(jì)算機(jī)上的軟件中實(shí)施該特定例程。如果希望,該步驟可以包括任何已知或最近開發(fā)的確定性分析方法。
在第44步,對(duì)該組的Δ值應(yīng)用統(tǒng)計(jì)方法。然后,在第46步運(yùn)行一個(gè)測(cè)試以確定在一個(gè)給定的,用戶可選的置信度(例如95%)內(nèi),Δ值是否“匹配”。當(dāng)然,可以使用任何種類的統(tǒng)計(jì)量度。如果在第46步,檢測(cè)的結(jié)果是否定的,則在第48步向用戶提供一條指示,表明在被測(cè)試的多個(gè)操作系統(tǒng)平臺(tái)上,該應(yīng)用程序的圖形顯示輸出是不一致的。如果希望,可以在第50步執(zhí)行一個(gè)附加步驟,以隔離并標(biāo)識(shí)特定的顯示輸出的差異。不過(guò),如果在第46步,檢測(cè)的結(jié)果是肯定的,則在第52步,例程繼續(xù),生成一個(gè)指示,表示圖形顯示輸出在多個(gè)被測(cè)試操作系統(tǒng)中是“正確的”,例程結(jié)束。
這樣,如在圖3的方塊圖中所舉例說(shuō)明的,每次運(yùn)行測(cè)試54生成一個(gè)Δ值Δn。然后,不同的Δ值被提供給統(tǒng)計(jì)分析器56以生成一個(gè)“匹配”或一個(gè)“舍棄”。另一個(gè)替換輸出可以是,結(jié)果是“非確定的”,這就需要重復(fù)一次或多次運(yùn)行測(cè)試。該工具還可以包括一個(gè)診斷例程,以估計(jì)并輸出一些特定信息,該信息表明哪些特定圖形顯示輸出信息影響或引起拒收。該信息可被開發(fā)者用于糾正問(wèn)題(例如,通過(guò)再加工應(yīng)用程序代碼)。
這樣,當(dāng)一個(gè)測(cè)試中的應(yīng)用程序在多個(gè)不同的操作系統(tǒng)平臺(tái)上運(yùn)行時(shí),本發(fā)明便利地捕捉連續(xù)的圖形顯示輸出幀。然后,該幀被處理以屏蔽掉所有在給定執(zhí)行點(diǎn)非時(shí)變的操作系統(tǒng)指定GUI及程序生成結(jié)構(gòu)。通過(guò)利用一個(gè)給定的統(tǒng)計(jì)分析,比較為每次運(yùn)行測(cè)試生成的Δ值,確認(rèn)工具證實(shí)程序輸出的一致性。這顯著縮短了程序開發(fā)時(shí)間,精力和費(fèi)用,特別是對(duì)于獨(dú)立于平臺(tái)的應(yīng)用程序。要利用該工具測(cè)試和調(diào)試的一個(gè)特定應(yīng)用程序是一個(gè)Java應(yīng)用程序或小程序。在是一個(gè)Java小程序的情況下,一個(gè)小程序觀測(cè)器可被用于進(jìn)一步證實(shí)一致性。
圖4舉例說(shuō)明了本發(fā)明一個(gè)改進(jìn)方案的流程圖,其中,在一個(gè)同類平臺(tái)上,在連續(xù)的運(yùn)行測(cè)試中測(cè)試一個(gè)給定應(yīng)用程序。該實(shí)施例使應(yīng)用程序開發(fā)者能夠證實(shí),該應(yīng)用程序在利用相同或基本類似的執(zhí)行環(huán)境的多次執(zhí)行中,操作是一致的。這樣,在圖4的實(shí)施例中,希望操作平臺(tái)是相同的。
如前面的實(shí)施例那樣,基本的例程包括由計(jì)算機(jī)或測(cè)試子系統(tǒng)26中的硬件,或由確認(rèn)工具軟件自身執(zhí)行的處理步驟。在第60步,例程開始,確定是否所有的運(yùn)行測(cè)試都已完成。在該實(shí)施例中,一個(gè)給定的運(yùn)行測(cè)試包括一些處理步驟(以下將要描述),這些步驟有關(guān)一個(gè)在同一操作系統(tǒng)平臺(tái)(但可能有不同的硬件配置)上執(zhí)行的給定應(yīng)用程序。如果在第60步,檢測(cè)的結(jié)果是肯定的,則例程分支到第70步,該步驟將在以下詳細(xì)介紹。不過(guò),如果在第60步,檢測(cè)的結(jié)果是否定的,則例程繼續(xù)進(jìn)行到第62步,運(yùn)行下一次測(cè)試。
在第64步,進(jìn)行檢測(cè)以確定正在被測(cè)試的應(yīng)用程序是否已到達(dá)執(zhí)行點(diǎn)。如果在第64步檢測(cè)的結(jié)果是否定的,則例程循環(huán)并繼續(xù)重復(fù)該步驟。不過(guò),如果在第64步檢測(cè)的結(jié)果是肯定的,它表示特定的運(yùn)行測(cè)試已到達(dá)給定執(zhí)行點(diǎn),則例程繼續(xù)進(jìn)行到第66步。
正如前面根據(jù)圖3所示例程描述的那樣,例程在第68步繼續(xù),處理被圖象幀抓取器捕獲的圖象輸出幀對(duì)。按最佳實(shí)施例,第68步又包括對(duì)幀進(jìn)行按位異或,從而為特定的運(yùn)行測(cè)試生成一個(gè)Δ值。這樣,就為這一次特定的運(yùn)行測(cè)試生成了Δ值Δ1。然后,在第69步保存該Δ值,且控制返回第70步。在這一步,從存儲(chǔ)中取出Δ值{Δ1,Δ2……}。在第72步,例程選擇一種給定的統(tǒng)計(jì)方法以分析該Δ值。
在第74步,對(duì)該組Δ值應(yīng)用統(tǒng)計(jì)方法,然后,在第76步運(yùn)行一次檢測(cè)以確定在一個(gè)給定的,用戶可選的置信度內(nèi),該Δ值是否“匹配”。如果在第76步,檢測(cè)的結(jié)果是否定的,則在第78步向用戶提供一個(gè)指示,告訴用戶該應(yīng)用程序的圖形顯示輸出在被測(cè)試的系統(tǒng)平臺(tái)或配置上是不一致的。如果希望,在第80步執(zhí)行一個(gè)附加的步驟,以隔離并標(biāo)識(shí)特定的顯示輸出差值。不過(guò),如果在第76步檢測(cè)的結(jié)果是肯定的,則在第82步,例程繼續(xù),生成一個(gè)指示,告訴用戶該圖形顯示輸出在被測(cè)試的多個(gè)操作系統(tǒng)上是“正確”的。如果檢測(cè)的結(jié)果不確定,則例程也提供一個(gè)合適的指示,這使得處理過(guò)程結(jié)束。
對(duì)本技術(shù)有一般知識(shí)的人士,可以認(rèn)識(shí)到,可以對(duì)本發(fā)明改動(dòng)或修改,且仍在所述范圍內(nèi)。例如,有可能希望確定各對(duì)幀(在一個(gè)給定的運(yùn)行測(cè)試中)間相似的程度,而不是讓確認(rèn)工具生成一個(gè)“差值”或Δ值。這樣,當(dāng)希望用“差值”技術(shù)時(shí),它并非是對(duì)本發(fā)明的限制。進(jìn)一步,盡管對(duì)Δ值或其它值做統(tǒng)計(jì)分析是確認(rèn)測(cè)試結(jié)果的優(yōu)選方法,但有一般技術(shù)的人士都可以認(rèn)識(shí)到,也可以使用確定性分析技術(shù)。所有這些改變都是在本發(fā)明范圍內(nèi)的。
本發(fā)明的一個(gè)最佳實(shí)施例是一個(gè)應(yīng)用程序,即一組代碼模式的指令(程序代碼),它可以,例如,位于計(jì)算機(jī)的隨機(jī)存取存儲(chǔ)器中。該組指令被保存在另一個(gè)計(jì)算機(jī)存儲(chǔ)器中,直到被計(jì)算機(jī)請(qǐng)求,例如,保存在一個(gè)硬盤設(shè)備中,或在一個(gè)可移開存儲(chǔ)器中,例如一個(gè)光盤(最終用于一個(gè)CD ROM)或軟磁盤(最終用于一個(gè)軟磁盤驅(qū)動(dòng)機(jī)構(gòu)),或是通過(guò)互聯(lián)網(wǎng)或其它計(jì)算機(jī)網(wǎng)絡(luò)下載。這樣,本發(fā)明可被實(shí)現(xiàn)為用于計(jì)算機(jī)中的一個(gè)計(jì)算機(jī)程序產(chǎn)品。
另外,盡管所述的不同方法是簡(jiǎn)單地實(shí)現(xiàn)在一個(gè)通用計(jì)算機(jī)中,由軟件有選擇地啟動(dòng)或重新配置的,但對(duì)本技術(shù)有一般知識(shí)的人士能夠認(rèn)識(shí)到,這種方法可以用硬件,用固件,或用被構(gòu)造為去執(zhí)行所需方法步驟的更專用的設(shè)備來(lái)執(zhí)行。
盡管沒有要求,但組成本發(fā)明的不同進(jìn)程應(yīng)位于同一主機(jī)上或位于由一個(gè)網(wǎng)絡(luò)(例如,Internet,Intranet,廣域網(wǎng)(WAN)或局域網(wǎng)(LAN))互聯(lián)的不同機(jī)器上。這樣,一個(gè)運(yùn)行本發(fā)明的機(jī)器具有合適的網(wǎng)絡(luò)硬件,以建立與其它計(jì)算機(jī)的連接。例如,一個(gè)計(jì)算機(jī)可能有一個(gè)到運(yùn)行在一個(gè)令牌環(huán)或以太網(wǎng)適配器上的網(wǎng)絡(luò)的TCP/IP或NETBIOS連接。
那些本技術(shù)專業(yè)人士可以認(rèn)識(shí)到,以上所述的指定實(shí)施例可以很容易地被用做修改或設(shè)計(jì)用于完成與本發(fā)明目的相同的其它技術(shù)的基礎(chǔ),還可以認(rèn)識(shí)到,這類等效結(jié)構(gòu)并不脫離附加權(quán)利要求中所陳述的本發(fā)明的精神和范圍。
這里闡述了本人的發(fā)明,本人所聲明為新的和希望由特許證書保護(hù)的內(nèi)容在以下權(quán)利要求中陳述。
權(quán)利要求
1.一種方法,用于確認(rèn)一個(gè)給定軟件應(yīng)用程序的圖形顯示輸出在各個(gè)操作系統(tǒng)上是一致的,該方法的特點(diǎn)在于,它包括以下步驟在每個(gè)操作系統(tǒng)上,在該軟件應(yīng)用程序的一個(gè)給定執(zhí)行點(diǎn)處,捕捉一對(duì)圖形顯示輸出幀;為各操作系統(tǒng)處理每對(duì)圖形輸出幀,以生成給定信息,該給定信息為各操作系統(tǒng)屏蔽掉在一對(duì)幀中非時(shí)變的圖形顯示輸出結(jié)構(gòu);比較為各個(gè)操作系統(tǒng)所生成的給定信息,以確認(rèn)在各操作系統(tǒng)上,該給定軟件應(yīng)用程序的圖形顯示輸出滿足一個(gè)給定準(zhǔn)則。
2.如權(quán)利要求1所述的方法,其特征在于,該給定的軟件應(yīng)用程序是一個(gè)用Java編寫的應(yīng)用程序。
3.如權(quán)利要求1所述的方法,其特征在于該對(duì)幀是連續(xù)的圖形顯示輸出幀。
4.如權(quán)利要求1所述的方法,其特征在于,該比較步驟包括執(zhí)行一個(gè)統(tǒng)計(jì)算法。
5.如權(quán)利要求1所述的方法,其特征在于,該給定法則檢驗(yàn)該給定信息在一個(gè)給定置信度內(nèi)是否可比。
6.如權(quán)利要求5所述的方法,其特征在于該給定置信度是用戶可選的。
7.如權(quán)利要求1所述的方法,其特征在于,該處理步驟包括對(duì)構(gòu)成一對(duì)的幀執(zhí)行異或邏輯操作。
8.如權(quán)利要求7所述的方法,其特征在于,該異或邏輯操作是按位執(zhí)行的。
9.一種方法,用來(lái)確認(rèn)在各個(gè)操作系統(tǒng)上,一個(gè)Java應(yīng)用程序的圖形顯示輸出是一致的,其特征在于,它包括以下步驟在每個(gè)操作系統(tǒng)上,在Java應(yīng)用程序中的一個(gè)給定執(zhí)行點(diǎn)處,捕捉連續(xù)的圖形顯示輸出幀;為每個(gè)操作系統(tǒng)處理該連續(xù)圖形輸出幀,以生成一個(gè)Δ值,該Δ值為各操作系統(tǒng)屏蔽掉在該對(duì)幀上非時(shí)變的圖形顯示輸出結(jié)構(gòu);統(tǒng)計(jì)比較為各操作系統(tǒng)生成的Δ值,以確認(rèn)在各操作系統(tǒng)上,Java應(yīng)用程序的圖形顯示輸出是一致的。
10.如權(quán)利要求9所述的方法,其特征在于,該Java應(yīng)用程序是一個(gè)Java小程序。
11.如權(quán)利要求9所述的方法,其特征在于,該處理步驟是一個(gè)按位異或邏輯操作。
12.如權(quán)利要求9所述的方法,其特征在于,該比較步驟包括對(duì)Δ值執(zhí)行一個(gè)統(tǒng)計(jì)分析。
13.如權(quán)利要求12所述的方法,其特征在于,該統(tǒng)計(jì)分析是一個(gè)模式匹配算法。
14.如權(quán)利要求12所述的方法,其特征在于,該統(tǒng)計(jì)分析是一個(gè)模糊邏輯算法。
15.如權(quán)利要求12所述的方法,其特征在于,該統(tǒng)計(jì)分析是一個(gè)智能網(wǎng)絡(luò)算法。
16.一個(gè)計(jì)算機(jī)可讀媒體上的計(jì)算機(jī)程序產(chǎn)品,用于確認(rèn)一個(gè)給定軟件應(yīng)用程序的一個(gè)圖形顯示輸出在各操作系統(tǒng)上是一致的,其特征在于,它包括在各操作系統(tǒng)上,在軟件應(yīng)用程序的一個(gè)給定執(zhí)行點(diǎn)工作的裝置,用于捕捉一對(duì)圖形顯示輸出幀;響應(yīng)于該捕捉裝置的裝置,用于處理每對(duì)圖形輸出幀,以便為各操作系統(tǒng)生成給定信息,該給定信息為各操作系統(tǒng)屏蔽掉在該對(duì)幀上非時(shí)變的圖形顯示輸出結(jié)構(gòu);及響應(yīng)于處理裝置的裝置,用于比較為各操作系統(tǒng)生成的給定信息,以確定給定軟件應(yīng)用程序的圖形顯示輸出在各操作系統(tǒng)上是一致的。
17.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,該給定軟件應(yīng)用程序是一個(gè)用Java編寫的應(yīng)用程序。
18.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,捕捉裝置是一個(gè)圖像幀抓取器。
19.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,該處理方式是一個(gè)異或邏輯操作。
20.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,該比較方法是一個(gè)統(tǒng)計(jì)分析。
21.如權(quán)利要求20所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,該統(tǒng)計(jì)分析是一個(gè)模式匹配算法。
22.如權(quán)利要求20所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,該統(tǒng)計(jì)分析是一個(gè)模糊邏輯算法。
23.如權(quán)利要求20所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,該統(tǒng)計(jì)分析是一個(gè)智能網(wǎng)絡(luò)算法。
24.一個(gè)計(jì)算機(jī),包括一個(gè)處理器,和一個(gè)工具,用于確認(rèn)一個(gè)給定軟件應(yīng)用程序的一個(gè)圖形顯示輸出在各操作系統(tǒng)是一致的,它包括在各操作系統(tǒng)上,在軟件應(yīng)用程序的一個(gè)給定執(zhí)行點(diǎn)處工作的裝置,用于捕捉一對(duì)圖形顯示輸出幀;響應(yīng)于該捕捉裝置的裝置,用于處理每對(duì)圖形輸出幀,以便為各操作系統(tǒng)生成給定信息,該給定信息為各操作系統(tǒng)屏蔽掉在一對(duì)幀上非時(shí)變的圖形顯示輸出結(jié)構(gòu),和響應(yīng)于處理裝置的裝置,用于比較為各操作系統(tǒng)生成的給定信息,以確認(rèn)給定軟件應(yīng)用程序的圖形顯示輸出在各操作系統(tǒng)上是一致的。
25.如權(quán)利要求24所述的計(jì)算機(jī),其特征在于,給定的軟件應(yīng)用程序是一個(gè)用Java編寫的應(yīng)用程序。
26.如權(quán)利要求24所述的計(jì)算機(jī),其特征在于,該捕捉裝置是一個(gè)圖象幀抓取器。
27.如權(quán)利要求24所述的計(jì)算機(jī),其特征在于,該處理方法是一個(gè)異或邏輯操作。
28.如權(quán)利要求24所述的計(jì)算機(jī),其特征在于,該比較方法是一個(gè)統(tǒng)計(jì)分析。
29.一種方法,用于確認(rèn)當(dāng)一個(gè)當(dāng)原來(lái)在一個(gè)面向目標(biāo)、平臺(tái)獨(dú)立編程環(huán)境中寫成的軟件應(yīng)用程序在運(yùn)行第一和第二操作系統(tǒng)的各窗口環(huán)境中被執(zhí)行時(shí),該應(yīng)用程序具有一個(gè)一致性的圖形輸出,該方法的特點(diǎn)在于在各操作系統(tǒng)的每一個(gè)上,在軟件應(yīng)用程序的一個(gè)給定執(zhí)行點(diǎn),捕捉一對(duì)圖形顯示輸出幀;對(duì)每個(gè)操作系統(tǒng)處理每對(duì)圖形輸出幀以生成給定信息,該給定信息為各操作系統(tǒng)屏蔽掉在該對(duì)幀中非時(shí)變的圖形顯示輸出結(jié)構(gòu);統(tǒng)計(jì)比較為各操作系統(tǒng)產(chǎn)生的給定信息,以確認(rèn)該給定軟件應(yīng)用程序的圖形顯示輸出在各操作系統(tǒng)上是一致的。
30.如權(quán)利要求29所述的方法,其特征在于,該面向?qū)ο?,?dú)立于平臺(tái)的編程環(huán)境是Java。
31.一種方法,用來(lái)確認(rèn)當(dāng)一個(gè)軟件應(yīng)用程序在各測(cè)試系統(tǒng)配置中執(zhí)行時(shí),該程序的圖形顯示輸出是一致的,其特征在于,它包括以下步驟當(dāng)該軟件應(yīng)用程序在各測(cè)試系統(tǒng)配置上執(zhí)行時(shí),在軟件應(yīng)用程序的一個(gè)給定執(zhí)行點(diǎn),捕捉連續(xù)的圖形顯示輸出幀;為各測(cè)試系統(tǒng)配置,處理該連續(xù)的圖形顯示輸出幀,以生成一個(gè)Δ值,該Δ值屏蔽掉在該對(duì)幀中非時(shí)變的圖形顯示輸出結(jié)構(gòu);將為每個(gè)測(cè)試系統(tǒng)配置所產(chǎn)生的Δ值進(jìn)行統(tǒng)計(jì)比較,以確認(rèn)該軟件應(yīng)用程序的圖形顯示輸出在各測(cè)試系統(tǒng)配置中是一致的。
32.如權(quán)利要求31所述的方法,其特征在于,測(cè)試系統(tǒng)配置中至少有兩個(gè)使用一個(gè)給定操作系統(tǒng)。
33.如權(quán)利要求31所述的方法,其特征在于測(cè)試系統(tǒng)配置中至少有兩個(gè)使用不同的操作系統(tǒng)。
全文摘要
一種方法,用于確認(rèn)一個(gè)給定軟件應(yīng)用程序的圖形顯示輸出在各操作系統(tǒng)上是一致的。首先,在每個(gè)操作系統(tǒng)上,在該軟件應(yīng)用程序的給定執(zhí)行點(diǎn)處,捕捉連續(xù)的圖形顯示輸出。然后,處理該對(duì)幀,以生成一個(gè)△值,該值為各操作系統(tǒng)屏蔽掉在該對(duì)幀上非時(shí)變的圖形顯示輸出結(jié)構(gòu)。然后,比較在每次運(yùn)行測(cè)試中生成的△值(最好使用一個(gè)統(tǒng)計(jì)分析),以確認(rèn)該給定應(yīng)用程序的圖形顯示輸出在各操作系統(tǒng)上是一致的,本技術(shù)也可被用于在多次執(zhí)行(該多次執(zhí)行運(yùn)行在一個(gè)同類計(jì)算機(jī)系統(tǒng)中)中確認(rèn)該應(yīng)用程序。
文檔編號(hào)G06K9/00GK1227940SQ9812553
公開日1999年9月8日 申請(qǐng)日期1998年12月21日 優(yōu)先權(quán)日1997年12月22日
發(fā)明者J·L·泰勒 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司