本發(fā)明涉及測試領(lǐng)域,具體而言,涉及一種計(jì)算機(jī)軟件的測試方法和裝置。
背景技術(shù):
技術(shù)人員在對基于客戶端或者服務(wù)器的軟件進(jìn)行測試時(shí),往往會(huì)涉及到多個(gè)客戶端的協(xié)同測試任務(wù),該測試任務(wù)主要需要多個(gè)客戶端協(xié)同才能完成某項(xiàng)功能的正確性、異常邏輯及性能等的驗(yàn)證。特殊地,在對多人即時(shí)通信軟件或者大型的多人在線網(wǎng)絡(luò)游戲的測試過程中,需要模擬數(shù)千、數(shù)萬甚至更多客戶端同時(shí)操作的場景。但是,在一般情況下,由于測試機(jī)資源的限制,被測試的客戶端在測試機(jī)上的啟動(dòng)數(shù)目無法滿足上述測試條件。
為突破上述測試條件的限制,測試人員會(huì)編寫免客戶端測試腳本來模擬多客戶端的行為處理邏輯,并在測試過程中不斷修改免客戶端測試腳本的行為處理邏輯來滿足特定的測試需求。通常修改免客戶端測試腳本后,需要重啟腳本以使改動(dòng)生效,然而考慮到服務(wù)器負(fù)載的限制,重啟一批模擬上萬客戶端的測試腳本需要經(jīng)歷幾分鐘、幾十分鐘甚至更久,為了減少改動(dòng)免客戶端行為處理邏輯而帶來的重啟耗時(shí)問題,一般會(huì)對免客戶端測試腳本做邏輯上的分組,每次僅需重啟有改動(dòng)的分組,但仍舊無法避免重啟后需要恢復(fù)重啟前測試場景的問題,在復(fù)雜的場景下(例如,有負(fù)載均衡邏輯的系統(tǒng)中),恢復(fù)測試場景將消耗可觀的測試時(shí)間,有時(shí)甚至無法恢復(fù)。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)軟件的測試方法和裝置,以至少解決現(xiàn)有技術(shù)中測試腳本在修改行為處理邏輯之后需要重啟的技術(shù)問題。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種計(jì)算機(jī)軟件的測試方法,包括:模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接,模擬的所述客戶端用于根據(jù)行為處理邏輯結(jié)合所述服務(wù)器進(jìn)行軟件測試,所述行為處理邏輯為所述客戶端與所述服務(wù)器的測試邏輯;維護(hù)所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接,以使所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接不因所述行為處理邏輯的改變而改變;維護(hù)每個(gè)所述客戶端的狀態(tài),以使每個(gè)所述客戶端的狀態(tài)在所述行為處理邏輯改變時(shí)得以延續(xù);根據(jù)測試人員的指令為所述客戶端配置行為處理邏輯;根據(jù)配置的所述行為處理邏輯使用所述客戶端與所述服務(wù)器進(jìn)行軟件測試。
進(jìn)一步地,所述根據(jù)測試人員的指令為所述客戶端配置行為處理邏輯具體包括:根據(jù)測試人員的指令從所述多個(gè)客戶端中選定至少一個(gè)客戶端;根據(jù)測試人員的指令為選定的所述至少一個(gè)客戶端配置所述行為處理邏輯,并保存配置的所述行為處理邏輯與選定的所述至少一個(gè)客戶端之間的映射關(guān)系。
進(jìn)一步地,所述配置行為處理邏輯包括以下至少之一:新增行為處理邏輯、刪除行為處理邏輯、修改行為處理邏輯、為選定的所述至少一個(gè)客戶端新增行為處理邏輯、為選定的所述至少一個(gè)客戶端刪除行為處理邏輯、為選定的所述至少一個(gè)客戶端修改行為處理邏輯。
進(jìn)一步地,所述行為處理邏輯的內(nèi)容包括以下至少之一:協(xié)議層的數(shù)據(jù)包封裝與解析、業(yè)務(wù)邏輯層的通知、廣播、定時(shí)任務(wù)、所模擬客戶端的目標(biāo)操作。
進(jìn)一步地,所述客戶端的狀態(tài)包括以下至少之一:網(wǎng)絡(luò)連接狀態(tài)、網(wǎng)絡(luò)重連歷史、登錄狀態(tài)。
進(jìn)一步地,所述維護(hù)所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接包括以下至少之一:創(chuàng)建所述客戶端與所述服務(wù)器的連接、斷開所述客戶端與所述服務(wù)器的連接、接收所述服務(wù)器發(fā)送的數(shù)據(jù)包、向所述服務(wù)器發(fā)送數(shù)據(jù)包、緩存所述客戶端與所述服務(wù)器的數(shù)據(jù)包。
進(jìn)一步地,以圖形化的方式顯示以下至少之一:所述行為處理邏輯的配置,所述行為處理邏輯與所述客戶端的映射關(guān)系,所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接情況、所述客戶端的狀態(tài)的統(tǒng)計(jì)情況。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種計(jì)算機(jī)軟件的測試裝置,包括:模擬單元,用于模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接,模擬的所述客戶端用于根據(jù)行為處理邏輯結(jié)合所述服務(wù)器進(jìn)行軟件測試;行為邏輯行為處理邏輯單元,用于控制行為處理邏輯,所述行為處理邏輯為所述客戶端與所述服務(wù)器的測試邏輯;連接代理單元,用于維護(hù)所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接,以使所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接不因所述行為處理邏輯的改變而改變;狀態(tài)單元,對應(yīng)于每個(gè)所述客戶端,用于維護(hù)每個(gè)所述客戶端的狀態(tài),以使每個(gè)所述客戶端的狀態(tài)在所述行為處理邏輯改變時(shí)得以延續(xù);邏輯映射單元,用于根據(jù)測試人員的指令為所述客戶端配置行為處理邏輯;測試單元,用于根據(jù)配置的所述行為處理邏輯使用所述客戶端與所述服務(wù)器進(jìn)行軟件測試。
進(jìn)一步地,所述邏輯映射單元具體用于:根據(jù)測試人員的指令從所述多個(gè)客戶端中選定至少一個(gè)客戶端;根據(jù)測試人員的指令為選定的所述至少一個(gè)客戶端配置所述行為處理邏輯,并保存配置的所述行為處理邏輯與選定的所述至少一個(gè)客戶端之間的映射關(guān)系。
進(jìn)一步地,所述配置行為處理邏輯包括以下至少之一:新增行為處理邏輯、刪除行為處理邏輯、修改行為處理邏輯、為選定的所述至少一個(gè)客戶端新增行為處理邏輯、為選定的所述至少一個(gè)客戶端刪除行為處理邏輯、為選定的所述至少一個(gè)客戶端修改行為處理邏輯。
進(jìn)一步地,所述行為處理邏輯的內(nèi)容包括以下至少之一:協(xié)議層的數(shù)據(jù)包封裝與解析、業(yè)務(wù)邏輯層的通知、廣播、定時(shí)任務(wù)、所模擬客戶端的目標(biāo)操作。
進(jìn)一步地,所述客戶端的狀態(tài)包括以下至少之一:網(wǎng)絡(luò)連接狀態(tài)、網(wǎng)絡(luò)重連歷史、登錄狀態(tài)。
進(jìn)一步地,所述維護(hù)所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接包括以下至少之一:創(chuàng)建所述客戶端與所述服務(wù)器的連接、斷開所述客戶端與所述服務(wù)器的連接、接收所述服務(wù)器發(fā)送的數(shù)據(jù)包、向所述服務(wù)器發(fā)送數(shù)據(jù)包、緩存所述客戶端與所述服務(wù)器的數(shù)據(jù)包。
進(jìn)一步地,還包括圖形化輔助單元,用于以圖形化的方式顯示以下至少之一:所述行為處理邏輯的配置,所述行為處理邏輯與所述客戶端的映射關(guān)系,所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接情況、所述客戶端的狀態(tài)的統(tǒng)計(jì)情況。
在本發(fā)明實(shí)施例中,采用模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接,模擬的所述客戶端用于根據(jù)行為處理邏輯結(jié)合所述服務(wù)器進(jìn)行軟件測試,所述行為處理邏輯為所述客戶端與所述服務(wù)器的測試邏輯;維護(hù)所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接,以使所述客戶端與所述服務(wù)器的網(wǎng)絡(luò)連接不因所述行為處理邏輯的改變而改變;維護(hù)每個(gè)所述客戶端的狀態(tài),以使每個(gè)所述客戶端的狀態(tài)在所述行為處理邏輯改變時(shí)得以延續(xù);根據(jù)測試人員的指令為所述客戶端配置行為處理邏輯;根據(jù)配置的所述行為處理邏輯使用所述客戶端與所述服務(wù)器進(jìn)行軟件測試的方式,通過維護(hù)模擬的多個(gè)客戶端與服務(wù)器的網(wǎng)絡(luò)連接,并同時(shí)維護(hù)模擬的每個(gè)客戶端的狀態(tài),使得行為處理邏輯發(fā)生改變時(shí),模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接不會(huì)隨之發(fā)生改變,同時(shí)可以使得模擬的每個(gè)客戶端的狀態(tài)保持不變,相對于現(xiàn)有技術(shù)中,在修改測試腳本的行為處理邏輯之后,還需要重啟測試腳本的方案,本發(fā)明通過維護(hù)網(wǎng)絡(luò)連接和模擬的每個(gè)客戶端的狀態(tài),達(dá)到了測試腳本在修改行為處理邏輯之后不需要重啟腳本的目的,從而實(shí)現(xiàn)了快速對模擬的多個(gè)客戶端進(jìn)行測試的技術(shù)效果,進(jìn)而解決了現(xiàn)有技術(shù)中測試腳本在修改行為處理邏輯之后需要重啟的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的一種計(jì)算機(jī)軟件的測試方法的流程圖;
圖2是根據(jù)本發(fā)明實(shí)施例的另一種計(jì)算機(jī)軟件的測試方法的流程圖;
圖3是根據(jù)本申請實(shí)施例的一種計(jì)算機(jī)軟件的測試裝置的示意圖;
圖4是根據(jù)本發(fā)明實(shí)施例的一種計(jì)算機(jī)軟件的測試裝置的示意圖;以及
圖5是根據(jù)本發(fā)明實(shí)施例的另一種計(jì)算機(jī)軟件的測試裝置的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
根據(jù)本發(fā)明實(shí)施例,提供了一種計(jì)算機(jī)軟件的測試方法的實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本發(fā)明實(shí)施例的一種計(jì)算機(jī)軟件的測試方法的流程圖,如圖1所示,該方法包括如下步驟:
步驟S102,模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接,模擬的客戶端用于根據(jù)行為處理邏輯結(jié)合服務(wù)器進(jìn)行軟件測試,行為處理邏輯為客戶端與服務(wù)器的測試邏輯。
在本發(fā)明實(shí)施例中,測試腳本為模擬多個(gè)客戶端的行為處理邏輯的腳本,因此,該測試腳本又可以稱為免客戶端測試腳本。如果想要建立模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接,則可以通過該測試腳本模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接。由于在現(xiàn)有的腳本測試方案中,腳本測試大多是基于服務(wù)器的測試,因此,需要首先建立模擬的客戶端與服務(wù)器之間的網(wǎng)絡(luò)連接。在本發(fā)明實(shí)施例中,可以在測試腳本中編寫相應(yīng)地代碼,以使該測試腳本在運(yùn)行時(shí)即建立模擬的多個(gè)客戶端與服務(wù)器的網(wǎng)絡(luò)連接。
步驟S104,維護(hù)客戶端與服務(wù)器的網(wǎng)絡(luò)連接,以使客戶端與服務(wù)器的網(wǎng)絡(luò)連接不因行為處理邏輯的改變而改變。
在通過測試腳本對模擬的客戶端的行為處理邏輯進(jìn)行測試的過程中,往往需要客戶端與服務(wù)器保持網(wǎng)絡(luò)連接或者斷開網(wǎng)絡(luò)連接。但是,通過背景技術(shù)中的描述可知,當(dāng)測試腳本的行為處理邏輯發(fā)生改變時(shí),需要重新建立客戶端和服務(wù)器之間的網(wǎng)絡(luò)連接,這就耗費(fèi)了大量的時(shí)間。因此,在本發(fā)明實(shí)施例中,可以維護(hù)模擬的客戶端與服務(wù)器之間的網(wǎng)絡(luò)連接的連接狀態(tài),以使模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接不會(huì)因?yàn)樾袨樘幚磉壿嫷母淖兌淖儭?/p>
在本發(fā)明實(shí)施例中,維護(hù)模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接能夠確保在整個(gè)測試過程中無需斷開測試腳本與服務(wù)器的之間網(wǎng)絡(luò)連接,這使得測試人員能夠在服務(wù)器無感知的情況下更改測試腳本的行為處理邏輯,而無需為此重啟測試腳本,并恢復(fù)測試場景。同時(shí),統(tǒng)一的維護(hù)網(wǎng)絡(luò)連接能夠使用IOCP(I/O完成端口)、select、poll、epoll等技術(shù)高效地維護(hù)大量的網(wǎng)絡(luò)連接,降低免客戶端測試腳本的資源消耗。
步驟S106,維護(hù)每個(gè)客戶端的狀態(tài),以使每個(gè)客戶端的狀態(tài)在行為處理邏輯改變時(shí)得以延續(xù)。
在本發(fā)明實(shí)施例中,還可以維護(hù)模擬的多個(gè)客戶端中每個(gè)客戶端的狀態(tài),以使每個(gè)客戶端的狀態(tài)在行為處理邏輯改變時(shí)能夠保持不變。
步驟S108,根據(jù)測試人員的指令為客戶端配置行為處理邏輯。
在本發(fā)明實(shí)施例中,可以通過為測試腳本配置行為處理邏輯來為模擬的客戶端配置行為處理邏輯。
如果模擬的客戶端的數(shù)量為多個(gè),那么可以根據(jù)測試人員的指令在模擬的多個(gè)客戶端中選定至少一個(gè)客戶端,然后,根據(jù)測試人員的指令為選定的至少一個(gè)客戶端配置行為處理邏輯,并保存配置的行為處理邏輯與選定的至少一個(gè)客戶端之間的映射關(guān)系。
步驟S110,根據(jù)配置的行為處理邏輯使用客戶端與服務(wù)器進(jìn)行軟件測試。
在本發(fā)明實(shí)施例中,可以在模擬的客戶端與服務(wù)器之間的網(wǎng)絡(luò)連接不發(fā)生變化的情況下,或者在模擬的客戶端中每個(gè)客戶端的狀態(tài)不發(fā)生變化的情況下,通過為每個(gè)模擬的客戶端配置的行為處理邏輯對模擬的客戶端中的至少一個(gè)客戶端進(jìn)行軟件測試操作。
在本發(fā)明實(shí)施例中,通過維護(hù)模擬的多個(gè)客戶端與服務(wù)器的網(wǎng)絡(luò)連接,并同時(shí)維護(hù)模擬的每個(gè)客戶端的狀態(tài),使得行為處理邏輯發(fā)生改變時(shí),模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接不會(huì)隨之發(fā)生改變,同時(shí)可以使得模擬的每個(gè)客戶端的狀態(tài)保持不變,相對于現(xiàn)有技術(shù)中,在修改測試腳本的行為處理邏輯之后,還需要重啟測試腳本的方案,本發(fā)明通過維護(hù)網(wǎng)絡(luò)連接和模擬的每個(gè)客戶端的狀態(tài),達(dá)到了測試腳本在修改行為處理邏輯之后不需要重啟腳本的目的,從而實(shí)現(xiàn)了快速對模擬的多個(gè)客戶端進(jìn)行測試的技術(shù)效果,進(jìn)而解決了現(xiàn)有技術(shù)中測試腳本在修改行為處理邏輯之后需要重啟的技術(shù)問題。
圖2是根據(jù)本發(fā)明實(shí)施例的另一種計(jì)算機(jī)軟件的測試方法的流程圖。如圖2所示,該方法包括如下步驟:
步驟S201:通過篩選、框選等方式在模擬的多個(gè)客戶端中選定至少一個(gè)客戶端;其中,測試者可以向系統(tǒng)發(fā)送篩選、框定的指令,系統(tǒng)在獲取到該指令之后,就可以通過篩選,框選等方式在模擬的多個(gè)客戶端中選定至少一個(gè)客戶端。
篩選和框定的方式可以有很多種,在本發(fā)明實(shí)施例中,在進(jìn)行篩選時(shí),可以通過正則表達(dá)式匹配關(guān)鍵字、關(guān)鍵列排序、在狀態(tài)單元中進(jìn)行狀態(tài)篩選等方式進(jìn)行篩選,例如,用戶可以輸入一個(gè)關(guān)鍵字,則系統(tǒng)可以根據(jù)用戶輸入的關(guān)鍵字通過正則匹配的方式查找至少一個(gè)客戶端;用戶還可以輸入一個(gè)或多個(gè)用于體現(xiàn)上述預(yù)定狀態(tài)的關(guān)鍵字,例如,輸入“已登錄”,則系統(tǒng)會(huì)根據(jù)該預(yù)定狀態(tài)在狀態(tài)單元中查找正處于該狀態(tài)的客戶端作為選定的至少一個(gè)客戶端。
步驟S202:為選定的至少一個(gè)客戶端配置行為處理邏輯,其中,配置行為邏輯處理包括以下至少之一:新增行為處理邏輯、刪除行為處理邏輯、修改行為處理邏輯、為選定的至少一個(gè)客戶端新增行為處理邏輯、為選定的的至少一個(gè)客戶端刪除行為處理邏輯、為選定的至少一個(gè)客戶端修改行為處理邏輯等。
步驟S203:執(zhí)行手動(dòng)觸發(fā)配置的行為處理邏輯,其中,在本發(fā)明實(shí)施例中,執(zhí)行觸發(fā)行為處理邏輯的目標(biāo)為步驟S201中選定的至少一個(gè)模擬客戶端。在觸發(fā)行為處理邏輯時(shí),本發(fā)明提供的計(jì)算機(jī)軟件的測試方法支持同時(shí)向服務(wù)端發(fā)起請求或在若干秒內(nèi)均勻向服務(wù)端發(fā)起請求,甚至可以采用更為復(fù)雜的請求發(fā)起策略。
步驟S204:查看顯示信息,其中,顯示信息包括以下至少之一:行為處理邏輯的配置,行為處理邏輯與客戶端的映射關(guān)系,客戶端與服務(wù)器的網(wǎng)絡(luò)連接情況、客戶端的狀態(tài)的統(tǒng)計(jì)情況。
在本發(fā)明實(shí)施例中,通過循環(huán)執(zhí)行上述步驟S201至步驟S204即可完成對免客戶端測試腳本的控制,直至完成測試腳本的測試任務(wù)。
本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)軟件的測試裝置,該計(jì)算機(jī)軟件的測試裝置主要用于執(zhí)行本申請實(shí)施例上述內(nèi)容所提供的計(jì)算機(jī)軟件的測試方法,以下對本申請實(shí)施例送提供的計(jì)算機(jī)軟件的測試裝置做具體介紹。
圖3是根據(jù)本申請實(shí)施例的一種計(jì)算機(jī)軟件的測試裝置的示意圖,如圖3所示,該測試處理主要包括模擬單元301、行為處理邏輯單元303、連接代理單元305、狀態(tài)單元307、邏輯映射單元309和測試單元311,其中:
模擬單元301,用于模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接,模擬的客戶端用于根據(jù)行為處理邏輯結(jié)合服務(wù)器進(jìn)行軟件測試。
在本發(fā)明實(shí)施例中,測試腳本為模擬多個(gè)客戶端的行為處理邏輯的腳本,因此,該測試腳本又可以稱為免客戶端測試腳本。如果想要建立模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接,則可以通過該測試腳本模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接。由于在現(xiàn)有的腳本測試方案中,腳本測試大多是基于服務(wù)器的測試,因此,需要首先建立模擬的客戶端與服務(wù)器之間的網(wǎng)絡(luò)連接。在本發(fā)明實(shí)施例中,可以在測試腳本中編寫相應(yīng)地代碼,以使該測試腳本在運(yùn)行時(shí)即建立模擬的多個(gè)客戶端與服務(wù)器的網(wǎng)絡(luò)連接。
行為處理邏輯單元303,用于控制行為處理邏輯,行為處理邏輯為客戶端與服務(wù)器的測試邏輯。
連接代理單元305,用于維護(hù)客戶端與服務(wù)器的網(wǎng)絡(luò)連接,以使客戶端與服務(wù)器的網(wǎng)絡(luò)連接不因行為處理邏輯的改變而改變。
在本發(fā)明實(shí)施例中,測試腳本為模擬多個(gè)客戶端的行為處理邏輯的腳本,因此,該測試腳本又可以稱為免客戶端測試腳本。如果想要建立模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接,則可以通過該測試腳本模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接。由于在現(xiàn)有的腳本測試方案中,腳本測試大多是基于服務(wù)器的測試,因此,需要首先建立模擬的客戶端與服務(wù)器之間的網(wǎng)絡(luò)連接。在本發(fā)明實(shí)施例中,可以在測試腳本中編寫相應(yīng)地代碼,以使該測試腳本在運(yùn)行時(shí)即建立模擬的多個(gè)客戶端與服務(wù)器的網(wǎng)絡(luò)連接。
在本發(fā)明實(shí)施例中,測試腳本為模擬多個(gè)客戶端的行為處理邏輯的腳本,因此,該測試腳本又可以稱為免客戶端測試腳本。如果想要建立模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接,則可以通過該測試腳本模擬多個(gè)客戶端分別與服務(wù)器建立網(wǎng)絡(luò)連接。由于在現(xiàn)有的腳本測試方案中,腳本測試大多是基于服務(wù)器的測試,因此,需要首先建立模擬的客戶端與服務(wù)器之間的網(wǎng)絡(luò)連接。在本發(fā)明實(shí)施例中,可以在測試腳本中編寫相應(yīng)地代碼,以使該測試腳本在運(yùn)行時(shí)即建立模擬的多個(gè)客戶端與服務(wù)器的網(wǎng)絡(luò)連接。
狀態(tài)單元307,對應(yīng)于每個(gè)客戶端,用于維護(hù)每個(gè)客戶端的狀態(tài),以使每個(gè)客戶端的狀態(tài)在行為處理邏輯改變時(shí)得以延續(xù)。
在本發(fā)明實(shí)施例中,設(shè)置了狀態(tài)單元,并通過狀態(tài)單元維護(hù)客戶端中每個(gè)客戶端的狀態(tài),以使每個(gè)客戶端的狀態(tài)在行為處理邏輯改變時(shí)能夠保持不變。其中,狀態(tài)單元與客戶端之間的對應(yīng)關(guān)系為一一對應(yīng)的,也就是說,一個(gè)狀態(tài)單元維護(hù)一個(gè)模擬出的客戶端的狀態(tài)。
邏輯映射單元309,用于根據(jù)測試人員的指令為客戶端配置行為處理邏輯。
在本發(fā)明實(shí)施例中,可以通過為測試腳本配置行為處理邏輯來為模擬的客戶端配置行為處理邏輯。
如果模擬的客戶端的數(shù)量為多個(gè),那么可以根據(jù)測試人員的指令在模擬的多個(gè)客戶端中選定至少一個(gè)客戶端,然后,根據(jù)測試人員的指令為選定的至少一個(gè)客戶端配置行為處理邏輯,并保存配置的行為處理邏輯與選定的至少一個(gè)客戶端之間的映射關(guān)系。
測試單元311,用于根據(jù)配置的行為處理邏輯使用客戶端與服務(wù)器進(jìn)行軟件測試。
在本發(fā)明實(shí)施例中,可以在模擬的客戶端與服務(wù)器之間的網(wǎng)絡(luò)連接不發(fā)生變化的情況下,或者在模擬的客戶端中每個(gè)客戶端的狀態(tài)不發(fā)生變化的情況下,通過為每個(gè)模擬的客戶端配置的行為處理邏輯對模擬的客戶端中的至少一個(gè)客戶端進(jìn)行軟件測試操作。
在本發(fā)明實(shí)施例中,通過維護(hù)模擬的多個(gè)客戶端與服務(wù)器的網(wǎng)絡(luò)連接,并同時(shí)維護(hù)模擬出的每個(gè)客戶端的狀態(tài),使得測試腳本在網(wǎng)絡(luò)連接或者每個(gè)客戶端的狀態(tài)不發(fā)生變化的情況下,對模擬出的多個(gè)客戶端中的至少一個(gè)客戶端進(jìn)行測試,相對于現(xiàn)有技術(shù)中,在修改測試腳本的行為處理邏輯之后,還需要重啟測試腳本的方案,本發(fā)明通過維護(hù)網(wǎng)絡(luò)連接和模擬出的每個(gè)客戶端的狀態(tài),達(dá)到了測試腳本在修改行為處理邏輯之后不需要重啟腳本的目的,從而實(shí)現(xiàn)了快速對模擬的多個(gè)客戶端進(jìn)行測試的技術(shù)效果,進(jìn)而解決了現(xiàn)有技術(shù)中測試腳本在修改行為處理邏輯之后需要重啟的技術(shù)問題。
可選地,邏輯映射單元具體用于:根據(jù)測試人員的指令從多個(gè)客戶端中選定至少一個(gè)客戶端;選定的至少一個(gè)客戶端配置行為處理邏輯,并保存配置的行為處理邏輯與選定的至少一個(gè)客戶端之間的映射關(guān)系。
可選地,配置行為處理邏輯包括以下至少之一:新增行為處理邏輯、刪除行為處理邏輯、修改行為處理邏輯、為選定的至少一個(gè)客戶端新增行為處理邏輯、為選定的至少一個(gè)客戶端刪除行為處理邏輯、為選定的至少一個(gè)客戶端修改行為處理邏輯。
可選地,行為處理邏輯的內(nèi)容包括以下至少之一:協(xié)議層的數(shù)據(jù)包封裝與解析、業(yè)務(wù)邏輯層的通知、廣播、定時(shí)任務(wù)、所模擬客戶端的目標(biāo)操作。
可選地,客戶端的狀態(tài)包括以下至少之一:網(wǎng)絡(luò)連接狀態(tài)、網(wǎng)絡(luò)重連歷史、登錄狀態(tài)。
可選地,維護(hù)客戶端與服務(wù)器的網(wǎng)絡(luò)連接包括以下至少之一:創(chuàng)建客戶端與服務(wù)器的連接、斷開客戶端與服務(wù)器的連接、接收服務(wù)器發(fā)送的數(shù)據(jù)包、向服務(wù)器發(fā)送數(shù)據(jù)包、緩存客戶端與服務(wù)器的數(shù)據(jù)包。
可選地,還包括圖形化輔助單元,用于以圖形化的方式顯示以下至少之一:行為處理邏輯的配置,行為處理邏輯與客戶端的映射關(guān)系,客戶端與服務(wù)器的網(wǎng)絡(luò)連接情況、客戶端的狀態(tài)的統(tǒng)計(jì)情況。
圖4是根據(jù)本發(fā)明實(shí)施例的一種計(jì)算機(jī)軟件的測試裝置的示意圖,如圖4所示,該計(jì)算機(jī)軟件的測試裝置包括服務(wù)器401、連接代理單元305、行為處理邏輯單元303、狀態(tài)單元307、邏輯映射單元309和測試單元311,其中:
連接代理單元305用于維護(hù)模擬的多個(gè)客戶端與服務(wù)器的網(wǎng)絡(luò)連接,其中,維護(hù)客戶端與服務(wù)器的網(wǎng)絡(luò)連接包括以下至少之一:創(chuàng)建客戶端與服務(wù)器的連接、斷開客戶端與服務(wù)器的連接、接收服務(wù)器發(fā)送的數(shù)據(jù)包、向服務(wù)器發(fā)送數(shù)據(jù)包、緩存客戶端與服務(wù)器的數(shù)據(jù)包。
在本發(fā)明實(shí)施例中,可以設(shè)置由連接代理單元統(tǒng)一維護(hù)模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接,能夠確保在整個(gè)測試過程中無需斷開模擬的客戶端與服務(wù)器的網(wǎng)絡(luò)連接,這使得測試人員能夠在服務(wù)器無感知的情況下更改免客戶端測試腳本的行為處理邏輯,而無需為此重啟免客戶端測試腳本和恢復(fù)測試場景。
狀態(tài)單元307用于維護(hù)模擬的多個(gè)客戶端中的每個(gè)客戶端的狀態(tài),其中,狀態(tài)單元與模擬出的客戶端一一對應(yīng),也就是說,每個(gè)狀態(tài)單元對應(yīng)一個(gè)模擬的客戶端,其中,模擬出的客戶端的狀態(tài)包括以下至少之一:網(wǎng)絡(luò)連接狀態(tài)、網(wǎng)絡(luò)重連歷史、登錄狀態(tài)等與業(yè)務(wù)邏輯相關(guān)的狀態(tài)。
在一般情況下,測試腳本的測試邏輯會(huì)覆蓋一段完整的測試邏輯。例如:測試聊天消息收發(fā)的測試腳本在發(fā)送聊天消息前需要先登錄,登錄前若發(fā)現(xiàn)未創(chuàng)建上述網(wǎng)絡(luò)連接或網(wǎng)絡(luò)連接已斷開,則需要嘗試建立新的網(wǎng)絡(luò)連接或嘗試斷線重連。因此,是否創(chuàng)建過網(wǎng)絡(luò)連接、是否已斷開網(wǎng)絡(luò)連接、是否已處于登錄等狀態(tài)需要依賴于前序的網(wǎng)絡(luò)通信的結(jié)果。當(dāng)用一段新測試邏輯替換舊有測試邏輯時(shí),新測試邏輯需要從舊有測試邏輯處獲得前述種種狀態(tài),正確的前序狀態(tài)使得新測試邏輯能夠直接執(zhí)行正確的測試分支。
但是,在本發(fā)明實(shí)施例中,通過狀態(tài)單元可以將測試腳本的測試邏輯與前述狀態(tài)分離,由狀態(tài)單元統(tǒng)一維護(hù)所有模擬出的客戶端的狀態(tài),并提供各模擬出的客戶端狀態(tài)的查詢與修改接口。測試邏輯可將其視為一個(gè)狀態(tài)機(jī),避免了每段測試邏輯都需要維護(hù)測試狀態(tài),簡化了新舊測試邏輯間狀態(tài)的傳遞。
可選地,狀態(tài)單元在維護(hù)模擬出的客戶端的狀態(tài)時(shí),可以將狀態(tài)存儲(chǔ)在腳本進(jìn)程的內(nèi)存中,或redis、memcached等內(nèi)存數(shù)據(jù)庫中,或mysql等關(guān)系型數(shù)據(jù)庫、或mongodb等nosql數(shù)據(jù)庫。
行為處理邏輯單元303和邏輯映射單元309用于通過配置的行為處理邏輯為選定的至少一個(gè)客戶端進(jìn)行測試。
行為處理邏輯單元303用于控制模擬的客戶端腳本與服務(wù)器的通信邏輯,包括:協(xié)議層的數(shù)據(jù)包封裝與解析,業(yè)務(wù)邏輯層的通知、廣播、定時(shí)任務(wù),所模擬客戶端的目標(biāo)操作等。
行為處理邏輯單元303與所模擬的客戶端是一對多的映射關(guān)系,也就是說,可以復(fù)用行為處理邏輯單元中的行為處理邏輯,為選定的至少一個(gè)客戶端配置行為處理邏輯。
行為處理邏輯單元303通過狀態(tài)單元獲取所模擬的客戶端的實(shí)時(shí)狀態(tài),并根據(jù)相應(yīng)地行為處理邏輯通過連接代理單元向服務(wù)器發(fā)送數(shù)據(jù)包;或處理服務(wù)器通過連接代理單元下發(fā)數(shù)據(jù)包的通知消息,并解析從服務(wù)器下發(fā)的數(shù)據(jù)包,并修改所模擬客戶端在狀態(tài)單元中的狀態(tài)。
在一般情況下,協(xié)議層的數(shù)據(jù)包封裝與解析,業(yè)務(wù)邏輯層的通知、廣播、定時(shí)任務(wù)的改動(dòng)頻率較低,通過提供組織良好的基類或API接口能夠有效的減少編寫行為處理邏輯單元的代碼量和難度。相應(yīng)地,所模擬出的客戶端的目標(biāo)操作是測試過程中修改最為頻繁的部分,測試人員會(huì)根據(jù)測試需要修改測試邏輯、新增測試邏輯等,為了在無人干預(yù)的情況下模擬真實(shí)用戶的操作,該行為處理邏輯中的部分邏輯主要由定時(shí)器、服務(wù)器以廣播的形式觸發(fā),但是,在執(zhí)行一次性操作時(shí)需要由測試人員手動(dòng)來觸發(fā)相應(yīng)地行為處理邏輯。
邏輯映射單元309用于維護(hù)行為處理邏輯單元303與狀態(tài)單元307之間的一對多映射關(guān)系。也就是說,邏輯映射單元可以用于保存配置的行為處理邏輯與選定的至少一個(gè)客戶端之間的映射關(guān)系。
邏輯映射單元309保存上述映射關(guān)系的方式可以有很多中,在本發(fā)明實(shí)施例中,邏輯映射單元309可以使用一個(gè)類似于Hash表的數(shù)據(jù)結(jié)構(gòu)保存行為處理邏輯單元303與狀態(tài)單元307的映射關(guān)系。在該Hash表中,以行為處理邏輯單元作為行鍵值key,狀態(tài)單元的集合作為value。并提供新增行為處理邏輯單元、修改狀態(tài)單元對應(yīng)行為處理邏輯單元等接口。該類數(shù)據(jù)結(jié)構(gòu)如python中的dict,或redis等支持key-value結(jié)構(gòu)的內(nèi)存數(shù)據(jù)庫。
在通過測試腳本進(jìn)行測試過程中,模擬出的客戶端的用途也會(huì)經(jīng)常隨測試目標(biāo)的變化而發(fā)生變化,因此,可以為模擬出的客戶端變更對應(yīng)的行為處理邏輯,進(jìn)而改變其用途。其中,變更對應(yīng)的行為處理邏輯包括以下至少之一:新增、刪除行為處理邏輯,以及為所模擬的客戶端指定、變更行為處理邏輯等。
新增行為處理邏輯可以為為預(yù)定的客戶端新增行為處理邏輯,例如,為模擬出的多個(gè)客戶端中的一個(gè)或多個(gè)客戶端新增行為處理邏輯;刪除行為處理邏輯可以為為預(yù)定的客戶端刪除行為處理邏輯,例如,為模擬出的多個(gè)客戶端中的一個(gè)或多個(gè)客戶端刪除行為處理邏輯;修改行為處理邏輯可以為為預(yù)定的客戶端修改行為處理邏輯,例如,為模擬出的多個(gè)客戶端中的一個(gè)或多個(gè)客戶端修改行為處理邏輯。
圖5是根據(jù)本發(fā)明實(shí)施例的另一種計(jì)算機(jī)軟件的測試裝置的示意圖,如圖5所示,該計(jì)算機(jī)軟件的測試裝置包括服務(wù)器401、連接代理單元305、行為處理邏輯單元303、狀態(tài)單元307和邏輯映射單元309、測試單元311和圖形化輔助單元501,其中:
圖形化輔助單元501用于通過圖形化的方式維護(hù)邏輯映射單元309和行為處理邏輯單元303,當(dāng)使用圖形化的方式進(jìn)行維護(hù)之后,用戶就可以以圖形化的方式查看和修改邏輯映射單元中的行為處理邏輯單元與狀態(tài)單元的映射狀態(tài),也就是說,通過圖形化的方式可以查看用于對模擬出的客戶端進(jìn)行測試的測試腳本的行為處理邏輯。
圖形化輔助單元501還用于查看連接代理單元305和狀態(tài)單元307的狀態(tài)與統(tǒng)計(jì)信息??蛇x地,用戶可以通過圖形化輔助單元查看模擬的多個(gè)客戶端中每個(gè)客戶端與服務(wù)器的建立的網(wǎng)絡(luò)連接狀態(tài);以及查看模擬的多個(gè)客戶端中每個(gè)客戶端與服務(wù)器的建立網(wǎng)絡(luò)連接的客戶端的數(shù)量;以及查看模擬的多個(gè)客戶端中每個(gè)客戶端的狀態(tài),例如,網(wǎng)絡(luò)連接狀態(tài)、網(wǎng)絡(luò)重連歷史、登錄狀態(tài)。
圖形化輔助單元501還用于為用戶提供配置的導(dǎo)入導(dǎo)出。
圖形化輔助單元501還用于為用戶提供實(shí)時(shí)修改行為處理邏輯單元等相關(guān)操作,例如,編輯和新建行為處理邏輯單元。
可選地,由于邏輯映射單元需要維護(hù)成千上萬甚至更多的狀態(tài)單元與行為處理邏輯單元的映射關(guān)系,因此,圖形化輔助單元能夠通過篩選、批量操作、拖拽等形式快速地配置狀態(tài)單元和行為處理邏輯單元之間的關(guān)聯(lián)狀態(tài)。用于還可以通過圖形化界面直接編輯、新建邏輯單元,并實(shí)時(shí)生效,此方法能夠有效地節(jié)省每次修改后的部署操作。
例如,當(dāng)需要部分模擬的客戶端向服務(wù)器發(fā)送某條協(xié)議時(shí),用于可通過圖形化界面在模擬的多個(gè)客戶端中框選至少一個(gè)客戶端,并通過手動(dòng)觸發(fā)的方式執(zhí)行額外的測試操作。在本發(fā)明實(shí)施例中,還可以通過圖形化顯示界面顯示連接代理單元的連接狀態(tài)、狀態(tài)單元的統(tǒng)計(jì)情況以供用戶查看。用于可以通過連接代理單元觀察當(dāng)前連接總數(shù)能夠識(shí)別是否發(fā)生大面積掉線情況,以及通過狀態(tài)單元觀察當(dāng)前登錄用戶總數(shù)能夠判斷是否有免客戶端登錄失敗,甚至能夠通過狀態(tài)單元觀察某一免客戶端的詳細(xì)狀態(tài)信息。
需要說明的是,在本發(fā)明實(shí)施例中,如果被測客戶端支持與狀態(tài)單元同步客戶端狀態(tài),并通過連接代理單元發(fā)送后續(xù)請求,被測客戶端能夠在服務(wù)器無感知的情況下接替免客戶端測試腳本,將使用腳本進(jìn)行的測試轉(zhuǎn)為使用真實(shí)客戶端進(jìn)行的測試,這有利于查證、定位僅在高并發(fā)情況下概率性出現(xiàn)的測試漏洞。相應(yīng)地,邏輯映射單元再次通過狀態(tài)單元為該客戶端與某一行為處理邏輯單元關(guān)聯(lián)時(shí),可將上述測試再次轉(zhuǎn)為使用腳本進(jìn)行的測試。
本發(fā)明實(shí)施提供的計(jì)算機(jī)軟件的測試方法,通過免客戶端測試腳本對客戶端相應(yīng)地的測試邏輯進(jìn)行測試,在通過測試腳本進(jìn)行測試的過程中,可以通過連接代理單元維護(hù)模擬出的多個(gè)客戶端與服務(wù)器建立的網(wǎng)絡(luò)連接,并通過狀態(tài)單元維護(hù)模擬出的多個(gè)客戶端中的每個(gè)客戶端的狀態(tài)從而,從而避免修改免客戶端測試腳本的行為處理邏輯時(shí)引入的腳本重啟問題,同時(shí)也避免重啟后恢復(fù)測試場景的問題,降低了修改免客戶端測試腳本行為處理邏輯的成本,提高了搭建由眾多客戶端共同組成的測試場景的效率。
在本發(fā)明的一個(gè)可選實(shí)施方式中,測試腳本中的行為處理邏輯包括以下至少之一:在預(yù)定狀態(tài)下的客戶端的行為處理邏輯、預(yù)定網(wǎng)絡(luò)連接情況對應(yīng)的行為處理邏輯、預(yù)定數(shù)量的客戶端的行為處理邏輯、單個(gè)客戶端的行為處理邏輯。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本發(fā)明的上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。