測試用例 [軟件測試 基礎]

目錄

測試用例

1. 概念

1.1 什么是測試用例

1.2 什么是要素

1.3 為什么需要測試用例

2. 設計測試用例的萬能公式

2.1 常規思維 + 逆向思維 + 發散性思維

2.2 萬能公式

3. 設計測試用例的方法

3.1 基于需求的設計方法?

3.2 具體的設計方法

3.3 更多用例練習


測試用例

1. 概念

1.1 什么是測試用例

// 測試用例 (Test Case) 是為了實施測試而被測試的系統提供的一組集合, 這組集合包含: 測試環境, 測試步驟, 測試數據, 預期結果等要素

1.2 什么是要素

// 我們在編寫測試用例的時候, 每個用例需要給出這些要素對應的信息

// 要素包括: 用例編號, 標題, 測試方式, 功能模塊, 重要性, 測試前提, 測試環境, 測試數據, 測試步驟, 期望結果等

1.3 為什么需要測試用例

1.3.1 測試中可能會遇到很多問題, 測試用例的出現急速解決這些問題, 例如:

// 不知道是否較全面的測試了所有功能

// 測試的覆蓋率無法衡量

// 對新版本的重復測試很難實施

// 存在大量冗余測試影響測試效率

1.3.2 測試用例還可以避免測試人員被迫背鍋?

2. 設計測試用例的萬能公式

// 例如: 現在有一款產品, 要求我們對 "門鎖" 設計測試用例

// 測試用例的設計, 最重要的一點就是保證功能是正確的

2.1 常規思維 + 逆向思維 + 發散性思維

// 正確設計測試用例的思想:?常規思維 + 逆向思維 + 發散性思維

// 設計測試用例的原則二 :

2.1.1 測試用例的編寫不僅應當根據有效和預料到的輸入情況, 而且也應該根據無效和未預料到的輸入情況

2.1.2 檢查程序是否 "未做其應該做的" 僅是成功的一半, 測試的另一半是檢查程序是否 "做了其不應該做的"

2.1.3 計劃測試工作時不應默許假定不會發生錯誤

2.2 萬能公式

// 設計測試用例的萬能公式:

// 功能測試?+ 界面測試 + 性能測試 + 兼容性測試 + 易用性測試 + 安全測試

2.2.1 功能測試

// 功能測試時一個試圖發現程序與其外部規則說明之間存在不一致的過程

// 從產品功能角度出發, 驗證功能是否是正確的

2.2.2 界面測試

// 對軟件界面上所有的內容都需要進行測試

// 界面涉及到的內容: 元素 (大小, 顏色, 形狀, 材質)

// 要求: 整體界面測試界面的實現與設計圖要求一致, 界面元素測試

2.2.3 性能測試

// 性能測試和功能測試的區別是: 功能測試檢查軟件是否做了, 性能測試測試軟件做的好不好

// 通常為一些極端的情況驗證功能是否是正常的

2.2.4 兼容性測試

// 軟件是部署在硬件系統之上, 并依賴所需的軟件環境. 軟件是否能夠在不同環境下正確運行需要測試人員進行驗證

// 選取標準: 優先選擇使用當前產品 top 級別的機型進行測試; 選擇主流的瀏覽器/機型進行測試

2.2.5 易用性測試

// 易用性測試的標準是檢查產品是否具備簡單易上手的屬性

2.2.6 安全測試

// 安全測試和性能測試一樣都是比較大的領域

// 常見的安全問題: 隱私數據明文顯示; 參數未強校驗導致 SQL 注入; 越權: 普通用戶也可以執行管理員權限的操作

// 除了萬能公式外, 還有一個比較常用的測試類型: 弱網測試, 安裝卸載測試

// 弱網測試: 主要是為了盡可能保證用戶體驗

// 借助抓包工具來模擬實現弱網測試 (fiddle, charles)

// 安裝卸載測試: 針對需要部署的軟件, 除了軟件功能外, 我們還需要關注軟件的能夠成功完成安裝和卸載

// 安裝: 安裝包是否可以安裝, 卸載之后是否可以繼續安裝, 重復安裝...

// 卸載: 安裝完成后卸載, 安裝一半后卸載, 卸載一次后繼續安裝繼續卸載

// 測試接口: URL, 請求參數, 請求方法, 響應

3. 設計測試用例的方法

// 以下都是針對黑盒測試用例設計的測試方法

3.1 基于需求的設計方法?

// 分為: 功能相關和非功能相關

// 基于新需求的設計方法也是總的設計測試用例的方法, 在工作中, 我們需要參考需求文檔/產品規格說明書來設計測試用例

// 測試人員街道需求之后, 要對需求進行分析和驗證, 從合理的需求中進一步分析細化需求, 從細化的需求中找到測試點.?

3.1.1 明確需求中的功能點

3.1.2 結合萬能公式設計測試點

3.2 具體的設計方法

3.2.1 等價類

// 依據需求將輸入劃分為若干個等價類, 從等價類中選出一個測試用例, 如果這個測試用例測試通過, 則認為所代表的等價類測試通過, 這樣就可以用較少的測試用例達到盡量多的功能覆蓋, 解決了不能窮舉測試的問題

// 等價類分為: 有效等價類; 無效等價類

// 有效等價類: 滿足用戶需求的數據集合

// 無效等價類: 不滿足用戶需求的數據集合

// 如何通過等價類的方法設計測試用例: 1. 充分理解需求; 2. 劃分出有效等價類和無效等價類; 3. 從有效等價類中抽取一個測試用例測試, 從無效等價類中抽取一個進行測試; 4. 組合有效等價類, 組合無效等價類

3.2.2 邊界值

// 邊界值包括: 邊界值 + 次邊界值

// 邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法, 通常邊界值分析法是作為對等價類劃分法的補充

// 主要測試的點: 上點, 離點, 內點

// 上點: 邊界上的點, 不管是開區間, 閉區間, 還是半開半閉

// 內點: 邊界內的點, 不管是開區間, 閉區間, 還是半開半閉

// 離點: 邊界左右的一個點, 如果是閉區間, 離點就是范圍外的點, 如果是開區間, 離點就是范圍內的點

// 設計測試用例的步驟: 1. 充分理解需求; 2. 找離點, 內點, 上點; 3. 針對離點, 內點, 上點設計測試用例

3.2.3 正交法

// 正交法的目的是為了減少用例數目, 用盡量少的用例覆蓋輸入的兩兩組合

// 可以使用 pairs 設計工具來設計正交表

// 步驟: 1) 在微軟自帶的 Excel 中輸入 因素 和 水平; 2) 復制到 allpairs.exe 同級目錄下的 .txt 文檔中直接保存; 3) 在黑窗口輸入命令 allpairs.exe 空格 .txt 文檔 > 新命名一個用來保存正交表的 .txt 文檔 回車

// 在根據生成好的正交表來編寫測試用例的同時也要繼續補全重要的測試用例

// allpairs 工具生成的正交表和實際的正交表會有一定的出入, 但是不影響整體的情況

3.2.4 判定表法

// 通過具體的方法能夠將測試用例設計的更急完整和規范, 通過判定表法我們可以非常容易的編寫測試用例 (思路清晰)

// 判定表是一種表達邏輯判斷的工具

// 根據判定表法設計測試用例的步驟: 1) 確認需求中輸入條件和輸出條件; 2) 找出輸入條件和輸出條件之間的關系; 3) 畫判定表; 4) 根據判定表編寫測試用例

3.2.5 場景法

// 場景法一般包含基本流 (基本事件流) 和備用流 (備用事件流)

// 現在的軟件幾乎都是用事件觸發來控制流程的, 實踐觸發時的情景形成了場景, 而同一事件不同的觸發順序和處理結果就形成了事件流

// 通過運用場景來對系統的功能點或業務流程的描述, 從而提高測試效果的一種方法

3.2.6 錯誤猜測法

// 對被測試軟件的需求理解以及設計的理解, 過往經驗以及個人直覺, 推測出軟件可能存在的缺陷, 從而針對性地設計測試用例的方法

// 強調的是對測試軟件的需求理解以及設計實現的細節把握, 還有個人的經驗和直覺

// 和目前流行的 "探索式測試方法" 的基本思想一致, 這類方法在敏捷開發模式下的投入產出比很高, 被廣泛應用于測試

3.3 更多用例練習

3.3.1 命令行程序

// 關于 Windows, Linux 系統命令設計測試用例

3.3.2 web 程序

// 使用 postman 進行測試

// postman 具體安裝及使用點擊下面鏈接跳轉

//?postman 安裝及使用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77379.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jupyter notebook定制字體

一、生成配置文件 運行Anaconda Powershell Prompt終端,輸入下面一行代碼: jupyter notebook --generate-config 將生成文件“C:\Users\XXX\.jupyter\jupyter_notebook_config.py”,XXX為計算機賬戶名字。 二、修改配置文件 c.NotebookAp…

miniconda安裝R語言圖文教程(詳細步驟)

本篇教程介紹,如何在Windows使用miniconda安裝R語言。 一、創建1個conda 虛擬環境 # 創建虛擬環境 conda create -n r_env # 激活虛擬環境 conda activate r_env二、安裝 R 語言 conda install -c r r-ggplot2三、運行測試 檢查安裝: 輸入 R 進入 R 的交互式命令行,檢查是…

【day1】AI軟件測試學習筆記

以下為整理的 AI軟件測試學習筆記,涵蓋性能測試工具鏈、AI大模型應用及開發實踐,分為四大模塊: 一、性能測試工具鏈與數據分析 1. 工具鏈整合效果 JMeter InfluxDB Grafana JMeter壓測數據存儲至云端InfluxDB,實現分布式壓測和…

WPF 資源加載問題:真是 XAML 的鍋嗎?

你的觀察很敏銳!確實,在 WPF 項目中,.cs 文件主要負責邏輯實現,而資源加載的問題通常跟 XAML(以及它背后的 .csproj 配置)關系更大。我會圍繞這個觀點,用 CSDN 博客風格詳細解釋一下 .cs、XAML …

C++17模板編程與if constexpr深度解析

一、原理深化 1.1 模板編程 1.1.1 編譯器如何處理模板(補充) 模板的實例化機制存在兩種模式: 隱式實例化:編譯器在遇到模板具體使用時自動生成代碼,可能導致多翻譯單元重復實例化,增加編譯時間。顯式實…

408 計算機網絡 知識點記憶(6)

前言 本文基于王道考研課程與湖科大計算機網絡課程教學內容,系統梳理核心知識記憶點和框架,既為個人復習沉淀思考,亦希望能與同行者互助共進。(PS:后續將持續迭代優化細節) 往期內容 408 計算機網絡 知識…

MySQL學習筆記十四

第十六章創建高級聯結 16.1使用表別名 輸入: SELECT CONCAT(vend_name,(,RTRIM(vend_country),)) AS vend_title FROM vendors ORDER BY vend_name; 輸出: 輸入: SELECT cust_name, cust_contact FROM customers AS c, orders AS o, or…

Spring MVC 框架 的核心概念、組件關系及流程的詳細說明,并附表格總結

以下是 Spring MVC 框架 的核心概念、組件關系及流程的詳細說明,并附表格總結: 1. 核心理念 Spring MVC 是基于 MVC(Model-View-Controller)設計模式 的 Web 框架,其核心思想是 解耦: Model:數…

Android里藍牙使用流程以及問題詳解

一、基礎流程 請簡述 Android 藍牙開發的基本流程 1. 權限處理:動態申請藍牙和定位權限(注意Android 12新權限) 2. 初始化藍牙適配器:通過BluetoothManager獲取BluetoothAdapter 3. 設備發現:- 注冊BroadcastReceive…

OpenWrt 上安裝Tailscale

在 OpenWrt 上安裝 Tailscale 非常簡單,主要步驟如下: 1. 確保 OpenWrt 設備可聯網 首先,確保你的 OpenWrt 設備已經聯網,可以訪問外網,并且 SSH 進入你的路由器(通常是 192.168.1.1)&#xff…

藍橋杯刷題總結 + 應賽技巧

當各位小伙伴們看到這篇文章的時候想必藍橋杯也快開賽了,那么本篇文章博主就來總結一下一些藍橋杯的應賽技巧,那么依舊先來走個流程 那么接下來我們分成幾個板塊進行總結 首先是一些基本語法 編程語言的基本語法 首先是數組,在存數據的時候…

TCP重傳率高與傳輸延遲問題

目錄標題 排查步驟:TCP重傳率高與傳輸延遲問題v1.0通過 rate(node_netstat_Tcp_RetransSegs[3m]) 排查 TCP 重傳問題的步驟1. **指標含義與初步分析**2. **關聯指標排查**3. **定位具體問題源**4. **解決方案**5. **驗證與監控** v2.0一、基礎檢查二、網絡層分析三、…

【LeetCode 熱題100】73:矩陣置零(詳細解析)(Go語言版)

🚀 力扣熱題 73:矩陣置零(詳解 多種解法) 📌 題目描述 給定一個 m x n 的整數矩陣 matrix,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請你 原地 使用常量空間解決。 &#x1f3a…

組播網絡構建:IGMP、PIM 原理及應用實踐

IP組播基礎 組播基本架構 組播IP地址 一個組播IP地址并不是表示具體的某臺主機,而是一組主機的集合,主機聲明加入某組播組即標識自己需要接收目的地址為該組播地址的數據IP組播常見模型分為ASM模型和SSM模型ASM:成員接收任意源組播數據&…

Unity UGUI使用手冊

概述 UGUI(Unity Graphical User Interface) :Unity 圖像用戶界面 在游戲開發中,我們經常需要搭建一些圖形用戶界面。Unity內置的UGUI可以幫助開發者可視化地拼接界面,提高開發效率。UGUI提供不同樣式的UI組件,并且封裝了對應功能的API&am…

Python web程序在服務器上面部署詳細步驟

在服務器上部署Python web程序通常涉及以下步驟: 設置服務器環境: 選擇合適的服務器,如AWS EC2、DigitalOcean Droplet等。配置服務器操作系統,例如Ubuntu、CentOS等。安裝必要的軟件,如Python、pip、git等。 準備Python web程序…

條件生成對抗網絡(Conditional GAN, CGAN)原理及實現(pytorch版)

CGAN 原理及實現 一、CGAN 原理1.1 基本概念1.2 與傳統GAN的區別1.3 目標函數1.4 損失函數1.5 條件信息的融合方式1.6 與其他GAN變體的對比1.7 CGAN的應用1.8 改進與變體 二、CGAN 實現2.1 導包2.2 數據加載和處理2.3 構建生成器2.4 構建判別器2.5 訓練和保存模型2.6 繪制訓練損…

Go語言比較遞歸和循環執行效率

一、概念 1.遞歸 遞歸是指一個函數在其定義中直接或間接調用自身的編程方法 。簡單來說,就是函數自己調用自己。遞歸主要用于將復雜的問題分解為較小的、相同類型的子問題,通過不斷縮小問題的規模,直到遇到一個最簡單、最基礎的情況&#x…

keepalived高可用介紹

keepalived 是 Linux 一個輕量級的高可用解決方案,提供了心跳檢測和資源接管、檢測集群中的系統服務,在集群節點間轉移共享IP 地址的所有者等。 工作原理 keepalived 通過 VRRP(virtual router redundancy protocol)虛擬路由冗余…

數據分享:汽車測評數據

說明:如需數據可以直接到文章最后關注獲取。 1.數據背景 Car Evaluation汽車測評數據集是一個經典的機器學習數據集,最初由 Marko Bohanec 和 Blaz Zupan 創建,并在 1997 年發表于論文 "Classifier learning from examples: Common …