前言:
大家好,我是一菲,最近很多小夥伴給我留言:怎麼能快速的進行軟件測試呢?有哪些方法呢?今天特意給大家總結了這篇文章,希望能夠給大家帶來幫助。
正文:
一些快速測試方法,這裏進行補充和調整,並同步更新到我們的測試知識共享庫中,使用時可靈活增刪改查。
1.用戶界面
若軟件在應用商店中銷售,界面很可能成爲用戶是否安裝或購買的重要因素
a.漫遊用戶界面 ,發現是否有任何令人厭煩的界面設計。
b.可參考受歡迎的界面設計,以發現被測產品的可改進之處"
2.邊界
軟件在處理數值邊界時可能出錯
a.發現業務的範圍和邊界,測試邊界上的值和臨近邊界的值
b.測試超出範圍的值
c.令數值計算產出超出範圍的值
.令一個模塊輸出其他模塊不能接受的值,如界面字段只能顯示10個字符的字符串,測試人員讓後臺產生11個字符的字符串。後臺DB的字段是8位整數,測試人員讓前臺網頁傳遞大於255的整數"
3.溢出
整數和浮點數運算可能溢出,會導致計算錯誤和安全漏洞
留意軟件的數值計算,若覺得某個計算有溢出的風險,就傳入極大值或極小值去觸發潛在的溢出
4.計算和操作
數據轉換和數值計算有些典型錯誤
a.輸入錯誤的數據以測試數據轉換,如軟件期望輸入整數,測試輸入浮點數、無效字符串、空字符串
b.除0
c.除很接近0的極小數值,會產生很大的計算結果,有可能導致數值越界或溢出
d.將高精度數值強制賦給低精度數值,可能導致精度丟失,甚至計算錯誤
e.浮點數運算很可能產生誤差,一些小的誤差會累積出嚴重的偏差,所以測試要關注涉及多個變量或步驟的數值計算,仔細檢查其結果的精度"
5.初始狀態
一段程序在使用一個變量時,可能對該變量的狀態有不正確的假設,這會導致軟件故障
變量通常有5個狀態,測試要檢查程序的對變量狀態的假設是否總是正確的:
a.未初始化
b.已初始化
c.默認值
d.已經被賦予當前計算需要的值
e.帶有其他計算的結果
f.被修改的值
軟件可能不能偵測到它所依賴的事物發生了變化 ,這會導致錯誤
爲一個變量設置值,讓一些功能依賴於該變量,然後修改該變量的值,並檢查相應功能是否正確。
eg.用圖片應用瀏覽圖片,切換到OS界面下刪除正在顯示的圖片,返回圖片應用,看被刪的圖片如何顯示
6.控制流
控制流的意外跳轉可能暴露隱藏的問題
測試要想辦法打亂軟件的控制流,如觸發異常、輸入異常數據、造成環境失敗等
7.序列
有些軟件錯誤會在漫長的操作序列中暴露
考慮反覆執行以下操作:
a.產生錯誤消息的操作
b.令任務被迫中斷的操作
c.會執行遞歸計算的操作
另外, 測試可編寫測試程序,用隨機的順序調用已有的自動化測試用例,實施長序列的測試"
8.消息
軟件與外界的通訊可能中斷
若軟件與網絡服務、DB、其他軟件有任何形式的交互 ,測試要破壞它們之間的通訊。
可編寫測試程序來監聽並篡改信息,或強制被依賴的軟件返回錯誤信息,以測試軟件如何處理破損的消息
9.時序和競態條件
軟件可能對操作的時序有不正確地假設
測試異步調用時,測試讓軟件先後啓動A和B兩個計算,並讓B先完成計算。有些軟件不能處理後提交的在計算先返回的情況,會發生故障。
測試可同時啓動多個操作去訪問共享的數據或功能,以檢查併發計算是否造成數據損壞。"
10.錯誤處理
軟件的錯誤處理代碼需要應對意外情況,有較高的編寫難度,故易出錯
測試嘗試觸發軟件的錯誤信息,然後反覆執行導致 錯誤消息的操作,以檢查錯誤處理代碼是否產生了資源泄漏問題。
強力測試軟件,來檢查錯誤處理代碼是否將軟件恢復到正確狀態。"
11.失敗處理
軟件的失敗恢復可能包含錯誤,使得損失加重
測試要檢查失敗處理代碼的正確性。如,文檔崩潰重啓後,是否顯示用戶最近的編輯成果,避免或降低了用戶的損失。
12.文件系統 文件系統的異常情況會影響軟件的運行
a.用調試工具令OS的文件讀寫API返回錯誤,可模擬出磁盤損壞等異常情況
b.刪除正在被使用的文件
c.刪除即將被使用的文件
d.鎖住即將被使用的文件
e.竊取軟件持有的文件句柄
f.修改一個需要更高權限才能修改的文件
g.令文件名和文件路徑的長度超過OS支持的最大路徑長度
h.令文件名包含OS禁止的字符
i.修改文件名後綴爲大寫或其他無效的後綴名
j.將文件名修改對OS有特殊含義的單詞
k.讀寫尺寸巨大的文件
l.將文件寫入只讀的磁盤
m.將文件寫入容量即將耗盡的磁盤
n.將文件寫入網絡磁盤,在寫入過程中,斷開網絡
o.將文件寫入移動硬盤,在寫入過程中,拔出移動硬盤
二、嘗試各種輸入以觸發軟件的所有錯誤消息
一、軟件處理錯誤輸入的常見方式有三種:
a.輸入過濾:濾除錯誤的數據
b.輸入檢查:檢查輸入並報告錯誤
c.異常處理:當錯誤輸入產生故障時,異常處理代碼會捕獲異常並加以補救。
正確編寫以上代碼需周密思考和反覆測試,稍有不慎就可能引入缺陷 "
採用極限值測試、邊界值測試、非法值測試、壓力測試等方法來測試用戶輸入
二、強制讓軟件使用默認值
不同模塊由不同程序員編寫,他們可能期望不同的默認值 ,這種不一致性會導致錯誤
a.接受所有默認值,然後提交
b.使用空值
c.將默認值改爲另一個值,然後再改回來
d.將默認值改爲另一個值,然後改爲空值"
三、探索允許的字符集和數據類型
常見問題:
a.字符集:有些軟件只支持特定編碼的字符集,輸入其他編碼的字符會導致錯誤
b.編程語言:有些軟件會將用戶輸入作爲程序來執行,這導致了許多問題,如SQL注入
c.OS:OS會禁止創建一些特定名字的文件。一些軟件在西文OS上不能正確顯示中文字符
測試瞭解軟件、編程語言、實現技術、OS對字符集和數據的期望與限制,然後使用對它們而言具有特殊含義的字符串或數據進行***
四、令輸入緩衝區溢出
軟件未考慮輸入值超長、超大的情況,導致數值計算溢出或緩衝區溢出
常見測試想法:
a.輸入超長的字符串,字符串最好類似於“中文中文數字1234567中文…”有助於定位導致錯誤的長度
b.輸入極大值(針對加法和乘法計算)、負的極大值(針對減法計算)、很接近0的值(針對除法計算)等"
==五、測試一組相關變量的取值組
當多個程序員共同開發一段代碼時,他們的代碼所產生的數值可能不能正常協作。
此外,程序員還會用複雜的嵌套if語句來檢查多個變量,這些代碼不容易編寫,更容易在維護時出錯。
測試人員通過調查軟件需求和實現,以識別真正相關的變量,它們通常屬於同一個數據結構或參與到同一項計算中。
然後,根據軟件使用它們的方式設計Case。
也可使用組合測試工具來產生Case
六、重複輸入多次
軟件可能不瞭解它在空間和時間上的限制,當重複操作耗盡其資源時,它會失敗
測試反覆執行一些消耗較多資源的操作,或反覆執行一些大量數據的操作。如,在測試在線商城時,測試持續向購物車中添加貨品,創建出一個包含許多商品的“超級訂單”。該訂單可能導致提交失敗,或令未來的訂單處理遇到困難。
補充: