的時(shí)間持續(xù)了 5個(gè)小時(shí),那么最終就應(yīng)當(dāng)生成300個(gè)報(bào)文文件。
[0085]S105:當(dāng)接收到測試指令時(shí),根據(jù)所述測試指令,將與所述測試指令匹配的報(bào)文文件進(jìn)行合并,生成測試文件;
[0086]S106:將所述測試文件中的報(bào)文信息重組為測試報(bào)文,進(jìn)行回放測試。
[0087]在具體實(shí)現(xiàn)的時(shí)候,由于已經(jīng)將報(bào)文信息按照預(yù)設(shè)的文件組織方法重組成多個(gè)報(bào)文文件并進(jìn)行了存儲(chǔ),因此當(dāng)收到測試指令時(shí),根據(jù)測試指令,將于測試指令匹配的報(bào)文文件進(jìn)行合并,生成測試文件。然后將測試文件中的報(bào)文信息重組為測試報(bào)文,進(jìn)行回訪測試。具體的過程可以參照下述圖4、圖5和圖6所對(duì)應(yīng)的實(shí)施例的描述,在此不再贅述。
[0088]本發(fā)明所提供的業(yè)務(wù)回放方法,首先獲取用戶訪問網(wǎng)絡(luò)應(yīng)用時(shí)的網(wǎng)絡(luò)報(bào)文,并從網(wǎng)絡(luò)報(bào)文中解析報(bào)文信息,然后為每一個(gè)報(bào)文信息添加采集時(shí)間位移,并將報(bào)文信息按照預(yù)設(shè)的數(shù)據(jù)格式和文件組織方法重組成多個(gè)報(bào)文文件并存儲(chǔ),當(dāng)需要進(jìn)行業(yè)務(wù)測試的時(shí)候,根據(jù)接收到的測試指令,從已經(jīng)保存的報(bào)文文件中選擇與測試指令相匹配的相關(guān)報(bào)文文件,并將這些報(bào)文文件進(jìn)行合并生成測試文件,然后通過將測試文件重組為測試報(bào)文,重現(xiàn)用戶訪問網(wǎng)絡(luò)應(yīng)用時(shí)所發(fā)送的網(wǎng)絡(luò)報(bào)文,通過這種真實(shí)數(shù)據(jù)回放的方法進(jìn)行回放測試,由于該方法本身是基于真實(shí)環(huán)境網(wǎng)絡(luò)數(shù)據(jù)報(bào)文進(jìn)行的測試方法,不采用模擬的方式展開測試,而采用基于網(wǎng)絡(luò)數(shù)據(jù)回放的方式。測試所用數(shù)據(jù)來源于真實(shí)環(huán)境的真實(shí)用戶,能夠準(zhǔn)確反映出網(wǎng)絡(luò)應(yīng)用在現(xiàn)實(shí)世界的負(fù)載、交互情況,通過仿真的方式完成測試,最大可能的提高測試的準(zhǔn)確性。
[0089]參見圖2所示,本發(fā)明實(shí)施例還提供一種依次將預(yù)設(shè)時(shí)間長度內(nèi)所獲取的所述網(wǎng)絡(luò)報(bào)文的所述報(bào)文信息按照預(yù)設(shè)的數(shù)據(jù)存儲(chǔ)格式和文件組織方法重組成多個(gè)報(bào)文文件并存儲(chǔ)的具體方法,包括:
[0090]S201:當(dāng)預(yù)設(shè)時(shí)間長度內(nèi)所收到的網(wǎng)絡(luò)報(bào)文數(shù)量不為零時(shí),將預(yù)設(shè)時(shí)間長度內(nèi)所收到的每條所述網(wǎng)絡(luò)報(bào)文的所述報(bào)文信息依次按照預(yù)設(shè)順序存入同一個(gè)文檔中,并在所有所述報(bào)文信息的末尾添加結(jié)束標(biāo)識(shí);
[0091]其中,所述結(jié)束標(biāo)識(shí)有且只有一個(gè);所述采集時(shí)間位移包括:當(dāng)前網(wǎng)絡(luò)報(bào)文的用戶請(qǐng)求時(shí)間與前一條網(wǎng)絡(luò)報(bào)文的用戶請(qǐng)求時(shí)間之差;所述預(yù)設(shè)順序?yàn)閳?bào)文的載荷長度、目的IP地址、目的端口、采集時(shí)間位移、報(bào)文的載荷內(nèi)容的存儲(chǔ)順序;
[0092]在具體實(shí)現(xiàn)的時(shí)候,如果預(yù)設(shè)時(shí)間長度內(nèi)所收到的網(wǎng)絡(luò)報(bào)文數(shù)量不為零,即在某個(gè)預(yù)設(shè)時(shí)間長度內(nèi),有用戶向服務(wù)器發(fā)送了業(yè)務(wù)請(qǐng)求,產(chǎn)生了相應(yīng)的網(wǎng)絡(luò)報(bào)文,將該時(shí)間長度內(nèi)收到的每條網(wǎng)絡(luò)報(bào)文的報(bào)文信息依次按照預(yù)設(shè)順序存入同一個(gè)文檔中,并在所有報(bào)文信息的末尾添加結(jié)束標(biāo)識(shí)。將每條網(wǎng)絡(luò)報(bào)文信息按照預(yù)設(shè)順序存入同一個(gè)文檔中,是指每條網(wǎng)絡(luò)報(bào)文中,報(bào)文信息的順序,即報(bào)文的載荷長度、目的IP地址、目的端口、采集時(shí)間位移、報(bào)文的載荷內(nèi)容的順序。而依次存入則是按照用戶請(qǐng)求時(shí)間的先后順序,先收到的網(wǎng)絡(luò)報(bào)文先存,后收到的網(wǎng)絡(luò)報(bào)文后存,直到當(dāng)前的時(shí)間長度結(jié)束為止,在最后(最后一條網(wǎng)絡(luò)報(bào)文的報(bào)文信息之后)添加結(jié)束標(biāo)識(shí)。上述網(wǎng)絡(luò)報(bào)文的報(bào)文信息的存儲(chǔ)格式,即為預(yù)設(shè)的數(shù)據(jù)存儲(chǔ)格式。
[0093]例如,參見圖3所示,提供了一種數(shù)據(jù)存儲(chǔ)格式:單條網(wǎng)絡(luò)報(bào)文的報(bào)文信息的數(shù)據(jù)存儲(chǔ)格式依次為:報(bào)文的載荷長度、目的IP地址、目的端口、采集時(shí)間位移、報(bào)文的載荷內(nèi)容。其中,采集時(shí)間位移又稱時(shí)間差,即本條網(wǎng)絡(luò)報(bào)文的用戶請(qǐng)求時(shí)間與上一條網(wǎng)絡(luò)報(bào)文的用戶請(qǐng)求時(shí)間的差值(單位:微妙),8字節(jié)無符號(hào)整數(shù)。所有字段采用所有字段采用bigendian,等同于網(wǎng)絡(luò)字節(jié)序。其中,big endian又稱大端,是指字節(jié)在內(nèi)存中的組織。IP地址字段采用的是標(biāo)準(zhǔn)unix c的inet_addr的方式表達(dá),4字節(jié)??梢圆捎脴?biāo)準(zhǔn)C函數(shù)inet_atonO和inet_ntoa()進(jìn)行轉(zhuǎn)換。另外,還可以將報(bào)文信息以其他的數(shù)據(jù)存儲(chǔ)格式進(jìn)行存儲(chǔ)。例如可以改變報(bào)文的載荷長度、目的IP地址、目的端口、采集時(shí)間位移、報(bào)文的載荷內(nèi)容的順序等。
[0094]另外,由于是將預(yù)設(shè)時(shí)間長度內(nèi)所收到的所有的網(wǎng)絡(luò)報(bào)文的報(bào)文信息均存儲(chǔ)在同一個(gè)報(bào)文文件中,因此需要在文檔的末尾添加結(jié)束標(biāo)識(shí),以表示該文檔已經(jīng)完成。當(dāng)為文檔添加了相應(yīng)的結(jié)束標(biāo)識(shí)后,就會(huì)將文檔作為報(bào)文文件進(jìn)行存儲(chǔ)。結(jié)束標(biāo)識(shí)可以根據(jù)實(shí)際情況進(jìn)行定義,但由于在本發(fā)明中,報(bào)文文件數(shù)據(jù)存儲(chǔ)格式的特殊性,可以將一個(gè)特定字節(jié)長度的字符串作為結(jié)束標(biāo)識(shí)。例如,可以認(rèn)為在報(bào)文文件結(jié)束的時(shí)候,收到的最后一條網(wǎng)絡(luò)報(bào)文為0,所有字段都為O的記錄,那么就將固定字節(jié)長度的O字節(jié),作為結(jié)束標(biāo)識(shí)。
[0095]S202:將所述文檔作為報(bào)文文件,并按照預(yù)設(shè)的規(guī)則對(duì)所述報(bào)文文件添加識(shí)別標(biāo)識(shí);
[0096]在具體實(shí)現(xiàn)的時(shí)候,識(shí)別標(biāo)識(shí)實(shí)則是添加到報(bào)文文件的標(biāo)題中的。而該識(shí)別標(biāo)識(shí)則是為了能夠?qū)⒚恳粋€(gè)時(shí)間段所生成的報(bào)文文件區(qū)別開。而在后續(xù)進(jìn)行回放測試的時(shí)候,需要從這些報(bào)文文件中選取符合要求的報(bào)文文件,也是根據(jù)識(shí)別標(biāo)識(shí)來進(jìn)行選取的。
[0097]其中,按照預(yù)設(shè)的規(guī)則對(duì)報(bào)文文件添加識(shí)別標(biāo)識(shí)有多種添加方法,包括:
[0098]1、時(shí)間軸添加法,即將報(bào)文文件所對(duì)應(yīng)的具體時(shí)間添加到標(biāo)題中,例如2015年I月25日17時(shí)27分所生成的報(bào)文文件的標(biāo)題可以為:201510251727。
[0099]2、按照序號(hào)遞增的形式進(jìn)行添加,例如每隔預(yù)設(shè)時(shí)間段生成一個(gè)報(bào)文文件,將第一個(gè)生成的報(bào)文文件的名稱命名為0000000000,而第二個(gè)生成的報(bào)文文件的名稱命名為0000000001,隨著報(bào)文文件的增多,這個(gè)序號(hào)單向逐漸遞增,且每個(gè)序號(hào)不重復(fù)使用;在這種情況下,還可以在與報(bào)文文件對(duì)應(yīng)的存儲(chǔ)目錄下生成一個(gè)meta文件,文件名稱為meta,內(nèi)容為當(dāng)前已經(jīng)生成并且可用的最后一個(gè)文本文件的文件名(上述字符串)+最后一條網(wǎng)絡(luò)報(bào)文的用戶請(qǐng)求時(shí)間+最后一個(gè)報(bào)文文件的生成時(shí)間,這個(gè)meta文件用以標(biāo)注與該meta文件同目錄下的報(bào)文文件的生成時(shí)間。需要注意的是,每一個(gè)報(bào)文文件均對(duì)應(yīng)有一個(gè)meta文件。
[0100]S203:當(dāng)預(yù)設(shè)時(shí)間長度內(nèi)所收到的網(wǎng)絡(luò)報(bào)文數(shù)量為零時(shí),生成空白文檔,并在所述空白文檔中添加結(jié)束標(biāo)識(shí);
[0101]S204:將所述空白文檔作為報(bào)文文件,并按照預(yù)設(shè)的規(guī)則對(duì)所述報(bào)文文件添加識(shí)別標(biāo)識(shí)。
[0102]在具體實(shí)現(xiàn)的時(shí)候,當(dāng)某時(shí)間段內(nèi)所收到的網(wǎng)絡(luò)報(bào)文數(shù)量為零的時(shí)候,即在該時(shí)間段,服務(wù)器并沒有收到用戶的任何業(yè)務(wù)請(qǐng)求時(shí)。此時(shí)同樣需要生成報(bào)文文件。此時(shí)的報(bào)文文件為空白文檔,并在空白文檔中添加結(jié)束標(biāo)識(shí),并將添加了結(jié)束標(biāo)識(shí)的空白文檔作為報(bào)文文件,然后按照S202中預(yù)設(shè)的規(guī)則,對(duì)報(bào)文文件添加識(shí)別標(biāo)識(shí)。
[0103]需要注意的是,空白文檔在生成下一個(gè)含有報(bào)文信息的文檔時(shí)生成。例如,在第一個(gè)時(shí)間段,所收到的網(wǎng)絡(luò)報(bào)文數(shù)量不為零,則在第一個(gè)時(shí)間段結(jié)束的時(shí)候,生成第一個(gè)報(bào)文文件,而第二個(gè)時(shí)間段至第五個(gè)時(shí)間段所收到的網(wǎng)絡(luò)報(bào)文數(shù)量均為零,第六個(gè)時(shí)間段所收到的報(bào)文數(shù)量不為零,生成第六個(gè)報(bào)文文件時(shí),才會(huì)生成第二個(gè)時(shí)間段至第五個(gè)時(shí)間段的四個(gè)空白文檔。
[0104]需要注意的是,上述生成報(bào)文文件的方式則為報(bào)文文件的組織方式(又稱形成方式)。
[0105]參見圖4所示,本發(fā)明另一實(shí)施例還提供一種根據(jù)所述測試指令,將與所述測試指令匹配的報(bào)文文件進(jìn)行合并,生成測試文件的具體方法,該方法具體包括:
[0106]S301:根據(jù)所述測試指令中的檢索信息進(jìn)行檢索,獲取識(shí)別標(biāo)識(shí)與所述檢索信息匹配的報(bào)文文件;
[0107]在具體實(shí)現(xiàn)的時(shí)候,測試指令包括檢索信息,所述檢索信息能夠與所述報(bào)文文件的識(shí)別標(biāo)識(shí)進(jìn)行匹配;檢索信息的組織規(guī)則與報(bào)文文件的識(shí)別標(biāo)識(shí)的組織規(guī)則相關(guān),而根據(jù)檢索信息,能夠從報(bào)文文件的識(shí)別標(biāo)識(shí)中檢索出想要進(jìn)行回放的具體報(bào)文文件。例如,檢索信息可以是在進(jìn)行業(yè)務(wù)測試時(shí)需要回放的報(bào)文文件的時(shí)間信息,該時(shí)間信息為一個(gè)時(shí)間段,這個(gè)時(shí)間段要等于或者長于生成一個(gè)報(bào)文文件的預(yù)設(shè)的時(shí)間段。
[0108]S302:將檢索后獲取的報(bào)文文件中的報(bào)文信息進(jìn)行合并,并生成測試文件。
[0109]參見圖5所示,本發(fā)明另一實(shí)施例還提供一種將檢索后獲取的報(bào)文文件中的報(bào)文信息進(jìn)行合,并生成測試文件的具體方法,包括:
[0110]S401:按照?qǐng)?bào)文文件生成的時(shí)間先后順序,依次從檢索后獲取的報(bào)文文件中讀取所述報(bào)文信息;
[0111]S402:將讀取的所述報(bào)文信息順序拼接;
[0112]S403:將拼接后的報(bào)文信息中的第一條報(bào)文信息的采集時(shí)間位移修改為零,并生成測試文件。
[0113]在具體實(shí)現(xiàn)的時(shí)候,在S301中獲取了檢索信息后,會(huì)根據(jù)檢索信息進(jìn)行查詢或者計(jì)算,找到測試起始時(shí)間和測試結(jié)束時(shí)間各自對(duì)應(yīng)的報(bào)文文件的名稱,并從測試起始時(shí)間所對(duì)應(yīng)的報(bào)文文件中讀取第一條網(wǎng)絡(luò)報(bào)文所對(duì)應(yīng)的報(bào)文信息,并將該報(bào)文信息中的采集時(shí)間位移初始化(即將其更改為O),然后按照?qǐng)?bào)文文件生成的順序依次讀取報(bào)文文件中的報(bào)文信息,并將檢索出來的所有報(bào)文文件中的報(bào)文信息進(jìn)行合并,該合并即將前一個(gè)報(bào)文文件中最后一條的報(bào)文信息與當(dāng)前報(bào)文文件中的最開始一條的報(bào)文信息進(jìn)行拼接,最終生成一個(gè)包