TWI570554B - 軟體測試裝置、軟體測試方法及其電腦程式產品 - Google Patents
軟體測試裝置、軟體測試方法及其電腦程式產品 Download PDFInfo
- Publication number
- TWI570554B TWI570554B TW104136479A TW104136479A TWI570554B TW I570554 B TWI570554 B TW I570554B TW 104136479 A TW104136479 A TW 104136479A TW 104136479 A TW104136479 A TW 104136479A TW I570554 B TWI570554 B TW I570554B
- Authority
- TW
- Taiwan
- Prior art keywords
- detect
- code
- node
- candidate test
- starts
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
本發明係關於一種軟體測試裝置、方法及其電腦程式產品。具體而言,本發明提供一種用於測試一被測試程式碼之軟體測試機制,其基於被測試程式碼之一難以檢測程式碼之一條件敘述樹狀結構,使用支援向量機,建立支援向量回歸預估式,以使用支援向量回歸預估式,自複數候選測試檔中,選出一最佳候選測試檔,來提高被測試程式碼之程式碼涵蓋率。
隨著電腦科技的發展,透過各式各樣的智能裝置運行特定軟體,人們得以解決生活不同的目的並獲得其需求。然而,在軟體的程式碼撰寫完成後,如何進行程式碼的整體測試以確保軟體可正常運作係為相當重要的議題。
程式碼涵蓋率係為目前軟體測試中一種常見的度量,其描述程式碼被測試的比例和程度。一般而言,若程式碼內容複雜度不高時,通常程式撰寫者可自行檢測,或透過輸入簡單的參數來確認程式碼中的所有區段是否都會被執行,但當程式碼複雜度較高,或者組成程式碼的函數過多時,程式撰寫者通常會利用可測試程式碼涵蓋率的軟體來檢測程式碼
中被執行的比例和程度。程式碼涵蓋率越高代表程式碼會如預期執行並較少機會發生錯誤。
目前已存在許多以程式碼涵蓋率為依據的測試軟體,其大部分的程式碼測試機制都是透過不斷地產生測試檔,將其一一地作為程式碼的輸入參數,並運行程序碼,直到程式碼涵蓋率達到一預期的目標。然而,這樣的測試機制在程式碼涵蓋率未達到預期的目標前,所產生之測試檔的數量及執行程式碼之次數可能相當龐大,故相當耗費時間且所產生的這些測試檔中可能存在絕大部分的測試檔對於提升程式碼涵蓋率的效益是相同的(即使用一個測試檔與多個測試檔對於提升程式碼涵蓋率的效益是相同的)。
有鑑於此,本領域亟需一種程式碼測試機制,其可有效地降低所需被使用以執行程式碼之測試檔的數量,進而降低使程式碼涵蓋率達到預期的目標所需的軟體測試時間。
本發明之目的在於提供一種程式碼測試機制,其基於被測試程式碼之一難以檢測程式碼之一條件敘述樹狀結構,使用支援向量機對複數基本測試檔進行學習,以建立支援向量回歸預估式,並使用支援向量回歸預估式自複數候選測試檔中,選出一最佳候選測試檔,來提高被測試程式碼之程式碼涵蓋率。據此,不同於習知的程式碼測試機制,本發明在為將多個測試檔作為程式碼之輸入並運行程式碼前,可預先挑選出較適合的測試檔,以減少需被使用以執行程式碼之測試檔的數量,進而降低使程式碼涵蓋率達到預期的目標所需的軟體測試時間。
為達上述目的,本發明揭露一種軟體測試裝置,其包含一儲存器以及一處理器。該儲存器用以儲存一軟體測試程式、一被測試程式碼、複數基本測試檔及複數候選測試檔。該被測試程式碼包含一難以檢測程式碼(hard-to-detect code),以及該難以檢測程式碼具有至少一難以檢測區段(hard-to-detect section)。該處理器電性連接至該儲存器,並運行該軟體測試程式,以進行下列操作:(a)解析該難以檢測程式碼,以產生該難以檢測程式碼之一條件敘述樹狀結構(condition-statement tree),該條件敘述樹狀結構包含複數條件敘述節點(condition statement node)及複數敘述節點(statement node),各該至少一難以檢測區段由該等條件敘述節點之一目標條件敘述節點及該等敘述節點之一目標敘述節點所組成;(b)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該條件敘述樹狀結構,分別使用各該基本測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼,以獲得對應至各該基本測試檔之該目標條件敘述節點之一母(parent)條件敘述節點之一第一啟動次數(activation count)以及至少一同階(sibling)條件敘述節點之一第二啟動次數;(c)根據各該基本測試檔及對應至各該至少一難以檢測區段之該目標條件敘述節點之該第一啟動次數與該第二啟動次數,使用一支援向量機(SVM),建立一支援向量回歸預估式(SVR predictor);(d)針對各該候選測試檔,將該候選測試檔輸入至該支援向量回歸預估式,以獲得各該至少一難以檢測區段之該目標條件敘述節點之該母條件敘述節點之一第一預估啟動次數以及該至少一同階條件敘述節點之一第二預估啟動次數;(e)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該等基本測試檔所對應之該等第一啟動次數與該
等第二啟動次數及各該候選測試檔所對應之該第一預估啟動次數及該第二預估啟動次數,計算對應至各該候選測試檔之一執行機率度量(activation probability metric);以及(f)根據對應至各該候選測試檔之該等執行機率度量,決定該等候選測試檔其中之一為一最佳候選測試檔。
此外,本發明更揭露一種用於一軟體測試裝置之軟體測試方法。該軟體測試裝置包含一儲存器以及一處理器。該儲存器用以儲存一軟體測試程式、一被測試程式碼、複數基本測試檔及複數候選測試檔。該被測試程式碼包含一難以檢測程式碼,以及該難以檢測程式碼具有至少一難以檢測區段。該處理器電性連接至該儲存器並運行該軟體測試程式以執行該軟體測試方法,該軟體測試方法包含下列步驟:(a)解析該難以檢測程式碼,以產生該難以檢測程式碼之一條件敘述樹狀結構,該條件敘述樹狀結構包含複數條件敘述節點及複數敘述節點,各該至少一難以檢測區段由該等條件敘述節點之一目標條件敘述節點及該等敘述節點之一目標敘述節點所組成;(b)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該條件敘述樹狀結構,分別使用各該基本測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼,以獲得對應至各該基本測試檔之該目標條件敘述節點之一母條件敘述節點之一第一啟動次數以及至少一同階條件敘述節點之一第二啟動次數;(c)根據各該基本測試檔及對應至各該至少一難以檢測區段之該目標條件敘述節點之該第一啟動次數與該第二啟動次數,使用一支援向量機,建立一支援向量回歸預估式;(d)針對各該候選測試檔,將該候選測試檔輸入至該支援向量回歸預估式,以獲得各該至少一難以檢測區段之該目標條件敘述節點之該母條件敘述節點之一第一預估啟動
次數以及該至少一同階條件敘述節點之一第二預估啟動次數;(e)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該等基本測試檔所對應之該等第一啟動次數與該等第二啟動次數及各該候選測試檔所對應之該第一預估啟動次數及該第二預估啟動次數,計算對應至各該候選測試檔之一執行機率度量;以及(f)根據對應至各該候選測試檔之該等執行機率度量,決定該等候選測試檔其中之一為一最佳候選測試檔。
另外,本發明更揭露一種內儲有一軟體測試程式之電腦程式產品。該電腦程式產品經由一軟體測試裝置載入後,該軟體測試裝置執行該電腦程式產品所包含之複數個程式指令,以執行一軟體測試方法。該軟體測試裝置儲存一被測試程式碼、複數基本測試檔及複數候選測試檔。該被測試程式碼包含一難以檢測程式碼,以及該難以檢測程式碼具有至少一難以檢測區段。該軟體測試方法包含下列步驟:(a)解析該難以檢測程式碼,以產生該難以檢測程式碼之一條件敘述樹狀結構,該條件敘述樹狀結構包含複數條件敘述節點及複數敘述節點,各該至少一難以檢測區段由該等條件敘述節點之一目標條件敘述節點及該等敘述節點之一目標敘述節點所組成;(b)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該條件敘述樹狀結構,分別使用各該基本測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼,以獲得對應至各該基本測試檔之該目標條件敘述節點之一母條件敘述節點之一第一啟動次數以及至少一同階條件敘述節點之一第二啟動次數;(c)根據各該基本測試檔及對應至各該至少一難以檢測區段之該目標條件敘述節點之該第一啟動次數與該第二啟動次數,使用一支援向量機,建立一支援向量回歸預估式;(d)針對該等候選測試檔,
將各該候選測試檔輸入至該支援向量回歸預估式,以獲得各該至少一難以檢測區段之該目標條件敘述節點之該母條件敘述節點之一第一預估啟動次數以及該至少一同階條件敘述節點之一第二預估啟動次數;(e)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該等基本測試檔所對應之該等第一啟動次數與該等第二啟動次數及各該候選測試檔所對應之該第一預估啟動次數及該第二預估啟動次數,計算對應至各該候選測試檔之一執行機率度量;以及(f)根據對應至各該候選測試檔之該等執行機率度量,決定該等候選測試檔其中之一為一最佳候選測試檔。
在參閱圖式及隨後描述之實施方式後,此技術領域具有通常知識者便可瞭解本發明之其他目的,以及本發明之技術手段及實施態樣。
1‧‧‧軟體測試裝置
11‧‧‧儲存器
13‧‧‧處理器
HTDC‧‧‧難以檢測程式碼
CST‧‧‧條件敘述樹狀結構
HTDS‧‧‧難以檢測區段
C1、C2、C3、C4、C5、C6‧‧‧條件敘述節點
L1、L2、L3、L4、L5‧‧‧敘述節點
第1圖係為本發明第一實施例之軟體測試裝置1之示意圖;第2圖係描繪一難以檢測程式碼及其一條件敘述樹狀結構;第3圖係為本發明第一實施例之軟體測試方法之流程圖;以及第4圖係為本發明第二實施例之軟體測試方法之額外步驟之流程圖。
以下將透過實施方式來解釋本發明之內容。本發明係關於軟體測試裝置、方法及其電腦程式產品。須說明者,本發明的實施例並非用以限制本發明須在如實施例所述之任何特定的環境、應用或特殊方式方能實施。因此,有關實施例之說明僅為闡釋本發明之目的,而非用以限制
本發明,且本案所請求之範圍,以申請專利範圍為準。除此之外,於以下實施例及圖式中,與本發明非直接相關之元件已省略而未繪示,且以下圖式中各元件間之尺寸關係僅為求容易瞭解,非用以限制實際比例。
本發明之第一實施例請參考第1、2、3圖。第1圖係為本發明之一軟體測試裝置1之示意圖。軟體測試裝置1包含一儲存器11以及一處理器13。儲存器11儲存一軟體測試程式、一被測試程式碼、複數基本測試檔及複數候選測試檔。被測試程式碼包含一難以檢測程式碼(hard-to-detect code),以及該難以檢測程式碼具有至少一難以檢測區段(hard-to-detect section)。
具體而言,本發明之軟體測試程式係可與一以程式碼涵蓋率為依據的測試軟體(例如:由SmartBear公司所開發之AQtime測試軟體)相互搭配運行,或者包含於一以程式碼涵蓋率為依據的測試軟體中。本發明藉由使用以程式碼涵蓋率為依據的測試軟體可自被測試程式碼找出難以檢測程式碼。須說明者,被測試程式碼可由複數子程式碼所組成,且經由測試軟體執行後,可被分析出一個或多個子程式碼其程式碼涵蓋率非百分之百(100%),在本文中,程式碼涵蓋率非100%的子程式碼係稱作難以檢測程式碼。
處理器13電性連接至儲存器11,除了運行上述測試軟體外,亦運行本發明之軟體測試程式,以進行下述一系列操作(即第3圖所描繪之軟體測試方法流程圖中之各步驟),以自該等候選測試檔中,決定一最佳候選測試檔,並嘗試藉由此最佳候選測試檔提升難以檢測程式碼之程式碼涵蓋率,進而提升被測試程式碼之程式碼涵蓋率。
首先,於步驟S301中,解析難以檢測程式碼,以產生難以檢測程式碼之一條件敘述樹狀結構(condition-statement tree)。條件敘述樹狀結構包含複數條件敘述節點(condition statement node)及複數敘述節點(statement node)。各至少一難以檢測區段由該等條件敘述節點之一目標條件敘述節點及該等敘述節點之一目標敘述節點所組成。
舉例而言,第2圖繪示由Python程式語言撰寫的一難以檢測程式碼HTDC及其條件敘述樹狀結構CST。難以檢測程式碼HTDC包含六個條件敘述cond_1、cond_2、cond_3、cond_4、cond_5、cond_6以及其相對應的敘述。藉由解析難以檢測程式碼HTDC中的條件敘述,處理器13係可產生解析難以檢測程式碼HTDC之條件敘述樹狀結構CST。條件敘述樹狀結構CST包含條件敘述節點C1、C2、C3、C4、C5、C6及敘述節點S1、S2、S3、S4、S5。
在此範例中,難以檢測程式碼HTDC係包含一難以檢測區段HTDS,其由條件敘述節點C6及敘述節點S5所組成。對於此難以檢測區段HTDS,條件敘述節點C6係為目標條件敘述節點,以及敘述節點S5係為目標敘述節點。須說明者,雖然,此範例之難以檢測程式碼HTDC僅存在一個難以檢測區段HTDS,但所屬技術領域中具有通常知識者可輕易瞭解任一個難以檢測程式碼可以包含一個或多個難以檢測區段HTDS,且基於後續的說明,所屬技術領域中具有通常知識者可輕易瞭解本發明之技術手段可套用至包含一個或多個難以檢測區段難之難以檢測程式碼。
接著,於步驟S303中,針對各至少一難以檢測區段之目標條件敘述節點,根據條件敘述樹狀結構,分別使用各基本測試檔作為被測試程
式碼之一輸入,以運行被測試程式碼,以獲得對應至各基本測試檔之目標條件敘述節點之一母(parent)條件敘述節點之一第一啟動次數(activation count)以及至少一同階(sibling)條件敘述節點之一第二啟動次數。以第2圖為例,目標條件敘述節點C6之母條件敘述節點係為條件敘述節點C1,而其同階條件敘述節點係為條件敘述節點C2、C3、C4、C5。第一啟動次數及第二啟動次數係分別指母條件敘述節點C1及條件敘述節點C2、C3、C4、C5於以基本測試檔作為被測試程式碼之輸入時並運行被測試程式碼時被執行到的次數。
隨後,於步驟S305中,根據各基本測試檔及對應至各至少一難以檢測區段之目標條件敘述節點之第一啟動次數與第二啟動次數,使用一支援向量機(SVM),建立一支援向量回歸預估式(SVR predictor)。具體而言,支援向量機係為一種本領域技術人員廣為熟知監督式學習方法,其可對已知之輸入與輸出進行學習,以獲得其輸入與輸出間之支援向量回歸預估式。由於所屬技術領域中具有通常知識者可輕易瞭解如何基於程式撰寫或已存在的程式工具實現支援向量機,故在此不再加以贅述。
步驟S305中係將各基本測試檔作為輸入以及將各至少一難以檢測區段之目標條件敘述節點之第一啟動次數與第二啟動次數作出輸出,並經由支援向量機學習後,獲得各基本測試檔與各至少一難以檢測區段之目標條件敘述節點之第一啟動次數與第二啟動次數間的支援向量回歸預估式。須說明者,該等基本測試檔可與用以輸入至測試軟體中以自被測試程式碼中找出難以檢測程式碼的多個測試檔相同,或者由程式設計者進一步地基於這些測試檔所產生;惟,該等基本測試檔之數目並非用以限制本發
明。
此外,亦須說明者,所屬技術領域中具有通常知識者可基於上述說明可知,將各基本測試檔作為支援向量機之輸入前,可能需先對各基本測試檔進行特徵值之轉換或擷取,而此特徵值之轉換或擷取係根據被測試程式碼之輸入特性以及支援向量機之輸入形式所決定。舉例而言,當被測試程式碼係為一影像分析軟體之程式碼且測試檔為影像檔,則輸入至支援向量回歸預估式之這些基本影像檔則可能需先被轉換成矩陣形式來表示。再者,當被測試程式碼係為一資料分析軟體之程式碼且測試檔為資料檔,則輸入至支援向量回歸預估式之這些基本資料檔則可能需先經過篩選以擷取出較具有特徵的數據參數。然而,由於本領域熟悉支援向量機之技術人員可輕易地基於被測試程式碼之輸入特性,判斷是否需先對基本測試檔進行處理,故在此不再加以贅述。
隨後,於步驟S307中,針對各候選測試檔,將該候選測試檔輸入至支援向量回歸預估式,以獲得各至少一難以檢測區段之目標條件敘述節點之母條件敘述節點之一第一預估啟動次數以及至少一同階條件敘述節點之一第二預估啟動次數。換言之,本發明藉由支援向量回歸預估式,在無需將各候選測試檔作為被測試程式碼之輸入,以運行被測試程式碼時,即可預估相對於各候選測試檔之各至少一難以檢測區段之目標條件敘述節點之母條件敘述節點之第一預估啟動次數以及至少一同階條件敘述節點之第二預估啟動次數,即如下列公式表示:{PPAC i,j ,SPAC i,j }=f SVR (TB j ),其中f SVR (‧)係為支援向量回歸預估式,TB j 係為第j個候選測試檔,PPAC i,j 係對應至第i個至少一難以
檢測區段之目標條件敘述節點及第j個候選測試檔之第一預估啟動次數;以及SPAC i,j 係對應至第i個至少一難以檢測區段之目標條件敘述節點及第j個該候選測試檔之第二預估啟動次數。
類似地,須說明者,所屬技術領域中具有通常知識者可基於上述說明可知,將各候選測試檔輸入至支援向量回歸預估式前,可能需先對各候選測試檔進行特徵值之轉換或擷取,而此特徵值之轉換或擷取係根據被測試程式碼之輸入特性以及支援向量機之輸入形式所決定。由於候選測試檔輸入至支援向量回歸預估式前之處理係與基本測試檔輸入至支援向量機前之處理相同,且所屬技術領域中具有通常知識者可基於前述說明輕易瞭解,故在此亦不再加以贅述。此外,該等候選測試檔之數目亦可基於被測試程式碼之輸入特性所決定,或者由程式設計者依實務經驗所決定;惟,該等候選測試檔之數目並非用以限制本發明。
接著,於步驟309中,針對各至少一難以檢測區段之目標條件敘述節點,根據該等基本測試檔所對應之該等第一啟動次數與該等第二啟動次數及各候選測試檔所對應之第一預估啟動次數及第二預估啟動次數,計算對應至各該候選測試檔之一執行機率度量(activation probability metric)。舉例而言,針對各至少一難以檢測區段之目標條件敘述節點,對應至各候選測試檔之執行機率度量可根據下列公式計算:,其中APM i,j 係對應至第i個至少一難以檢測區段之目標條件敘述節點及第j個候選測試檔之執行機率度量;PPAC i,j 係對應至第i個至少一難以檢測區段之目標條件敘述節點及第j個該候選測試檔之第一預估啟動次數;SPAC i,j 係對應至第i個至少
一難以檢測區段之目標條件敘述節點及第j個該候選測試檔之第二預估啟動次數;PAC i,k 係對應至第i個至少一難以檢測區段之目標條件敘述節點及第k個基本測試檔之第一啟動次數;以及SAC i,k 係對應至第i個至少一難以檢測區段之目標條件敘述節點及第k個基本測試檔之第二啟動次數。
最後,於步驟S311中,根據對應至各候選測試檔之該等執行機率度量,決定該等候選測試檔其中之一為一最佳候選測試檔。就一般狀況,具有較大值之執行機率度量的候選測試檔係較有機會提升難以檢測程式碼之程式碼涵蓋率,故於本實施例中,處理器13可計算對應至各候選測試檔之該等執行機率度量之一加總值,以決定對應至最大的加總值之候選測試檔為最佳候選測試檔。然而,於其他實施例中,處理器13更可計算各候選測試檔之該等執行機率度量之一平均值、一中位數或一第一四分位數等來決定最佳候選測試檔。
須說明者,前述本實施例之各步驟係僅以一難以檢測程式碼作為說明;然而,所屬技術領域中具有通常知識者可輕易瞭解前述步驟亦可同時套用至多個難以檢測程式碼中,將多個難以檢測程式碼中的至少一難以檢測區段同時進行考量,以自該等候選測試檔中找出最佳候選測試檔,故在此不加以贅述。此外,由上述說明可知,於本實施例中所闡述之軟體測試方法可由具有複數個程式指令(code)之軟體測試程式來實現。軟體測試程式係為可儲存於一電腦可讀取儲存媒體(non-transitory computer readable storage medium)中之一電腦程式產品。當軟體測試程式被載入一電子裝置(例如:軟體測試裝置1)並安裝於其作業系統中時,軟體測試程式執行如在本實施例中所述之軟體測試方法。電腦可讀取儲存媒體可為一電子產品,
例如唯讀記憶體(read only memory;ROM)、快閃記憶體、軟碟、硬碟、光碟(compact disk;CD)、隨身碟、磁帶、可由網路存取之資料庫或熟習此項技藝者所習知且具有相同功能之任何其它儲存媒體。
本發明之第二實施例亦請參考第1圖至第4圖。第二實施例係為第一實施例之延伸。於處理器13執行完步驟309以選出最佳候選測試檔後,處理器更執行其他操作,即本發明之軟體測試方法更包含如第4圖所示之步驟。於步驟S313中,使用最佳候選測試檔作為被測試程式碼之一輸入,以運行被測試程式碼。隨後,於步驟S315中,判斷被測試程式碼之一程式碼涵蓋率是否達到一要求涵蓋率。
進一步言,於步驟309後,處理器13係將所選出之最佳候選測試檔作為被測試程式碼之輸入並運行該被測試程式碼;如此一來,處理器13除了基於基本測試檔外,更基於最佳候選測試檔,以獲得被測試程式碼之新的程式碼涵蓋率。同時,若新加入的最佳候選測試檔已可讓被測試程式碼之程式碼涵蓋率滿足測試人員所要求的涵蓋率,則處理器13可結束執行軟體測試程式。
反之,若新加入的最佳候選測試檔仍無法讓被測試程式碼之程式碼涵蓋率滿足測試人員所要求的涵蓋率,則處理器13可自該等候選測試檔中選擇第二佳候選測試檔,以將其作為被測試程式碼之輸入並運行被測試程式碼,進而再次獲得被測試程式碼之新的程式碼涵蓋率,並再次確認新的程式碼涵蓋率是否滿足測試人員所要求的涵蓋率。若仍不滿足,則處理器13可再次自該等候選測試檔中選擇次佳的候選測試檔,並再將其作為被測試程式碼之輸入並運行被測試程式碼,進而再次獲得被測試程式碼之新
的程式碼涵蓋率。須說明者,上述自該等候選測試檔中所選擇的多個較佳候選測試檔的數目係可依測試人員之需求所設定,其並非用以限制本發明。
此外,若新加入的最佳候選測試檔仍無法讓被測試程式碼之程式碼涵蓋率滿足測試人員所要求的涵蓋率,則處理器13除了可自該等候選測試檔中選擇其他次佳候選測試檔外,亦可直接捨棄這些非最佳候選測試檔,而額外產生新的一批候選測試檔,並再次執行本發明之軟體測式程式,即第3圖所示的這些步驟,以自新的一批候選測試檔中挑選出新的最佳候選測試檔。
綜上所述,本發明基於被測試程式碼之一難以檢測程式碼之一條件敘述樹狀結構,使用支援向量機對複數基本測試檔進行學習,以建立支援向量回歸預估式,並使用支援向量回歸預估式自複數候選測試檔中,先選出一最佳候選測試檔,才將此最佳候選測試檔作為被測試程式碼之輸入並運行被測試程式碼,以獲得被測試程式碼之新的程式碼涵蓋率。據此,不同於習知的程式碼測試機制,本發明可先自多個測試檔中進行篩選,以減少需被使用以執行程式碼之測試檔的數量,進而降低使程式碼涵蓋率達到預期的目標所需的軟體測試時間。
上述之實施例僅用來例舉本發明之實施態樣,以及闡釋本發明之技術特徵,並非用來限制本發明之保護範疇。任何熟悉此技術者可輕易完成之改變或均等性之安排均屬於本發明所主張之範圍,本發明之權利保護範圍應以申請專利範圍為準。
Claims (12)
- 一種軟體測試裝置,包含:一儲存器,用以儲存一軟體測試程式、一被測試程式碼(under-tested code)、複數基本測試檔(test bench)及複數候選測試檔,該被測試程式碼包含一難以檢測程式碼(hard-to-detect code),該難以檢測程式碼具有至少一難以檢測區段(hard-to-detect section);一處理器,電性連接至該儲存器,並運行該軟體測試程式,以進行下列操作:(a)解析該難以檢測程式碼,以產生該難以檢測程式碼之一條件敘述樹狀結構(condition-statement tree),該條件敘述樹狀結構包含複數條件敘述節點(condition statement node)及複數敘述節點(statement node),各該至少一難以檢測區段由該等條件敘述節點之一目標條件敘述節點及該等敘述節點之一目標敘述節點所組成;(b)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該條件敘述樹狀結構,分別使用各該基本測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼,以獲得對應至各該基本測試檔之該目標條件敘述節點之一母(parent)條件敘述節點之一第一啟動次數(activation count)以及至少一同階(sibling)條件敘述節點之一第二啟動次數;(c)根據各該基本測試檔及對應至各該至少一難以檢測區段之該目標條件敘述節點之該第一啟動次數與該第二啟動次數,使用一支援向量機(support vector machine;SVM),建立一支援向量回歸預估式(support vector regression predictor;SVR predictor);(d)針對各該候選測試檔,將該候選測試檔輸入至該支援向量回 歸預估式,以獲得各該至少一難以檢測區段之該目標條件敘述節點之該母條件敘述節點之一第一預估啟動次數以及該至少一同階條件敘述節點之一第二預估啟動次數;(e)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該等基本測試檔所對應之該等第一啟動次數與該等第二啟動次數及各該候選測試檔所對應之該第一預估啟動次數及該第二預估啟動次數,計算對應至各該候選測試檔之一執行機率度量(activation probability metric);以及(f)根據對應至各該候選測試檔之該等執行機率度量,決定該等候選測試檔其中之一為一最佳候選測試檔。
- 如請求項1所述之軟體測試裝置,其中於該操作(e)中,針對各該至少一難以檢測區段之該目標條件敘述節點,對應至各該候選測試檔之該執行機率度量係根據下列公式計算:
- 如請求項1所述之軟體測試裝置,其中該操作(f)係分別計算對應至各該 候選測試檔之該等執行機率度量之一加總值,以決定對應至最大的該加總值之該候選測試檔為該最佳候選測試檔。
- 如請求項1所述之軟體測試裝置,該處理器更執行下列操作:(g)使用該最佳候選測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼;以及(h)判斷該被測試程式碼之一程式碼涵蓋率是否達到一要求涵蓋率。
- 一種用於一軟體測試裝置之軟體測試方法,該軟體測試裝置包含一儲存器及一處理器,該儲存器儲存一軟體測試程式、一被測試程式碼、複數基本測試檔及複數候選測試檔,該被測試程式碼包含一難以檢測程式碼,該難以檢測程式碼具有至少一難以檢測區段,該處理器電性連接至該儲存器並運行該軟體測試程式以執行該軟體測試方法,該軟體測試方法包含下列步驟:(a)解析該難以檢測程式碼,以產生該難以檢測程式碼之一條件敘述樹狀結構,該條件敘述樹狀結構包含複數條件敘述節點及複數敘述節點,各該至少一難以檢測區段由該等條件敘述節點之一目標條件敘述節點及該等敘述節點之一目標敘述節點所組成;(b)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該條件敘述樹狀結構,分別使用各該基本測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼,以獲得對應至各該基本測試檔之該目標條件敘述節點之一母條件敘述節點之一第一啟動次數以及至少一同階條件敘述節點之一第二啟動次數;(c)根據各該基本測試檔及對應至各該至少一難以檢測區段之該目標條件敘述節點之該第一啟動次數與該第二啟動次數,使用一支援向量機,建立一支援向量回歸預估式; (d)針對各該候選測試檔,將該候選測試檔輸入至該支援向量回歸預估式,以獲得各該至少一難以檢測區段之該目標條件敘述節點之該母條件敘述節點之一第一預估啟動次數以及該至少一同階條件敘述節點之一第二預估啟動次數;(e)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該等基本測試檔所對應之該等第一啟動次數與該等第二啟動次數及各該候選測試檔所對應之該第一預估啟動次數及該第二預估啟動次數,計算對應至各該候選測試檔之一執行機率度量;以及(f)根據對應至各該候選測試檔之該等執行機率度量,決定該等候選測試檔其中之一為一最佳候選測試檔。
- 如請求項5所述之軟體測試方法,其中於該步驟(e)中,針對各該至少一難以檢測區段之該目標條件敘述節點,對應至各該候選測試檔之該執行機率度量係根據下列公式計算:
- 如請求項5所述之軟體測試方法,其中該步驟(f)係分別計算對應至各該 候選測試檔之該等執行機率度量之一加總值,以決定對應至最大的該加總值之該候選測試檔為該最佳候選測試檔。
- 如請求項5所述之軟體測試方法,更包含下列步驟:(g)使用該最佳候選測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼;以及;以及(h)判斷該被測試程式碼之一程式碼涵蓋率是否達到一要求涵蓋率。
- 一種電腦程式產品,經由一軟體測試裝置載入後,該軟體測試裝置執行該電腦程式產品所包含之複數個程式指令,以執行一軟體測試方法,該軟體測試裝置儲存一被測試程式碼、複數基本測試檔及複數候選測試檔,該被測試程式碼包含一難以檢測程式碼,該難以檢測程式碼具有至少一難以檢測區段,該軟體測試方法包含下列步驟:(a)解析該難以檢測程式碼,以產生該難以檢測程式碼之一條件敘述樹狀結構,該條件敘述樹狀結構包含複數條件敘述節點及複數敘述節點,各該至少一難以檢測區段由該等條件敘述節點之一目標條件敘述節點及該等敘述節點之一目標敘述節點所組成;(b)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該條件敘述樹狀結構,分別使用各該基本測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼,以獲得對應至各該基本測試檔之該目標條件敘述節點之一母條件敘述節點之一第一啟動次數以及至少一同階條件敘述節點之一第二啟動次數;(c)根據各該基本測試檔及對應至各該至少一難以檢測區段之該目標條件敘述節點之該第一啟動次數與該第二啟動次數,使用一支援向量機,建立一支援向量回歸預估式;(d)針對該等候選測試檔,將各該候選測試檔輸入至該支援向量回歸 預估式,以獲得各該至少一難以檢測區段之該目標條件敘述節點之該母條件敘述節點之一第一預估啟動次數以及該至少一同階條件敘述節點之一第二預估啟動次數;(e)針對各該至少一難以檢測區段之該目標條件敘述節點,根據該等基本測試檔所對應之該等第一啟動次數與該等第二啟動次數及各該候選測試檔所對應之該第一預估啟動次數及該第二預估啟動次數,計算對應至各該候選測試檔之一執行機率度量;以及(f)根據對應至各該候選測試檔之該等執行機率度量,決定該等候選測試檔其中之一為一最佳候選測試檔。
- 如請求項9所述之電腦程式產品,其中於該步驟(e)中,針對各該至少一難以檢測區段之該目標條件敘述節點,對應至各該候選測試檔之該執行機率度量係根據下列公式計算:
- 如請求項9所述之電腦程式產品,其中該步驟(f)係分別計算對應至各該候選測試檔之該等執行機率度量之一加總值,以決定對應至最大的該加 總值之該候選測試檔為該最佳候選測試檔。
- 如請求項9所述之電腦程式產品,其中該軟體測試方法更包含下列步驟:(g)使用該最佳候選測試檔作為該被測試程式碼之一輸入,以運行該被測試程式碼;以及(h)判斷該被測試程式碼之一程式碼涵蓋率是否達到一要求涵蓋率。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104136479A TWI570554B (zh) | 2015-11-05 | 2015-11-05 | 軟體測試裝置、軟體測試方法及其電腦程式產品 |
CN201510783445.6A CN106681905A (zh) | 2015-11-05 | 2015-11-16 | 软件测试装置及其软件测试方法 |
US14/949,431 US9454457B1 (en) | 2015-11-05 | 2015-11-23 | Software test apparatus, software test method and computer readable medium thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104136479A TWI570554B (zh) | 2015-11-05 | 2015-11-05 | 軟體測試裝置、軟體測試方法及其電腦程式產品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI570554B true TWI570554B (zh) | 2017-02-11 |
TW201717014A TW201717014A (zh) | 2017-05-16 |
Family
ID=56939737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104136479A TWI570554B (zh) | 2015-11-05 | 2015-11-05 | 軟體測試裝置、軟體測試方法及其電腦程式產品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9454457B1 (zh) |
CN (1) | CN106681905A (zh) |
TW (1) | TWI570554B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11100450B2 (en) * | 2016-02-26 | 2021-08-24 | International Business Machines Corporation | Document quality inspection |
US11227090B2 (en) * | 2017-02-15 | 2022-01-18 | Michael Alexander Green | System and method for achieving functional coverage closure for electronic system verification |
US10699046B2 (en) | 2017-02-15 | 2020-06-30 | Michael Alexander Green | System and method for achieving functional coverage closure for electronic system verification |
TWI733017B (zh) * | 2018-04-03 | 2021-07-11 | 中華電信股份有限公司 | 電腦裝置及其測試推算方法 |
US11574696B2 (en) * | 2021-04-12 | 2023-02-07 | Nanya Technology Corporation | Semiconductor test system and method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576850B (zh) * | 2009-06-10 | 2011-05-04 | 南京航空航天大学 | 一种改进的面向宿主的嵌入式软件白盒测试方法 |
CN102331966A (zh) * | 2011-01-10 | 2012-01-25 | 中国矿业大学 | 面向路径的软件测试数据进化生成系统 |
US8161459B2 (en) * | 2009-01-15 | 2012-04-17 | Infosys Technologies Limited | Method and system for generating functional test cases |
CN103577312A (zh) * | 2012-07-26 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种软件的时间性能的检测方法及装置 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203882B2 (en) | 2004-08-31 | 2007-04-10 | International Business Machines Corporation | Clustering-based approach for coverage-directed test generation |
US7331007B2 (en) | 2005-07-07 | 2008-02-12 | International Business Machines Corporation | Harnessing machine learning to improve the success rate of stimuli generation |
US7779374B1 (en) * | 2006-09-29 | 2010-08-17 | Breker Verification Systems, Inc. | Generating self-checking test cases from reduced case analysis graphs |
DE102006056432A1 (de) * | 2006-11-28 | 2008-05-29 | Certess, Inc., Campbell | Verfahren zum Testen eines Computerprogramms |
US8336023B2 (en) * | 2007-10-22 | 2012-12-18 | Oracle International Corporation | Extensible code visualization |
US8307342B2 (en) * | 2008-05-14 | 2012-11-06 | Honeywell International Inc. | Method, apparatus, and system for automatic test generation from statecharts |
US8276123B1 (en) * | 2008-07-22 | 2012-09-25 | Juniper Networks, Inc. | Adaptive regression test selection within testing environments |
US8578342B2 (en) * | 2009-07-14 | 2013-11-05 | International Business Machines Corporation | Fault detection and localization in dynamic software applications requiring user inputs and persistent states |
US20110016456A1 (en) * | 2009-07-14 | 2011-01-20 | International Business Machines Corporation | Generating additional user inputs for fault detection and localization in dynamic software applications |
US8943478B2 (en) * | 2009-07-14 | 2015-01-27 | International Business Machines Corporation | Fault detection and localization in dynamic software applications |
US8495583B2 (en) * | 2009-09-11 | 2013-07-23 | International Business Machines Corporation | System and method to determine defect risks in software solutions |
CN101833500A (zh) * | 2010-04-07 | 2010-09-15 | 南京航空航天大学 | 一种基于Agent的嵌入式软件智能测试方法 |
JP5425699B2 (ja) * | 2010-04-30 | 2014-02-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、テストケース生成方法、プログラムおよび記録媒体 |
US8719789B2 (en) * | 2011-03-07 | 2014-05-06 | International Business Machines Corporation | Measuring coupling between coverage tasks and use thereof |
US8448146B2 (en) * | 2011-03-31 | 2013-05-21 | Infosys Limited | Generation of functional tests for re-hosted applications |
US9135147B2 (en) * | 2012-04-26 | 2015-09-15 | International Business Machines Corporation | Automated testing of applications with scripting code |
CN102736979B (zh) * | 2012-06-29 | 2014-12-31 | 南京大学 | 一种基于符号执行的带反馈测试用例生成方法 |
US20150309813A1 (en) * | 2012-08-31 | 2015-10-29 | iAppSecure Solutions Pvt. Ltd | A System for analyzing applications in order to find security and quality issues |
US9612943B2 (en) * | 2013-06-28 | 2017-04-04 | Synopsys, Inc. | Prioritization of tests of computer program code |
CN103559122B (zh) * | 2013-10-14 | 2016-04-27 | 西安交通大学 | 基于程序行为切片的测试案例约减方法 |
US9619375B2 (en) * | 2014-05-23 | 2017-04-11 | Carnegie Mellon University | Methods and systems for automatically testing software |
US9342439B2 (en) * | 2014-06-12 | 2016-05-17 | Synopsys, Inc. | Command coverage analyzer |
CN104156313B (zh) * | 2014-08-12 | 2017-01-25 | 南京大学 | 一种Web服务测试用例自动生成方法 |
-
2015
- 2015-11-05 TW TW104136479A patent/TWI570554B/zh active
- 2015-11-16 CN CN201510783445.6A patent/CN106681905A/zh active Pending
- 2015-11-23 US US14/949,431 patent/US9454457B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8161459B2 (en) * | 2009-01-15 | 2012-04-17 | Infosys Technologies Limited | Method and system for generating functional test cases |
CN101576850B (zh) * | 2009-06-10 | 2011-05-04 | 南京航空航天大学 | 一种改进的面向宿主的嵌入式软件白盒测试方法 |
CN102331966A (zh) * | 2011-01-10 | 2012-01-25 | 中国矿业大学 | 面向路径的软件测试数据进化生成系统 |
CN103577312A (zh) * | 2012-07-26 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种软件的时间性能的检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106681905A (zh) | 2017-05-17 |
TW201717014A (zh) | 2017-05-16 |
US9454457B1 (en) | 2016-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dam et al. | A deep tree-based model for software defect prediction | |
RU2672394C1 (ru) | Способы и системы для оценки обучающих объектов посредством алгоритма машинного обучения | |
Cai et al. | Neuralpower: Predict and deploy energy-efficient convolutional neural networks | |
TWI570554B (zh) | 軟體測試裝置、軟體測試方法及其電腦程式產品 | |
US20200097810A1 (en) | Automated window based feature generation for time-series forecasting and anomaly detection | |
WO2019129060A1 (zh) | 自动生成机器学习样本的特征的方法及系统 | |
US20180082215A1 (en) | Information processing apparatus and information processing method | |
US8589331B2 (en) | Predicting outcomes of a content driven process instance execution | |
CN110046706B (zh) | 模型生成方法、装置及服务器 | |
KR20150046088A (ko) | 소프트웨어 빌드 에러를 예측하기 위한 방법 및 시스템 | |
US20170140273A1 (en) | System and method for automatic selection of deep learning architecture | |
EP3918472B1 (en) | Techniques to detect fusible operators with machine learning | |
CN109376535B (zh) | 一种基于智能化符号执行的漏洞分析方法及系统 | |
Iqbal et al. | Unicorn: Reasoning about configurable system performance through the lens of causality | |
CN110909758A (zh) | 计算机可读记录介质、学习方法和学习装置 | |
US11755955B2 (en) | Anomaly detection and tuning recommendation system | |
US11620579B2 (en) | Generalized metric for machine learning model evaluation for unsupervised classification | |
US10248462B2 (en) | Management server which constructs a request load model for an object system, load estimation method thereof and storage medium for storing program | |
Mahalunkar et al. | Multi-element long distance dependencies: Using SPk languages to explore the characteristics of long-distance dependencies | |
Duque-Torres et al. | Using source code metrics for predicting metamorphic relations at method level | |
CN112417463A (zh) | 软件漏洞预测方法、装置、计算机设备及存储介质 | |
CN105677458A (zh) | 用于获取针对事件的约束的方法和装置 | |
US20210149793A1 (en) | Weighted code coverage | |
US20220051077A1 (en) | System and method for selecting components in designing machine learning models | |
CN115349129A (zh) | 生成具有不确定性区间的性能预测 |