測(cè)試方法及系統(tǒng)、操作端的制作方法
【專利摘要】本發(fā)明提供一種測(cè)試方法及系統(tǒng)、操作端。本發(fā)明實(shí)施例只需要使用操作端的一個(gè)操作人員在一個(gè)瀏覽器即第一瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上,手動(dòng)執(zhí)行一次測(cè)試操作,就可以實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而無需操作人員在不同瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面,手動(dòng)執(zhí)行多次相同的測(cè)試操作,操作簡(jiǎn)單,而且正確率高,從而提高了測(cè)試操作的效率和可靠性。
【專利說明】測(cè)試方法及系統(tǒng)、操作端 【【技術(shù)領(lǐng)域】】
[0001] 本發(fā)明涉及測(cè)試技術(shù),尤其涉及一種測(cè)試方法及系統(tǒng)、操作端。 【【背景技術(shù)】】
[0002] 在軟件測(cè)試過程例如,用戶界面(User interface,UI)測(cè)試中,為了避免程序的風(fēng) 險(xiǎn),需要利用設(shè)計(jì)的測(cè)試用例,自動(dòng)運(yùn)行測(cè)試操作。目前,有一些頁(yè)面展示與頁(yè)面交互的測(cè) 試操作,無法利用測(cè)試用例,自動(dòng)運(yùn)行測(cè)試操作。而是,需要操作人員在不同瀏覽器所展現(xiàn) 的待測(cè)試頁(yè)面,手動(dòng)執(zhí)行多次相同的測(cè)試操作。
[0003] 然而,現(xiàn)有的測(cè)試操作的操作復(fù)雜,而且容易出錯(cuò),從而導(dǎo)致了測(cè)試操作的效率和 可靠性的降低。 【
【發(fā)明內(nèi)容】
】
[0004] 本發(fā)明的多個(gè)方面提供一種測(cè)試方法及系統(tǒng)、操作端,用以提高測(cè)試操作的效率 和可靠性。
[0005] 本發(fā)明的一方面,提供一種測(cè)試方法,包括:
[0006] 操作端采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為,所述操作行 為包括操作的頁(yè)面元素信息和操作的行為信息;
[0007] 所述操作端根據(jù)所述操作行為,生成操作指令;
[0008] 所述操作端向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令,以使 得所述每個(gè)測(cè)試端根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí)行所述操 作指令。
[0009] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述操作端 向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令,包括:
[0010] 所述操作端通過分發(fā)服務(wù)器,向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所 述操作指令。
[0011] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述操作端 通過分發(fā)服務(wù)器,向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令之前,還 包括:
[0012] 所述操作端向所述分發(fā)服務(wù)器發(fā)送觸發(fā)信息;
[0013] 所述操作端接收所述分發(fā)服務(wù)器發(fā)送的所述測(cè)試指示,以使得所述用戶確定所述 每個(gè)測(cè)試端,所述測(cè)試指示為所述分發(fā)服務(wù)器根據(jù)所述觸發(fā)信息,為本次測(cè)試啟動(dòng)服務(wù)實(shí) 例,生成;
[0014] 所述操作端向所述分發(fā)服務(wù)器發(fā)送所述測(cè)試指示、所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息和 所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,以使得所述分發(fā)服務(wù)器根據(jù)所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,向 所述每個(gè)測(cè)試端發(fā)送所述測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息,以使得所述每個(gè)測(cè)試端 驅(qū)動(dòng)所述第二瀏覽器展現(xiàn)所述待測(cè)試頁(yè)面。
[0015] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述方法還 包括:
[0016] 代理服務(wù)器接收第一候選HTTP請(qǐng)求,所述第一候選HTTP請(qǐng)求為所述第一瀏覽器 根據(jù)所述操作行為的操作結(jié)果,生成;
[0017] 所述代理服務(wù)器接收第二候選HTTP請(qǐng)求,所述第二候選HTTP請(qǐng)求為所述第二瀏 覽器根據(jù)所述測(cè)試端執(zhí)行所述操作指令的操作結(jié)果,生成;
[0018] 所述代理服務(wù)器向Web服務(wù)器發(fā)送所述第一候選HTTP請(qǐng)求,以及接收所述Web服 務(wù)器根據(jù)所述第一候選HTTP請(qǐng)求,發(fā)送的第一候選HTTP響應(yīng);所述代理服務(wù)器向Web服務(wù) 器發(fā)送所述第二候選HTTP請(qǐng)求,以及接收所述Web服務(wù)器根據(jù)所述第二候選HTTP請(qǐng)求,發(fā) 送的第二候選HTTP響應(yīng);所述代理服務(wù)器向所述第一瀏覽器發(fā)送所述第一候選HTTP響應(yīng), 向所述第二瀏覽器發(fā)送所述第二候選HTTP響應(yīng);或者
[0019] 所述代理服務(wù)器根據(jù)所述第一候選HTTP請(qǐng)求和所述第二候選HTTP請(qǐng)求,生成目 標(biāo)HTTP請(qǐng)求,向Web服務(wù)器發(fā)送所述目標(biāo)HTTP請(qǐng)求,以及接收所述Web服務(wù)器根據(jù)所述目 標(biāo)HTTP請(qǐng)求,發(fā)送的目標(biāo)HTTP響應(yīng);所述代理服務(wù)器向所述第一瀏覽器和所述第二瀏覽 器,發(fā)送所述目標(biāo)HTTP響應(yīng)。
[0020] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述操作端 與所述第一瀏覽器,獨(dú)立運(yùn)行在第一終端上;所述操作端以SDK形式或插件形式,設(shè)置在所 述第一瀏覽器的內(nèi)部。
[0021] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述每個(gè)測(cè) 試端與對(duì)應(yīng)的所述第二瀏覽器,獨(dú)立運(yùn)行在第二終端上;所述測(cè)試端以SDK形式或插件形 式,設(shè)置在所述第二瀏覽器的內(nèi)部。
[0022] 本發(fā)明的另一方面,提供一種測(cè)試系統(tǒng),包括操作端和至少一個(gè)測(cè)試端;其中,
[0023] 所述操作端,用于采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為, 所述操作行為包括操作的頁(yè)面元素信息和操作的行為信息;根據(jù)所述操作行為,生成操作 指令;以及向所述至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令;
[0024] 所述每個(gè)測(cè)試端,用于根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面 上執(zhí)行所述操作指令。
[0025] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述系統(tǒng)還 包括分發(fā)服務(wù)器;所述操作端,具體用于
[0026] 通過所述分發(fā)服務(wù)器,向所述每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令。
[0027] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,
[0028] 所述操作端,還用于向所述分發(fā)服務(wù)器發(fā)送觸發(fā)信息;
[0029] 所述分發(fā)服務(wù)器,還用于根據(jù)所述觸發(fā)信息,為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,以生成所 述本次測(cè)試的所述測(cè)試指示;向所述操作端發(fā)送所述測(cè)試指示,以使得所述用戶確定所述 每個(gè)測(cè)試端;
[0030] 所述操作端,還用于向所述分發(fā)服務(wù)器發(fā)送所述測(cè)試指示、所述待測(cè)試頁(yè)面的標(biāo) 識(shí)信息和所述每個(gè)測(cè)試端的標(biāo)識(shí)信息;
[0031] 所述分發(fā)服務(wù)器,還用于根據(jù)所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,向所述每個(gè)測(cè)試端發(fā) 送所述測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息;
[0032] 所述每個(gè)測(cè)試端,還用于驅(qū)動(dòng)所述第二瀏覽器展現(xiàn)所述待測(cè)試頁(yè)面。
[0033] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述系統(tǒng)還 包括代理服務(wù)器,用于
[0034] 接收第一候選HTTP請(qǐng)求,所述第一候選HTTP請(qǐng)求為所述第一瀏覽器根據(jù)所述操 作行為的操作結(jié)果,生成;接收第二候選HTTP請(qǐng)求,所述第二候選HTTP請(qǐng)求為所述第二瀏 覽器根據(jù)所述測(cè)試端執(zhí)行所述操作指令的操作結(jié)果,生成;
[0035] 向Web服務(wù)器發(fā)送所述第一候選HTTP請(qǐng)求,以及接收所述Web服務(wù)器根據(jù)所述第 一候選HTTP請(qǐng)求,發(fā)送的第一候選HTTP響應(yīng);向Web服務(wù)器發(fā)送所述第二候選HTTP請(qǐng)求, 以及接收所述Web服務(wù)器根據(jù)所述第二候選HTTP請(qǐng)求,發(fā)送的第二候選HTTP響應(yīng);向所述 第一瀏覽器發(fā)送所述第一候選HTTP響應(yīng),向所述第二瀏覽器發(fā)送所述第二候選HTTP響應(yīng); 或者
[0036] 根據(jù)所述第一候選HTTP請(qǐng)求和所述第二候選HTTP請(qǐng)求,生成目標(biāo)HTTP請(qǐng)求;向 Web服務(wù)器發(fā)送所述目標(biāo)HTTP請(qǐng)求;接收所述Web服務(wù)器根據(jù)所述目標(biāo)HTTP請(qǐng)求,發(fā)送的 目標(biāo)HTTP響應(yīng);向所述第一瀏覽器和所述第二瀏覽器,發(fā)送所述目標(biāo)HTTP響應(yīng)。
[0037] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述操作端 與所述第一瀏覽器,獨(dú)立運(yùn)行在第一終端上;所述操作端以SDK形式或插件形式,設(shè)置在所 述第一瀏覽器的內(nèi)部。
[0038] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述每個(gè)測(cè) 試端與對(duì)應(yīng)的所述第二瀏覽器,獨(dú)立運(yùn)行在第二終端上;所述測(cè)試端以SDK形式或插件形 式,設(shè)置在所述第二瀏覽器的內(nèi)部。
[0039] 本發(fā)明的另一方面,提供一種操作端,包括
[0040] 采集單元,用于采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為,所 述操作行為包括操作的頁(yè)面元素信息和操作的行為信息;
[0041] 生成單元,用于根據(jù)所述操作行為,生成操作指令;
[0042] 發(fā)送單元,用于向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令, 以使得所述每個(gè)測(cè)試端根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí)行所 述操作指令。
[0043] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述發(fā)送單 元,具體用于
[0044] 通過分發(fā)服務(wù)器,向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指 令。
[0045] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述操作端 還包括接收單元;其中,
[0046] 所述發(fā)送單元,還用于向所述分發(fā)服務(wù)器發(fā)送觸發(fā)信息;
[0047] 所述接收單元,用于接收所述分發(fā)服務(wù)器發(fā)送的所述測(cè)試指示,以使得所述用戶 確定所述每個(gè)測(cè)試端,所述測(cè)試指示為所述分發(fā)服務(wù)器根據(jù)所述觸發(fā)信息,為本次測(cè)試啟 動(dòng)服務(wù)實(shí)例,生成;
[0048] 所述發(fā)送單元,還用于向所述分發(fā)服務(wù)器發(fā)送所述測(cè)試指示、所述待測(cè)試頁(yè)面的 標(biāo)識(shí)信息和所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,以使得所述分發(fā)服務(wù)器根據(jù)所述每個(gè)測(cè)試端的標(biāo) 識(shí)信息,向所述每個(gè)測(cè)試端發(fā)送所述測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息,以使得所述 每個(gè)測(cè)試端驅(qū)動(dòng)所述第二瀏覽器展現(xiàn)所述待測(cè)試頁(yè)面。
[0049] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述操作端 與所述第一瀏覽器,獨(dú)立運(yùn)行在第一終端上;所述操作端以SDK形式或插件形式,設(shè)置在所 述第一瀏覽器的內(nèi)部。
[0050] 如上所述的方面和任一可能的實(shí)現(xiàn)方式,進(jìn)一步提供一種實(shí)現(xiàn)方式,所述每個(gè)測(cè) 試端與對(duì)應(yīng)的所述第二瀏覽器,獨(dú)立運(yùn)行在第二終端上;所述測(cè)試端以SDK形式或插件形 式,設(shè)置在所述第二瀏覽器的內(nèi)部。
[0051] 由上述技術(shù)方案可知,本發(fā)明實(shí)施例通過操作端采集輸入設(shè)備在第一瀏覽器展現(xiàn) 的待測(cè)試頁(yè)面上的操作行為,所述操作行為包括操作的頁(yè)面元素信息和操作的行為信息, 進(jìn)而,根據(jù)所述操作行為,生成操作指令,使得所述操作端能夠向至少一個(gè)測(cè)試端中每個(gè)測(cè) 試端發(fā)送測(cè)試指示和所述操作指令,這樣,所述每個(gè)測(cè)試端則可以根據(jù)所述測(cè)試指示,在第 二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí)行所述操作指令,只需要使用操作端的一個(gè)操作人員 在一個(gè)瀏覽器即第一瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上,手動(dòng)執(zhí)行一次測(cè)試操作,就可以實(shí)時(shí) 通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操 作,而無需操作人員在不同瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面,手動(dòng)執(zhí)行多次相同的測(cè)試操作,操 作簡(jiǎn)單,而且正確率高,從而提高了測(cè)試操作的效率和可靠性。
[0052] 另外,采用本發(fā)明提供的技術(shù)方案,由于實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而且第二瀏覽器的種類沒有數(shù)量 限制,因此,能夠有效提高測(cè)試過程中瀏覽器的覆蓋率。
[0053] 另外,采用本發(fā)明提供的技術(shù)方案,由于實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,因此,能夠?qū)崟r(shí)對(duì)比各個(gè)測(cè)試操 作的操作結(jié)果,從而實(shí)現(xiàn)了實(shí)時(shí)監(jiān)控的目的。
[0054] 另外,采用本發(fā)明提供的技術(shù)方案,通過分發(fā)服務(wù)器為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,以 生成所述本次測(cè)試的測(cè)試指示,使得每次測(cè)試都可以對(duì)應(yīng)不同的測(cè)試指示,因此,分發(fā)服務(wù) 器則可以同時(shí)為多個(gè)操作端提供測(cè)試服務(wù),能夠有效提高測(cè)試操作的效率。 【【專利附圖】
【附圖說明】】
[0055] 為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述 中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí) 施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附 圖獲得其他的附圖。
[0056] 圖1為本發(fā)明一實(shí)施例提供的測(cè)試方法的流程示意圖;
[0057] 圖2為本發(fā)明另一實(shí)施例提供的測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖;
[0058] 圖3為本發(fā)明另一實(shí)施例提供的測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖;
[0059] 圖4為本發(fā)明另一實(shí)施例提供的測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖;
[0060] 圖5為本發(fā)明另一實(shí)施例提供的操作端的結(jié)構(gòu)示意圖;
[0061] 圖6為本發(fā)明另一實(shí)施例提供的操作端的結(jié)構(gòu)示意圖。 【【具體實(shí)施方式】】
[0062] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的全部其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0063] 需要說明的是,本發(fā)明實(shí)施例中所述的操作指令可以包括但不限于C語(yǔ)言代碼編 譯的程序、C++語(yǔ)言代碼編譯的程序或java語(yǔ)言代碼編譯的程序,其他任何可實(shí)現(xiàn)編譯的 程序語(yǔ)言均在本發(fā)明保護(hù)范圍之內(nèi),本發(fā)明對(duì)此并不做特別限定。
[0064] 另外,本文中術(shù)語(yǔ)"和/或",僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在 三種關(guān)系,例如,A和/或B,可以表示:?jiǎn)为?dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情 況。另外,本文中字符"/",一般表示前后關(guān)聯(lián)對(duì)象是一種"或"的關(guān)系。
[0065] 萬維網(wǎng)(World Wide Web, Web)頁(yè)面可以包括由一個(gè)或者多個(gè)頁(yè)面標(biāo)簽即超文本 標(biāo)記語(yǔ)言(HyperText Markup Language, HTML)標(biāo)簽組成的一個(gè)顯示區(qū)塊,稱為頁(yè)面元素, 例如,文本、標(biāo)簽、超鏈接、按鈕、輸入框、下拉框等。在用戶界面(User interface,UI)測(cè)試 中,需要對(duì)指定頁(yè)面元素進(jìn)行操作,以執(zhí)行測(cè)試操作等。
[0066] 圖1為本發(fā)明一實(shí)施例提供的測(cè)試方法的流程示意圖,應(yīng)用于測(cè)試系統(tǒng)中,該測(cè) 試系統(tǒng)可以包括操作端和至少一個(gè)測(cè)試端。如圖1所示。
[0067] 101、操作端采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為,所述操 作行為包括操作的頁(yè)面元素信息和操作的行為信息。
[0068] 102、所述操作端根據(jù)所述操作行為,生成操作指令。
[0069] 103、所述操作端向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令, 以使得所述每個(gè)測(cè)試端根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí)行所 述操作指令。
[0070] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,操作端與每個(gè)測(cè)試端之間的交互 可以采用基于多種套接字(Socket)協(xié)議的方式。例如,基于傳輸控制協(xié)議(Transmission Control Protocol, TCP)的標(biāo)準(zhǔn)Socket協(xié)議?;蛘?,再例如,基于超文本傳輸協(xié)議 (HyperText Transfer Protocol,HTTP)的Web Socket協(xié)議,以達(dá)到在HTTP 下模擬基于TCP 的通信方式。這樣,可以實(shí)現(xiàn)操作端與每個(gè)測(cè)試端之間,不間斷的有狀態(tài)的通信連接,從而 保證了順序傳輸消息的可靠性。
[0071] 其中,第二瀏覽器與第一瀏覽器,為不同瀏覽器;第二瀏覽器的數(shù)量與測(cè)試端的數(shù) 量相同,且第二瀏覽器與測(cè)試端一一對(duì)應(yīng),所述每個(gè)測(cè)試端所對(duì)應(yīng)的第二瀏覽器,為不同瀏 Π/Γ PLP jAL-nlr 〇
[0072] 可以理解的是,所謂的不同瀏覽器,可以為在相同操作系統(tǒng)中運(yùn)行的不同的瀏覽 器,或者還可以為在不同操作系統(tǒng)中運(yùn)行的相同的瀏覽器,或者還可以為在不同操作系統(tǒng) 中運(yùn)行的不同的瀏覽器,本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0073] 例如,第二瀏覽器為Wind〇ws7操作系統(tǒng)中運(yùn)行的Firefox瀏覽器,第一瀏覽器為 WindowsS操作系統(tǒng)中運(yùn)行的Firefox瀏覽器,二者為不同瀏覽器。
[0074] 或者,再例如,第二瀏覽器為Wind〇ws7操作系統(tǒng)中運(yùn)行的IE瀏覽器,第一瀏覽器 為Wind 〇ws7操作系統(tǒng)中運(yùn)行的Firefox瀏覽器,二者為不同瀏覽器。
[0075] 或者,再例如,一個(gè)測(cè)試端所對(duì)應(yīng)的第二瀏覽器為Wind〇ws7操作系統(tǒng)中運(yùn)行的IE 瀏覽器,另一個(gè)測(cè)試端所對(duì)應(yīng)的第二瀏覽器為WindowsS操作系統(tǒng)中運(yùn)行的IE瀏覽器,二者 為不同瀏覽器。
[0076] 需要說明的是,所述操作端與所述第一瀏覽器,可以獨(dú)立運(yùn)行在第一終端上;或 者,所述操作端還可以以軟件開發(fā)工具包(Software Development Kit, SDK)形式或插件形 式,設(shè)置在所述第一瀏覽器的內(nèi)部;本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0077] 需要說明的是,所述每個(gè)測(cè)試端與對(duì)應(yīng)的所述第二瀏覽器,可以獨(dú)立運(yùn)行在第二 終端上;或者,所述測(cè)試端還可以以SDK形式或插件形式,設(shè)置在所述第二瀏覽器的內(nèi)部; 本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0078] 可以理解的是,本發(fā)明所涉及的頁(yè)面,可以是基于HTML編寫的網(wǎng)頁(yè)(Web Page), 也可以稱為Web頁(yè)面。
[0079] 這樣,通過操作端采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為, 所述操作行為包括操作的頁(yè)面元素信息和操作的行為信息,進(jìn)而,根據(jù)所述操作行為,生成 操作指令,使得所述操作端能夠向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作 指令,這樣,所述每個(gè)測(cè)試端則可以根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè) 面上執(zhí)行所述操作指令,只需要使用操作端的一個(gè)操作人員在一個(gè)瀏覽器即第一瀏覽器所 展現(xiàn)的待測(cè)試頁(yè)面上,手動(dòng)執(zhí)行一次測(cè)試操作,就可以實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即 第二瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而無需操作人員在不同瀏覽 器所展現(xiàn)的待測(cè)試頁(yè)面,手動(dòng)執(zhí)行多次相同的測(cè)試操作,操作簡(jiǎn)單,而且正確率高,從而提 高了測(cè)試操作的效率和可靠性。
[0080] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,操作端與每個(gè)測(cè)試端之間的交互 可以采用基于多種套接字(Socket)協(xié)議的方式。例如,基于傳輸控制協(xié)議(Transmission Control Protocol, TCP)的標(biāo)準(zhǔn)Socket協(xié)議?;蛘?,再例如,基于超文本傳輸協(xié)議 (HyperText Transfer Protocol,HTTP)的Web Socket協(xié)議,以達(dá)到在HTTP 下模擬基于TCP 的通信方式。這樣,可以實(shí)現(xiàn)操作端與每個(gè)測(cè)試端之間,不間斷的有狀態(tài)的通信連接,從而 保證了順序傳輸消息的可靠性。
[0081] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,在101中,所述操作端具體可以通 過監(jiān)聽方式,采集輸入設(shè)備例如鍵盤、鼠標(biāo)或觸摸屏等在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上 的操作行為。其中,所述操作行為可以包括但不限于操作的頁(yè)面元素信息和操作的行為信 息,例如,鼠標(biāo)滾動(dòng)、鼠標(biāo)點(diǎn)擊、鼠標(biāo)經(jīng)過、信息輸入等。其中,鍵盤可以為物理鍵盤,或者還 可以虛擬鍵盤,本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0082] 具體地,所述操作端具體可以監(jiān)聽光標(biāo)事件,以獲得在第一瀏覽器展現(xiàn)的待測(cè)試 頁(yè)面上的操作行為。
[0083] 如果所述輸入設(shè)備為鼠標(biāo),那么,所述光標(biāo)事件,可以稱為鼠標(biāo)事件,則可以包括 鼠標(biāo)左鍵點(diǎn)擊事件、鼠標(biāo)右鍵點(diǎn)擊事件或鼠標(biāo)滾動(dòng)事件。
[0084] 如果所述輸入設(shè)備為鍵盤,那么,可以稱為鍵盤事件,所述光標(biāo)事件則可以包括回 車確認(rèn)事件或菜單彈出事件。
[0085] 如果所述輸入設(shè)備為觸摸屏,那么,可以稱為觸摸屏事件,所述光標(biāo)事件則可以包 括短時(shí)間觸碰事件或長(zhǎng)時(shí)間觸碰事件。
[0086] 例如,可以在待測(cè)試頁(yè)面中注入JavaScript代碼的方式,以實(shí)現(xiàn)監(jiān)聽光標(biāo)事件。
[0087] 或者,再例如,當(dāng)進(jìn)行跨頁(yè)面操作時(shí),即第一瀏覽器或第二瀏覽器當(dāng)前所展現(xiàn)的頁(yè) 面不是原始的待測(cè)試頁(yè)面,而是一個(gè)新的頁(yè)面,可以在新的頁(yè)面中注入JavaScript代碼的 方式,以實(shí)現(xiàn)監(jiān)聽光標(biāo)事件。
[0088] 以JavaScript鼠標(biāo)事件為例。通常,操作系統(tǒng)中都綁定有JavaScript鼠標(biāo)事件, 當(dāng)終端上發(fā)生鼠標(biāo)操作行為時(shí),就會(huì)觸發(fā)操作系統(tǒng)生成相應(yīng)的JavaScript鼠標(biāo)事件,因 此,所述操作端可以對(duì)JavaScript鼠標(biāo)事件進(jìn)行監(jiān)聽。當(dāng)監(jiān)聽到有JavaScript鼠標(biāo)事件 被觸發(fā)時(shí),操作端則可以根據(jù)被觸發(fā)的JavaScript鼠標(biāo)事件、以及JavaScript鼠標(biāo)事件與 鼠標(biāo)操作行為的對(duì)應(yīng)關(guān)系,確定與JavaScript鼠標(biāo)事件對(duì)應(yīng)的鼠標(biāo)操作行為。例如,當(dāng)單 擊鼠標(biāo)時(shí),onClick事件會(huì)被觸發(fā),操作端則可以確定是鼠標(biāo)單擊行為;同時(shí),MouseDown事 件也會(huì)被觸發(fā),可以從該MouseDown事件的參數(shù)類型中獲得X值和y值,該X值和y值就是 鼠標(biāo)點(diǎn)擊位置。操作端則可以根據(jù)鼠標(biāo)點(diǎn)擊位置,獲得當(dāng)前頁(yè)面上與該鼠標(biāo)點(diǎn)擊位置對(duì)應(yīng) 的頁(yè)面元素,則可以確定該頁(yè)面元素的頁(yè)面元素信息。這樣,操作端就獲得了鼠標(biāo)在頁(yè)面上 的操作行為,即操作的頁(yè)面元素信息和操作的行為信息。
[0089] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,在102中,操作端具體可以將所采 集的操作行為翻譯為一些列機(jī)器語(yǔ)言即操作指令,以模擬出所述操作行為。
[0090] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,本實(shí)施例所提供的測(cè)試方法所適 用的測(cè)試系統(tǒng)中,還可以進(jìn)一步包括分發(fā)服務(wù)器。具體地,分發(fā)服務(wù)器可以為采用node, js語(yǔ)言、java語(yǔ)言、C++語(yǔ)言實(shí)現(xiàn)的服務(wù)器端,通過端口監(jiān)聽方式與操作端、每個(gè)測(cè)試 端,進(jìn)行通信。具體地,分發(fā)服務(wù)器與操作端之間的交互、以及分發(fā)服務(wù)器與每個(gè)測(cè)試端 之間的交互可以采用基于多種套接字(Socket)協(xié)議的方式。例如,基于傳輸控制協(xié)議 (Transmission Control Protocol,TCP)的標(biāo)準(zhǔn)Socket協(xié)議?;蛘?,再例如,基于超文本 傳輸協(xié)議(HyperText Transfer Protocol,HTTP)的 Web Socket 協(xié)議,以達(dá)到在 HTTP 下模 擬基于TCP的通信方式。這樣,可以實(shí)現(xiàn)分發(fā)服務(wù)器與操作端之間、以及分發(fā)服務(wù)器與每個(gè) 測(cè)試端之間,不間斷的有狀態(tài)的通信連接,從而保證了順序傳輸消息的可靠性。
[0091] 相應(yīng)地,在103中,所述操作端具體可以通過分發(fā)服務(wù)器,向至少一個(gè)測(cè)試端中每 個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令。
[0092] 進(jìn)一步地,在103之前,操作端可以觸發(fā)操作端與分發(fā)服務(wù)器建立通信連接,開始 進(jìn)行測(cè)試。例如,可以在待測(cè)試頁(yè)面中注入JavaScript代碼的方式,以實(shí)現(xiàn)觸發(fā)操作。所 述分發(fā)服務(wù)器接收所述操作端發(fā)送的觸發(fā)信息,進(jìn)而根據(jù)所述觸發(fā)信息,為本次測(cè)試啟動(dòng) 服務(wù)實(shí)例,以生成所述本次測(cè)試的所述測(cè)試指示,例如,實(shí)例ID(Case ID)、會(huì)話ID(Session ID)等。然后,所述分發(fā)服務(wù)器則可以向所述操作端發(fā)送所述測(cè)試指示,以使得所述用戶確 定所述每個(gè)測(cè)試端。接著,所述分發(fā)服務(wù)器接收所述操作端發(fā)送的所述測(cè)試指示、所述待測(cè) 試頁(yè)面的標(biāo)識(shí)信息和所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,這樣,所述分發(fā)服務(wù)器則可以根據(jù)所述 每個(gè)測(cè)試端的標(biāo)識(shí)信息,向所述每個(gè)測(cè)試端發(fā)送所述測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信 息,以使得所述每個(gè)測(cè)試端驅(qū)動(dòng)所述第二瀏覽器展現(xiàn)所述待測(cè)試頁(yè)面。
[0093] 例如,同一個(gè)操作端,不管進(jìn)行頁(yè)面內(nèi)操作,還是進(jìn)行跨頁(yè)面操作,都屬于本次測(cè) 試的范圍之內(nèi),因此,分發(fā)服務(wù)器只需要為同一次測(cè)試啟動(dòng)一個(gè)服務(wù)實(shí)例,無需啟動(dòng)多個(gè)服 務(wù)實(shí)例,一次測(cè)試中的測(cè)試指示都相同。
[0094] 這樣,通過分發(fā)服務(wù)器為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,以生成所述本次測(cè)試的測(cè)試指 示,使得每次測(cè)試都可以對(duì)應(yīng)不同的測(cè)試指示,因此,分發(fā)服務(wù)器則可以同時(shí)為多個(gè)操作端 提供測(cè)試服務(wù),能夠有效提高測(cè)試操作的效率。
[0095] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,本實(shí)施例所提供的測(cè)試方法所適 用的測(cè)試系統(tǒng)中,還可以進(jìn)一步包括代理服務(wù)器。具體地,代理服務(wù)器具體可以接收第一候 選HTTP請(qǐng)求,所述第一候選HTTP請(qǐng)求為所述第一瀏覽器根據(jù)所述操作行為的操作結(jié)果,生 成;以及接收第二候選HTTP請(qǐng)求,所述第二候選HTTP請(qǐng)求為所述第二瀏覽器根據(jù)所述測(cè) 試端執(zhí)行所述操作指令的操作結(jié)果,生成。然后,所述代理服務(wù)器則可以根據(jù)所述第一候選 HTTP請(qǐng)求和所述第二候選HTTP請(qǐng)求,生成目標(biāo)HTTP請(qǐng)求,進(jìn)而向Web服務(wù)器發(fā)送所述目標(biāo) HTTP請(qǐng)求。接著,所述代理服務(wù)器接收所述Web服務(wù)器根據(jù)所述目標(biāo)HTTP請(qǐng)求,發(fā)送的目 標(biāo)HTTP響應(yīng),所述代理服務(wù)器則可以向所述第一瀏覽器和所述第二瀏覽器,發(fā)送所述目標(biāo) HTTP響應(yīng)。
[0096] 其中,由于第一瀏覽器根據(jù)其對(duì)應(yīng)的操作端執(zhí)行操作指令的操作結(jié)果,生成并發(fā) 送第一候選HTTP請(qǐng)求,以及多個(gè)第二瀏覽器實(shí)時(shí)根據(jù)各自對(duì)應(yīng)的測(cè)試端執(zhí)行相同的操作 指令的操作結(jié)果,生成并發(fā)送相同的第二候選HTTP請(qǐng)求,對(duì)于用于提交數(shù)據(jù)的HTTP請(qǐng)求來 說,例如,新建一個(gè)表單后提交等,勢(shì)必會(huì)出現(xiàn)只有一個(gè)HTTP請(qǐng)求提交成功,例如,第一候 選HTTP請(qǐng)求或任意一個(gè)第二候選HTTP請(qǐng)求,而其他HTTP請(qǐng)求均提交失敗。因此,代理服務(wù) 器需要根據(jù)所述第一候選HTTP請(qǐng)求和所述第二候選HTTP請(qǐng)求,生成唯一的一個(gè)目標(biāo)HTTP 請(qǐng)求。
[0097] 具體地,代理服務(wù)器具體可以對(duì)第一候選HTTP請(qǐng)求,以及每個(gè)測(cè)試端所對(duì)應(yīng)的第 二瀏覽器發(fā)送的第二候選HTTP請(qǐng)求,利用預(yù)先配置的白名單對(duì)所提交的數(shù)據(jù)進(jìn)行一致性 校驗(yàn)。例如,白名單可以包括部分字段如時(shí)間戳、瀏覽器的用戶代理(User Agent,UA)等。 然后,所述代理服務(wù)器對(duì)通過一致性校驗(yàn)的HTTP請(qǐng)求進(jìn)行融合處理,以生成目標(biāo)HTTP請(qǐng)求 并發(fā)送給Web服務(wù)器,對(duì)沒有通過一致性校驗(yàn)的HTTP請(qǐng)求進(jìn)行告警處理。
[0098] 接著,代理服務(wù)器在進(jìn)一步接收Web服務(wù)器根據(jù)所述目標(biāo)HTTP請(qǐng)求返回的目標(biāo) HTTP響應(yīng)之后,將目標(biāo)HTTP響應(yīng)復(fù)制若干份,分別向通過一致性校驗(yàn)的操作端和測(cè)試端發(fā) 送目標(biāo)HTTP響應(yīng)。
[0099] 對(duì)于一些簡(jiǎn)單的HTTP請(qǐng)求來說,例如,不涉及數(shù)據(jù)的提交的HTTP請(qǐng)求等,本實(shí)施 例所提供的測(cè)試方法所適用的測(cè)試系統(tǒng)中,無需包括代理服務(wù)器,操作端和每個(gè)測(cè)試端可 以分別直接與Web服務(wù)器進(jìn)行通信。即第一瀏覽器向Web服務(wù)器發(fā)送第一候選HTTP請(qǐng)求 以及接收Web服務(wù)器根據(jù)第一候選HTTP請(qǐng)求返回的第一候選HTTP響應(yīng),第二瀏覽器向Web 服務(wù)器發(fā)送第二候選HTTP請(qǐng)求以及接收Web服務(wù)器根據(jù)第二候選HTTP請(qǐng)求返回的第二候 選HTTP響應(yīng)。
[0100] 因此,為了能夠處理所有的HTTP請(qǐng)求,代理服務(wù)器可以配置兩種工作模式,一種 是透?jìng)髂J?,另一種是融合模式。
[0101] 定義對(duì)于一些簡(jiǎn)單的HTTP請(qǐng)求,代理服務(wù)器采用透?jìng)髂J?,進(jìn)行處理。即在請(qǐng)求 階段,直接將第一候選HTTP請(qǐng)求和若干個(gè)第二候選HTTP請(qǐng)求分別發(fā)送給Web服務(wù)器,不進(jìn) 行任何處理;在響應(yīng)階段,直接將Web服務(wù)器根據(jù)第一候選HTTP請(qǐng)求返回的第一候選HTTP 響應(yīng),發(fā)送給操作端即操作端所對(duì)應(yīng)的第一瀏覽器,直接將Web服務(wù)器根據(jù)第二候選HTTP 請(qǐng)求返回的第二候選HTTP響應(yīng),分部發(fā)送給每個(gè)測(cè)試端即測(cè)試端所對(duì)應(yīng)的第二瀏覽器。
[0102] 定義對(duì)于用于提交數(shù)據(jù)的HTTP請(qǐng)求代理服務(wù)器采用融合模式,進(jìn)行處理。即在請(qǐng) 求階段,將第一候選HTTP請(qǐng)求和若干個(gè)第二候選HTTP請(qǐng)求進(jìn)行融合處理,以生成目標(biāo)HTTP 請(qǐng)求,發(fā)送給Web服務(wù)器;在響應(yīng)階段,將Web服務(wù)器根據(jù)目標(biāo)HTTP請(qǐng)求返回的目標(biāo)HTTP 響應(yīng),復(fù)制若干份,分別發(fā)送給操作端即操作端所對(duì)應(yīng)的第一瀏覽器和每個(gè)測(cè)試端即測(cè)試 端所對(duì)應(yīng)的第二瀏覽器。
[0103] 需要說明的是,本實(shí)施例中,測(cè)試系統(tǒng)所包括的操作端、測(cè)試端、分發(fā)服務(wù)器和代 理服務(wù)器可以部署在同一個(gè)終端上,或者也可以分別部署在不同終端上,或者也可以一部 分部署在一個(gè)終端上,另一部分部署在另一個(gè)終端上,在一部分部署在再一個(gè)終端上,本實(shí) 施例對(duì)此不進(jìn)行特別限定。進(jìn)一步地,如果測(cè)試端都部署在同一個(gè)終端上,具體可以利用虛 擬機(jī)技術(shù)實(shí)現(xiàn),每一個(gè)測(cè)試端就可以為一個(gè)虛擬機(jī)的實(shí)例。
[0104] 一種較為優(yōu)選的部署方式為,操作端部署在終端A上,分發(fā)服務(wù)器和代理服務(wù)器 部署在終端B上,每個(gè)測(cè)試端都分別部署在不同的終端上即終端隊(duì)上,i為大于或等于1, 且小于或等于η的整數(shù),η為測(cè)試端的數(shù)量。
[0105] 本實(shí)施例中,通過操作端采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作 行為,所述操作行為包括操作的頁(yè)面元素信息和操作的行為信息,進(jìn)而,根據(jù)所述操作行 為,生成操作指令,使得所述操作端能夠向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和 所述操作指令,這樣,所述每個(gè)測(cè)試端則可以根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述 待測(cè)試頁(yè)面上執(zhí)行所述操作指令,只需要使用操作端的一個(gè)操作人員在一個(gè)瀏覽器即第一 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上,手動(dòng)執(zhí)行一次測(cè)試操作,就可以實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他 瀏覽器即第二瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而無需操作人員在 不同瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面,手動(dòng)執(zhí)行多次相同的測(cè)試操作,操作簡(jiǎn)單,而且正確率 高,從而提高了測(cè)試操作的效率和可靠性。
[0106] 另外,采用本發(fā)明提供的技術(shù)方案,由于實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而且第二瀏覽器的種類沒有數(shù)量 限制,因此,能夠有效提高測(cè)試過程中瀏覽器的覆蓋率。
[0107] 另外,采用本發(fā)明提供的技術(shù)方案,由于實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,因此,能夠?qū)崟r(shí)對(duì)比各個(gè)測(cè)試操 作的操作結(jié)果,從而實(shí)現(xiàn)了實(shí)時(shí)監(jiān)控的目的。
[0108] 另外,采用本發(fā)明提供的技術(shù)方案,通過分發(fā)服務(wù)器為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,以 生成所述本次測(cè)試的測(cè)試指示,使得每次測(cè)試都可以對(duì)應(yīng)不同的測(cè)試指示,因此,分發(fā)服務(wù) 器則可以同時(shí)為多個(gè)操作端提供測(cè)試服務(wù),能夠有效提高測(cè)試操作的效率。
[0109] 需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列 的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)?依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知 悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明 所必須的。
[0110] 在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部 分,可以參見其他實(shí)施例的相關(guān)描述。
[0111] 圖2為本發(fā)明另一實(shí)施例提供的測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖,如圖2所示。本實(shí)施例 的測(cè)試系統(tǒng)可以包括操作端21和至少一個(gè)測(cè)試端22^2?……22 n。其中,η為大于或等于 1的整數(shù)。其中,所述操作端21,用于采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操 作行為,所述操作行為包括操作的頁(yè)面元素信息和操作的行為信息;根據(jù)所述操作行為,生 成操作指令;以及向所述至少一個(gè)測(cè)試端22^2?……22 n中每個(gè)測(cè)試端22,發(fā)送測(cè)試指示 和所述操作指令其中,i為大于或等于1,且小于或等于η的整數(shù);所述每個(gè)測(cè)試端22^用 于根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí)行所述操作指令。
[0112] 其中,第二瀏覽器與第一瀏覽器,為不同瀏覽器;第二瀏覽器的數(shù)量與測(cè)試端的數(shù) 量相同,且第二瀏覽器與測(cè)試端一一對(duì)應(yīng),所述每個(gè)測(cè)試端22,所對(duì)應(yīng)的第二瀏覽器,為不 同瀏覽器。
[0113] 可以理解的是,所謂的不同瀏覽器,可以為在相同操作系統(tǒng)中運(yùn)行的不同的瀏覽 器,或者還可以為在不同操作系統(tǒng)中運(yùn)行的相同的瀏覽器,或者還可以為在不同操作系統(tǒng) 中運(yùn)行的不同的瀏覽器,本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0114] 例如,第二瀏覽器為Wind〇ws7操作系統(tǒng)中運(yùn)行的Firefox瀏覽器,第一瀏覽器為 WindowsS操作系統(tǒng)中運(yùn)行的Firefox瀏覽器,二者為不同瀏覽器。
[0115] 或者,再例如,第二瀏覽器為Wind〇ws7操作系統(tǒng)中運(yùn)行的IE瀏覽器,第一瀏覽器 為Wind 〇ws7操作系統(tǒng)中運(yùn)行的Firefox瀏覽器,二者為不同瀏覽器。
[0116] 或者,再例如,一個(gè)測(cè)試端所對(duì)應(yīng)的第二瀏覽器為Wind〇ws7操作系統(tǒng)中運(yùn)行的IE 瀏覽器,另一個(gè)測(cè)試端所對(duì)應(yīng)的第二瀏覽器為WindowsS操作系統(tǒng)中運(yùn)行的IE瀏覽器,二者 為不同瀏覽器。
[0117] 需要說明的是,所述操作端21與所述第一瀏覽器,可以獨(dú)立運(yùn)行在第一終端上; 或者,所述操作端21還可以以軟件開發(fā)工具包(Software Development Kit, SDK)形式或 插件形式,設(shè)置在所述第一瀏覽器的內(nèi)部;本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0118] 需要說明的是,所述每個(gè)測(cè)試端22i與對(duì)應(yīng)的所述第二瀏覽器,可以獨(dú)立運(yùn)行在 第二終端上;或者,所述測(cè)試端還可以以SDK形式或插件形式,設(shè)置在所述第二瀏覽器的內(nèi) 部;本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0119] 可以理解的是,本發(fā)明所涉及的頁(yè)面,可以是基于HTML編與的網(wǎng)頁(yè)(Web Page), 也可以稱為Web頁(yè)面。
[0120] 這樣,通過操作端采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為, 所述操作行為包括操作的頁(yè)面元素信息和操作的行為信息,進(jìn)而,根據(jù)所述操作行為,生成 操作指令,使得所述操作端能夠向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作 指令,這樣,所述每個(gè)測(cè)試端則可以根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè) 面上執(zhí)行所述操作指令,只需要使用操作端的一個(gè)操作人員在一個(gè)瀏覽器即第一瀏覽器所 展現(xiàn)的待測(cè)試頁(yè)面上,手動(dòng)執(zhí)行一次測(cè)試操作,就可以實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即 第二瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而無需操作人員在不同瀏覽 器所展現(xiàn)的待測(cè)試頁(yè)面,手動(dòng)執(zhí)行多次相同的測(cè)試操作,操作簡(jiǎn)單,而且正確率高,從而提 高了測(cè)試操作的效率和可靠性。
[0121] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,操作端21與每個(gè)測(cè)試端22ii 間的交互可以采用基于多種套接字(Socket)協(xié)議的方式。例如,基于傳輸控制協(xié)議 (Transmission Control Protocol,TCP)的標(biāo)準(zhǔn)Socket協(xié)議?;蛘?,再例如,基于超文本 傳輸協(xié)議(HyperText Transfer Protocol,HTTP)的 Web Socket 協(xié)議,以達(dá)到在 HTTP 下模 擬基于TCP的通信方式。這樣,可以實(shí)現(xiàn)操作端與每個(gè)測(cè)試端之間,不間斷的有狀態(tài)的通信 連接,從而保證了順序傳輸消息的可靠性。
[0122] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,如圖3所示,本實(shí)施例提供的測(cè) 試系統(tǒng)還可以進(jìn)一步包括分發(fā)服務(wù)器31。具體地,分發(fā)服務(wù)器31可以為采用node, js語(yǔ) 言、java語(yǔ)言、C++語(yǔ)言實(shí)現(xiàn)的服務(wù)器端,通過端口監(jiān)聽方式與操作端21、每個(gè)測(cè)試端22p 進(jìn)行通信。具體地,分發(fā)服務(wù)器與操作端21之間的交互、以及分發(fā)服務(wù)器與每個(gè)測(cè)試端 之間的交互可以采用基于多種套接字(Socket)協(xié)議的方式。例如,基于傳輸控制協(xié)議 (Transmission Control Protocol,TCP)的標(biāo)準(zhǔn)Socket協(xié)議。或者,再例如,基于超文本 傳輸協(xié)議(HyperText Transfer Protocol,HTTP)的 Web Socket 協(xié)議,以達(dá)到在 HTTP 下模 擬基于TCP的通信方式。這樣,可以實(shí)現(xiàn)分發(fā)服務(wù)器與操作端之間、以及分發(fā)服務(wù)器與每個(gè) 測(cè)試端之間,不間斷的有狀態(tài)的通信連接,從而保證了順序傳輸消息的可靠性。
[0123] 相應(yīng)地,所述操作端21,具體可以用于通過所述分發(fā)服務(wù)器,向所述每個(gè)測(cè)試端 22i發(fā)送測(cè)試指示和所述操作指令。
[0124] 進(jìn)一步地,所述操作端21,還可以進(jìn)一步用于向所述分發(fā)服務(wù)器31發(fā)送觸發(fā)信 息。所述分發(fā)服務(wù)器31,還可以進(jìn)一步用于根據(jù)所述觸發(fā)信息,為本次測(cè)試啟動(dòng)服務(wù)實(shí)例, 以生成所述本次測(cè)試的所述測(cè)試指示;向所述操作端21發(fā)送所述測(cè)試指示,以使得所述用 戶確定所述每個(gè)測(cè)試端22i。所述操作端21,還可以進(jìn)一步用于向所述分發(fā)服務(wù)器31發(fā)送 所述測(cè)試指示、所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息和所述每個(gè)測(cè)試端22,的標(biāo)識(shí)信息。所述分發(fā)服 務(wù)器31,還可以進(jìn)一步用于根據(jù)所述每個(gè)測(cè)試端22i的標(biāo)識(shí)信息,向所述每個(gè)測(cè)試端22i發(fā) 送所述測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息。所述每個(gè)測(cè)試端22,,還可以進(jìn)一步用于驅(qū) 動(dòng)所述第二瀏覽器展現(xiàn)所述待測(cè)試頁(yè)面。
[0125] 例如,同一個(gè)操作端21,不管進(jìn)行頁(yè)面內(nèi)操作,還是進(jìn)行跨頁(yè)面操作,都屬于本次 測(cè)試的范圍之內(nèi),因此,分發(fā)服務(wù)器31只需要為同一次測(cè)試啟動(dòng)一個(gè)服務(wù)實(shí)例,無需啟動(dòng) 多個(gè)服務(wù)實(shí)例,一次測(cè)試中的測(cè)試指示都相同。
[0126] 這樣,通過分發(fā)服務(wù)器為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,以生成所述本次測(cè)試的測(cè)試指 示,使得每次測(cè)試都可以對(duì)應(yīng)不同的測(cè)試指示,因此,分發(fā)服務(wù)器則可以同時(shí)為多個(gè)操作端 提供測(cè)試服務(wù),能夠有效提高測(cè)試操作的效率。
[0127] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,如圖4所示,本實(shí)施例提供的測(cè)試 系統(tǒng)還可以進(jìn)一步包括代理服務(wù)器41。
[0128] 具體地,具體可以用于接收第一候選HTTP請(qǐng)求,所述第一候選HTTP請(qǐng)求為所述 第一瀏覽器根據(jù)所述操作行為的操作結(jié)果,生成;接收第二候選HTTP請(qǐng)求,所述第二候選 HTTP請(qǐng)求為所述第二瀏覽器根據(jù)所述測(cè)試端執(zhí)行所述操作指令的操作結(jié)果,生成;以及根 據(jù)所述第一候選HTTP請(qǐng)求和所述第二候選HTTP請(qǐng)求,生成目標(biāo)HTTP請(qǐng)求;向Web服務(wù)器 發(fā)送所述目標(biāo)HTTP請(qǐng)求;接收所述Web服務(wù)器根據(jù)所述目標(biāo)HTTP請(qǐng)求,發(fā)送的目標(biāo)HTTP 響應(yīng);向所述第一瀏覽器和所述第二瀏覽器,發(fā)送所述目標(biāo)HTTP響應(yīng)
[0129] 其中,由于第一瀏覽器根據(jù)其對(duì)應(yīng)的操作端21執(zhí)行操作指令的操作結(jié)果,生成并 發(fā)送第一候選HTTP請(qǐng)求,以及多個(gè)第二瀏覽器實(shí)時(shí)根據(jù)各自對(duì)應(yīng)的測(cè)試端執(zhí)行相同的操 作指令的操作結(jié)果,生成并發(fā)送相同的第二候選HTTP請(qǐng)求,對(duì)于用于提交數(shù)據(jù)的HTTP請(qǐng)求 來說,例如,新建一個(gè)表單后提交等,勢(shì)必會(huì)出現(xiàn)只有一個(gè)HTTP請(qǐng)求提交成功,例如,第一 候選HTTP請(qǐng)求或任意一個(gè)第二候選HTTP請(qǐng)求,而其他HTTP請(qǐng)求均提交失敗。因此,代理 服務(wù)器41需要根據(jù)所述第一候選HTTP請(qǐng)求和所述第二候選HTTP請(qǐng)求,生成唯一的一個(gè)目 標(biāo)HTTP請(qǐng)求。
[0130] 具體地,代理服務(wù)器41具體可以對(duì)第一候選HTTP請(qǐng)求,以及每個(gè)測(cè)試端22i所對(duì) 應(yīng)的第二瀏覽器發(fā)送的第二候選HTTP請(qǐng)求,利用預(yù)先配置的白名單對(duì)所提交的數(shù)據(jù)進(jìn)行 一致性校驗(yàn)。例如,白名單可以包括部分字段如時(shí)間戳、瀏覽器的用戶代理(User Agent, UA)等。然后,所述代理服務(wù)器41對(duì)通過一致性校驗(yàn)的HTTP請(qǐng)求進(jìn)行融合處理,以生成目 標(biāo)HTTP請(qǐng)求并發(fā)送給Web服務(wù)器,對(duì)沒有通過一致性校驗(yàn)的HTTP請(qǐng)求進(jìn)行告警處理。
[0131] 接著,代理服務(wù)器41在進(jìn)一步接收Web服務(wù)器根據(jù)所述目標(biāo)HTTP請(qǐng)求返回的目 標(biāo)HTTP響應(yīng)之后,將目標(biāo)HTTP響應(yīng)復(fù)制若干份,分別向通過一致性校驗(yàn)的操作端21和測(cè) 試端發(fā)送目標(biāo)HTTP響應(yīng)。
[0132] 對(duì)于一些簡(jiǎn)單的HTTP請(qǐng)求來說,例如,不涉及數(shù)據(jù)的提交的HTTP請(qǐng)求等,本實(shí)施 例所提供的測(cè)試方法所適用的測(cè)試系統(tǒng)中,無需包括代理服務(wù)器41,操作端21和每個(gè)測(cè)試 端22i可以分別直接與Web服務(wù)器進(jìn)行通信。即第一瀏覽器向Web服務(wù)器發(fā)送第一候選 HTTP請(qǐng)求以及接收Web服務(wù)器根據(jù)第一候選HTTP請(qǐng)求返回的第一候選HTTP響應(yīng),第二瀏 覽器向Web服務(wù)器發(fā)送第二候選HTTP請(qǐng)求以及接收Web服務(wù)器根據(jù)第二候選HTTP請(qǐng)求返 回的第二候選HTTP響應(yīng)。
[0133] 因此,為了能夠處理所有的HTTP請(qǐng)求,代理服務(wù)器41可以配置兩種工作模式,一 種是透?jìng)髂J剑硪环N是融合模式。
[0134] 定義對(duì)于一些簡(jiǎn)單的HTTP請(qǐng)求,代理服務(wù)器41采用透?jìng)髂J剑M(jìn)行處理。即在請(qǐng) 求階段,直接將第一候選HTTP請(qǐng)求和若干個(gè)第二候選HTTP請(qǐng)求分別發(fā)送給Web服務(wù)器, 不進(jìn)行任何處理;在響應(yīng)階段,直接將Web服務(wù)器根據(jù)第一候選HTTP請(qǐng)求返回的第一候選 HTTP響應(yīng),發(fā)送給操作端即操作端所對(duì)應(yīng)的第一瀏覽器,直接將Web服務(wù)器根據(jù)第二候選 HTTP請(qǐng)求返回的第二候選HTTP響應(yīng),分部發(fā)送給每個(gè)測(cè)試端22,即測(cè)試端所對(duì)應(yīng)的第二瀏 Π/Γ PLP jAL-nlr 〇
[0135] 定義對(duì)于用于提交數(shù)據(jù)的HTTP請(qǐng)求代理服務(wù)器41采用融合模式,進(jìn)行處理。即 在請(qǐng)求階段,將第一候選HTTP請(qǐng)求和若干個(gè)第二候選HTTP請(qǐng)求進(jìn)行融合處理,以生成目標(biāo) HTTP請(qǐng)求,發(fā)送給Web服務(wù)器;在響應(yīng)階段,將Web服務(wù)器根據(jù)目標(biāo)HTTP請(qǐng)求返回的目標(biāo) HTTP響應(yīng),復(fù)制若干份,分別發(fā)送給操作端即操作端所對(duì)應(yīng)的第一瀏覽器和每個(gè)測(cè)試端22i 即測(cè)試端所對(duì)應(yīng)的第二瀏覽器。
[0136] 需要說明的是,本實(shí)施例中,測(cè)試系統(tǒng)所包括的操作端21、至少一個(gè)測(cè)試端22^ 2?……22 n、分發(fā)服務(wù)器31和代理服務(wù)器41可以部署在同一個(gè)終端上,或者也可以分別部 署在不同終端上,或者也可以一部分部署在一個(gè)終端上,另一部分部署在另一個(gè)終端上,在 一部分部署在再一個(gè)終端上,本實(shí)施例對(duì)此不進(jìn)行特別限定。進(jìn)一步地,如果測(cè)試端都部署 在同一個(gè)終端上,具體可以利用虛擬機(jī)技術(shù)實(shí)現(xiàn),每一個(gè)測(cè)試端就可以為一個(gè)虛擬機(jī)的實(shí) 例。
[0137] -種較為優(yōu)選的部署方式為,操作端21部署在終端A上,分發(fā)服務(wù)器31和代理服 務(wù)器41部署在終端B上,每個(gè)測(cè)試端22i都分別部署在不同的終端上即終端Ni上,i為大 于或等于1,且小于或等于η的整數(shù),η為測(cè)試端的數(shù)量。
[0138] 需要說明的是,圖1對(duì)應(yīng)的實(shí)施例中操作端的功能,均可以由本實(shí)施例提供的測(cè) 試系統(tǒng)中操作端21實(shí)現(xiàn);圖1對(duì)應(yīng)的實(shí)施例中至少一個(gè)測(cè)試端的功能,均可以由本實(shí)施例 提供的測(cè)試系統(tǒng)中至少一個(gè)測(cè)試端22^2?……22 n實(shí)現(xiàn);圖1對(duì)應(yīng)的實(shí)施例中分發(fā)服務(wù)器 的功能,均可以由本實(shí)施例提供的測(cè)試系統(tǒng)中分發(fā)服務(wù)器31實(shí)現(xiàn);圖1對(duì)應(yīng)的實(shí)施例中分 發(fā)服務(wù)器的功能,均可以由本實(shí)施例提供的測(cè)試系統(tǒng)中代理服務(wù)器41實(shí)現(xiàn)。詳細(xì)描述可以 參見圖1對(duì)應(yīng)的實(shí)施例中的相關(guān)內(nèi)容,此處不再贅述。
[0139] 本實(shí)施例中,通過操作端采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作 行為,所述操作行為包括操作的頁(yè)面元素信息和操作的行為信息,進(jìn)而,根據(jù)所述操作行 為,生成操作指令,使得所述操作端能夠向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和 所述操作指令,這樣,所述每個(gè)測(cè)試端則可以根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述 待測(cè)試頁(yè)面上執(zhí)行所述操作指令,只需要使用操作端的一個(gè)操作人員在一個(gè)瀏覽器即第一 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上,手動(dòng)執(zhí)行一次測(cè)試操作,就可以實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他 瀏覽器即第二瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而無需操作人員在 不同瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面,手動(dòng)執(zhí)行多次相同的測(cè)試操作,操作簡(jiǎn)單,而且正確率 高,從而提高了測(cè)試操作的效率和可靠性。
[0140] 另外,采用本發(fā)明提供的技術(shù)方案,由于實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而且第二瀏覽器的種類沒有數(shù)量 限制,因此,能夠有效提高測(cè)試過程中瀏覽器的覆蓋率。
[0141] 另外,采用本發(fā)明提供的技術(shù)方案,由于實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,因此,能夠?qū)崟r(shí)對(duì)比各個(gè)測(cè)試操 作的操作結(jié)果,從而實(shí)現(xiàn)了實(shí)時(shí)監(jiān)控的目的。
[0142] 另外,采用本發(fā)明提供的技術(shù)方案,通過分發(fā)服務(wù)器為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,以 生成所述本次測(cè)試的測(cè)試指示,使得每次測(cè)試都可以對(duì)應(yīng)不同的測(cè)試指示,因此,分發(fā)服務(wù) 器則可以同時(shí)為多個(gè)操作端提供測(cè)試服務(wù),能夠有效提高測(cè)試操作的效率。
[0143] 圖5為本發(fā)明另一實(shí)施例提供的操作端的結(jié)構(gòu)示意圖,如圖5所示。本實(shí)施例的操 作端可以包括采集單元51、生成單元52和發(fā)送單元53。其中,采集單元51,用于采集輸入 設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為,所述操作行為包括操作的頁(yè)面元素信 息和操作的行為信息;生成單元52,用于根據(jù)所述操作行為,生成操作指令;發(fā)送單元53, 用于向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令,以使得所述每個(gè)測(cè)試 端根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí)行所述操作指令。
[0144] 其中,第二瀏覽器與第一瀏覽器,為不同瀏覽器;第二瀏覽器的數(shù)量與測(cè)試端的數(shù) 量相同,且第二瀏覽器與測(cè)試端一一對(duì)應(yīng),所述每個(gè)測(cè)試端所對(duì)應(yīng)的第二瀏覽器,為不同瀏 Π/Γ PLP jAL-nlr 〇
[0145] 可以理解的是,所謂的不同瀏覽器,可以為在相同操作系統(tǒng)中運(yùn)行的不同的瀏覽 器,或者還可以為在不同操作系統(tǒng)中運(yùn)行的相同的瀏覽器,或者還可以為在不同操作系統(tǒng) 中運(yùn)行的不同的瀏覽器,本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0146] 需要說明的是,所述操作端與所述第一瀏覽器,可以獨(dú)立運(yùn)行在第一終端上;或 者,所述操作端還可以以軟件開發(fā)工具包(Software Development Kit, SDK)形式或插件形 式,設(shè)置在所述第一瀏覽器的內(nèi)部;本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0147] 需要說明的是,所述每個(gè)測(cè)試端與對(duì)應(yīng)的所述第二瀏覽器,可以獨(dú)立運(yùn)行在第二 終端上;或者,所述測(cè)試端還可以以SDK形式或插件形式,設(shè)置在所述第二瀏覽器的內(nèi)部; 本實(shí)施例對(duì)此不進(jìn)行特別限定。
[0148] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,所述發(fā)送單元53,具體可以用于通 過分發(fā)服務(wù)器,向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令。
[0149] 可選地,在本實(shí)施例的一個(gè)可能的實(shí)現(xiàn)方式中,如圖6所示,本實(shí)施例所提供的操 作端還可以進(jìn)一步包括接收單元61。其中,所述發(fā)送單元53,還可以進(jìn)一步用于向所述分 發(fā)服務(wù)器發(fā)送觸發(fā)信息。所述接收單元61,用于接收所述分發(fā)服務(wù)器發(fā)送的所述測(cè)試指 示,以使得所述用戶確定所述每個(gè)測(cè)試端,所述測(cè)試指示為所述分發(fā)服務(wù)器根據(jù)所述觸發(fā) 信息,為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,生成。相應(yīng)地,所述發(fā)送單元53,則還可以進(jìn)一步用于向所 述分發(fā)服務(wù)器發(fā)送所述測(cè)試指示、所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息和所述每個(gè)測(cè)試端的標(biāo)識(shí)信 息,以使得所述分發(fā)服務(wù)器根據(jù)所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,向所述每個(gè)測(cè)試端發(fā)送所述 測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息,以使得所述每個(gè)測(cè)試端驅(qū)動(dòng)所述第二瀏覽器展現(xiàn) 所述待測(cè)試頁(yè)面。
[0150] 需要說明的是,圖1對(duì)應(yīng)的實(shí)施例中操作端的功能,均可以由本實(shí)施例提供的測(cè) 試系統(tǒng)所提供的操作端實(shí)現(xiàn)。詳細(xì)描述可以參見圖1對(duì)應(yīng)的實(shí)施例中的相關(guān)內(nèi)容,此處不 再贅述。
[0151] 這樣,通過采集單元采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行 為,所述操作行為包括操作的頁(yè)面元素信息和操作的行為信息,進(jìn)而,由生成單元根據(jù)所述 操作行為,生成操作指令,使得發(fā)送單元能夠向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指 示和所述操作指令,這樣,所述每個(gè)測(cè)試端則可以根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的 所述待測(cè)試頁(yè)面上執(zhí)行所述操作指令,只需要使用操作端的一個(gè)操作人員在一個(gè)瀏覽器即 第一瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上,手動(dòng)執(zhí)行一次測(cè)試操作,就可以實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng) 其他瀏覽器即第二瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而無需操作人 員在不同瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面,手動(dòng)執(zhí)行多次相同的測(cè)試操作,操作簡(jiǎn)單,而且正確 率高,從而提高了測(cè)試操作的效率和可靠性。
[0152] 另外,采用本發(fā)明提供的技術(shù)方案,由于實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,而且第二瀏覽器的種類沒有數(shù)量 限制,因此,能夠有效提高測(cè)試過程中瀏覽器的覆蓋率。
[0153] 另外,采用本發(fā)明提供的技術(shù)方案,由于實(shí)時(shí)通過測(cè)試端驅(qū)動(dòng)其他瀏覽器即第二 瀏覽器所展現(xiàn)的待測(cè)試頁(yè)面上自動(dòng)執(zhí)行相同的測(cè)試操作,因此,能夠?qū)崟r(shí)對(duì)比各個(gè)測(cè)試操 作的操作結(jié)果,從而實(shí)現(xiàn)了實(shí)時(shí)監(jiān)控的目的。
[0154] 另外,采用本發(fā)明提供的技術(shù)方案,通過分發(fā)服務(wù)器為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,以 生成所述本次測(cè)試的測(cè)試指示,使得每次測(cè)試都可以對(duì)應(yīng)不同的測(cè)試指示,因此,分發(fā)服務(wù) 器則可以同時(shí)為多個(gè)操作端提供測(cè)試服務(wù),能夠有效提高測(cè)試操作的效率。
[0155] 所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng), 裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
[0156] 在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以 通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的 劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或頁(yè)面 組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯 示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間 接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0157] 所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè) 網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目 的。
[0158] 另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以 是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單 元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
[0159] 上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存 儲(chǔ)介質(zhì)中。上述軟件功能單元存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一個(gè)計(jì)算 機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā) 明各個(gè)實(shí)施例所述方法的部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器 (Read-Only Memory, ROM)、隨機(jī)存取存儲(chǔ)器(Random Access Memory, RAM)、磁碟或者光盤 等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0160] 最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡 管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然 可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精 神和范圍。
【權(quán)利要求】
1. 一種測(cè)試方法,其特征在于,包括: 操作端采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為,所述操作行為包 括操作的頁(yè)面元素信息和操作的行為信息; 所述操作端根據(jù)所述操作行為,生成操作指令; 所述操作端向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令,以使得所 述每個(gè)測(cè)試端根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí)行所述操作指 令。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述操作端向至少一個(gè)測(cè)試端中每個(gè)測(cè) 試端發(fā)送測(cè)試指示和所述操作指令,包括: 所述操作端通過分發(fā)服務(wù)器,向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操 作指令。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述操作端通過分發(fā)服務(wù)器,向至少一個(gè) 測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令之前,還包括: 所述操作端向所述分發(fā)服務(wù)器發(fā)送觸發(fā)信息; 所述操作端接收所述分發(fā)服務(wù)器發(fā)送的所述測(cè)試指示,以使得所述用戶確定所述每個(gè) 測(cè)試端,所述測(cè)試指示為所述分發(fā)服務(wù)器根據(jù)所述觸發(fā)信息,為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,生 成; 所述操作端向所述分發(fā)服務(wù)器發(fā)送所述測(cè)試指示、所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息和所述 每個(gè)測(cè)試端的標(biāo)識(shí)信息,以使得所述分發(fā)服務(wù)器根據(jù)所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,向所述 每個(gè)測(cè)試端發(fā)送所述測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息,以使得所述每個(gè)測(cè)試端驅(qū)動(dòng) 所述第二瀏覽器展現(xiàn)所述待測(cè)試頁(yè)面。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 代理服務(wù)器接收第一候選HTTP請(qǐng)求,所述第一候選HTTP請(qǐng)求為所述第一瀏覽器根據(jù) 所述操作行為的操作結(jié)果,生成; 所述代理服務(wù)器接收第二候選HTTP請(qǐng)求,所述第二候選HTTP請(qǐng)求為所述第二瀏覽器 根據(jù)所述測(cè)試端執(zhí)行所述操作指令的操作結(jié)果,生成; 所述代理服務(wù)器向Web服務(wù)器發(fā)送所述第一候選HTTP請(qǐng)求,以及接收所述Web服務(wù)器 根據(jù)所述第一候選HTTP請(qǐng)求,發(fā)送的第一候選HTTP響應(yīng);所述代理服務(wù)器向Web服務(wù)器發(fā) 送所述第二候選HTTP請(qǐng)求,以及接收所述Web服務(wù)器根據(jù)所述第二候選HTTP請(qǐng)求,發(fā)送的 第二候選HTTP響應(yīng);所述代理服務(wù)器向所述第一瀏覽器發(fā)送所述第一候選HTTP響應(yīng),向所 述第二瀏覽器發(fā)送所述第二候選HTTP響應(yīng);或者 所述代理服務(wù)器根據(jù)所述第一候選HTTP請(qǐng)求和所述第二候選HTTP請(qǐng)求,生成目標(biāo) HTTP請(qǐng)求,向Web服務(wù)器發(fā)送所述目標(biāo)HTTP請(qǐng)求,以及接收所述Web服務(wù)器根據(jù)所述目標(biāo) HTTP請(qǐng)求,發(fā)送的目標(biāo)HTTP響應(yīng);所述代理服務(wù)器向所述第一瀏覽器和所述第二瀏覽器, 發(fā)送所述目標(biāo)HTTP響應(yīng)。
5. 根據(jù)權(quán)利要求1?4任一權(quán)利要求所述的方法,其特征在于,所述操作端與所述第一 瀏覽器,獨(dú)立運(yùn)行在第一終端上;所述操作端以SDK形式或插件形式,設(shè)置在所述第一瀏覽 器的內(nèi)部。
6. 根據(jù)權(quán)利要求1?4任一權(quán)利要求所述的方法,其特征在于,所述每個(gè)測(cè)試端與對(duì)應(yīng) 的所述第二瀏覽器,獨(dú)立運(yùn)行在第二終端上;所述測(cè)試端以SDK形式或插件形式,設(shè)置在所 述第二瀏覽器的內(nèi)部。
7. -種測(cè)試系統(tǒng),其特征在于,包括操作端和至少一個(gè)測(cè)試端;其中, 所述操作端,用于采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為,所述 操作行為包括操作的頁(yè)面元素信息和操作的行為信息;根據(jù)所述操作行為,生成操作指令; 以及向所述至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令; 所述每個(gè)測(cè)試端,用于根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí) 行所述操作指令。
8. 根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括分發(fā)服務(wù)器;所述操作 端,具體用于 通過所述分發(fā)服務(wù)器,向所述每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令。
9. 根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于, 所述操作端,還用于向所述分發(fā)服務(wù)器發(fā)送觸發(fā)信息; 所述分發(fā)服務(wù)器,還用于根據(jù)所述觸發(fā)信息,為本次測(cè)試啟動(dòng)服務(wù)實(shí)例,以生成所述本 次測(cè)試的所述測(cè)試指示;向所述操作端發(fā)送所述測(cè)試指示,以使得所述用戶確定所述每個(gè) 測(cè)試端; 所述操作端,還用于向所述分發(fā)服務(wù)器發(fā)送所述測(cè)試指示、所述待測(cè)試頁(yè)面的標(biāo)識(shí)信 息和所述每個(gè)測(cè)試端的標(biāo)識(shí)信息; 所述分發(fā)服務(wù)器,還用于根據(jù)所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,向所述每個(gè)測(cè)試端發(fā)送所 述測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息; 所述每個(gè)測(cè)試端,還用于驅(qū)動(dòng)所述第二瀏覽器展現(xiàn)所述待測(cè)試頁(yè)面。
10. 根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括代理服務(wù)器,用于 接收第一候選HTTP請(qǐng)求,所述第一候選HTTP請(qǐng)求為所述第一瀏覽器根據(jù)所述操作行 為的操作結(jié)果,生成;接收第二候選HTTP請(qǐng)求,所述第二候選HTTP請(qǐng)求為所述第二瀏覽器 根據(jù)所述測(cè)試端執(zhí)行所述操作指令的操作結(jié)果,生成; 向Web服務(wù)器發(fā)送所述第一候選HTTP請(qǐng)求,以及接收所述Web服務(wù)器根據(jù)所述第一候 選HTTP請(qǐng)求,發(fā)送的第一候選HTTP響應(yīng);向Web服務(wù)器發(fā)送所述第二候選HTTP請(qǐng)求,以及 接收所述Web服務(wù)器根據(jù)所述第二候選HTTP請(qǐng)求,發(fā)送的第二候選HTTP響應(yīng);向所述第一 瀏覽器發(fā)送所述第一候選HTTP響應(yīng),向所述第二瀏覽器發(fā)送所述第二候選HTTP響應(yīng);或者 根據(jù)所述第一候選HTTP請(qǐng)求和所述第二候選HTTP請(qǐng)求,生成目標(biāo)HTTP請(qǐng)求;向Web 服務(wù)器發(fā)送所述目標(biāo)HTTP請(qǐng)求;接收所述Web服務(wù)器根據(jù)所述目標(biāo)HTTP請(qǐng)求,發(fā)送的目標(biāo) HTTP響應(yīng);向所述第一瀏覽器和所述第二瀏覽器,發(fā)送所述目標(biāo)HTTP響應(yīng)。
11. 根據(jù)權(quán)利要求7?10任一權(quán)利要求所述的系統(tǒng),其特征在于,所述操作端與所述第 一瀏覽器,獨(dú)立運(yùn)行在第一終端上;所述操作端以SDK形式或插件形式,設(shè)置在所述第一瀏 覽器的內(nèi)部。
12. 根據(jù)權(quán)利要求7?10任一權(quán)利要求所述的系統(tǒng),其特征在于,所述每個(gè)測(cè)試端與對(duì) 應(yīng)的所述第二瀏覽器,獨(dú)立運(yùn)行在第二終端上;所述測(cè)試端以SDK形式或插件形式,設(shè)置在 所述第二瀏覽器的內(nèi)部。
13. -種操作端,其特征在于, 采集單元,用于采集輸入設(shè)備在第一瀏覽器展現(xiàn)的待測(cè)試頁(yè)面上的操作行為,所述操 作行為包括操作的頁(yè)面元素信息和操作的行為信息; 生成單元,用于根據(jù)所述操作行為,生成操作指令; 發(fā)送單元,用于向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令,以使 得所述每個(gè)測(cè)試端根據(jù)所述測(cè)試指示,在第二瀏覽器展現(xiàn)的所述待測(cè)試頁(yè)面上執(zhí)行所述操 作指令。
14. 根據(jù)權(quán)利要求13所述的操作端,其特征在于,所述發(fā)送單元,具體用于 通過分發(fā)服務(wù)器,向至少一個(gè)測(cè)試端中每個(gè)測(cè)試端發(fā)送測(cè)試指示和所述操作指令。
15. 根據(jù)權(quán)利要求14所述的操作端,其特征在于,所述操作端還包括接收單元;其中, 所述發(fā)送單元,還用于向所述分發(fā)服務(wù)器發(fā)送觸發(fā)信息; 所述接收單元,用于接收所述分發(fā)服務(wù)器發(fā)送的所述測(cè)試指示,以使得所述用戶確定 所述每個(gè)測(cè)試端,所述測(cè)試指示為所述分發(fā)服務(wù)器根據(jù)所述觸發(fā)信息,為本次測(cè)試啟動(dòng)服 務(wù)實(shí)例,生成; 所述發(fā)送單元,還用于向所述分發(fā)服務(wù)器發(fā)送所述測(cè)試指示、所述待測(cè)試頁(yè)面的標(biāo)識(shí) 信息和所述每個(gè)測(cè)試端的標(biāo)識(shí)信息,以使得所述分發(fā)服務(wù)器根據(jù)所述每個(gè)測(cè)試端的標(biāo)識(shí)信 息,向所述每個(gè)測(cè)試端發(fā)送所述測(cè)試指示和所述待測(cè)試頁(yè)面的標(biāo)識(shí)信息,以使得所述每個(gè) 測(cè)試端驅(qū)動(dòng)所述第二瀏覽器展現(xiàn)所述待測(cè)試頁(yè)面。
16. 根據(jù)權(quán)利要求13?15任一權(quán)利要求所述的操作端,其特征在于,所述操作端與所 述第一瀏覽器,獨(dú)立運(yùn)行在第一終端上;所述操作端以SDK形式或插件形式,設(shè)置在所述第 一瀏覽器的內(nèi)部。
17. 根據(jù)權(quán)利要求13?15任一權(quán)利要求所述的操作端,其特征在于,所述每個(gè)測(cè)試端 與對(duì)應(yīng)的所述第二瀏覽器,獨(dú)立運(yùn)行在第二終端上;所述測(cè)試端以SDK形式或插件形式,設(shè) 置在所述第二瀏覽器的內(nèi)部。
【文檔編號(hào)】G06F11/36GK104102578SQ201410301283
【公開日】2014年10月15日 申請(qǐng)日期:2014年6月27日 優(yōu)先權(quán)日:2014年6月27日
【發(fā)明者】張立理, 李義冬, 沈彬, 梁丹 申請(qǐng)人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司