常见测试类型
测试
- 类型
smoke test:冒烟测试.在最小负载下,系统可以正常运行.
load test:负载测试.主要是根据每秒并发的用户或请求来评估系统的性能.
stress test,spike testing(压力测试,穿透测试):评估系统极限和在极端条件的稳定性.
soak test:浸泡测试.一段时间内系统的稳定性和性能.
- 测试方式
windows:
./k6.exe run ./scripts/smoke-test-demo.js
linux:
k6 run ./scripts/smoke-test-demo.js
smoke test
冒烟测试是一个在最小负载下的普通负载测试.
价值:
验证测试脚本没有错误;
验证系统在最小负载小没有抛异常;
测试脚本示例:
load testing
负载测试是一种性能测试,用于确定系统在正常条件和峰值条件下的行为.通常用于确保服务可以很好满足大量用户同一时间访问.
价值:
评估在典型和峰值负载下系统的当前性能;
当进行系统(代码,基础设施)调整后,确保依旧满足性能标准.
要求99%的请求在1.5秒内响应.thresholds 用于确保系统满足你设置的性能标准.
整个负载流程是逐步增加系统负载,持续一段时间后,负载又逐渐降低的过程.
常见的负载性能标准:
99%请求在5秒内完成;
95%请求应该在1秒内完成;
99%用户可以第一次就成功登陆
压力测试
压力测试是一组不同类型的负载测试.用于评估系统在高负载情况下的可用性和稳定性.
价值:
确认极端条件系统的情况;
确认系统最大的容量;
确认系统的临界点和失效模型;
确认压力测试后,系统能否自恢复;
压力测试是系统临界点评估的测试,核心是判定系统的临界点而不是摧毁系统.
穿透测试
穿透测试是压力测试的一个变种.不同的是,压力测试是逐步的进行压力的增减,而穿透测试讲究的是迅速的进行极端压力请求.
价值:
确认迅速的极端访问下的系统行为;
确认迅速的极端访问后系统能否自恢复;
穿透测试是对大型突发情形的预演.系统在这种情形的反应可以分为四种:
优秀: 在突发请求下,系统运行正常.响应时间在高低访问量下相似;
好: 响应时间变慢.但是系统未发生错误.所有请求都被处理;
一般: 突发请求下有异常发送.但是请求正常后,服务自恢复;
差: 系统崩溃,无法自恢复;
浸泡测试
浸泡测试:关注系统长时间运行的可靠性.用于揭示系统长时间处理压力下而产生的性能和可靠性问题.
可靠性问题典型的有:bugs,内存泄漏,存储配额不足,配置不正确,基础设施故障等
性能问题典型的有:与数据库交互不协调,内存泄漏,资源泄漏,大数据量
浸泡测试可以在几小时内模拟几天的访问量;
价值:
验证系统不存在导致中断或运行一段时候重启的bug或内存泄漏问题;
验证服务重启后不丢失请求;
发现偶发的竞争条件相关的bugs;
确认数据库不会耗尽分配的存储空间后停止;
确认日志不会耗尽分配的磁盘空间;
确认你依赖的其他服务不会大访问量下不会挂掉;
参考资料
喜欢关注一下,不喜欢点评一下