本發(fā)明涉及軟件測試領(lǐng)域,具體地,涉及一種軟件測試方法及系統(tǒng)。
背景技術(shù):
許多web應(yīng)用系統(tǒng)會(huì)通過加載activex的方式來實(shí)現(xiàn)用戶體驗(yàn)或者調(diào)用windows程序、驅(qū)動(dòng)硬件等目的。對于這類系統(tǒng)的軟件測試,一直以來都是通過模擬用戶的真實(shí)情況來運(yùn)行的。但是這樣的方式存在若干缺點(diǎn):(1)對于存在硬件交互的系統(tǒng)需要人手一套硬件設(shè)備,成本開支很大;(2)activex插件頻繁加載程序?qū)y試效率的影響很大;(3)異常場景的模擬比較復(fù)雜,很難做到所有場景的全覆蓋。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種軟件測試方法及系統(tǒng),以解決現(xiàn)有技術(shù)中的問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種軟件測試方法,其中,該方法包括:通過web應(yīng)用程序調(diào)用操作系統(tǒng)注冊表中的activex控件改寫后的鍵值對的值,并基于所述改寫后的鍵值對的值與所述mock程序進(jìn)行通信;所述mock程序獲取用戶對所述web應(yīng)用程序的輸入值,根據(jù)預(yù)先存儲(chǔ)的輸入值與輸出值映射關(guān)系確定與輸入值對應(yīng)的輸出值,并向用戶呈現(xiàn)所確定的輸出值;以及所述mock程序輸出所述用戶選擇的輸出值至web應(yīng)用程序。
本發(fā)明還提供了一種軟件測試系統(tǒng),該系統(tǒng)包括web應(yīng)用程序單元和mock程序單元,其中:所述web應(yīng)用程序單元用于調(diào)用操作系統(tǒng)注冊表中的activex控件改寫后的鍵值對的值,并基于所述改寫后的鍵值對的值與所 述mock程序單元進(jìn)行通信;所述mock程序單元用于獲取用戶對所述web應(yīng)用程序單元的輸入值,根據(jù)預(yù)先存儲(chǔ)的輸入值與輸出值映射關(guān)系確定與輸入值對應(yīng)的輸出值,并向用戶呈現(xiàn)所確定的輸出值;以及所述mock程序單元還用于輸出所述用戶選擇的輸出值至web應(yīng)用程序單元。
通過上述技術(shù)方案,在用戶(例如,測試人員)想要對web應(yīng)用程序進(jìn)行測試時(shí),web應(yīng)用程序會(huì)調(diào)用操作系統(tǒng)注冊表中的activex控件改寫后的鍵值對的值,并基于所述改寫后的鍵值對的值與所述mock程序進(jìn)行通信,然后所述mock程序可以獲取用戶對所述web應(yīng)用程序的輸入值,根據(jù)預(yù)先存儲(chǔ)的輸入值與輸出值映射關(guān)系可以確定與輸入值對應(yīng)的輸出值,并向用戶呈現(xiàn)所確定的輸出值(用戶可以選擇期望的輸出值),以及所述mock程序輸出所述用戶選擇的輸出值至web應(yīng)用程序。由此,無需使用真實(shí)硬件設(shè)備就可以模擬各種用戶的真實(shí)場景進(jìn)行對應(yīng)用軟件的測試,且可以繞過原有的activex控件,提高了應(yīng)用軟件測試效率。并且,由于測試過程無真實(shí)硬件設(shè)備參與,所以避免了真實(shí)硬件設(shè)備出現(xiàn)問題影響軟件測試結(jié)果的情況,提高了軟件測試的準(zhǔn)確性。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說明。
附圖說明
附圖是用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明,但并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1是根據(jù)本發(fā)明一種實(shí)施方式的軟件測試方法的流程圖;以及
圖2是根據(jù)本發(fā)明一種實(shí)施方式的軟件測試系統(tǒng)的方框圖。
具體實(shí)施方式
以下結(jié)合附圖對本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。
圖1是根據(jù)本發(fā)明一種實(shí)施方式的軟件測試方法的流程圖
如圖1所示,本發(fā)明一種實(shí)施方式提供的軟件測試方法包括:
s100,通過web應(yīng)用程序調(diào)用操作系統(tǒng)注冊表中的activex控件改寫后的鍵值對的值,并基于所述改寫后的鍵值對的值與所述mock程序進(jìn)行通信;
s102,所述mock程序獲取用戶對所述web應(yīng)用程序的輸入值,根據(jù)預(yù)先存儲(chǔ)的輸入值與輸出值映射關(guān)系確定與輸入值對應(yīng)的輸出值,并向用戶呈現(xiàn)所確定的輸出值;以及
s104,所述mock程序輸出所述用戶選擇的輸出值至web應(yīng)用程序。
在用戶(例如,測試人員)想要對web應(yīng)用程序進(jìn)行測試時(shí),web應(yīng)用程序會(huì)調(diào)用操作系統(tǒng)注冊表中的activex控件改寫后的鍵值對的值,并基于所述改寫后的鍵值對的值與所述mock程序進(jìn)行通信,然后所述mock程序可以獲取用戶對所述web應(yīng)用程序的輸入值,根據(jù)預(yù)先存儲(chǔ)的輸入值與輸出值映射關(guān)系可以確定與輸入值對應(yīng)的輸出值,并向用戶呈現(xiàn)所確定的輸出值(用戶可以選擇期望的輸出值),以及所述mock程序輸出所述用戶選擇的輸出值至web應(yīng)用程序。由此,無需使用真實(shí)硬件設(shè)備就可以模擬各種用戶的真實(shí)場景進(jìn)行對應(yīng)用軟件的測試,且可以繞過原有的activex控件(即,完全脫離原有activex控制的限制進(jìn)行軟件進(jìn)行測試),避免了控件的頻繁加載,從而提高了應(yīng)用軟件測試效率且降低了成本。并且,由于測試過程無真實(shí)硬件設(shè)備參與,所以避免了硬件設(shè)備出現(xiàn)問題影響軟件測試結(jié)果的情況,提高了軟件測試的準(zhǔn)確性。
也就是,在現(xiàn)有情況下,web應(yīng)用程序?qū)indows應(yīng)用程序、硬件設(shè) 備的調(diào)用是通過activex控件來完成的,具體而言,activex控件在windows系統(tǒng)中的注冊表中存有唯一的一個(gè)鍵值對,web應(yīng)用程序根據(jù)這個(gè)鍵值對的值找到硬件設(shè)備的接口函數(shù)包,進(jìn)而進(jìn)行消息通訊。而在本發(fā)明中,由于注冊表中真實(shí)activex控件的鍵值對的值已被改寫,這樣,當(dāng)web應(yīng)用程序再次訪問activex時(shí),便通過注冊表找到了mock程序,進(jìn)而與mock程序通信,由此mock程序可以輕松地截獲來自web應(yīng)用程序的消息,從而實(shí)現(xiàn)對原activex控件的接管。
并且,由于所述mock程序輸出的輸出值是可控的(即,用戶選擇的期望輸出值),且響應(yīng)迅速,因此可以快速全面地進(jìn)行web應(yīng)用程序的自動(dòng)化測試。
其中,所述改寫后的鍵值對的值對應(yīng)于mock程序。由此,web應(yīng)用程序通過調(diào)用該改寫后的鍵值對的值就可以實(shí)現(xiàn)與mock程序的通信。
此外,可以以對話框/窗口的形式為用戶呈現(xiàn)所確定的輸出值,進(jìn)而用戶可以在對話框/窗口中選擇期望的輸出值。所選擇的輸出值返回至web應(yīng)用程序,該web應(yīng)用程序就可以按照該輸出值執(zhí)行相應(yīng)操作。其中,web應(yīng)用程序按照輸出值執(zhí)行相應(yīng)操作的過程與現(xiàn)有技術(shù)并無不同,本發(fā)明在此不再贅述。
對于預(yù)先存儲(chǔ)的輸入值與輸出值映射關(guān)系,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際情況進(jìn)行設(shè)定,本發(fā)明不對此進(jìn)行限定。
根據(jù)本發(fā)明一種實(shí)施方式,可以通過下述步驟得到所述改寫后的鍵值對的值:
向所述操作系統(tǒng)注冊表注冊所述mock程序,注冊后的mock程序改寫與activex控件對應(yīng)的鍵值對的值,得到所述改寫后的鍵值對的值。
由此,通過修改操作系統(tǒng)注冊表中與activex控件對應(yīng)的鍵值對的值的方式,可以實(shí)現(xiàn)mock程序?qū)τ布O(shè)備接口函數(shù)包的接管。
根據(jù)本發(fā)明一種實(shí)施方式,所確定的輸出值的數(shù)量為一個(gè)或多個(gè)。也就是,輸入值與輸出值映射關(guān)系中輸入值與輸出值可以為一一對應(yīng),也可以為一多對應(yīng)。當(dāng)所確定的輸出值的數(shù)量為一個(gè)時(shí),用戶直接選擇這一個(gè)輸出值,然后mock程序?qū)⒃撦敵鲋递敵鲋羨eb應(yīng)用程序。類似地,當(dāng)所確定的輸出值的數(shù)量為多個(gè)時(shí),用戶從多個(gè)輸出值中任意選擇一個(gè)或選擇期望的輸出值,然后mock程序?qū)⒃撚脩暨x擇的輸出值輸出至web應(yīng)用程序。
圖2是根據(jù)本發(fā)明一種實(shí)施方式的軟件測試系統(tǒng)的方框圖。
如圖2所示,本發(fā)明一種實(shí)施方式提供的軟件測試系統(tǒng)包括web應(yīng)用程序單元20和mock程序單元22,其中:所述web應(yīng)用程序單元20用于調(diào)用操作系統(tǒng)注冊表中的activex控件改寫后的鍵值對的值,并基于所述改寫后的鍵值對的值與所述mock程序單元22進(jìn)行通信;所述mock程序單元22用于獲取用戶對所述web應(yīng)用程序單元20的輸入值,根據(jù)預(yù)先存儲(chǔ)的輸入值與輸出值映射關(guān)系確定與輸入值對應(yīng)的輸出值,并向用戶呈現(xiàn)所確定的輸出值;以及所述mock程序單元22還用于輸出所述用戶選擇的輸出值至web應(yīng)用程序單元20。
由此,無需使用真實(shí)硬件設(shè)備就可以模擬各種用戶的真實(shí)場景進(jìn)行對應(yīng)用軟件的測試,且可以繞過原有的activex控件(即,完全脫離原有activex控制的限制進(jìn)行軟件進(jìn)行測試),避免了控件的頻繁加載,從而提高了應(yīng)用軟件測試效率且降低了成本。并且,由于測試過程無真實(shí)硬件設(shè)備參與,所以避免了硬件設(shè)備出現(xiàn)問題影響軟件測試結(jié)果的情況,提高了軟件測試的準(zhǔn)確性。
根據(jù)本發(fā)明一種實(shí)施方式,該系統(tǒng)還包括注冊單元,用于向所述操作系統(tǒng)注冊表注冊所述mock程序單元22,其中注冊后的mock程序單元22改寫與activex控件對應(yīng)的鍵值對的值,得到所述改寫后的鍵值對的值。
由此,通過修改操作系統(tǒng)注冊表中與activex控件對應(yīng)的鍵值對的值的 方式,可以實(shí)現(xiàn)mock程序單元對硬件設(shè)備接口函數(shù)包的接管。
根據(jù)本發(fā)明一種實(shí)施方式,所確定的輸出值的數(shù)量為一個(gè)或多個(gè)。也就是,輸入值與輸出值映射關(guān)系中輸入值與輸出值可以為一一對應(yīng),也可以為一多對應(yīng)。當(dāng)所確定的輸出值的數(shù)量為一個(gè)時(shí),用戶直接選擇這一個(gè)輸出值,然后mock程序單元22將該輸出值輸出至web應(yīng)用程序單元20。類似地,當(dāng)所確定的輸出值的數(shù)量為多個(gè)時(shí),用戶從多個(gè)輸出值中任意選擇一個(gè)或選擇期望的輸出值,然后mock程序單元22將該用戶選擇的輸出值輸出至web應(yīng)用程序單元20。
以上結(jié)合附圖詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對本發(fā)明的技術(shù)方案進(jìn)行多種簡單變型,這些簡單變型均屬于本發(fā)明的保護(hù)范圍。
另外需要說明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過任何合適的方式進(jìn)行組合。為了避免不必要的重復(fù),本發(fā)明對各種可能的組合方式不再另行說明。
此外,本發(fā)明的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本發(fā)明的思想,其同樣應(yīng)當(dāng)視為本發(fā)明所公開的內(nèi)容。