常見的軟件測試?1、概念2、手工測試,下面我們就來說一說關于常見的軟件測試?我們一起去了解并探讨一下這個問題吧!
1、概念
2、手工測試
3、探索式測試
4、局部探索式測試法
5、全局探索式測試法
6、混合探索式測試技術
7、實踐中的探索式測試
8、測試需要培養的方向
1、概念
1、軟件缺陷(bug)的根源來自于軟件開發本身
2、軟件失效是指軟件運行時産生的一種不希望或不可接受的外部行為
3、軟件失效的機理可描述為:軟件錯誤→軟件缺陷→軟件故障→軟件失效
4、缺陷引入:程序員引入的缺陷,運行環境導緻的缺陷
5、預防和檢測
(1)缺陷預防-開發角度
(2)缺陷檢測-動态測試
a.自動化測試(缺點:維護自動化測試代碼需花費大量時間;優點:重複使用率高,提高測試速度;緻命弱點:“預言家難題”,很難預估測試完成情況)
b.手工測試
6、測試目标:軟件發布前,所有重要的任務都完成了,而剩下沒做的事情都是比較次要的(不影響用戶的使用和愉悅感)
7、軟件執行的4個基本任務:接收輸入、産生輸出、存儲數據、進行運算
2、手工測試
1、優點:更接近真實場景,容易發現與應用程序業務邏輯(實現用戶需求的代碼)相關的缺陷
2、缺點:效率低,沒有規律,不可反複使用
3、測試腳本:記錄了實際運行的哪些測試;适用于指定場景,且輸出結果可判斷
3、探索式測試
1、完全抛開測試腳本
2、測試結果、測試實例、測試文檔都會在運行測試時創建
3、記錄結果的最佳工具:截屏軟件、記錄擊鍵的軟件
4、使用含有調試信息的軟件版本(debug build)、調試器(debugger)、代理程序(proxy)
5、最适用于:“敏捷開發過程”的Web應用程序
6、缺點:可能在測試中找不到重點,盲目測試,浪費大量時間,效率低下
7、指導方法:局部探索式測試法(輔助測試人員在測試過程中即時做出決定)、全局探索式測試法(用于幫助測試人員設計整體測試計劃和測試策略)
8、全神貫注,集中精力
9、目标:理解應用程序如何工作,其接口看起來如何,實現了哪些功能;強迫軟件展示其全部能力;找到缺陷
4、局部探索式測試法
1、面臨選擇抉擇時使用探索式測試的策略(局部小範圍),例如:一個網頁,一個對話框,某個類的一個方法
2、好處:測試人員不需要知道很多信息就可以完成細節任務
3、重點:把測試經驗、專業知識、軟件在操作環境下如何構建和運用的知識結合在一起
4、決策
(1)輸入(input)
a.一般定義:輸入指的是由環境産生的一種刺激,該刺激導緻被測試的應用程序有所響應
b.分為兩類:
b1.原子輸入(atomic input)- 建議使用“等價類劃分”,簡單到不能再簡單的事件,例如:單擊按鈕,字符串或整數4
b2.抽象輸入(abstract input)- 非法輸出(illegal output)
c.影響因素:各種輸入之間會相互影響,從而造成軟件失效;輸入這些值時的先後順序也會導緻問題出現
d.正向測試(postive testing)
e.逆向測試(negative testing)
f.依據開發人員的思路來構建一個非法輸入值,牢抓錯誤信息(開發在哪些地方編寫了錯誤處理(error-handling)代碼,具體錯誤代碼是如何實現的)
g.開發人員有三種基本方式,定義錯誤處理程序(error handle)
g1.輸入篩選器(input filter)- 防止非法的輸入值被傳遞給應用軟件的功能代碼;是否正确實現了該功能(非法輸入和合法輸入的區分是否錯誤),是否可以繞過篩選器
g2.輸入檢查(input check)- 是應用程序代碼的一部分,通常使用類似if、then、else結構的語句實現(或case、select結構,或lookup table)
g3.使用異常(exception)- 異常處理代碼把整個routine當成一個整體看待,檢測其上發送的任何一個錯誤
h.常規輸入/非常規輸入
i.默認輸入/用戶手動輸入(null、删除默認值、默認值附近的其他值)
j.根據輸出指導輸入選擇
j1.先明确功能後确實哪些輸入會引發相應輸出:明确期望輸出結果,考察所有用戶場景,觀察如何生成期望結果(主動);先觀察輸出結果,再選擇新的輸入,并保證新輸出與原先不同
j2.抽象角度:非法輸出(illegal output);合法輸出(lega output)
(2)狀态(status)
a.定義:軟件的一個狀态就是狀态空間的一個點,它是由所有内部數據結果的取值來确定
b.軟件狀态可以看成是用于描述軟件記住過去發生的所有輸入和輸出的一種方式
c.數據轄域:檢驗軟件是否正确實現了數據轄域是一個很重要的測試
d.輸入和狀态相結合:使用狀态信息來幫助尋找相關的輸入;使用狀态信息來辨别重要的輸入序列,當一個輸入導緻狀态信息被更新時,緊接着多次使用同樣的輸入會導緻一連串的狀态變化,狀态變化被累加,必須考慮是否會溢出(例購物車)
(3)代碼路徑(code path)
a.一條代碼路徑就是一連串的代碼語句,其起始于開始語句,終止于結束語句
b.必須明确知道程序裡可能有哪些分支,并理解哪些輸入會導緻軟件走這條分支而不是另一條
(4)用戶數據(user date)- 被動的方式
a.創建一個含有特定數據的數據存儲,其含有的數據應該和軟件真實用戶使用的數據盡量相似
(5)執行環境(execution environment)- 主動的方式
a.使用的操作系統和其當前配置,任何可以影響被測軟件行為的因素都是運行環境的一部分
b.提供輸入,接收輸出
5、全局探索式測試法
1、确定了如何對軟件進行探索式測試的整體方向
例如:
單個單獨的測試用例應該覆蓋軟件的哪些功能
哪些軟件的功能必須放在一起測
應該先測試哪個功能
如何決定哪個功能先測,哪個後測
一個項目中多人測試,應該使用怎樣的測試策略,确保相輔相成
2、漫遊測試
(1)商業區測試類型
a.用戶所要使用的熱門的軟件特性和功能
b.方法
b1.指南測試法 - 根據用戶手冊
b2.賣點測試法 - 出席銷售人員給客戶的演示會,與銷售人員保持良好合作關系
b3.地标測試法 - 确定關鍵的軟件特性,再确定其先後順序
b4.極限測試法
b5.快遞測試法 - 專注于數據,确認那些被存儲起來的輸入數據并“跟随”它們走遍軟件
b6.深夜測試法 - 檢測休息時間軟件是否正常運行(盲區)
b7.遍曆測試法 - 選定一個目标(例如所有菜單項),使用可以發現的最短路徑來訪問
(2)曆史區測試類型
a.針對老功能和缺陷修複代碼
b.方法
b1.惡鄰測試法 - 對bug聚集地的鄰近功能使用遍曆測試法進行測試,驗證已修代碼未引入新bug
b2.博物館測試法 - 找出遺留代碼和老的可執行文件,确保其在測試中正常運行
b3.上一版測試法
(3)娛樂區測試類型
a.測試輔助功能,确保輔助和主線特性結合
b.方法
b1.配角測試法 - 緊鄰主要功能的特性
b2.深巷測試法 - 最不可能被用到或者最不吸引用戶的特性
b3.通宵測試法 - 連續不斷地使用某些特性或将文件一直保存在打開的狀态
(4)旅遊區測試類型
a.快速訪問軟件的各種功能
b.方法
b1.收藏家測試法 - 收集軟件的輸出,越多越好,到達所有可到達的地方并把觀察到的輸出結果記錄下來,以小組為單位
b2.長路徑測試法 - 到達目的地之前盡量多地在應用程序中穿行
b3.超模測試法 - 測試界面、外觀、性能、是否與期望符合、是否标準
b4.測一送一測試法 - 測試同時運行同一應用程序多個拷貝的情況
b5.蘇格蘭酒吧測試法 - 适用于大規模的複雜應用程序,找到用戶組并參與讨論,花時間了解待測應用程序
(5)旅館區測試類型
a.經常被忽視或者在測試計劃中較少描述的次要及輔助功能
b.方法
b1.取消測試法 - 啟動操作然後停止它,确信被取消的操作可以再次執行并成功結束
b2.懶漢測試法 - 盡量少的操作
(6)破舊區測試類型
a.試圖利用每個可能的機會暗中破壞程序(故障注入,抓捕漏洞)
a1.強迫軟件做一些操作
a2.掌握軟件成功完成操作必須使用的資源
a3.在不同程度上移除那些資源或限制使用那些資源
b.方法
b1.反叛測試法 - 要求輸入最不可能的數據,或故意惡意輸入
總結:
逆向測試法 - 最不可能的數據,測試容錯能力
歹徒測試法 - 如何處理非法輸入,突破限制
錯序測試法 - 錯誤的順序
b2.強迫症測試法 - 重複輸入、重複操作
6、混合探索式測試技術
1、使用正式腳本可以為探索式測試設立一個明确的框架,探索式測試法可以提高腳本測試的有效性,為腳本中的測試用例提供更多種多樣的變化
2、基于場景的探索式測試
3、有價值的場景包含
(1)講述用戶故事 - 記錄用戶使用軟件的動機、目的以及具體動作
(2)描述需求
(3)演示産品功能 - 經常出現在在線幫助和用戶說明書中
(4)演示集成場景 - 定義了功能集成後的場景或端對端的場景
(5)描述設置和安裝
(6)描述警告和出錯情形
4、場景操作 - 對場景的步驟加以操作,給場景注入變化
5、衍生場景 - 對現有場景進行操作時,會得到一個新的場景
6、通過(靜态)場景操作注入變化
(1)插入步驟(延長場景)
a.增加更多數據 - 例,場景要求在購物車中放入一件商品,測試人員可以先加入那件,再加入其他
b.使用附加輸入 - 增加沒有被提到的額外輸入值,有關聯但屬于附加。例,要求能添加評論,測試人員可以額外對其他用戶的評論進行登記評分
c.訪問新的界面 - 增加相關的新操作
(2)删除步驟(化繁為簡,盡量減少)
(3)替換步驟(先删後插)
(4)重複步驟(重複單獨的操作,例查詢)
(5)替換數據 - 理解應用程序連接和使用的數據源,确保其交互穩定
(6)替換環境 - 盡量接近用戶場景
a.替換硬件
b.替換軟件
c.替換版本
d.修改本地設置
7、通過漫遊操作注入變化 - 漫遊通常比場景操作産生更長的操作步驟(順路)
(1)賣點測試法 - 可以假如新功能
(2)地标測試法
(3)極限測試法
(4)深巷測試法 - 可注入新功能
(5)強迫症測試法
(6)通宵測試法
(7)破壞測試法
(8)收藏夾測試法
(9)超模測試法
(10)配角測試法 - 最近鄰的選擇
(11)取消測試法
(12)混票測試法 - 從一個場景跳到另一個,從而把兩個或更多場景結合為一個具有混合目的的場景
7、實踐中的探索式測試
1、出租車測試法
要到達所需的屏幕、對話框或一些其他功能組件,用戶通常有大量的路線可以選擇
測試人員需要熟悉到達指定位置的每條可能的路徑
例:使用多種方式打開某一功能
2、多元文化測試法 - 多語言測試
8、測試需培養的方向
1、明确目的
(1)決定測試什麼 - 從不同的深度和順序檢測,列出特性的功用
(2)決定何時測試 - 明确每個缺陷應該在什麼時候被發現
(3)決定如何測試 - 将缺陷類别和漫遊方法/測試技術相聯系,明确某些缺陷最适合的方法
2、降低重複性
(1)知道已經運行過哪些測試 - 變化測試目标、測試要點
(2)知道什麼時候注入變異 - 通過改變技術調整測試用例
3、降低暫時性
結合實際 - 真實環境、真實數據,用戶介入
4、将單調變有趣
花時間進行測試分類和測試策略,減少測試運行時間(枯燥部分)
5、解決健忘
(1)測試用例不是解決暫時記憶的最好方法
(2)将漫遊方法映射到軟件特性和缺陷上,留下相關産品記錄(結合實際練習)
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!