淺談效能測試

栏目: 编程工具 · 发布时间: 6年前

内容简介:本文整理重新摘分在分成幾種: Stability, Reliability, Stress/Load Test, Capacity作 Performance Test 的前提:FVT、SVT 要過。

本文整理重新摘分在 Stages in Software Testing 整理的效能測試部分。

Performance Test

分成幾種: Stability, Reliability, Stress/Load Test, Capacity

作 Performance Test 的前提:FVT、SVT 要過。

我做 SQA Manager 的時候,本來是要去做 Performance Test,但是發現功能根本就不能用,所以就整個砍掉重來,先把 FVT 守住,直到通過率到一定程度之後,才開始 Performance Test。這段故事在 [協同合作系統建制與導入 - 以 Redmine 為例][4] 有提到一點。

環境建置考量:必須跟 Production 一致,可以利用 Cloud (ex. AWS, GCP) 快速建立完整的 Scale,測完就刪掉。

效能測試的準備工作

如果是測試 Web System ,那就要花時間把整個系統建置起來,準備好測試資料,餵到 DB … 等。

實際上不只是待測要花時間準備,測試的 Client 的準備也是要花不少時間的,例如:

  • 模擬商業邏輯的資料,像是 Database Schema or 模擬使用者資料的 資料 … (啥鬼XD)
  • 測試程式的設計,模擬功能的行為。以 Live Stream 就是模擬 IPCam 的資料丟到 Server 然後傳給 App。
  • 測試程式執行環境的準備,要確認網路 Throughput 是否足夠
    • 測試環境能否自動化建置,最好利用像是 AWS CloudFormation 這樣的東西
    • 平常就要做好 [Resource Provisioning][6] 的工作。
    • 用 AWS 的話,確認機器等級的 Network 狀況,透過 VPC Flow Log 蒐集狀況
  • 測試流程 (HTTP Request) 模擬與建制,可以從既有的 Log 分析
  • 測試過程要蒐集的資料與 Log, 如何觀測 (Observailitiy)?參閱 Monitoring vs Observability
  • 預期會產生的資料如何分析?

這段 AWS NLB 的介紹中: Deep Dive: New Network Load Balancer 提到效能測試,Client 開了 c4.xlarge * 100

Stability (穩定性)

一定的資源之下:長時間,且大量的 Request 之下,系統維持在穩定狀況,不會有 CPU / Memory 凸波、或者是 Memory Leak、Disk I/O 瞬間的狀況。

如果應用程式本身具備 GC 機制,當記憶體使用量到一定程度時,則會自動恢復。

現象:不倒翁

Reliability (可靠性)

Chaos Engineering

Capacity (容量測試)

目的在 量測 (Measure) 系統可以乘載的數據,單位可以是線上使用者、單位時間內的交易量、單位時間內的流量 … 等,像是 QPS (Query Per Second)、RPS (Request Per Second) …

量測的對象就是整個系統,系統要考量以下:

  • 一定的硬體資源,包含 Networking, Computing, Memory, Storage .. 等條件,應用程式能夠滿足多少的處理單位。
  • 放在 AWS 上的網站來說,使用 c4.large 的機器,最大能夠乘載多少的 HTTP Request,這個值稱為 Benchmark .
  • 有了 Benchmark 可以根據需求推論出系統需要的成本。例如已經知道 c4.xlarge 可以同時乘載 5k/second request,,那麼就可以推論如果有 100k/s request 需要準備多少台 c4.xlarge
  • Rate Limit: 服務提供固定的 SLA,像是可以乘載的數量上限,超過時候,告訴 Client 已經滿了。這種設計應用在 搶購 (flash sales) 是必要的。

Performance 測試除了上述面向,另一個面向就是帶測體是屬於整個 stack ,還是 layer or tier

例如傳統的 web 有三層: Web -> Application -> DB ,每個 layer 都有自己效能的問題,最終的目標是了解整個 stack 的 benchmark,但實際在執行上應該要先 bottom up,也就是先找到每一個 layer 自身的效能,最後才能測出 stack 的效能。

另一個例子是 realtime stream,像是影音串流的效能,先不考慮使用 p2p 技術,考慮使用 server relay 技術,一班實作就是: data source -> server relay -> client (app or web)

這三個端點都各自有傳輸的延遲時間 latency ,每個節點都有運算時間,所以效能就包含兩個議題:

  • Latency: 資料傳輸時間,相依於網路,WAN -> Gateway / LAN / NAT / Wi-Fi … 等節點
  • Computing: 每個節點 encode / decode 的運算、protocol (RTSP)、mjpg / h264 … 等

從 Stack 的效能測試屬於 Top-Down View,大部分都會直接用這種方式開始,特別是沒有很多資源的狀況之下。一開始入門效能測試也都會從這個角度著手的比較多。

從 Layer 則屬於 Bottom-Up 方法,先找到每個 Layer 的 Capacity,然後再用數學方法模擬出整個系統的樣子,最後用 Infra as Code 的方式建立整套的系統,模擬測試。

這些根系統架構會有直接關係,現代的常見的 Pattern 就是API Gateway、 Service Mesh


以上所述就是小编给大家介绍的《淺談效能測試》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法详解(卷1)——算法基础

算法详解(卷1)——算法基础

[美]蒂姆·拉夫加登(Tim Roughgarden) / 徐波 / 人民邮电出版社 / 2019-1-1 / 49

算法是计算机科学领域最重要的基石之一。算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发。 算法详解系列图书共有4卷,本书是第1卷——算法基础。本书共有6章,主要介绍了4个主题,它们分别是渐进性分析和大O表示法、分治算法和主方法、随机化算法以及排序和选择。附录A和附录B简单介绍了数据归纳法和离散概率的相关知识。本书的每一章均有小测验、章末习题和编程题,这为读者的自我检查以及进一步学习提......一起来看看 《算法详解(卷1)——算法基础》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试