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

軟件測試是一項批判性的工作,目的就是找出軟件中的缺陷。這里暫時不去深究為什么要進行軟件測試,以及軟件測試帶來的好處。只介紹軟件測試中一些基本的測試方法。根據(jù)是否查看代碼程序分為黑盒測試白盒測試;根據(jù)是否運行軟件又可分為靜態(tài)測試動態(tài)測試。

黑盒測試:又叫功能測試或行為測試,只需考慮各個功能,不需要考慮整個軟件的內(nèi)部結(jié)構(gòu)及代碼。

白盒測試:訪問代碼,通過檢查代碼的線索來協(xié)助測試。

靜態(tài)測試:測試軟件不運行的部分,只是檢查和審核。

動態(tài)測試:使用和運行軟件進行測試。

1、靜態(tài)黑盒測試:檢查產(chǎn)品說明書,并在軟件編寫之前找出問題

·對產(chǎn)品說明書或軟件需求報告進行高級審查:

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

(2)站在客戶(使用者)的角度來審查,因為軟件質(zhì)量的定義是滿足客戶的需求

(3)研究現(xiàn)有的標準和規(guī)范,可以是公司習慣用語和約定、行業(yè)要求、GUI、安全標準;檢查所用標準是否正確、遺漏,是否與標準和規(guī)范相抵觸

(4)審查和測試類似軟件,檢查它的規(guī)模、復(fù)雜性、測試性、質(zhì)量和可靠性、安全性

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

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

2、動態(tài)黑盒測試:在不了解軟件如何工作的前提下進行測試

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

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

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

(1)測試數(shù)據(jù)

通過性測試:

a)邊界條件:軟件運行在計劃操作界限的邊界情況。測試邊界包括測試臨近邊界的有效數(shù)據(jù)、測試最后一個可能有效的數(shù)據(jù)、測試剛超過邊界的無效數(shù)據(jù)。

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

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

失效性測試:

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

(2)測試狀態(tài)

軟件狀態(tài):軟件當前所處的條件或者模式。

狀態(tài)測試:測試程序的狀態(tài)及其轉(zhuǎn)換。

步驟:1)建立狀態(tài)轉(zhuǎn)換圖

2)減少要測試的狀態(tài)及其轉(zhuǎn)換的數(shù)量

a.每一種狀態(tài)至少訪問一次

b.測試狀態(tài)之間最不常用的分支

c.測試所有錯誤狀態(tài)及其返回值

d.測試隨機狀態(tài)轉(zhuǎn)換

e.測試看起來是最常見和普遍的狀態(tài)轉(zhuǎn)換

通過性狀態(tài)測試:審查軟件,描繪狀態(tài),嘗試各種合法可能性,確認狀態(tài)及其轉(zhuǎn)換正常。

失效性狀態(tài)測試:競爭條件、重復(fù)(檢查內(nèi)存泄漏)、壓迫(在不夠理想條件下運行:內(nèi)存小,磁盤空間少...盡量限制軟件的必要條件)、重負(提供條件任其發(fā)揮)。

3、靜態(tài)白盒測試:在不執(zhí)行軟件的條件下有條理地仔細審查軟件設(shè)計、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過程

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

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

a.數(shù)據(jù)引用錯誤->緩存區(qū)溢出

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

c.計算錯誤

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

e.控制流程錯誤<-循環(huán)等控制結(jié)構(gòu)未按預(yù)期方式工作,由計算或比較錯誤間接引起

f.子程序參數(shù)錯誤<-子程序不正確地傳遞數(shù)據(jù)

g.輸入/輸出錯誤

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

4、動態(tài)白盒測試:結(jié)構(gòu)化測試,檢查代碼并觀察運行狀況,利用查找代碼功能和實現(xiàn)方式得到的信息來確定哪些需要測試,哪些不需要,如何開展測試,包括如下內(nèi)容:

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

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

(3)從軟件獲得讀取變量和狀態(tài)信息的訪問權(quán),確定測試與預(yù)期結(jié)果是否相符,強制軟件以正常測試難以實現(xiàn)的方式運行

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

動態(tài)白盒測試與調(diào)試的區(qū)別:都包括處理軟件缺陷和查看代碼的過程,但是它們的目標不同:測試的目標是尋找軟件缺陷;調(diào)試的目標是修復(fù)缺陷

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

數(shù)據(jù)覆蓋:

數(shù)據(jù)流覆蓋,在軟件中完全跟蹤一批數(shù)據(jù)。

次邊界:與動態(tài)黑盒測試類似。

公式和等式:類似除法運算中,考慮除數(shù)為0的情況。

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

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

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

軟件測試其實就是在用戶之前使用和運行軟件,盡早找出軟件中存在缺陷。我們不可能對軟件進行完全測試,只可能在測試有限的用例后使得軟件仍然存在bug的概率盡可能小。以上所述僅僅只是一點皮毛,軟件測試覆蓋的知識面很廣,需要學習的還有很多!!這里推薦一款自動化的APP測試平臺-愛內(nèi)測:http://www.ineice.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,215評論 2 126
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動和任務(wù)的結(jié)構(gòu)性框架。軟件項目的開發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 21,987評論 7 278
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動和任務(wù)的結(jié)構(gòu)性框架。軟件項目的開發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,751評論 5 100
  • 1.問:你在測試中發(fā)現(xiàn)了一個 bug ,但是開發(fā)經(jīng)理認為這不是一個 bug ,你應(yīng)該怎樣解決。 首先,將問題提...
    qianyewhy閱讀 9,291評論 4 123
  • 1. 反編譯前 工欲善其事,必先利其器。 首先,下載Android反編譯apk工具。 2. 反編譯中 然后依次執(zhí)行...
    流光易拋閱讀 906評論 2 13