• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    小型面向對象語言程序測試用例自動生成技術

    發布: 2009-10-21 10:52 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 323次 | 進入軟件測試論壇討論

    領測軟件測試網

    18. 乘除表達式結構如下:

    其中標識為整型;因子1為指針,指向變量,常數或帶括號的表達式;乘除操作符為指針,指向乘除操作符結構;因子2為指針,指向變量,常數或帶括號的表達式.

    3.2 自動生成器存儲信息的基本數據結構

    3.2.1 類信息表結構

    1. 類信息表結點結構如下:

    其中類名為字符型;父類表為指針,指向直接繼承的父類信息表;類中變量表為指針,指向類中成員變量表結點結構;類中函數表為指針,指向類中成員函數表結點結構;下一結點為指針,指向下一個類信息表結點結構.

    2. 類中成員變量表結點結構如下:

    其中變量信息表為指針,指向變量信息表結構;下一結點為指針,指向下一個類中變量表結點結構.

    3. 類中成員函數表結點結構如下:

    其中函數信息表為指針,指向函數信息表結點結構;下一結點為指針,指向下一個類中成員函數表結點結構.

    3.2.2 對象生存期表結構

    1. 對象生存期表結點結構如下:

    其中對象名為字符型;類表為指針,指向自己拷貝的類信息表結點結構;對象中變量表為指針,指向對象中成員變量表結點結構;對象中函數表指針,指向對象中成員函數表結點結構;下一結點為指針,指向下一個對象生存期表結點結構.

    2. 對象中成員變量表結點結構如下:

    其中變量信息表為指針,指向變量信息表結點結構;下一結點為指針,指向下一個對象中成員變量表結點結構.

    3. 對象中成員函數表結點結構如下:

    其中函數信息表為指針,指向函數信息表結點結構;下一結點為指針,指向下一個對象成員函數表結點結構.

    3.2.3 變量信息表結構

    變量信息表結點結構相對復雜,這主要是因為用它存儲的信息較多.它可以用來存常數,一元運算操作符,算術操作符,變量的系數,輸入變量表結點結構指針,函數信息表結點結構指針,以及指向自身結構即變量信息表結點結構的指針.其結構如下:

    其中變量名為字符型;狀態為整型,其值為0,1,2,3,分別表示該變量值為未知,已知,與循環有關,由輸入變量決定;系數或常量,變量類型,輸入變量表,函數信息表,變量信息表為一個聯合體,這個聯合體與操作符組成另一個聯合體;操作符為字符型,存儲一元算術運算符分,算術運算符及括號;系數或常量為整型;輸入變量表為指針,指向輸入變量表結點結構;函數信息表為指針,指向函數信息表結點結構;變量信息表為指針,指向變量信息表結點結構;下一結點為指針,指向下一個變量信息表結點結構.

    3.2.4 函數信息表結構

    函數信息表結點結構如下:

    其中函數名為字符型;狀態為整型,其值為0,1,2,3,分別表示該函數值為未知,已知,與循環有關,由輸入變量決定;變量信息表為指針,指向變量信息表結點結構,用來存儲函數參數信息;函數展開棧和變量信息表是一個聯合;函數展開棧為指針,用來指向函數展開棧結點結構;變量信息表為指針,用來指向變量信息表結點結構;類信息表為指針,用來指向類信息表結點結構;下一結點為指針,指向下一個函數信息表結點結構.

    3.2.5 輸入變量表結構

    輸入變量表結點結構如下:

    其中輸入變量名為字符型;引用狀態為整型,其值為0或1,表示在生成測試用例的時候在前面的判斷中是否用到該變量;變量類型為整型,其值為0或1,表示其為實型或布爾型;變量值為整型,用來存儲最終結果;下一結點為指針,指向下一個輸入變量表結點結構.

    3.3 計算條件表達式所用數據結構

    3.3.1 操作符棧

    操作符棧結構如下:

    其中操作符數組為字符型數組;棧頂為整型,用來記錄棧頂位置;棧底為整型,用來記錄棧底位置.

    3.3.2 操作變量棧

    操作變量棧結構如下:

    其中操作變量數組為整型數組;棧頂為整型,用來記錄棧頂位置;棧底為整型,用來記錄棧底位置.

    操作符棧和操作數棧用來計算表達式的值.涉及到運算優先級問題,后面有詳細說明.

    3.4 嵌套函數展開所需的函數展開棧

    函數展開棧結點結構如下:

    其中函數名為字符型;對象名為字符型;變量值為指針,指向下一層函數的函數信息表;返回地址為指針,指向SOOL語法樹中該函數的下一條語句;下一結點為指針,指向下一個函數展開棧結點結構.

    3.5 路徑二叉樹

    3.5.1 路徑二叉樹的結點結構

    路徑二叉樹是測試用例生成器重要環節,條件表達式的化簡,規范表達式梯度的形成以及測試用例的最終生成都離不開路徑二叉樹.因此,路徑二叉樹的結點結構要適于這些操作.路徑二叉樹結點結構如下:

    其中訪問狀態標志位為整型,其值為0,1,表示在測試用例生成的時候該路徑被訪問與否;條件表達式為指針類型,指向條件表達式表結點結構,在這里存儲的條件表達式為一個鏈表;梯度表達式為指針類型,指向梯度表達式表結點結構,在這里可以存儲規范條件表達式的梯度值,對于非規范條件表達式指向NULL;左子樹為指針類型,指向路徑二叉樹結點結構;右子樹為指針類型,指向路徑二叉樹結點結構.

    3.5.2 條件表達式表結點結構

    條件表達式表結點結構:

    其中狀態位為整型,其作用有二,一個是標識一個變量是否展開為全部為輸入變量表示的狀態,另一個作用是標識一個條件表達式是否化簡為最簡狀態,即對于大于關系,大于等于關系,小于關系,小于等于關系的條件表達式要化簡成規范條件表達式,對于等于關系及不等于關系的條件表達式要化簡成等號或不等號一邊為乘積項代數和的形式,另一邊為0;變量指針,運算及關系操作符和指數為一個聯合體,變量指針為指針類型,指向變量信息表或輸入變量表;運算及關系操作符為字符類型,用來存算術運算符,關系運算符和等號;指數為整型,用來在表達式化簡以后存變量的冪次;下一結點為一個指針,指向下一個條件表達式表結點結構.

    3.5.3 偏微分向量(即梯度)的存儲結構

    偏微分向量的存儲結構即梯度表達式表的結點結構如下:

    其中操作符,系數或常數及輸入變量表和系數為一個聯合體,操作符為字符類型,用來存算術運算符和關系運算符;系數或常數為整型,用來存梯度表達式中變量的系數或梯度表達式中的常量表達式;輸入變量表及系數為聯合體中的一個結構體,輸入變量表為指針,指向輸入變量表結點結構;指數為整型,用來存輸入變量的冪次;下一結點為一個指針,指向下一個梯度表達式有結點結構.

    第四章 條件組合覆蓋及類覆蓋的路徑查找

    4.1 條件組合覆蓋,類覆蓋及路徑覆蓋策略

    表面看來,軟件測試的目的與軟件工程所有其它階段的目的都相反.軟件工程的其他階段都是建設性的:軟件工程師力圖從抽象的概念出發,逐步設計出具體的軟件系統,直到用一種適當的程序設計語言寫出可以執行的程序代碼.但是,在測試階段測試人員努力設計出一系列測試方案,目的卻是為了破壞已經建好的軟件系統,竭力證明程序中有錯誤不能按照預定要求正確工作.當然,這種現象僅僅是表面的.暴露問題并不是軟件測試的最終目的,發現問題是為了解決問題,測試階段的根本目標是盡可能多地發現并排除軟件中潛藏的錯誤,最終把一個高質量的軟件系統交給用戶使用.測試是為了發現程序中的錯誤而執行程序的過程.

    測試任何產品都有兩種方法:如果已經知道了產品應該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用;如果知道產品內部工作過程,可以通過測試來檢驗產品內部動作是否按照說明書的規定正常進行.前一個方法稱為黑盒測試,后一個方法稱為白盒測試.對于軟件測試而言,黑盒測試把程序看成一個黑盒子,完全不考慮程序的內部結構和處理過程.也就是說,黑盒測試是在程序接口進行的測試,它只是檢查程序功能是否是能按照規格說明書的規定正常使用,程序是否是能適當地接入輸入數據產生正確的輸出信息,并且保持外部信息(如,數據庫或文件)的完整性.黑盒測試又稱為功能測試.與黑盒測試法相反,白盒測試法的前提是可以把程序看成裝在一個透明的白盒子里,也就是完全了解程序的結構和處理過程.這種方法按照程序內部的邏輯測試程序,檢驗程序中的每條通路是否都能按預定要求正確工作.白盒測試又稱為結構測試.

    使用白盒測試法,為了做到窮盡測試,程序中每條可能的通路至少都應該執行一次,或者嚴格地說每條通路都應該在每種可能的輸入數據下執行一次,即使測試很小的程序,通常也是不可能的.因此,軟件測試不可能進行窮盡測試,也就不可能發現程序中的所有錯誤,也就是說通過測試并不能證明程序是正確的.我們測試的目的是要通過測試保證軟件達到一定的可靠性.

    設計測試方案是測試階段的關鍵技術問題.所謂測試方案包括預定要測試的功能,應該輸入的測試數據和預期的結果.其中最困難的問題是設計測試用的輸入數據(即測試用例).不同的測試數據發現程序錯誤的能力差別很大,為了提高測試效率降低測試成本,應該選用高效的測試數據,選用少量最有效的測試數據,做到盡可能完備的測試.設計測試方案的基本目標是,確定一組最可能發現某個錯誤的測試數據.已經研究出許多設計測試數據的技術,這些技術各有優缺點,沒有哪一種是最好的,更沒有哪一種可以代替其余所有技術;同一種技術在不同的應用場合可能相差很大,因些,通常需要聯合使用多種設計測試數據的技術.通常的做法是用黑盒設計基本的測試方案,再用白盒補充一些方案.

    有選擇地執行某些最有代表性的通路是對窮盡測試的唯一可行的替代辦法.所謂邏輯覆蓋的對一系列測試過程的總稱,這組測試過程逐漸進行起來越完整的通路測試.測試數據執行(或叫覆蓋)程序邏輯的程序可以化分成不同的等級.從覆蓋源程序的詳盡程序分析角度,大致有以下一些不同的覆蓋標準:1. 語句覆蓋:為了暴露程序中的錯誤,至少每個語句應該執行一次.語句覆蓋對程序的邏輯覆蓋很少,語句覆蓋只關心判定表達式的值,而沒有分別測試判定表達式中每個條件取不同的值的情況.語句覆蓋是很弱的覆蓋標準;2. 判定覆蓋:判定覆蓋又叫分支覆蓋,它的含義是不僅每個語句必須至少執行一次,而且每個判定的每種可能結果都應該至少執行一次,也就是每個判定的每個分支都至少執行一次.判定覆蓋比語句覆蓋強,但是對程序邏輯的覆蓋程度仍然不高;3. 條件覆蓋:其含義是不僅每個語句至少執行一次,而且使判定表達式中的每個條件都取到各種可能的結果.條件覆蓋通常比判定覆蓋強,因為它使判定表達式中每個條件都取到了兩個不同的結果,判定覆蓋卻只關心表達式的值;4. 判定/條件覆蓋:既然判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,自然會提出一種同時滿足這兩種覆蓋標準的邏輯覆蓋,這就是判定/條件覆蓋.它的含義是,選取足夠多的測試數據,使得判定表達式中的每個條件都取到可能的值,而且每個判定表達式也都取到各種可能的結果.有時判定,條件覆蓋也并不比條件覆蓋更強;5. 條件組合覆蓋:條件組合覆蓋是更強的邏輯覆蓋標準,它要求選取足夠多的測試數據,使得每個判定表達式中條件的各種組合都至少出現一次.顯然,滿足條件組合標準的測試數據,也一定滿足語句覆蓋,判定覆蓋,條件覆蓋和判定/條件覆蓋標準.因此,條件組合覆蓋是前述幾種覆蓋標準最強的.但是,滿足條件組合覆蓋標準的測試數據并不一定使程序中的每個路徑都執行到.

    以上根據測試數據對源程序語句檢測的詳盡程序,簡單討論了幾種邏輯覆蓋標準,測試數據可以檢測的程序路徑的多少,也反映了對程序測試的詳盡程序.從對路徑的覆蓋程度分析,能夠提出下述一些主要的邏輯覆蓋策略:1. 點覆蓋:如果連通圖G的子圖G'是連通的,而且包含G的所有節點,則稱G'是G的點覆蓋.在正常情況下程序圖是連通的有向圖,圖中每個節點相當于程序流程圖的一個框(一個或多個語句).滿足點覆蓋策略要求選取足夠多的測試數據,使得程序執行路徑至少經過程序圖中每個節點一次.顯然,點覆蓋策略和語句覆蓋標準是相同的.2. 邊覆蓋:如果連通圖G的子圖G'連通的,而且包含G的所有邊,則稱G'是G的邊覆蓋.為了滿足邊覆蓋的測試策略,要求選取足夠多的測試數據,使得程序執行至少經過程序圖中每條邊一次.通常邊覆蓋和判定覆蓋是一致的.3. 路徑覆蓋:路徑覆蓋的含義是,選取足夠多的測試數據,使程序的每條可能路徑都至少執行一次(如果程序中有環,則要求每個環至少經過一次).路徑覆蓋是相當強的邏輯覆蓋標準,它保證程序中每條可能的路徑都至少執行一次,因此這樣的測試數據更具有代表性,暴露錯誤的能力也比較強.但是,為了做到路徑覆蓋中需考慮每個判定表達式的取值,并沒有檢驗表達式中條件的各種組合情況.如果把路徑覆蓋和條件組合覆蓋結合起來,可以設計出檢錯能力更強的測試用例.

    類覆蓋指的是覆蓋類中的成員變量和成員函數,是一種面向對象語言的點覆蓋策略.本文測試用例生成策略是把路徑覆蓋,條件組合覆蓋策略結合起來,兼顧點覆蓋策略.

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>