軟件測試中的那些不可遺忘的基礎知識

軟件測試是一項批判性的工做,目的就是找出軟件中的缺陷。這裏暫時不去深究爲何要進行軟件測試,以及軟件測試帶來的好處。只介紹軟件測試中一些基本的測試方法。根據是否查看代碼程序分爲黑盒測試白盒測試;根據是否運行軟件又可分爲靜態測試動態測試緩存

  黑盒測試:又叫功能測試或行爲測試,只需考慮各個功能,不須要考慮整個軟件的內部結構及代碼。安全

  白盒測試:訪問代碼,經過檢查代碼的線索來協助測試。函數

  靜態測試:測試軟件不運行的部分,只是檢查和審覈。單元測試

  動態測試:使用和運行軟件進行測試。學習

1、靜態黑盒測試:檢查產品說明書,並在軟件編寫以前找出問題測試

·         對產品說明書或軟件需求報告進行高級審查:編碼

  (1)站在一個設計者的角度進行審查,找出根本性問題或遺漏之處spa

  (2)站在客戶(使用者)的角度來審查,由於軟件質量的定義是知足客戶的需求設計

  (3)研究現有的標準和規範,能夠是公司習慣用語和約定、行業要求、GUI、安全標準;檢查所用標準是否正確、遺漏,是否與標準和規範相抵觸調試

  (4)審查和測試相似軟件,檢查它的規模、複雜性、測試性、質量和可靠性、安全性

·         對產品說明書或軟件需求報告進行低層次測試:

  一份優秀的產品說明書或者需求報告:必須是完整、準確、精確(不含糊、清晰)、一致、貼切、合理、代碼無關、可測試性

2、動態黑盒測試:在不瞭解軟件如何工做的前提下進行測試

  兩種基本方法:經過性測試失效性測試

  選擇測試用例:等價類劃分:把軟件具備類似輸入,類似輸出,類似操做的分在一組。一個等價類或等價類劃分是指測試相同目標或者暴露相同軟件缺陷的一組測試用例。

         等價類劃分的目標:把可能的測試用例集縮減到可控制且仍然足以測試軟件的小範圍內。

  (1)測試數據

  經過性測試:

    a) 邊界條件:軟件運行在計劃操做界限的邊界狀況。測試邊界包括測試臨近邊界的有效數據、測試最後一個可能有效的數據、測試剛超過邊界的無效數據。

    b)次邊界條件:典型的次邊界條件:2的冪、ASCII

    c)測試默認、空白、空值、零值和無這些數據

  失效性測試:

    d)測試非法、錯誤、不正確和垃圾數據

  (2)測試狀態

    軟件狀態:軟件當前所處的條件或者模式。

    狀態測試:測試程序的狀態及其轉換。

    步驟:1)創建狀態轉換圖

       2)減小要測試的狀態及其轉換的數量

        a. 每一種狀態至少訪問一次

        b. 測試狀態之間最不經常使用的分支

        c. 測試全部錯誤狀態及其返回值

        d. 測試隨機狀態轉換

        e. 測試看起來是最多見和廣泛的狀態轉換

     經過性狀態測試:審查軟件,描繪狀態,嘗試各類合法可能性,確認狀態及其轉換正常。

     失效性狀態測試:競爭條件、重複(檢查內存泄漏)、壓迫(在不夠理想條件下運行:內存小,磁盤空間少...儘可能限制軟件的必要條件)、重負(提供條件任其發揮)。

3、靜態白盒測試:在不執行軟件的條件下有條理地仔細審查軟件設計、體系結構和代碼,從而找出軟件缺陷的過程

  (1) 編碼標準和規範:可靠性、可讀性/可維護性、可移植性

  (2)通用代碼審查清單:

     a. 數據引用錯誤  ->   緩存區溢出

     b. 數據聲明錯誤  <-  不正確地聲明和使用變量和常量

       c. 計算錯誤

     d. 比較錯誤    <-  邊界條件問題

     e. 控制流程錯誤  <-  循環等控制結構未按預期方式工做,由計算或比較錯誤間接引發

     f. 子程序參數錯誤 <-  子程序不正確地傳遞數據

       g. 輸入/輸出錯誤

     h. 其餘檢查    ->  編碼、可移植、兼容

4、動態白盒測試:結構化測試,檢查代碼並觀察運行情況,利用查找代碼功能和實現方式獲得的信息來肯定哪些須要測試,哪些不須要,如何開展測試,包括以下內容:

  (1) 直接測試底層函數過程,子程序和庫(API

  (2) 以完整程序的方式從頂層測試軟件,根據對軟件運行的瞭解調整測試用例

  (3)從軟件得到讀取變量和狀態信息的訪問權,肯定測試與預期結果是否相符,強制軟件以正常測試難以實現的方式運行

  (4) 估算執行測試時命中的代碼量和具體代碼,調整測試,去掉多餘的測試用例,補充遺漏的用例

  動態白盒測試與調試的區別:都包括處理軟件缺陷和查看代碼的過程,可是它們的目標不一樣:測試的目標是尋找軟件缺陷;調試的目標是修復缺陷

  測試方法:分段測試(單元測試和集成測試)、數據覆蓋、代碼覆蓋

  數據覆蓋:

    數據流覆蓋,在軟件中徹底跟蹤一批數據。

    次邊界:與動態黑盒測試相似。

    公式和等式:相似除法運算中,考慮除數爲0的狀況。

    錯誤強制:迫使軟件中的全部錯誤提示信息顯示出來。

  代碼覆蓋:測試程序的狀態以及程序的流程,設法進入和退出每個模塊,執行每一行代碼,進入軟件每一條邏輯和決策分支

    代碼覆蓋包括:程序語句和代碼行覆蓋、分支覆蓋(好比判斷語句中if分支和else分支)、條件覆蓋(一個條件中可能包含幾個子條件,要覆蓋每個子條件及它們的組合)。

  軟件測試其實就是在用戶以前使用和運行軟件,儘早找出軟件中存在缺陷。咱們不可能對軟件進行徹底測試,只可能在測試有限的用例後使得軟件仍然存在bug的機率儘量小。以上所述僅僅只是一點皮毛,軟件測試覆蓋的知識面很廣,須要學習的還有不少!!這裏推薦一款自動化的APP測試平臺-愛內測:http://www.ineice.com/

相關文章
相關標籤/搜索