性能测试评估系统在负载下的表现——在各种条件下衡量速度、可扩展性和稳定性。类型包括负载、压力、峰值和耐久性测试。它对于确保系统可以接受地处理实际(和峰值)使用至关重要。
性能测试衡量什么
Non-functional testing of HOW WELL the system performs (not just correctness):
→ RESPONSE TIME / latency (how fast?), THROUGHPUT (requests/sec handled)
→ SCALABILITY (behavior as load grows), RESOURCE usage (CPU, memory)
→ STABILITY under sustained or extreme load
→ ensures the system meets performance requirements and handles real usage.
性能测试的类型
LOAD testing → expected/normal load → does it meet targets under typical usage?
STRESS testing → BEYOND normal limits → find the breaking point; how it fails/recovers
SPIKE testing → sudden sharp load increase → handles bursts? (e.g. a flash sale)
SOAK / endurance → sustained load over a LONG time → finds memory leaks, degradation
SCALABILITY → how performance changes as load/resources scale
如何以及为什么
✓ Tools: k6, JMeter, Gatling, Locust → simulate many virtual users / high request rates
✓ Define performance REQUIREMENTS/SLAs (e.g. p95 latency < 200ms at X users) → test against them
✓ Test realistic scenarios; measure under controlled conditions; find BOTTLENECKS
✓ WHY: poor performance → bad UX, lost users/revenue, outages under load; find issues
BEFORE production (e.g. before a big launch/traffic event)
为什么这很重要
理解性能测试是有价值的高级知识,因为性能是一个关键的质量属性——系统必须可以接受地处理实际和峰值负载——因此测试它对于可靠性和用户体验很重要,使这个知识很有用。
性能测试评估系统表现如何(响应时间、吞吐量、可扩展性、资源使用、稳定性)在负载下——一种与正确性不同的非功能质量,但很关键,因为性能差会导致糟糕的用户体验、用户和收入流失以及负载下的中断。
理解类型及其目的至关重要:负载测试(验证预期负载下的性能)、压力测试(推超过限制以找到断点以及系统如何失败/恢复)、峰值测试(处理突然爆发,如闪购)、耐久性/耐久性测试(长期持续负载,发现内存泄漏和性能降低)和可扩展性测试——每个都回答关于系统在各种条件下表现如何的不同问题。
理解如何以及为什么——使用工具(k6、JMeter、Gatling、Locust)来模拟负载、定义性能要求/SLA来对比测试(例如在给定用户数下的p95延迟目标)、测试现实场景来找到瓶颈,以及关键是在生产前做这个(特别是在主要发布或流量事件前)以在性能问题导致真实故障前捕捉它们——反映了实际价值。
性能测试防止了昂贵的场景,即系统在实际负载下失败(发布崩溃、网站在峰值流量期间变得无法使用)。
由于性能是一个关键的质量属性(性能差导致真实的业务和用户体验损害)并且性能测试(负载、压力、峰值、耐久性)在生产前验证系统处理实际和峰值使用,并且由于理解类型、工具和价值对于确保系统在负载下执行很重要,理解性能测试是有价值的高级知识——对于验证关键的非功能质量很重要、确保系统处理实际使用、并在性能问题导致生产故障前捕捉它们,反映了高级工程师解决的广泛质量问题。
