国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種運行被測程序的方法和調(diào)度器的制造方法

      文檔序號:6539678閱讀:215來源:國知局
      一種運行被測程序的方法和調(diào)度器的制造方法
      【專利摘要】本發(fā)明提供一種運行被測程序的方法和調(diào)度器,調(diào)度器根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼,調(diào)度器按照接收的測試任務參數(shù)執(zhí)行所述被測試的程序代碼。應用本發(fā)明實施例提供的測試方法和調(diào)度器,利用調(diào)度器建立線程,由線程執(zhí)行被測程序,可使被測程序的代碼內(nèi)容與調(diào)度器的內(nèi)容相對獨立,所以調(diào)度器可以測試任意的被測程序代碼,并且用戶可以為調(diào)度器指定測試任務的參數(shù),減少了測試任務的成本。
      【專利說明】一種運行被測程序的方法和調(diào)度器
      【技術領域】
      [0001]本發(fā)明涉及計算機數(shù)據(jù)處理技術,具體涉及一種運行被測程序的方法和調(diào)度器?!颈尘凹夹g】
      [0002]程序測試是一種用來鑒定計算機程序的正確性、完整性、安全性和質(zhì)量的過程。測試的過程是在規(guī)定的條件下對程序進行操作,以發(fā)現(xiàn)程序錯誤,衡量軟件質(zhì)量,并對其是否能滿足設計要求進行評估。
      [0003]而對一個程序進行測試的過程一般需要多次重復地進行,即多次、重復地運行同一程序,這樣才能有效地發(fā)現(xiàn)該程序存在的問題。
      [0004]現(xiàn)有的測試方法是采用多線程技術對目標軟件進行測試。測試時,首先針對目標軟件創(chuàng)建多線程,然后利用創(chuàng)建的多線程并發(fā)執(zhí)行被測程序(即目標軟件)。
      [0005]現(xiàn)有技術中,由于測試任務不同,需要針對每個被測程序單獨制定一種并發(fā)測試流程,增加了測試成本。

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

      [0006]本發(fā)明實施例提供一種運行被測程序的方法和調(diào)度器,以減少程序測試成本。
      [0007]本發(fā)明實施例提供的一種運行被測程序的方法,包括:
      [0008]調(diào)度器根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼;
      [0009]所述調(diào)度器按照接收的所述測試任務參數(shù)執(zhí)行所述被測試的程序代碼。
      [0010]本發(fā)明實施例提供的一種運行被測程序的調(diào)度器,包括:
      [0011]參數(shù)接收單元,用于根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼;
      [0012]執(zhí)行單元,用于按照接收的所述測試任務參數(shù)執(zhí)行所述被測試的程序代碼。
      [0013]本發(fā)明實施例提供的測試方法和調(diào)度器,通過調(diào)度器根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼,使得被測程序的代碼內(nèi)容與調(diào)度器的代碼內(nèi)容相對獨立,從而可以通過調(diào)度器可以運行任意的被測程序代碼實現(xiàn)對任意的被測程序代碼的測試,避免了現(xiàn)有技術中針對每個被測程序單獨制定一種并發(fā)測試流程導致的測試時間長效率低的問題,減少了測試任務的成本,提高了測試效率。
      【專利附圖】

      【附圖說明】
      [0014]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
      [0015]圖1是本發(fā)明實施例提供的運行被測程序的方法的流程圖;
      [0016]圖2是本發(fā)明實施例提供的運行被測程序的方法中調(diào)度器執(zhí)行被測程序的流程圖;
      [0017]圖3是本發(fā)明實施例提供的運行被測程序的調(diào)度器的結構示意圖;
      [0018]圖4是本發(fā)明實施例提供的一個優(yōu)選的運行被測程序的方法的流程圖?!揪唧w實施方式】
      [0019]下面結合附圖和實施例對本發(fā)明作進一步的詳細說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關的部分而非全部內(nèi)容。
      [0020]圖1是本發(fā)明實施例提供的運行被測程序的方法的流程圖。
      [0021]如圖1所示,本發(fā)明實施例提供的運行被測程序的方法,包括:
      [0022]步驟11,調(diào)度器根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼。
      [0023]其中,調(diào)度器可以是利用領域特定語言的方式(即Domain Specific Language,簡稱DSL)編寫的帶有接口的應用程序,調(diào)度器主要用于創(chuàng)建線程,由創(chuàng)建出的線程來執(zhí)行被測程序。調(diào)度器允許用戶根據(jù)需要設置一些測試任務參數(shù),例如創(chuàng)建的線程數(shù)量、執(zhí)行被測程序的次數(shù)等,調(diào)度器接收用戶設置的參數(shù)以及被測程序,接收被測程序的方式可以是用戶將被測程序的代碼、腳本寫入調(diào)度器代碼的特定位置,或者是調(diào)度器通過接口調(diào)用被測程序或腳本。測試人員測試不同的被測程序時,只需要提供不同的被測程序代碼和更改簡單的參數(shù),并不需要測試人員深入了解并發(fā)技術的代碼內(nèi)容或原理。其中,并發(fā)技術是指一個時間段中有幾個程序都處于已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行。本發(fā)明實施例利用調(diào)度器實現(xiàn)了并發(fā)執(zhí)行被測程序的功能。步驟12,所述調(diào)度器按照接收的所述測試任務參數(shù)執(zhí)行所述被測試的程序代碼。
      [0024]當調(diào)度器接收到上述創(chuàng)建的線程數(shù)量、執(zhí)行被測程序的次數(shù)等參數(shù)后,則根據(jù)參數(shù)指示的數(shù)量執(zhí)行被測程序的代碼。
      [0025]在本發(fā)明實施例提供的測試方法中,通過調(diào)度器根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼,使得被測程序的代碼內(nèi)容與調(diào)度器的代碼內(nèi)容相對獨立,從而可以通過調(diào)度器可以運行任意的被測程序代碼實現(xiàn)對任意的被測程序代碼的測試,避免了現(xiàn)有技術中針對每個被測程序單獨制定一種并發(fā)測試流程導致的測試時間長效率低的問題,減少了測試任務的成本,提高了測試效率。示例性的,本發(fā)明實施例提供的運行被測程序的方法中,所述調(diào)度器按照接收的所述測試任務參數(shù)執(zhí)行所述被測試的程序代碼,可如圖2所示,包括:
      [0026]步驟21,所述調(diào)度器根據(jù)所述測試任務參數(shù)指示的線程創(chuàng)建數(shù)量創(chuàng)建至少一個工作線程。
      [0027]其中,工作線程是指程序執(zhí)行流的最小單元。一個標準的線程由線程ID,當前指令指針,寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。調(diào)度器可以利用Java語言的多線程技術創(chuàng)建或定義多線程。
      [0028]步驟22,控制所述的至少一個工作線程根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)執(zhí)行所述被測試的程序代碼。
      [0029]創(chuàng)建了工作線程后,工作線程即可以單獨執(zhí)行屬于自己的任務,例如執(zhí)行測試任務時,每個工作線程都可以獨立的執(zhí)行同一個被測程序代碼。本發(fā)明實施例提供的被測程序運行方法可以利用多線程技術來執(zhí)行被測試的程序,實現(xiàn)了并發(fā)執(zhí)行,進一步提高的測試效率。
      [0030]示例性的,當所述調(diào)度器建立多個所述工作線程時,控制所述所有工作線程分別根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)同時開始執(zhí)行所述被測試的程序代碼。
      [0031]其中,當有多個工作線程執(zhí)行被測程序時,本發(fā)明實施例提供的被測程序運行方法的調(diào)度器令所有的工作線程同時開始執(zhí)行同一個被測程序,可以是當所有工作線程被創(chuàng)建完成后就同時開始執(zhí)行被測程序。本方法可以得知執(zhí)行測試任務的開始時間,便于計算測試任務的耗時,可以進一步地提高測試任務的效率。
      [0032]示例性的,控制所述所有工作線程分別根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)同時開始執(zhí)行所述被測試的程序代碼之后,本發(fā)明實施例提供的運行被測程序的方法還可包括:
      [0033]所述調(diào)度器記錄所述所有工作線程執(zhí)行所述被測試的程序代碼所用的時間。
      [0034]上述實施例中調(diào)度器使多個工作線程同時開始執(zhí)行測試任務,而所有工作線程不一定同時完成測試任務,所以在本實施例中調(diào)度器還可以計算執(zhí)行測試任務的耗時,可以是將最后一個完成測試任務的線程的完成時間作為整個調(diào)度器執(zhí)行測試任務的完成時間。通過本實施例提供的方法,可以計算出測試任務的耗時,反映出被測程序可能存在的問題。
      [0035]示例性的,本實施例提供的運行被測程序的方法還包括:
      [0036]所述調(diào)度器接收所述被測試的程序代碼在執(zhí)行過程中產(chǎn)生的信息。
      [0037]其中,被測程序可以是帶有輸出結果的業(yè)務程序,調(diào)度器可以接收被測程序在執(zhí)行過程中輸出的結果信息,也可以是被測程序執(zhí)行過程的產(chǎn)生的中間量信息等,可以進一步反映出被測程序可能存在的問題。
      [0038]圖3是本發(fā)明實施例提供的運行被測程序的調(diào)度器的結構示意圖。
      [0039]如圖3所示,本發(fā)明實施例提供的運行被測程序的調(diào)度器,包括:參數(shù)接收單元31和執(zhí)行單元32。
      [0040]所述參數(shù)接收單元31用于根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼。
      [0041]所述執(zhí)行單元32用于按照接收的所述測試任務參數(shù)執(zhí)行所述被測試的程序代碼。
      [0042]示例性的,所述執(zhí)行單元32包括:
      [0043]線程創(chuàng)建子單元,用于根據(jù)所述測試任務參數(shù)指示的線程創(chuàng)建數(shù)量創(chuàng)建至少一個工作線程。
      [0044]程序執(zhí)行子單元,用于控制所述的至少一個線程根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)執(zhí)行所述被測試的程序代碼。
      [0045]示例性的,所述程序執(zhí)行子單元具體用于當所述線程創(chuàng)建子單元建立多個所述工作線程時,控制所述所有工作線程分別根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)同時開始執(zhí)行所述被測試的程序代碼。
      [0046]示例性的,本發(fā)明實施例提供的運行被測程序的調(diào)度器還包括:
      [0047]計時單元,用于在所述程序執(zhí)行子單元控制所述所有工作線程分別根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)同時開始執(zhí)行所述被測試的程序代碼之后,記錄所述所有工作線程執(zhí)行所述被測試的程序代碼所用的時間。[0048]示例性的,本發(fā)明實施例提供的運行被測程序的調(diào)度器還包括:
      [0049]回執(zhí)接收單元,用于接收所述被測試的程序代碼在執(zhí)行過程中產(chǎn)生的信息。
      [0050]上述實施例中提供的調(diào)度器可以通過如圖4所示的步驟401來創(chuàng)建:
      [0051 ] 步驟401,創(chuàng)建調(diào)度器。調(diào)度器的編程寫法基于DSL模式,對于使用JAVA語言開發(fā)的被測程序是可以通用的,JAVA語言是由SUN公司推出的面向?qū)ο蟪绦蛟O計語言。
      [0052]除調(diào)度器的主程序外,還包括創(chuàng)建啟動屏障、結束屏障和線程池。其中主程序可用于調(diào)度器的啟動,也可用于調(diào)用啟動屏障、結束屏障和線程池,還可用于創(chuàng)建工作線程。
      [0053]調(diào)度器創(chuàng)建完成后還包括設置參數(shù)等準備工作,如圖4所示的步驟402和步驟403:
      [0054]步驟402中,指定任務執(zhí)行的參數(shù),如并發(fā)線程數(shù),執(zhí)行次數(shù)等。該參數(shù)可由用戶在界面中設定。
      [0055]步驟403中,指定要執(zhí)行的業(yè)務方法。例如通過用戶通過計算機上顯示的程序測試界面或?qū)υ挻翱谶x擇被測程序。
      [0056]完成上述準備工作后,即可通過調(diào)度器實現(xiàn)對被測程序的執(zhí)行測試。
      [0057]如圖4所示,步驟404中,啟動調(diào)度器,然后等待執(zhí)行結果。通過計算機啟動調(diào)度器時,計算機會向調(diào)度器發(fā)送調(diào)用指令,調(diào)度器根據(jù)調(diào)用指令啟動并接收指定的任務執(zhí)行參數(shù)及被測程序。
      [0058]步驟405中,調(diào)用啟動屏障。一個工作線程被創(chuàng)建完成后可以生成一個啟動標識,啟動屏障用于檢測啟動標識的生成。當啟動屏障檢測到η個啟動標識時說明有η個工作線程已經(jīng)被建立。啟動屏障會將檢測到的啟動標識的數(shù)量上報給主程序,主程序根據(jù)啟動屏障上報的啟動標識的數(shù)量判斷建立的線程是否已達到要求建立的線程數(shù)量(即啟動標識的數(shù)量等于要求建立的線程數(shù)量),如果是,則主程序控制建立的工作線程執(zhí)行被測程序;否貝U,繼續(xù)等待,直到啟動屏障上報的啟動標識的數(shù)量達到要求建立的線程數(shù)量。
      [0059]步驟406中,調(diào)用結束屏障。由于一個工作線程運行完被測程序后可以生成一個結束標識,結束屏障用于檢測該結束標識的生成。當檢測到該結束標識時則認定對應的線程已經(jīng)完成了執(zhí)行任務。;
      [0060]步驟407中,調(diào)度器的主程序調(diào)用線程池,利用創(chuàng)建的線程池建立工作線程。
      [0061]步驟408中,調(diào)度器的主程序向線程池添加需要執(zhí)行的任務,即被測試的程序內(nèi)容。線程池中創(chuàng)建的工作線程執(zhí)行任務(即運行被測試的程序),并向調(diào)度器的主程序返回執(zhí)行回執(zhí)。
      [0062]步驟409中,調(diào)度器的主程序創(chuàng)建添加的任務的空白回執(zhí),以填充在添加到線程池的任務被工作線程執(zhí)行的過程中或執(zhí)行完成后產(chǎn)生的運行信息。
      [0063]步驟410中,調(diào)度器的主程序通過啟動屏障檢查啟動標識的數(shù)量,并根據(jù)啟動標識的數(shù)量判斷線程池是否完成工作線程的創(chuàng)建,如果是,則執(zhí)行步驟411 ;否則繼續(xù)通過啟動屏障檢查啟動標識的數(shù)量,直到線程池完成工作線程的創(chuàng)建啟,以便于所有工作線程在同一時刻開始執(zhí)行任務。
      [0064]步驟411中,調(diào)度器的主程序控制所有創(chuàng)建的工作線程開始執(zhí)行任務,并記錄任務開始時間。
      [0065]步驟412中,調(diào)度器的主程序檢查結束標識。當所有線程都帶有結束標識時,則表示所有線程都完成了測試任務,并記錄任務結束時間,以計算任務運行時間;否則,調(diào)度器的主程序繼續(xù)檢查結束標識,直到所有線程都帶有結束標識。
      [0066]其中,計算任務運行時間,可以計算每個線程執(zhí)行任務的耗時,也可以將最后一個完成測試任務的線程的執(zhí)行時間作為總的測試任務耗時。
      [0067]上述工作線程執(zhí)行任務過程中產(chǎn)生的運行信息和執(zhí)行任務完成后產(chǎn)生的運行結果信息中的至少一種信息,可反饋到調(diào)度器的主程序,調(diào)度器的主程序?qū)⒐ぷ骶€程反饋的上述至少一種信息填充到上述空白回執(zhí)中,以供測試人員判斷被測試程序中存在的錯誤。
      [0068]進一步地,還可包括步驟413,打印耗時和執(zhí)行結果。
      [0069]本實施例提供的方法,用戶只需要關注步驟401-步驟404即可,并且寫出上述步驟401-步驟404只需一行代碼,其余步驟屬本發(fā)明內(nèi)的調(diào)度器的內(nèi)部工作流程。本發(fā)明實施例提供的被測程序運行方法簡化了測試用例的代碼量,一般可減少30%-70%的測試代碼;同時本方法做了 OOP (Object Oriented Programming,面向?qū)ο蟪绦蛟O計)的封裝,方便用戶使用,讓用戶在不需要深入了解線程、鎖、并發(fā)等概念的情況下也可以方便的寫出并發(fā)測試用例,只關注自己的業(yè)務測試代碼即可。
      [0070]上述僅為本發(fā)明的較佳實施例及所運用技術原理。本發(fā)明不限于這里所述的特定實施例,對本領域技術人員來說能夠進行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護范圍。因此,雖然通過以上實施例對本發(fā)明進行了較為詳細的說明,但是本發(fā)明不僅僅限于以上實施例,在不脫離本發(fā)明構思的情況下,還可以包括更多其他等效實施例,而本發(fā)明的范圍由所附的權利要求范圍決定。
      【權利要求】
      1.一種運行被測程序的方法,其特征在于,包括: 調(diào)度器根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼; 所述調(diào)度器按照接收的所述測試任務參數(shù)執(zhí)行所述被測試的程序代碼。
      2.根據(jù)權利要求1所述的方法,其特征在于,所述調(diào)度器按照接收的所述測試任務參數(shù)執(zhí)行所述被測試的程序代碼,包括: 所述調(diào)度器根據(jù)所述測試任務參數(shù)指示的線程創(chuàng)建數(shù)量創(chuàng)建至少一個工作線程; 控制所述的至少一個線程根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)執(zhí)行所述被測試的程序代碼。
      3.根據(jù)權利要求2所述的方法,其特征在于, 當所述調(diào)度器建立多個所述工作線程時,控制所述所有工作線程分別根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)同時開始執(zhí)行所述被測試的程序代碼。
      4.根據(jù)權利要求3所述的方法,其特征在于,控制所述所有工作線程分別根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)同時開始執(zhí)行所述被測試的程序代碼之后,還包括: 所述調(diào)度器記錄所述所有工作線程執(zhí)行所述被測試的程序代碼所用的時間。
      5.根據(jù)權利要求1-4任一項所述的方法,其特征在于,還包括: 所述調(diào)度器接收所述被測試的程序代碼在執(zhí)行過程中產(chǎn)生的信息。
      6.一種運行被測程序的調(diào)度器,其特征在于,包括: 參數(shù)接收單元,用于根據(jù)調(diào)用指令接收測試任務參數(shù)及被測試的程序代碼; 執(zhí)行單元,用于按照接收的所述測試任務參數(shù)執(zhí)行所述被測試的程序代碼。
      7.根據(jù)權利要求6所述的調(diào)度器,其特征在于,所述執(zhí)行單元包括: 線程創(chuàng)建子單元,用于根據(jù)所述測試任務參數(shù)指示的線程創(chuàng)建數(shù)量創(chuàng)建至少一個工作線程; 程序執(zhí)行子單元,用于控制所述的至少一個線程根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)執(zhí)行所述被測試的程序代碼。
      8.根據(jù)權利要求7所述的調(diào)度器,其特征在于,所述程序執(zhí)行子單元具體用于當所述線程創(chuàng)建子單元建立多個所述工作線程時,控制所述所有工作線程分別根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)同時開始執(zhí)行所述被測試的程序代碼。
      9.根據(jù)權利要求8所述的調(diào)度器,其特征在于,還包括: 計時單元,用于在所述程序執(zhí)行子單元控制所述所有工作線程分別根據(jù)所述測試任務參數(shù)指示的執(zhí)行次數(shù)同時開始執(zhí)行所述被測試的程序代碼之后,記錄所述所有工作線程執(zhí)行所述被測試的程序代碼所用的時間。
      10.根據(jù)權利要求6-9任一項所述的調(diào)度器,其特征在于,還包括: 回執(zhí)接收單元,用于接收所述被測試的程序代碼在執(zhí)行過程中產(chǎn)生的信息。
      【文檔編號】G06F11/36GK103823756SQ201410080037
      【公開日】2014年5月28日 申請日期:2014年3月6日 優(yōu)先權日:2014年3月6日
      【發(fā)明者】鄧必國 申請人:北京京東尚科信息技術有限公司, 北京京東世紀貿(mào)易有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1