文章目錄
- 一、測試用例基本概念
- 1.1 測試用例基本要素
- 二、測試用例的設計方法
- 2.1 基于需求的設計方法
- 2.2 等價類
- 2.3 邊界值
- 2.4 錯誤猜測法
- 2.6 場景設計法
- 2.7 因果圖
- 2.5 正交排列
- 三、綜合:根據某個場景去設計測試用例(萬能公式)
- 四、如何使用Fidder操作網絡(測網速)
- 五、測試接口
一、測試用例基本概念
1.1 測試用例基本要素
- 基本要素:測試環境、操作步驟、測試數據、預期結果等
- 不是說就上面這四個,只是說只知道這幾個也行
- 測試用例的用處:
- 可作為測試執行者的依據輔助測試
- 可作為自動化測試的基礎,把重復的工作簡化
- 評估需求覆蓋率:
- 覆蓋率:用來計算測試的代碼范圍
- 計算公式:測試的代碼行數/沒有測試的代碼行數
- 可由工具輔助計算
- 覆蓋率:用來計算測試的代碼范圍
- 用例的復用:當要更新一個軟件時(由v1變為v2),在git操作上,我們會在v1基礎上創建一個dev分支,然后在該分支上迭代其為v2代碼,最后合并到master分支上。對于測試用例而言,我們需要寫v2新功能的測試用例,至于v1的老功能可以復用v1時的測試用例
- 為什么還需要測試v1的代碼:因為我們無法保證開發人員在開發v2時,沒有更改v1的代碼,或者說新功能不會影響到老功能
二、測試用例的設計方法
這些設計方法都是針對【黑盒測試】的
2.1 基于需求的設計方法
- 根據需求來設計測試用例:設計出來的測試用例只是大概的,測試出來的軟件也是不完善的。但不可以沒有,因為它相當于是測試軟件的思路,如果直接用什么等價類、邊界值這種具體設計測試用例的方法,只會讓人覺得很沒有邏輯
2.2 等價類
- 分類:等價類主要分為【有效等價類】和【無效等價類】
- 有效等價類:滿足用戶需求的數據集合,使用這些數據,程序不會報錯
- 無效等價類:不滿足用戶需求的數據集合,使用這些數據,程序會報錯
- 如何通過等價類設計測試用例:
- 充分理解需求
- 將需求劃分為【有效等價類】和【無效等價類】
- 分別從【有效等價類】和【無效等價類】中抽取一個測試用例進行測試,只要被抽取的那個測試用例能夠通過,則認為所代表的等價類測試通過
- 理解:吃東西我們只要吃一口,就可以判斷這道菜好不好吃了。此時,那一口就是被提出來的測試用例,整道菜就是該測試用例代表的等價類
- 組合有效等價類和無效等價類
- 組合規則:
- 有效等價類:一條測試用例盡可能的覆蓋所有有效等價類
- 無效等價類:一條無效等價類與其他的有效等價類
- 組合規則:
- 好處:可以用較少的測試用例達到盡量多的功能覆蓋,解決了不能窮舉測試的問題
- 案例:
2.3 邊界值
- 場景:因為邊界情況很容易出bug,所以我們要多測試
- 上點、離點、內點:
- 上點:對于開區間、閉區間、半開半閉區間來說,上點都是邊界上的點
- 離點:對于開區間、閉區間、半開半閉區間來說,離點都是邊界內的點
- 內點:邊界左右的一個點,如果是閉區間,離點是范圍外的點;如果是開區間,離點就是范圍內的點
- 使用邊界值法設計測試用例:
- 充分理解需求
- 找上點、內點、離點
- 針對上面這三點,結合等價類法去設計測試用例
- 案例:
2.4 錯誤猜測法
- 什么是“錯誤猜測法”:這個方法基本靠測試經驗,測試人員根據經驗猜測大概哪種情況下容易出錯
- 缺點:難以系統化,并且過度依賴個人能力
2.6 場景設計法
- 如何利用場景設計法設計測試用例:
- 定位主事件流:主事件流就是用戶經常操作的步驟、行為,是個大模塊
- 定位次事件流:主事件流里面,大都都會有很多意外
- 將上述兩個事件流串起來形成場景:此時一個場景就是一個測試用例
- 案例:
2.7 因果圖
-
為什么會有因果法:輸入的數據也是有邏輯關系的,如輸入的兩個條件必須要同時滿足才能通過測試,我們可以根據這個邏輯,去設計測試用例
-
因果圖VS判定表法:因為因果圖最終會轉為判定表,所以這里干脆從【判定表】的部分講,跳過中間部分,所以實際我們要學的其實是【判定表法】
-
邏輯關系種類:
- 恒等:條件為真,結果一定為真;條件為假,結果一定為假
- 與:條件全為真,結果才為真
- 或:條件全為假,結果才為假
- 非:條件為假,結果才為真
-
如何根據判定表法設計測試用例:
- 充分理解需求
- 分析所有可能的輸入和輸出
- 找出輸入和輸出的對應關系
- 判定表
- 把判定表對應到每一個測試用例上
-
案例:
-
缺陷:如果輸入和輸出十分復雜,制作判定表就十分麻煩,此時我們可以借助【正交表法】進行優化
2.5 正交排列
-
名詞解析
-
正交表性質:
-
如何根據正交表法設計測試用例:通常是需要工具輔助我們生成一個正交表
- 確定因素(變量)
- 確定因素取值(水平)
- 通過工具生成正交表
- 將正交表轉換成測試用例
- 補充正交表
-
案例:
三、綜合:根據某個場景去設計測試用例(萬能公式)
- 設計思路:實際測試,我們不會專門去使用上面那些設計方法,而是使用【萬能公式】
- 萬能公式:功能、界面、易用性、兼容性、安全性、性能、網絡
- 針對一個【物體】進行設計:
- 功能:這個物體經常被用來干什么
- 界面:物體的形狀、顏色、大小……
- 易用性:物體的設計符合人體工學
- 兼容性:該物體除了本質功能,還可以做哪些事情
- 安全性:物體不能對人的健康有損害
- 性能:承受能力,如抗壓力、耐熱力、耐寒力等
- 針對一個【軟件】進行設計:
-
功能:軟件的基礎功能(本職功能)是什么
-
界面:界面的圖片布局、圖片大小、按鈕顏色、文字字體……
-
易用性:軟件設計符合大眾操作習慣,能讓人操作流暢
- 比如如果報警一般是紅色日志,綠色一般表示通過,黃色則一般表示警告
-
兼容性:軟件可以在不同的平臺去部署、運行
- 兼容對軟件十分重要,因為不同的用戶會用不同的設備去使用該軟件
- 考慮到不同的設備(IOS、Android、PC)、以及對應的不同的版本(比如瀏覽器的版本、操作系統的版本……)
- 蘋果手機和蘋果電腦的操作系統就是IOS,PC主要指電腦端,電腦的操作系統有Windows、Linux、Mac
- 因為測試兼容多是重復性操作,所以我們可以用【自動化】來幫助我們提高測試的效率
-
安全性:使用功能時,要防止黑客攻擊,沒有內存泄漏、SQL注入、xss漏洞等問題
- xss漏洞:如果在輸入框輸入< script>代碼< /script>,如果存在xss漏洞,程序就會執行里面的代碼,如果代碼涉及金錢,就會十分危險。如果沒有,則是正常顯示這段話
- SQL注入:主要是字符串拼接問題,如數據庫代碼是select * from list where id = 10 or 1 = 1, 但是輸入框輸入的是xxx or 1 = 1,此時會搜出全部的數據
-
性能:吞吐量(軟件能夠同時間承載多少個用戶訪問)、響應時間(軟件渲染頁面所需的時間)……
-
網絡:在不同網速下能否正常運行
-
- 針對一個【物體】進行設計:
- 設計水杯的測試用例:利用萬能公式有邏輯地求解,而不是想到什么測試點就說什么,每個部分至少能說出3,4個點
- 注意:如果是大需求,就把其拆為小需求求解:如果是小需求直接用萬能公式
- 功能:能泡茶、能加熱水、能保溫、容量為500ml……
- 兼容:能裝酒、能裝化學物質、能裝飲料……
- 易用性:便于攜帶、拿著舒服符合人體工學、水杯重量適中……
- 安全:水杯的材質不會與水發生化學反應,從而產生有毒物質、杯蓋足夠緊,加熱水時不會漏液……
- 界面:水杯上的圖案美觀、圖案不會褪色、容量刻度線明顯……
- 性能:防摔、防爆、保溫效果好……
- 注意:如果是大需求,就把其拆為小需求求解:如果是小需求直接用萬能公式
- 設計【微信發布朋友圈】的測試用例:
- 功能:能發送文本(再細分:能發送純漢字、能發送純英文、能結合、如果發送的文本過長超過了100字符,會有提示……)、能發送圖片(支持發送9張及以內的圖片、如果已經選中了9張圖片不能再選中第10張、圖片順序能夠調整……)、能發送視頻、能進行分享操作……
- 兼容:對于平板來說,無論是IOS還是Android都能發送(包含了各個版本)、對于PC電腦來說Windows和Mac不能發送朋友圈……
- 易用性:軟件操作流暢、軟件操作簡單
- 安全:會自動過濾敏感詞、防止SQL注入、防止xss漏洞、防止黑客攻擊……
- 界面:朋友圈頁面布局好看、小部件符合大眾習慣……
- 性能:圖片渲染時間短、支持大量用戶同時發送朋友圈……
四、如何使用Fidder操作網絡(測網速)
- 概念:Fidder和Charles可以用來控制網絡,實現測網速等操作
- 方法:
五、測試接口
- 測試方式:可以使用代碼測試,也可以使用可視化工具postman測試
- 測試方向:
- 針對接口方法測試:post、get、put、delete……(注,get方法里不能用post)
- 針對參數測試:選取符合要求和不符合要求的參數,分別進行測試,如參數的個數、參數為空……
- 針對業務測試:根據返回結果,判斷業務是否正確