軟件工程的實現與測試
實現
編碼注意事項
● 寫程序前先簡化算數表達式和邏輯表達式,并用括號使邏輯表達式和算術表達式次序清晰
● 盡量避免大量使用鑲套結構,仔細研究鑲套循環,以確定是否存在有語句可以從內層往外移
● 不要節約空間而把多個語句寫在一行中
● 盡量避免復雜的條件測試,減少對非條件的測試
● 盡量避免使用多維數組,指針和復雜的表
● 使用執行時間短的算數運算
● 盡量使用整數運算和布爾表達式,不要混合使用不同的數據類型
輸入輸出
1、所有輸入輸出都應該有緩沖,以減少用于通信的額外開銷
2、對二級存儲(如磁盤)應選用最簡單的訪問方式
3、二級存儲器的輸入輸出應該以信息組為單位進行
4、如果超高效的輸入輸出很難被人理解,則不應該采用這種方式
5、設計良好的輸入報表,保持輸入格式簡單
6、使用數據結束標記,不要要求用戶指定數據數目
測試
測試步驟
● 模塊測試
● 子系統測試
● 系統測試
● 驗收測試
在測試的類型上有以下幾種
● 回歸測試:把現在的軟件測試結果和上個版本的測試結果做比較看有沒有退步
● 功能測試:側重于系統功能測試,看是不是達到了用戶的要求
● 單元測試:針對每個相對獨立的模塊的測試,在軟件的層次上看該模塊能否完成設計要求
● 負載測試:在整個系統在大負載仿真條件下,測試系統的實際能力
● 驗收測試:測試的不只是功能問題,還有許多細節問題
單元測試重點
● 先判斷功能是不是錯誤引起(如舍入誤差就不是由錯誤引起的)
● 模塊接口:模塊接口測試主要檢查下述幾個反面-參數數目,次序,屬性,單位系統與單元是否保持一致;是否修改只作輸入用的變元;全局變量的定義和用法在各個模塊中是否一致
● 局部數據結構
● 重要執行通路:在測試期間選擇最有代表性,最可能發現錯誤的執行通路進行測試十分關鍵
● 出錯處理通路:
● 對錯誤的描述是難以理解
● 記下錯誤與實際遇到的錯誤不同
● 在對錯誤進行處理之前,錯誤條件已經引起系統干預
● 對錯誤的處理不正確
● 描述錯誤的信息不足以幫助確定造成錯誤的位置
調試途徑
● 蠻干法:僅當所有其他方法都失敗了得情況下才用
● 回溯法:從癥狀發現地方開始,人工沿著程序的控制流往回追蹤分析源程序代碼,知道找到錯誤為止,調試小程序最有效的方法
● 原因排除法:
● 對分查找法:如果已經知道每個變量在程序內的若干個關鍵的正確值,則可以用賦值語句或輸入語句在程序中的附近注入這些變量的正確值,然后運行程序并檢查所得到的輸出
● 歸納法:是從個別現象推斷出一般性結論的思維方式,使用這種調試程序時,首先把和錯誤有關的數據組織在一起分析,以便發現錯誤原因
● 演繹法:從一般原理或前提出發,經過排除和精華的過程推導出結論,采用這樣的方法,首先設想出所有可能出錯的原因,然后試圖用測試來排除每一個假設的原因
兩個重要測試技術
白盒子技術
目的:
在測試者完全知道程序的結構和處理算法.按照程序內部的邏輯測試程序,檢測程序中的主要執行通路是否都能按照預定的要求工作.又稱機構測試.
邏輯測試的覆蓋種類:
● 語句覆蓋: 至少每個語句都應該執行一次.
● 判斷覆蓋: 每種判斷的每種可能的結果都因該至少執行一次.也就是每個判斷的分子都至少執行一次.
● 條件覆蓋: 每個判斷表達式的每個條件都取到各種可能的結果
● 判定條件覆蓋: 有時候判斷覆蓋不一定包含條件覆蓋,條件覆蓋不一定包含判斷覆蓋.所以為了滿足兩種覆蓋出現了這個覆蓋.
● 條件組合覆蓋: 選取足夠多的測試數據,使的每個判斷表達式中條件的各種可能組合都至少出現一次.
● 路徑測試:選取足夠多的測試數據.使程序的每條可能路徑都被執行一次.
● 其他覆蓋: 點覆蓋/邊覆蓋
三種基本測試:
● 基本路徑測試步驟:
● 根據過程設計結果畫出相應的流圖
● 計算流程圖的復雜度
● 確定線獨立路徑的基本集合
● 條件測試:
● 每個判斷的分子都至少執行一次
● 每個判斷表達式的每個條件都取到各種可能的結果
● 如果條件不正確,則至少條件的一個成分不正確
● 布爾運算符錯
● 布爾變量錯
● 布爾括弧錯
● 關系算符錯
● 算數表達式錯
● 循環測試:
● 簡單循環:
● 跳過循環
● 只通過一次循環
● 通過兩次循環
● 通過m次循環(m<n-1)
● 通過n-1次循環,通過n次循環,通過n+1次循環(n最大允許循環數)
● 鑲套循環:
● 從最內層循環開始測試,把其他循環都設置為最小值
● 對最小層實行簡單循環測試,而外層循環的迭代參數(如循環計數器)取最小值,并為一些越界值.
● 由內向外,對下一個循環進行測試,但保持所有其他外層循環為最小值。
黑盒子技術
特點:
完全不考慮程序內部結構,只檢測程序功能是不是正常,是否適當地接受輸入數據并產生正確的輸出信息,運行時是不是能保持外部信息的完整性
力圖發現的錯誤類型:
● 功能不正確或遺漏功能
● 界面錯誤
● 數據結構錯誤或外部數據庫訪問錯誤
● 性能錯誤
● 初始化和終止錯誤
設計黑盒子方案時應該考慮的問題:
● 怎樣測試功能有效性
● 哪些類型的輸入可構成好的測試用例
● 系統是否對特定的輸入值特別敏感
● 怎樣劃定數據類的邊界
● 系統能承受什么樣的數據率和數據量
● 數據的特定組合將對系統運行產生什么影響
黑盒子技術測試的標準:
● 測試用例要少但合理測試所需要設計的測試用例數
● 測試用例能指出某些類型的錯誤,而不是單單指出與特定測試相關的錯誤是否存在
等價劃分:
● 解釋:
● 把程序的輸入域劃分成若干個數據類
● 等價劃分的六條經驗:
● 如果規定了輸入值范圍,可分輸入在范圍類,和輸入值小于范圍或大于范圍
● 如果規定了輸入數據的個數,分輸入個數在個數內,在個數外,和等于個數
● 如果如果規定了輸入數據的一組值,而程序對不同輸入值做不同處理,則每個允許的輸入值是一個劃分,不輸入是一個劃分
● 如果規定輸入數據必須遵循規則,則分為符合規則輸入與各種不同角度不符合規則的無效輸入
● 如果輸入為整形,可分為正整數,零,負整數
● 如果程序的處理對象是表格,則分為用空表格,含一項或多項的表格
● 等價設計方案的主要兩步驟:
● 盡可能多覆蓋未覆蓋的等價有效輸入值,重復到有效等價輸入值都被覆蓋
● 盡可能多覆蓋未覆蓋的等價無效輸入值,重復到無效等價輸入值都被覆蓋
邊界值分析:經驗表明,處理邊界情況時程序最容易發生錯誤
● 使輸出剛好等于有效范圍的最小值
● 使輸出剛好等于有效范圍的最大值
● 使輸出剛好小于有效范圍的最小值
● 使輸出剛好大于有效范圍的最大值
在改正錯誤前軟件工程師應該仔細考慮的問題
● 是否相同錯誤在程序其他什么地方?
● 修改后是否會引入新的錯誤?
● 為防止以后這類錯誤該如何做?
posted on 2012-08-01 10:45 順其自然EVO 閱讀(339) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄