Logo image
Design and Analysis of High-Efficient and Cost-Effective Software Testing Methods
Dissertation

Design and Analysis of High-Efficient and Cost-Effective Software Testing Methods

Chang, Jun-Ru
Doctor of Philosophy (PHD), 國立清華大學, 資訊系統與應用研究所
2010

Abstract

測試個案排序 帶有權重事件流程圖 可測試性 PIE分析 修正條件/覆蓋涵蓋率 結構覆蓋率 Test Case Prioritization Weight-based Event-flow Graph Testability PIE Analysis Modified Condition/Decision Coverage Structural Coverage
由於現代科技快速演進,軟體工程師能夠在高效能及高可靠度的硬體系統環境中,開發出更為方便和高可靠度的應用程式。為了能夠生產出高可靠度的程式,在軟體開發週期中的軟體測試階段,必須要投入更多的測試時間及人力來尋找是否有錯誤隱藏在程式之中,特別是對於複雜且龐大的軟體。一般而言,使用者較喜歡使用便利且美觀的軟體,且近幾年,命令模式的程式逐漸被圖形介面的軟體所取代。在現今的社會中,無論我們使用桌上型電腦、筆記型電腦或是手機,軟體執行畫面幾乎都是圖形介面。為了要提高軟體品質,對於圖形介面軟體進行測試是必要的。可是要測試此類軟體比一般傳統程式還來的複雜,且在測試此類軟體時,需要產生各種不同的輸入來確認此程式的正確性。因此在測試過程中,會使用大量空間來暫存中間產生資料。 值得注意的是,在執行測試個案和修復找到的錯誤會花費較長的時間,進而有機會造成計劃進度的延遲。假使能在測試階段,預先執行可能能找出比較多的錯誤的測試個案,使得大部分的錯誤能在比較早的時間被發現及修正,這是一件很重要的研究。最近幾年,有些學者提出測試個案排序的方法來解決以上敘述的問題。可是非常少的研究對於圖形介面軟體的測試個案來進行排序。為了能夠解決此問題,我們提出一帶有權重的事件流程圖來排序要測試圖形介面軟體的測試個案。另外可以根據權重總和,將測試個案由高到低做排序,或是動態調整權重總合來做動態排序。 另一方面,除了發展新的軟體測試技術外,要如何撰寫出一容易測試的程式也是一個重要的議題。過去,有學者提出一方法,用來評估軟體的可測試性。此方法被稱作PIE分析。但是PIE分析需要花費大量的計算時間來評估軟體元件的可測試性。因此在本論文中,我們提出一方法,用計算群體的可測試性取代計算每一行程式碼的可測試性,進而減少計算時間。我們所提出的方法可分做三個步驟:先將程式分成數個區塊,再將每個區塊分成數個群體,最後標記要計算可測試性的程式碼。經過此三步驟,需要計算可測試性的程式碼數量就會有效地減少,並且所計算出來的可測試性的預估值也能夠被接受。 在軟體測試過程中,通常會計算程式涵蓋率來當作是否停止測試的準則。而修正條件/覆蓋涵蓋率(MC/DC)是一個高階涵蓋率準則。NASA過去已提出要如何實做此準則來篩選測試個案。然而經由此方法所篩選出來的測試個案無法符合原本修正條件/覆蓋涵蓋率的定義。另外在執行NASA所提出的方法會花費大量的時間,且此方法在實作上也太過於複雜。因此,本篇論文提出基於測試個案分類的演算法來有效地篩選測試個案,且被篩選出來的測試個案能夠符合修正條件/覆蓋涵蓋率準則的要求。當在對測試個案做分類時,會根據判斷式的值和每個條件的值來做為分類的依據。由於測試個案在前一步驟已經先分類完成,因此在接下來的步驟就能夠快速且有效地尋找成對的測試個案,來符合修正條件/覆蓋涵蓋率的定義。另外,如果有缺少的測試個案能符合修正條件/覆蓋涵蓋率準則,我們也會建議開發者需要產生哪些測試個案來滿足此準則的要求。此外,在實驗部分,我們會實際在真實的程式做實驗,來觀察我們演算法的效率,並且會將我們的方法運用在減少測試個案的技術和測試個案的排序上。

Metrics

1 Record Views

Details

Logo image