亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于異步線程的測試方法和裝置的制造方法

文檔序號:9844012閱讀:183來源:國知局
一種基于異步線程的測試方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本申請涉及測試技術(shù)領(lǐng)域,特別是涉及一種基于異步線程的測試方法和一種基于 異步線程的測試裝置。
【背景技術(shù)】
[0002] 程序測試就是利用測試工具按照測試方案和流程對產(chǎn)品進(jìn)行功能和性能測試,甚 至根據(jù)需要編寫不同的測試工具,設(shè)計和維護(hù)測試系統(tǒng),對測試方案可能出現(xiàn)的問題進(jìn)行 分析和評估。執(zhí)行測試用例后,需要跟蹤故障,以確保開發(fā)的產(chǎn)品適合需求。
[0003] Java(-種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言)的多線程/異 步線程是在系統(tǒng)實現(xiàn)過程中使用的非常多的一種實現(xiàn)手段,常用的servlet (服務(wù)端程序) 或者C/S(Client/Server或客戶/服務(wù)器模式)結(jié)構(gòu)的窗體工作于與后臺處理是多線程 的,以減少用戶在前臺等待的時間;再比如為了提高系統(tǒng)或應(yīng)用程序的性能,可以采用多線 程提高系統(tǒng)或應(yīng)用程序的并發(fā)處理能力等。
[0004] 這種異步多線程的實現(xiàn)方式給系統(tǒng)實現(xiàn)和性能提升上面帶來了很大的好處,但是 也給系統(tǒng)的測試上面增加了難度。
[0005] 目前涉及到異步線程的測試,尤其是UI (User Interface,用戶界面)自動化和接 口測試,都是調(diào)用某接口測試腳本,而該接口內(nèi)部使用了異步線程的實現(xiàn)方式,腳本功能是 否正確需要對接口內(nèi)部的處理結(jié)果進(jìn)行校驗。
[0006] 但因為處理邏輯是異步線程執(zhí)行的,如果在異步線程處理結(jié)束之前,調(diào)用的接口 就返回結(jié)果,這個時候就去校驗結(jié)果,會因為內(nèi)部異步線程還沒有處理結(jié)果使得校驗結(jié)果 出錯。所以現(xiàn)在一般在調(diào)用接口之后使用sle印(η)函數(shù)等待時間n,待內(nèi)部異步線程處理 結(jié)束后,再進(jìn)行結(jié)果校驗。
[0007] 由于異步線程需要耗費(fèi)多長時間不固定,受環(huán)境等因為影響較大,所以等待的時 間n,一般都是基于經(jīng)驗值,設(shè)置為所有環(huán)境下該異步線程執(zhí)行需要的最大時間,用以提高 測試用例的成功率。
[0008] 但正是由于等待的時間η是基于經(jīng)驗值,并不能保證在等待了時間η后,對應(yīng)的異 步線程一定執(zhí)行結(jié)束了,測試用例的成功率低。
[0009] 并且,在大部分場景下可能不需要等待時間η那么久,就造成了雖然異步線程已 經(jīng)處理結(jié)束了,但是系統(tǒng)還在等待,造成測試耗時過長,降低了測試執(zhí)行效率,尤其在自動 化執(zhí)行過程中,當(dāng)涉及的測試用例數(shù)量比較多的時候,尤其明顯。
[0010] 如果這里不采用等待時間η的方式,一般就需要手工斷點(debug模式),等異步 線程執(zhí)行完再執(zhí)行測試腳本校驗邏輯。這種方式只能進(jìn)行手工測試覆蓋,成本很高,效率很 低。
[0011] 因此,目前需要本領(lǐng)域技術(shù)人員迫切解決的一個技術(shù)問題就是:如何提出一種基 于異步線程的測試機(jī)制,用以提高測試用例的成功率,減少測試耗時,提高測試效率。

【發(fā)明內(nèi)容】

[0012] 本申請實施例所要解決的技術(shù)問題是提供一種基于異步線程的測試方法,用以提 高測試用例的成功率,減少測試耗時,提高測試效率。
[0013] 相應(yīng)的,本申請實施例還提供了一種基于異步線程的測試裝置,用以保證上述方 法的實現(xiàn)及應(yīng)用。
[0014] 為了解決上述問題,本申請實施例公開了一種基于異步線程的測試方法,包括:
[0015] 檢測目標(biāo)線程的第一數(shù)量;所述目標(biāo)線程為線程池類中執(zhí)行測試對象的異步線 程;
[0016] 調(diào)用所述目標(biāo)線程執(zhí)行所述測試對象;
[0017] 檢測所述目標(biāo)線程的第二數(shù)量;
[0018] 當(dāng)所述第一數(shù)量與所述第二數(shù)量相等時,對所述目標(biāo)線程執(zhí)行測試對象獲得的執(zhí) 行結(jié)果進(jìn)行校驗。
[0019] 優(yōu)選地,所述線程池類具有獲取活躍線程數(shù)量的方法;所述檢測目標(biāo)線程的第一 數(shù)量的步驟包括:
[0020] 調(diào)用所述獲取活躍線程數(shù)量的方法,獲得目標(biāo)線程的第一數(shù)量。
[0021] 優(yōu)選地,所述調(diào)用所述目標(biāo)線程執(zhí)行所述測試對象的步驟包括:
[0022] 傳入執(zhí)行所述測試對象所需的參數(shù);
[0023] 在所述目標(biāo)線程中按照所述參數(shù)執(zhí)行所述測試對象。
[0024] 優(yōu)選地,所述檢測所述目標(biāo)線程的第二數(shù)量的步驟包括:
[0025] 調(diào)用所述獲取活躍線程數(shù)量的方法,獲得所述目標(biāo)線程的第二數(shù)量。
[0026] 優(yōu)選地,還包括:
[0027] 當(dāng)所述第一數(shù)量與所述第二數(shù)量相異時,返回執(zhí)行所述檢測所述目標(biāo)線程的第二 數(shù)量的步驟。
[0028] 優(yōu)選地,所述線程池類包括ThreadPoolExecutor,所述獲取活躍線程數(shù)量的方法 包括 getActiveCount。
[0029] 本申請實施例還公開了一種基于異步線程的測試裝置,包括:
[0030] 第一檢測模塊,用于檢測目標(biāo)線程的第一數(shù)量;所述目標(biāo)線程為線程池類中執(zhí)行 測試對象的異步線程;
[0031] 測試模塊,用于調(diào)用所述目標(biāo)線程執(zhí)行所述測試對象;
[0032] 第二檢測模塊,用于檢測所述目標(biāo)線程的第二數(shù)量;
[0033] 校驗?zāi)K,用于在所述第一數(shù)量與所述第二數(shù)量相等時,對所述目標(biāo)線程執(zhí)行測 試對象獲得的執(zhí)行結(jié)果進(jìn)行校驗。
[0034] 優(yōu)選地,所述線程池類具有獲取活躍線程數(shù)量的方法;所述第一檢測模塊包括:
[0035] 第一調(diào)用子模塊,用于調(diào)用所述獲取活躍線程數(shù)量的方法,獲得目標(biāo)線程的第一 數(shù)量。
[0036] 優(yōu)選地,所述測試模塊包括:
[0037] 傳入子模塊,用于傳入執(zhí)行所述測試對象所需的參數(shù);
[0038] 執(zhí)行子模塊,用于在所述目標(biāo)線程中按照所述參數(shù)執(zhí)行所述測試對象。
[0039] 優(yōu)選地,所述第二檢測模塊包括:
[0040] 第二調(diào)用子模塊,用于調(diào)用所述獲取活躍線程數(shù)量的方法,獲得所述目標(biāo)線程的 第二數(shù)量。
[0041] 優(yōu)選地,還包括:
[0042] 循環(huán)模塊,用于在所述第一數(shù)量與所述第二數(shù)量相異時,返回調(diào)用第二檢測模塊。
[0043] 優(yōu)選地,所述線程池類包括ThreadPoolExecutor,所述獲取活躍線程數(shù)量的方法 包括 getActiveCount。
[0044] 與【背景技術(shù)】相比,本申請實施例包括以下優(yōu)點:
[0045] 本申請實施例在執(zhí)行測試對象之前,檢測目標(biāo)線程的第一數(shù)量,在執(zhí)行測試對象 之后,檢測目標(biāo)線程的第二數(shù)量,在第一數(shù)量與第二數(shù)量相等時,對目標(biāo)線程執(zhí)行測試對象 獲得的執(zhí)行結(jié)果進(jìn)行校驗,準(zhǔn)確地判斷目標(biāo)線程是否執(zhí)行結(jié)束,在目標(biāo)線程結(jié)束后進(jìn)行結(jié) 果校驗,一方面不會浪費(fèi)多余的時間進(jìn)行等待,減少測試耗時,另一方面避免因為目標(biāo)線程 還沒執(zhí)行完就校驗結(jié)果導(dǎo)致測試校驗失敗,提高了測試用例的成功率,進(jìn)而提高了測試效 率。
【附圖說明】
[0046] 圖1是一種基于sleep函數(shù)進(jìn)行結(jié)果校驗的示例圖;
[0047] 圖2是本申請的一種基于異步線程的測試方法實施例的步驟流程圖;
[0048] 圖3是本申請的一種獲取活躍線程數(shù)量的方法的執(zhí)行示例圖;
[0049] 圖4是本申請的一種測試方法的示例圖;
[0050] 圖5是本申請的一種基于異步線程的測試裝置實施例的結(jié)構(gòu)框圖。
【具體實施方式】
[0051] 為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實 施方式對本申請作進(jìn)一步詳細(xì)的說明。
[0052] 對于多線程并發(fā)時,多個線程同時請求同一個資源,必然會導(dǎo)致資源的數(shù)據(jù)存在 安全性,當(dāng)多個線程要操作的數(shù)據(jù)是單點時,那么這些線程就不能并發(fā)執(zhí)行,而需要等待串 行執(zhí)行,被稱之為同步線程;但當(dāng)這些多線程操作的資源數(shù)據(jù)不是單點,各自分離,或者多 個線程之間要操作的內(nèi)容沒有依賴性,相互獨立,就不需要串行等待了,而可以并發(fā)執(zhí)行, 以此來加快執(zhí)行效率,這類被稱之為異步線程。
[0053] 在程序、系統(tǒng)設(shè)計實現(xiàn)時,經(jīng)常會用到這個異步線程技術(shù)。比如,在一次程序處理 里面,線程A需要執(zhí)行三個任務(wù),因為線程A是單例,那么一般的處理方式是,先處理任務(wù)1, 再處理任務(wù)2,最后處理任務(wù)3。但在處理完任務(wù)1后,發(fā)現(xiàn)任務(wù)2和任務(wù)3之間并沒有依 賴關(guān)系,也就是說執(zhí)行沒有先后順序,可以并行處理。這個時候可以獲取另一個線程B,讓線 程B去執(zhí)行任務(wù)2,然后線程A并發(fā)執(zhí)行任務(wù)3,可以極大的提高處理效率。
[0054] 在異步線程并發(fā)處理時,有個缺點,就是從線程A中不知道線程B什么時候執(zhí)行結(jié) 束。
[0055] 因此,如圖1所示,現(xiàn)在一般在使用測試腳本調(diào)用接口之后,使用sle印(η)函數(shù)等 待時間η,再進(jìn)行結(jié)果校驗。導(dǎo)致即使在被測對象調(diào)用結(jié)束后,無法判斷當(dāng)前內(nèi)部處理是否 已經(jīng)全部結(jié)束,如果這時候去校驗結(jié)果數(shù)據(jù),不管是否正確都無法確定該結(jié)果是不是本次 處理產(chǎn)生的。
[0056] 但是這樣測試用例成功率低,并且測試耗時過長,降低了測試效率。
[0057] 基于此,提出了本申請實施例的核心構(gòu)思之一,通過異步線程的屬性得知內(nèi)部異 步線程是否已經(jīng)執(zhí)行完成,在等待異步線程執(zhí)行完成后再進(jìn)行結(jié)果校驗,確保本次校驗的 結(jié)果數(shù)據(jù)是內(nèi)部異步線程執(zhí)行完產(chǎn)生的。
[0058] 參照圖2,
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1