主頁 >  其他 > 什么是測驗金字塔?如何使用測驗金字塔來構建自動化測驗體系?

什么是測驗金字塔?如何使用測驗金字塔來構建自動化測驗體系?

2023-06-08 08:25:54 其他

測驗金字塔 (Test Pyramid)是一套使用單元測驗,集成測驗和端到端測驗來構建自動化測驗體系的方法,

如下圖所示,在金字塔的最下方是單元測驗,中段是集成測驗,最上方是端到端測驗,單元測驗實作的成本最低,運行速度最快,是毫秒級的,集成測驗的實作成本比單元測驗高,因為要跟外部系統連接,所以運行速度比單元測驗要慢1-2各個數量級,端到端測驗最符合用戶的完整體驗,從 UI 開始通過 API 直達系統內部代碼,因為涉及的環節更多,所以實作成本更高,運行速度比集成測驗更慢,

測驗金字塔理論推薦單元測驗應該是數量最多,覆寫范圍最大的測驗種類,道理很簡單,單元測驗成本低,運行速度快,在發現問題的時候解決問題也最快,集成測驗數量次之,最后才是昂貴的端到端測驗,由于端到端測驗經過的環節更多,所以通過端到端測驗發現的問題,解決起來用時更多,

單元測驗
單元測驗是一種由開發者實作的白盒測驗,在測驗金字塔里,單元測驗是自動化測驗體系的基礎,一般使用代碼覆寫率來評價單元測驗是否達到了測驗的要求,但是在實踐中開發團隊往往發現很難達到指定的代碼覆寫率,開發工程師寫的單元測驗和測驗工程師撰寫的測驗用例也很難匹配,跟產品經理的業務描述差得更遠,

這里的一個重要原因是許多開發者把程式簡單地理解為增刪改查(CRUD),而沒有圍繞業務邏輯來撰寫代碼,對外部服務沒有構建“以我為中心”的模型,撰寫代碼的時候直接使用要依賴服務定義的模型,這樣在撰寫單元測驗時就會因為模擬某些服務難度太高不得不放棄,只能使用集成測驗來驗證代碼的正確性,

我們可以借鑒《領域驅動設計》里的分層架構,以及六邊形架構來構建抽象的領域模型,并且使用單元測驗來驗證模型實作了產品經理的業務描述,這樣我們就可以使用面向物件知識圍繞業務構建領域層,把外界服務看做各種連接到模型的“埠”,在撰寫單元測驗時,就不會遇到無法模擬其他服務的問題,

總結一下,我們的單元測驗應該構建在“領域層”之上,以驗證領域模型對業務描述的正確性為主要目標,

單元測驗是否可以連接資料庫?
單元測驗是系統內部的測驗,單元測驗不能跨越系統,資料庫是另外一個系統,跨系統的測驗屬于集成測驗的范疇,所以單元測驗中是不可以連接資料庫的,單元測驗要遵循 FIRST 原則,其中的 “F” 就表示要快,單元測驗的范圍在系統內部不訪問外部系統才可能快,訪問資料庫會把毫秒級的測驗時間,提升到幾十甚至數百毫秒以上,這顯然是集成測驗的運行時間水平,

集成測驗
集成測驗是驗證系統和系統之間的相互呼叫是否符合預期的測驗,因為要跨越系統,所以和單元測驗相比集成測驗運行起來要慢1到2個數量級,

當發現問題時,問題可能會出在集成測驗連接的任意一個系統中,開發者需要排查每一個系統直到找到問題為止,而在單元測驗中發現問題時只需要排查本系統,所以集成測驗相比單元測驗排查問題用時也更多,

開發者在設計集成測驗時可以限定要集成的系統范圍,這樣就可以把測驗重點放在開發者關心的系統上,集成測驗往往以 API 呼叫的方式進行,開發者撰寫測驗腳本按順序呼叫 API,檢查結果是否符合預期,

集成測驗是系統之間的測驗,資料庫也是一種系統

端到端測驗
端到端測驗以 UI 為起點,模擬用戶使用系統的場景,從 UI 輸入驗證系統的輸出是否符合預期,因為涉及到 UI,端到端測驗必然會跨系統,又因為開發者只能控制 UI 部分的輸入順序和數量,所以開發者不能控制端到端測驗中被呼叫的 API 的順序和數量,在發現問題時不光要檢查各個可能要涉及的系統,還要考慮 API 可能被呼叫的順序和數量,排查問題的難度比集成測驗更高,

在運行時間上,UI 測驗模擬用戶的輸入而不是像集成測驗那樣直接呼叫系統 API,所以運行時間類似于人類反應的時間,與集成測驗相比端到端測驗整體運行時間又有數量級級別的下降,

端到端測驗也包含了部分探索性測驗和人工測驗,

端到端測驗的輸入從UI開始

端到端測驗在性能測驗上更能反映系統在真實世界的運行情況

如果以集成測驗的方式來做性能測驗,開發者可以按照指定的順序呼叫API,模擬在規定時間內呼叫 API 的數量下系統的回應能力,但是在真實世界,用戶是通過 UI 來驅動系統的,UI 頁面往往包含各類資訊,這類資訊會并發地以不同順序呼叫系統的 API,這樣在用戶流量大的情形下,不同 API 被糾纏在一起以不同的順序和數量傳遞到不同的系統里,

在上圖中,用戶打開“新浪財經”頁面會呼叫頁面UI,要聞,突發,股市指數,天氣預報等10幾個系統,這比單純的集成測驗要呼叫的系統數量上要多,呼叫順序由UI頁面結構決定,每次頁面調整都會導致 API 呼叫順序的改變,顯然端到端測驗要比集成測驗復雜,

和集成測驗相比,基于端到端測驗實作的性能測驗,結果可能會和開發者的預期差距更大,但是可能會發現更多問題,

如何使用測驗金字塔來構建自動化測驗體系
基于對測驗金字塔中 3 種不同種類測驗的特點的分析,考慮到運行速度和實作成本,我們推薦開發者以單元測驗為自動化測驗的基礎,以盡可能低的成本發現盡可能多的問題,通過集成測驗檢查系統間的相互呼叫問題,輔以端到端測驗優化用戶體驗來構建自動化測驗體系,

結論
本文通過比較單元測驗、集成測驗和端到端測驗在實作成本,負責范圍和糾錯時間的區別和聯系,介紹了測驗金字塔的概念,以及以按照單元測驗、集成測驗和端到端測驗的順序構建自動化測驗體系的必要性,

最后:這里有我建立的一個專門交流軟體測驗方面問題的學習群,里面也有很多大公司的技術大牛,很多時候,技術大牛的幾句話就會讓我們醍醐灌頂,少浪費時間,如果想要多跟有經驗的人學習,就找我加入我的軟體測驗交流群,以后有作業的內推機會都相互推薦一下,畢竟我們是關系社會,

軟體測驗技術交流群社:786229024 等待你的加入... 大家可以一起探討交流,共同學習軟體測驗技術、面試等軟體測驗方方面面,還會有免費直播課,識訓更多測驗技巧,我們一起進階Python自動化測驗/測驗開發,走向高薪之路,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554585.html

標籤:其他

上一篇:【acwing】Trie字串統計

下一篇:返回列表

標籤雲
其他(160566) Python(38215) JavaScript(25478) Java(18209) C(15237) 區塊鏈(8270) C#(7972) AI(7469) 爪哇(7425) MySQL(7235) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4585) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1983) 功能(1967) HtmlCss(1952) Web開發(1951) C++(1933) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1879) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 什么是測驗金字塔?如何使用測驗金字塔來構建自動化測驗體系?

    測驗金字塔理論推薦單元測驗應該是數量最多,覆寫范圍最大的測驗種類。道理很簡單,單元測驗成本低,運行速度快,在發現問題的時候解決問題也最快。集成測驗數量次之,最后才是昂貴的端到端測驗。由于端到端測驗經過的環節更多,所以通過端到端測驗發現的問題,解決起來用時更多。 ......

    uj5u.com 2023-06-08 08:25:54 more
  • 【acwing】Trie字串統計

    Trie樹 學習感受 相比于之前學習的kmp匹配演算法,Trie樹的實作還是非常好理解的。(kmp演算法太難了orz) 從直觀的模擬程序來看,trie樹就像一顆樹一樣,從上(根節點)到下(葉節點)有序串聯起來組成一個字串。 每一個額外標記結束的位置表示字串的結束,通過計算標記數即可指導一共有多少該字 ......

    uj5u.com 2023-06-08 08:25:43 more
  • 完全免費白嫖 GPT-4 的終極方案!

    > 原文鏈接:[https://icloudnative.io/posts/completely-free-to-use-gpt4/](https://icloudnative.io/posts/completely-free-to-use-gpt4/) ![](https://img2023.cn ......

    uj5u.com 2023-06-08 08:25:03 more
  • 回學校做了個分享

    這周四,收到通知說我能不能周日的時候來學校給大一剛結束的學弟學妹們做一個分享,剛開始是有點猶豫的 因為之前從來沒做過相關的分享,而且覺得時間有點緊怕來不及準備,上一次上臺講東西的時候還是轉正答辯那會 ![image](https://img2023.cnblogs.com/blog/2958925/ ......

    uj5u.com 2023-06-08 08:24:37 more
  • ChatGPT玩法(三):AI玩轉PPT

    在線免費體驗ChatGpt:https://www.topgpt.one;作為許多職場人士的必備工具,PPT制作一直是一個瑣碎而費時的任務。但最近我發現了一個非常有用的工具網站,它可以通過人工智能來制作PPT,這款工具可以輕松制作出漂亮和專業的PPT,讓你在短短的三分鐘內完成制作,效果也是非常出色的... ......

    uj5u.com 2023-06-08 08:24:10 more
  • 4年測驗經驗面試要20K,簡單問了一下,連基礎都不會,我也是醉了&#183;

    現在招個合適的人可真難呀,不是這不會就是那不會,沒有一個讓我滿意的··· 公司前段時間缺人,面試了不少的測驗,結果居然沒有一個符合要求的。一開始瞄準的就是中級測驗工程師的水準,也沒指望來技術大牛,提供的薪資在10-20k,面試的人很多,但平均水平很讓人失望。 細看簡歷很多人都是3、4年作業經驗,但面 ......

    uj5u.com 2023-06-08 08:23:39 more
  • 領導看了給你加薪!python +ddt+excel 一招鮮,介面自動化測驗輕松搞

    “ 介面自動化測驗是指通過撰寫代碼或使用工具,模擬用戶發送請求,驗證介面是否符合設計規范和功能需求的程序。” 如何用 python +ddt+excel 實作介面自動化測驗 介面自動化測驗可以提高測驗效率和質量,節省測驗成本和時間,保證測驗覆寫率和可維護性。 讓勇哥帶你入門如何用 python +d ......

    uj5u.com 2023-06-08 08:23:22 more
  • 位元組技術面都過了,薪資都談好了20K*13結果還是被刷了,問HR,原因

    分享下自己的求職小故事。在一家公司軟體測驗技術面試已經過了,然后和最終面試官溝通了下,面試官提出來一個薪資數字,我接受了這個提議并和hr同步了這個數字。再然后被拒了,理由就是期望薪資和職級不匹配。我詢問后有郵件回復我為什么面試官和面試的地區公司hr說了不算。不知道這是不是大家都曾經遇到過的情況,心情... ......

    uj5u.com 2023-06-08 08:22:36 more
  • CodeGeeX 2.0版本重大升級:通過聊天對話的方式直接操作代碼

    CodeGeeX 2.0版本正式上線!從命名上看這是一次大版本的升級。 上個月,**[CodeGeeX](https://codegeex.cn/)**在VSCode和JetBrains IDEs的插件中,加入了智能問答(Ask CodeGeeX)功能,讓用戶可以在IDE中通過問答對話的方式解決技術 ......

    uj5u.com 2023-06-08 08:21:52 more
  • “古老”編程語言的最新選擇!華為云發布CodeArts IDE for C/C++

    摘要:華為云CodeArts IDE for C/C++正式上線,歡迎體驗。 本文分享自華為云社區《“古老”編程語言的最新選擇!華為云發布CodeArts IDE for C/C++》,作者:華為云頭條 。 C語言是一種“古老”且應用至今的高級編程語言,它是多種流行編程語言的根源。C++進一步擴充和 ......

    uj5u.com 2023-06-08 08:21:30 more