【軟件測試】bug 篇

本章思維導圖:

1.? 軟件測試的生命周期

????????軟件測試貫穿于整個軟件的生命周期

流程階段需求分析測試計劃測試設計/開發測試執行測試評估上線運行維護
具體工作內容1. 閱讀需求文檔
2. 標記可測試需求
3. 確定測試類型
1. 制定測試范圍
2. 選擇測試工具
3. 分配資源
1. 編寫測試用例
2. 準備測試數據
3. 開發自動化腳本
1. 執行測試用例
2. 記錄結果
3. 提交缺陷
1. 統計缺陷
2. 計算覆蓋率
3. 編寫報告
1. 部署軟件
2. 驗證功能
3. 監控運行
1. 收集反饋
2. 修復缺陷
3. 性能優化

其中,上線流程并不是一步就完成的,而是分為多步進行,?環境分為線上環境線下環境

  • 線下環境:開發和測試人員測試使用?
  • 線上環境:用戶使用

線下環境測試完成后,就需要進行上線,上線又分為 沙盒測試、小流量、全流量、全線上

  • 沙盒測試:企業內部的員工使用
  • 小流量:只有一部分的用戶能夠使用
  • 全流量:大部分用戶能夠使用
  • 全線上:所有線上的用戶都能夠使用
測試/發布類型沙盒測試 (Sandbox Testing)小流量 (Canary Release)全流量 (Full Release)全線上 (Production)
定義在隔離的測試環境中模擬生產環境進行測試將新版本先發布給少量真實用戶進行驗證新版本對所有用戶開放,但尚未完全取代舊版本新版本已完全取代舊版本,成為線上唯一版本
具體工作內容1. 搭建與生產隔離的測試環境
2. 模擬用戶請求和數據
3. 驗證核心功能與異常場景
1. 選擇小部分用戶或流量(如1%-5%)
2. 監控用戶行為和數據指標
3. 快速回滾發現問題
1. 逐步擴大用戶覆蓋范圍(如50%-100%)
2. 持續監控系統穩定性
3. 與舊版本并行運行驗證
1. 完全下線舊版本
2. 全量用戶使用新版本
3. 長期監控和優化
目的提前發現功能或性能問題,避免影響真實用戶降低風險,通過真實用戶反饋驗證版本穩定性確保新版本在大規模流量下的穩定性完成版本迭代,進入穩定運維階段
風險等級無用戶影響低風險(影響范圍可控)中風險(需快速響應問題)高風險(需確保100%穩定性)
適用場景新功能開發完成后內部驗證重大更新或架構改動前的驗證確認小流量無問題后的全面推廣最終穩定版本的長期運行

2.? Bug

2.1? bug 的概念

「Debug」的由來

????????計算機史上第一個著名的“Bug”誕生于1947年9月9日,哈佛大學的Grace Hopper團隊在調試馬克II計算機時,發現一只飛蛾卡死在繼電器中導致機器故障。他們幽默地將這只蛾子貼在日志本上,標注"First actual case of bug being found",從此"bug"成為程序缺陷的代名詞,"debug"則指排除故障的過程。這個真實的小故事不僅創造了計算機領域的經典術語,更生動展現了工程師們解決問題的智慧——再復雜的技術問題,往往源于最意想不到的細節。如今保存在史密森尼博物館的那只飛蛾,成為了計算機發展史上最有趣的文物之一。

定義:在軟件測試中,Bug(缺陷)?是指軟件系統中存在的任何不符合預期行為或需求的問題。Bug 可能導致功能失效、性能下降、安全漏洞或用戶體驗不佳。

簡單理解:任何與需求文檔、設計規范或用戶期望不一致的問題,均可稱為 Bug。

就比如說當需要一個列表功能,其中有幾千上萬個選項
但是需要用戶一個一個往下翻才能找到想要的,而不能直接檢索關鍵字來確定范圍

此時該功能和用過需求有了沖突,此時就可以提一個 bug

當我們進行測試的時候,我們不需要過分關注程序里的代碼是如何寫的,重點關注的是該程序的輸入輸出是否符合我們的預期

例如一個排序程序,里面的實現方式可能是冒泡排序,快速排序,歸并排序........

不用管,只需要看無序數組經過程序運行后是否變得有序就行

2.2? 描述 bug 的要素

? ? ? ? 為什么描述 bug 還要有要求?
? ? ? ? 在心理學上說,在編寫文檔是,人們想要表達的和實際書寫的文檔往往會南轅北轍。而不清楚,不確定的描述更是可能誤導開發人員,倒是溝通低效,工作質量低。因此,一個清晰、完整的 Bug 描述能幫助開發人員快速定位修復問題。

描述 bug 的基本要素:

問題標題、問題出現的版本、問題出現的環境、問題出現的步驟、預期結果、實際結果

拿瀏覽器打開同一個網址來舉例:

同一個網址,某些瀏覽器打開會出現頁面顯示錯誤,會出現圖片錯位的情況,以這個 bug 來描述

問題標題:瀏覽器兼容性問題導致頁面圖片錯位

問題出現的版本:網站版本 v2.1.0(舉例)

問題出現的環境:Safari 16.6 / Edge 117(異常環境)??Chrome 118 / Firefox 118 (正常環境)

問題出現的步驟:

  1. 使用?Safari 16.6?或?Edge 117?瀏覽器。

  2. 訪問網址:https://example.com/product/123

  3. 滾動頁面至「產品詳情」模塊。

預期結果:圖片應與文字描述對齊,布局符合設計稿

實際結果:圖片向右偏移?50px,與文字重疊

2.3??bug 級別

級別類型描述示例
Critical嚴重程度 (Severity)導致系統崩潰、數據丟失或核心功能完全不可用支付失敗但扣款成功、數據庫數據損壞
Major嚴重程度 (Severity)重要功能異常,但系統可降級運行商品搜索返回錯誤結果、圖片錯位影響操作
Minor嚴重程度 (Severity)非核心功能問題,用戶體驗受損字體顏色不符設計稿、次要按鈕無響應
Trivial嚴重程度 (Severity)微小瑕疵,不影響功能控制臺無關警告、拼寫錯誤
P1優先級 (Priority)必須立即修復(阻塞開發/上線)所有用戶無法登錄、關鍵業務流程中斷
P2優先級 (Priority)高優先級,需在當前版本修復部分用戶遭遇數據展示錯誤(如瀏覽器兼容性問題)
P3優先級 (Priority)可延期至后續版本修復低頻率UI錯位,不影響核心功能
P4優先級 (Priority)修復成本高于收益,可能永不修復IE11瀏覽器下的邊緣樣式問題

2.4? bug 的生命周期

狀態描述常見操作
New測試人員新發現的缺陷,尚未分配提交Bug報告
Assigned缺陷已分配給開發人員,等待修復開發認領任務
In Progress開發人員正在修復中代碼修改、本地測試
Fixed開發完成并部署到測試環境,等待驗證標記為“已修復”
Verified測試人員確認缺陷已解決回歸測試通過
Closed缺陷完全關閉,流程結束歸檔至歷史記錄
Rejected開發認為不是缺陷(如需求理解錯誤)需產品經理仲裁
Deferred暫不修復(如低優先級、下個版本處理)記錄延期原因
Reopened驗證時問題復現,重新激活(從Verified/Fixed回到Assigned)

重新分配開發

流程圖:

2.5? 與開發發生爭執應該怎么做

1) 先檢查自己,是否 bug 描述不清楚

2) 站在用戶的角度考慮并拋出問題 ---- 功能正常只是測試的一部分,還要考慮用戶的感受

3)?bug 定級需要有理有據 ---- bug 級別描述文檔

4)?提高業務水平,做到不僅能夠提出問題,最好也能夠提出解決方案

舉例:雙十一活動

測試新手:雙十一活動時間邊界值不符合預期
測試大牛:? 雙十一活動時間邊界值不符合預期? 修改建議:.......

注意,不要以命令式的口吻去告訴開發人員,術業有專攻,建議只是建議

5)??bug 評審

如果確實是 bug ,但不能友好溝通,就召開 bug 評審

Bug評審是軟件開發過程中由跨職能團隊共同評估、分類和處理缺陷的關鍵環節,其核心目標是高效分配資源并確保產品質量。

bug 評審需要三個代表參加:測試代表、開發代表、產品代表

bug 評審主要解決兩個問題

  • 決定如何處理 bug
  • 分析缺陷產生的原因,并找出預防的對策

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

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

相關文章

「Unity3D」圖片導入選項取消Read/Write,就無法正確顯示導入大小,以及Addressable打包無法正確顯示的問題

如果在Edit -> Project Settings -> Editor中的“Load texture data on demand”勾選,就會讓圖片導入設置中,不勾選Read/Write,就無法正確顯示紋理的大小數字。 更進一步的問題是,使用Addressable打包的時候, 如…

《MySQL從入門到精通》

文章目錄 《MySQL從入門到精通》1. 基礎-SQL通用語法及分類2. 基礎-SQL-DDL-數據庫操作3. 基礎-SQL-DDL-表操作-創建&查詢4. 基礎-SQL-DDL-數據類型及案例4.1 數值類型4.2 字符串類型4.3 時間和日期類型 5. 基礎-SQL-DDL-表操作-修改&刪除5.1 DDL-表操作-修改5.2 DDL-表…

Vccaux_IO在DDR3接口中的作用

一、Vccaux_IO在DDR3接口中的作用 1.vccaux_io通常為FPGA的IO bank的輔助電源,用于支持特定電壓的IO標準 2.在DDR3接口中,FPGA的IO bank需要DDR3芯片的電壓(1.5v/1.35v)匹配 3.Vccaux_IO用于為FPGA的DDR3接口I/O Bank供電,其電壓值、噪聲和穩…

深入理解Apache Kafka

引言 在現代分布式系統架構中,中間件扮演著至關重要的角色,它作為系統各組件之間的橋梁,負責處理數據傳遞、消息通信、負載均衡等關鍵任務。在眾多中間件解決方案中,Apache Kafka憑借其高吞吐量、低延遲和可擴展性,已…

【NLP】 21. Transformer整體流程概述 Encoder 與 Decoder架構對比

1. Transformer 整體流程概述 Transformer 模型的整個處理流程可以概括為從自注意力(Self-Attention)到多頭注意力,再加上殘差連接、層歸一化、堆疊多層的結構。其核心思想是利用注意力機制對輸入進行并行計算,從而避免傳統 RNN …

路由器端口映射的意思、使用場景、及內網ip讓公網訪問常見問題和解決方法

一、端口映射是什么意思 端口映射是將內網主機的IP地址端口映射到公網中,內部機器提供相應的互聯網服務。當異地用戶訪問該這個端口時,會自動將請求映射到對應局域網內部的機器上。 二、端口映射常見使用場景 1,遠程訪問需求。當有…

GEO全域優化白皮書:盈達科技如何打造AI生態中的認知護城河

副標題:讓內容被AI優先引用,占領生成式引擎的“主屏入口” 一、GEO:生成式引擎時代的內容占位權之戰 隨著ChatGPT、Kimi、DeepSeek等生成式AI快速成為信息獲取的主流方式,搜索邏輯正在根本性改變:從“網頁排名”轉向“…

如何用DeepSeek大模型提升MySQL DBA工作效率?實戰案例解析

如何用DeepSeek大模型提升MySQL DBA工作效率?實戰案例解析 MySQL DBA(數據庫管理員)的工作涉及數據庫監控、SQL優化、故障排查、備份恢復等復雜任務,傳統方式依賴手動操作和經驗判斷,效率較低。而DeepSeek大模型可以結…

系統設計思維的討論

我們經常說自己熟悉了spring,能夠搭建起一個項目基本框架,并且在此之上進行開發,用戶or客戶提出需求碰到不會的百度找找就可以實現。干個四五年下一份工作就去面試架構師了,運氣好一些可能在中小公司真的找到一份架構師、技術負責…

項目部署-(二)Linux下SpringBoot項目自動部署

一、項目部署架構 二、項目部署環境 192.168.138.100(服務器A): -Nginx :部署前端項目、配置反向代理 -MySQL:主從復制結構中的主庫 192.168.138.101(服務器B): -JDK:運行Java項目 -Git:版本控制工具 -Maven:項目構建…

【LeetCode 熱題 100】哈希 系列

📁1. 兩數之和 本題就是將通過兩層遍歷優化而成的,為什么需要兩層遍歷,因為遍歷 i 位置時,不知道i-1之前的元素是多少,如果我們知道了,就可以通過兩數相加和target比較即可。 因為本題要求返回下標&#xf…

【Kubernetes基礎】--查閱筆記1

目錄 Kubernetes 是什么為什么要用 KubernetesKubernetes 概念MasterNodePodLabelReplication ControllerDeploymentHorizontal Pod AutoscalerStatefulSetService服務發現機制 JobVolumePersistent VolumeNamespaceConfigmap Kubernetes 是什么 Kubernetes是一個開放的開發平…

卷積神經網絡CNN到底在卷些什么?

來源: 卷積神經網絡(CNN)到底卷了啥?8分鐘帶你快速了解!_嗶哩嗶哩_bilibili卷積神經網絡(CNN)到底卷了啥?8分鐘帶你快速了解!共計2條視頻,包括:卷…

Axios 的 POST 請求:QS 處理數據的奧秘與使用場景解析

在現代前端開發中,Axios 已經成為了進行 HTTP 請求的首選庫之一,它的簡潔易用和強大功能深受開發者喜愛。當使用 Axios 進行 POST 請求時,我們常常會遇到一個問題:是否需要使用 QS 庫來處理請求數據?什么時候又可以不用…

java面試題帶答案2025最新整理

文章目錄 一、java面試題集合框架1. 請簡要介紹 Java 集合框架的體系結構2. ArrayList 和 LinkedList 的區別是什么3. HashMap 的工作原理是什么,它在 JDK 7 和 JDK 8 中有哪些不同4. 如何解決 HashMap 的線程安全問題5. TreeSet 是如何保證元素有序的 二、java面試…

4.B-樹

一、常見的查找方式 順序查找 O(N) 二分查找 O(logN)(要求有序和隨機訪問) 二叉搜索樹 O(N) 平衡二叉搜索樹(AVL樹和紅黑樹) O(logN) 哈希 O(1) 考慮效率和要求而言,正常選用 平衡二叉搜索樹 和 哈希 作為查找方式。 但這兩種結構適合用于…

CTF--shell

一、原題 (1)提示: $poc"a#s#s#e#r#t";$poc_1explode("#",$poc);$poc_2$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET[s]) (2)原網頁:一片空白什么都…

基于51單片機的正負5V數字電壓表( proteus仿真+程序+設計報告+講解視頻)

基于51單片機的正負5V數字電壓表( proteus仿真程序設計報告講解視頻) 仿真圖proteus7.8及以上 程序編譯器:keil 4/keil 5 編程語言:C語言 設計編號:S0101 1. 主要功能: 設計一個基于51單片機數字電壓表 1、能夠…

hive數倉要點總結

1.OLTP和OLAP區別 OLTP(On-Line Transaction Processing)即聯機事務處理,也稱為面向交易的處理過程,其基本特征是前臺接收的用戶數據可以立即傳送到計算中心進行處理,并在很短的時間內給出處理結果,是對用…

【實戰手冊】8000w數據遷移實踐:MySQL到MongoDB的完整解決方案

?? 本文將帶你深入解析大規模數據遷移的實踐方案,從架構設計到代碼實現,手把手教你解決數據遷移過程中的各種挑戰。 ??博主其他匠心之作,強推專欄: 小游戲開發【博主強推 匠心之作 拿來即用無門檻】文章目錄 一、場景引入1. 問題背景2. 場景分析為什么需要消息隊列?為…