【軟件測試學習day1】軟件測試概念

前言

本篇學習,測試相關基礎概念、常見的開發模型測和測試模型,搞懂4個問題:

  1. 什么是需求
  2. 什么是 bug
  3. 什么是測試用例
  4. 開發模型和測試模型

目錄

1. 什么是需求

1.1 為什么要有需求

1.2 測試人員眼里的需求

1.3 如何深入了解需求

2. 測試用例

2.1 什么是測試用例

2.2 為什么要有測試用例

2.3 練習

3. 認識 BUG

4. 軟件生命周期

5. 開發模型

5.1 瀑布模型

5.2 螺旋模型

5.3 增量模型與迭代模型

5.3.1 增量模型

5.3.2 迭代模型

5.4 敏捷模型

6. 測試模型

6.1 ?V?模型

6.2 ?W?模型(雙 V 模型)


1. 什么是需求

用戶需求: 可以簡單理解為甲方提出的需求,如果沒有甲方,那么就是終端用戶使用產品時必須要完成 的任務。該需求一般比較簡略。
軟件需求: 或者叫功能需求,該需求會詳細描述開發人員必須實現的軟件功能。
用戶需求,簡單的來說就是客戶的需求的,如客戶需要一個網站,一個網戰必定有注冊功能。軟件需求,當某部門領導知道這個需求后,會向程序猿提出注冊功能需要實現的細節,如賬號、密碼、確認密碼的實現等。此外,通俗的理解你我皆為用戶,例如一個購物平臺我們需要通過篩選來查找某個物品這就是一個用戶需求,而開發者根據篩選的這個功能進行編碼這就是一個軟件需求。
因此,我們可以粗獷的理解為用戶需求為一句話(例:實現某個功能),軟件需求是一個文檔(詳細的描述用戶需求如何實現),日常工作中我們通常是用軟件需求進行開發/測試。

1.1 為什么要有需求

當程序猿開發一產品或者測試一個產品時,需要拿著軟件需求來進行開發和測試。


1.2 測試人員眼里的需求

對一個大的需求進行子拆分為一些小需求以解決原需求。如一個登錄功能:


1.3 如何深入了解需求

開一個需求評審會議,內容大概有:為什么做這樣一個需求、這個需求能帶來多少收益、軟件需要做成什么樣子。或查詢文檔(需求文檔、技術文檔),亦或者找產品經理了解軟件功能、找開發了解軟件的實現。因此,如何深入了解需求有三點:

  1. 參加需求評審會議
  2. 查詢文檔
  3. 溝通

2. 測試用例

2.1 什么是測試用例

測試用例是一組集合,如:測試環境、測試數據、預期結果、操作步驟等。粗獷的理解為:

  • 測試環境:力扣刷題時會給我們提供一個測試平臺
  • 測試數據:字節輸入測試數據 70%
  • 操作步驟:寫代碼然后提交
  • 預期結果:100% 通過

例如,一個登錄功能,此時:

  • 測試環境:windows 系統 + chrome 瀏覽器 + idea 編譯器
  • 測試數據:賬號 + 密碼
  • 測試步驟:輸入賬號密碼點擊登錄
  • 測試結果:登錄成功

2.2 為什么要有測試用例

測試用例能夠提高測試人員的工作效率,降低測試人員工作的重復性。如一個測試登錄功能,同一個功能多個人去測,當有了測試用例后,假設有 100 個用例,幾個人分別測試這 100 個用例。這樣即可以提高工作效率。

測試用例是建立自動化的基礎,自動化就是使用代碼來實現測試人員解放雙手,用代碼來代替測試人員執行用例。


2.3 練習

一個練習題:設計手機打電話這個功能的測試用例。

此時,大家腦海里肯定有許多想法如:手機號是否為正確格式,測試網絡是否暢通,手機是否有充足話費等等。這樣盲目列出讓人有一種沒有條例毫無思路的感覺,因此可以列出一個集合,如下圖所示:


3. 認識 BUG

史上的第一只 Bug ,真的是因為一只飛蛾意外走入一電腦而引致故障,因此 Bug 從原意為臭蟲引申為程序錯誤。在軟件測試概念中:

  • 當規格說明書存在且正確時,程序與規則之間不匹配則認為是一個錯誤(bug)
  • 當規格說明書沒有提到某些功能,程序沒有實現最終用戶心里需求時則認為是一個軟件錯誤。

以上 bug 容易理解,軟件錯誤可理解為:假設規格說明書中沒有明確密碼隱藏顯示(日常中會默認隱藏顯示),用戶在登錄時發現自己密碼容易被旁人看到,因此向甲方提出訴求,而這就是一個軟件錯誤。


4. 軟件生命周期

簡單理解為:需求分析、計劃、設計、編碼、測試、運行維護。詳細理解:

  • 需求分析:分析需求是否合理,需求是否完整。例如,一個登陸頁面,光有登錄沒有注冊,這就是一個不合理、不完整。
  • 計劃:誰開發、誰測試、開發和測試的周期。
  • 編碼:前后端程序員根據需求開始編寫代碼。
  • 測試:測試人員根據開發者編寫的代碼進行測試,會制定一個測試報告,把測試報告則給上級,上級覺得合適則上線。
  • 運行維護:如果線上有問題,測試人員需要協助開發定位問題、解決問題。

測試報告大致為:


5. 開發模型

5.1 瀑布模型

瀑布模型(Waterfall Model)是一種經典的軟件開發模型,將項目劃分為若干個嚴格按順序執行的階段,每個階段完成后才能進入下一個階段,形如瀑布流水,故得名“瀑布模型”。常見流程為下圖:

  • 需求分析:需求文檔,分析需求是否合理,需求是否完整。
  • 計劃:什么時候開始,什么時候結束
  • 設計:技術文檔(數據庫、實現功能等)、UI視覺稿(簡單理解為精美的頁面)
  • 編碼:前后端程序員編寫代碼
  • 測試:執行測試用例,提交 bug,驗收等。

特點:它是一種線性的路程。

優點:階段清晰,易于管理;文檔驅動,便于溝通;適合需求穩定的項目。

缺點:缺乏靈活性(進入下個階段,很難回頭修改);風險后置;用戶參與度低;不適合需求頻繁改變的項目。


5.2 螺旋模型

螺旋模型(Spiral Model)是一種結合了瀑布模型和快速原型模型特點的軟件開發模型,核心在于通過迭代式開發風險驅動的方式,逐步推進項目,降低開發風險,特別適用于大型、復雜且高風險的系統開發項目。常見流程如下:

  • 制定計劃:確定項目目標、約束條件、備選方案;制定迭代計劃,明確資源需求和時間安排。
  • 風險分析:識別潛在風險(如技術風險、需求風險、管理風險等);評估風險影響,制定應對策略。
  • 實施工程:根據計劃進行系統設計、編碼、測試等開發活動;構建原型或增量版本,驗證關鍵功能。
  • 客戶評估:向客戶展示迭代成果,收集反饋;根據反饋調整后續迭代計劃。

優點:降低風險,每個階段都會進行風險分析,避免一些線上問題發生

缺點:管理復雜度高、成本較高、依賴客戶參與。

適用項目:大型項目、風險較高項目、需求不明確或需求易變項目。


5.3 增量模型與迭代模型

5.3.1 增量模型

定義:

  • 逐步交付:將系統劃分為多個獨立的“增量”(模塊或功能),每個增量獨立開發、測試并交付用戶。
  • 線性擴展:每個增量在上一版本基礎上擴展功能,逐步完善系統。

特點:

  • 階段性交互:用戶可以提前獲得某些功能
  • 并行開發:不同的增量可以由不同的程序猿開發
  • 需求變化靈活:后增量的需求可在開發前調整,適應變化。

5.3.2 迭代模型

定義:

  • 重復開發周期:將開發過程劃分為多個“迭代”,每個迭代包含需求分析、設計、編碼、測試等完整階段。
  • 逐漸細化:通過多次迭代逐步完善系統,需求和設計在迭代中不斷調整。

特點:

  • 循環迭代:每個迭代產出可運行的軟件版本,但功能可能不完整。
  • 分線驅動:早期迭代優先解決高風險問題(如技術驗證)。
  • 用戶反饋驅動:基于用戶反饋調整后續迭代內容。

假設有一個網站,包含注冊、登錄、修改個人信息等功能,增量和迭代模型分別對應如下操作:

增量:注冊功能完成 -> 登錄功能完成 -> 修改個人信息

迭代:注冊功能開發一部分 -> 登錄功能開發一部分 -> 修改個人信息開發一部分


5.4 敏捷模型

某大佬提出的敏捷宣言:
個體與交互重于過程和工具?
可用的軟件重于完備的文檔?
客戶協作重于合同談判
響應變化重于遵循計劃
在每對比對中,后者并非全無價值,但我們更看重前者
因此可以理解為:
  1. 以人為核心
    強調團隊成員的協作、溝通和創造力,而非過度依賴流程和工具。
  2. 迭代與增量開發
    將項目分解為多個短周期的迭代(通常為2-4周),每個迭代產生可用的軟件增量。
  3. 快速響應變化
    通過頻繁的迭代和反饋,快速適應需求變化,減少項目風險。
  4. 客戶協作
    客戶作為團隊的一部分,參與需求定義、驗收測試和反饋,確保產品符合實際需求。
  5. 持續交付價值
    每個迭代結束時交付可用的軟件,使客戶盡早獲得價值

常見的敏捷測試有 Scrum ,它用于管理復雜產品的開發、交付和持續支持。它通過短周期的迭代(稱為 Sprint)和持續反饋,幫助團隊高效協作、快速響應變化,并持續改進產品。

  • 特點:基于短周期的迭代(Sprint),強調團隊自組織和持續改進。
  • 角色:產品負責人(Product Owner)、Scrum Master、開發團隊。
  • 適用場景:需求不明確或頻繁變化的項目,如互聯網產品開發。

大概流程為:

(1)項目經理收集用戶需求,對需求進行優先級的劃分、計劃項目開始與結束時間。

(2)每日站會,匯報昨日工作完成狀況、遇到問題,今日計劃等。

(3)演示,給不同的人進行演示。

(4)總結,總結上述過程中發生的問題,避免今后遇到。


6. 測試模型

6.1 ?V?模型

  1. 用戶需求:PM(產品經理)將用戶需求進行收集形成軟件需求?
  2. 需求分析和系統設計:驗證需求是否正確,確定語言,確定框架?
  3. 概要設計:項目的一個結構?
  4. 詳細設計:每個結構對應的表名、接口等?
  5. 編碼:編寫代碼
  6. 單元測試:測試每個方法/函數功能是否正確實現?
  7. 集成測試:將眾多方法/函數集中在一起進行測試
  8. 系統測試:測試模塊與模塊之間沒有影響
  9. 驗收測試:產品經理,運營進行驗收

特點:左邊是開發,右邊是測試,分工明確類似于瀑布模式。

優點:測試被劃分為許多類型。

缺點:測試人員介入太晚,導致問題發現較晚。


6.2 ?W?模型(雙 V 模型)

特點:開發一個 V,測試一個 V。

優點:測試人員盡早的進入了測試。

缺點:測試人員和開發人員一定程度上還是串行的,不能擁抱變化,不適于敏捷模型。

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

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

相關文章

Flutter常用組件實踐

Flutter常用組件實踐 1、MaterialApp 和 Center(組件居中)2、Scaffold3、Container(容器)4、BoxDecoration(裝飾器)5、Column(縱向布局)及Icon(圖標)6、Column/Row(橫向/橫向布局)+CloseButton/BackButton/IconButton(簡單按鈕)7、Expanded和Flexible8、Stack和Po…

劉火良FreeRTOS內核實現與應用學習之7——任務延時列表

在《劉火良FreeRTOS內核實現與應用學習之6——多優先級》的基礎上:關鍵是添加了全局變量:xNextTaskUnblockTime ,與延時列表(xDelayedTaskList1、xDelayedTaskList2)來高效率的實現延時。 以前需要在掃描就緒列表中所…

圖像預處理-插值方法

一.插值方法 當我們對圖像進行縮放或旋轉等操作時,需要在新的像素位置上計算出對應的像素值。 而插值算法的作用就是根據已知的像素值來推測未知位置的像素值。 1.1 最近鄰插值 CV2.INTER_NEAREST 其為 warpAffine() 函數的參數 flags 的其一,表示最近…

智能配電保護:公共建筑安全的新 “防火墻”

安科瑞劉鴻鵬 摘要 隨著城市建筑體量的不斷增長和電氣設備的廣泛使用,現代建筑大樓的用電安全問題日益突出。傳統配電方式面臨監測盲區多、響應滯后、火災隱患難發現等問題。為提升建筑電氣系統的安全性和智能化水平,智慧用電系統應運而生。本文結合安…

如何解決DDoS攻擊問題 ?—專業解決方案深度分析

本文深入解析DDoS攻擊面臨的挑戰與解決策略,提供了一系列防御技術和實踐建議,幫助企業加強其網絡安全架構,有效防御DDoS攻擊。從攻擊的識別、防范措施到應急響應,為網絡安全工作者提供了詳細的操作指引。 DDoS攻擊概覽&#xff1a…

構建靈活的接口抽象層:支持多種后端數據存取的實戰指南

構建靈活的接口抽象層:支持多種后端數據存取的實戰指南 引言 在現代軟件開發中,數據存取成為業務邏輯的核心組成部分。然而,由于后端數據存儲方式的多樣性(如關系型數據庫、NoSQL數據庫和文件存儲),如何設計一套能夠適配多種后端數據存取的接口抽象層,成為技術團隊關注…

OpenCV 圖形API(23)圖像和通道合成

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 1.算法描述 在OpenCV的G-API模塊中,圖像和通道合成(composition)函數允許用戶對圖像進行復雜的操作,如合并…

帝國cms導航淘客新聞下載多功能網站源碼 二次元風格自適應附教程

一、本模板使用帝國cms7.5 utf8版本,二次元導航新聞下載工具淘客自適應響應式帝國cms模板。 1、網站后臺有3個系統模型,新聞系統模型,下載系統模型,導航系統模型,商城系統模型,可以根據自己的需求不同&…

本地部署大模型(ollama模式)

分享記錄一下本地部署大模型步驟。 大模型應用部署可以選擇 ollama 或者 LM Studio。本文介紹ollama本地部署 ollama官網為:https://ollama.com/ 進入官網,下載ollama。 ollama是一個模型管理工具和平臺,它提供了很多國內外常見的模型&…

C# virtual 和 abstract 詳解

簡介 在 C# 中,virtual 和 abstract 關鍵字都用于面向對象編程中的繼承和多態,它們主要用于方法、屬性和事件的定義,但在用法上存在一些重要的區別。 virtual 關鍵字 virtual 表示可重寫的方法,但可以提供默認實現,…

自動駕駛的數據集以及yolov8和yolop

項目背景 網絡全部是分割了沒有檢測。 自動駕駛的車道線和可行駛區域在數據集中的表示 自動駕駛系統中的車道線和可行駛區域的表示方式主要有以下幾種: 基于幾何模型:使用幾何模型來描述車道線和可行駛區域的形狀和位置,例如直線、曲線、多…

Oracle DROP、TRUNCATE 和 DELETE 原理

在 Oracle 11g 中,DROP、TRUNCATE 和 DELETE 是三種不同的數據清理操作,它們的底層原理和適用場景有顯著差異 1. DELETE 的原理 類型:DML(數據操作語言) 功能:逐行刪除表中符合條件的數據,保留…

PCIe 5.0光學SSD原型問世!

近日,Kioxia Corporation(鎧俠)、AIO Core Co., Ltd. 和 Kyocera Corporation(京瓷)聯合宣布成功開發了一款支持 PCIe 5.0 接口的光學 SSD 原型。該技術旨在通過光接口替換傳統的電接口,從而顯著增加計算設…

SQL 查詢中涉及的表及其作用說明

SQL 查詢中涉及的表及其作用說明: 涉及的數據庫表 表名別名/用途關聯關系dbo.s_orderSO(主表)存儲訂單主信息(訂單號、日期、客戶等)dbo.s_orderdetailSoD(訂單明細)通過 billid SO.billid 關…

C++學習之金融類安全傳輸平臺項目git

目錄 1.知識點概述 2.版本控制工具作用 3.git和SVN 4.git介紹 5.git安裝 6.工作區 暫存區 版本庫概念 7.本地文件添加到暫存區和提交到版本庫 8.文件的修改和還原 9.查看提交的歷史版本信息 10.版本差異比較 11.刪除文件 12.本地版本管理設置忽略目錄 13.遠程git倉…

【HCIP】GRE VPN實驗筆記

一、實驗拓撲 二、實驗要求 1、按照圖示配置IP地址 2、在R1和R3上配置默認路由使公網區域互通 3、在R1和R3上配置GRE VPN,使兩端私網能夠互相訪問,Tunnel口IP地址如圖 4、在R1和R3上配置RIPv2或者ospf或者靜態,來傳遞兩端私網路由 三、實…

大模型——Llama Stack快速入門 部署構建AI大模型指南

Llama Stack快速入門 部署構建AI大模型指南 介紹 Llama Stack 是一組標準化和有主見的接口,用于如何構建規范的工具鏈組件(微調、合成數據生成)和代理應用程序。我們希望這些接口能夠在整個生態系統中得到采用,這將有助于更輕松地實現互操作性。 Llama Stack 定義并標準化…

ALOPS智能化運維管理平臺

AIOps(Artificial Intelligence for IT Operations)即智能運維,是將人工智能技術應用于 IT 運維管理領域,以實現自動化、智能化的運維決策和管理。以下是關于 AIOps 的詳細介紹: 核心能力 數據收集與整合&#xff1a…

C語言超詳細指針知識(二)

在上一篇有關指針的博客中,我們介紹了指針的基礎知識,如:內存與地址,解引用操作符,野指針等,今天我們將更加深入的學習指針的其他知識。 1.指針的使用和傳址調用 1.1strlen的模擬實現 庫函數strlen的功能是…

一種替代DOORS在WORD中進行需求管理的方法 (二)

一、前景 參考: 一種替代DOORS在WORD中進行需求管理的方法(基于WORD插件的應用)_doors aspice-CSDN博客 二、界面和資源 WORD2013/WORD2016 插件 【已使用該工具通過第三方功能安全產品認證】: 1、 核心功能 1、需求編號和跟…