需要了解的性能测试理论(面试必备)

首选对于一个性能涉猎不久的小白来说,会脚本编写不足以支撑整个面试需要,确实需要一些理论的东西来证明一下你了解性能测试,什么时候做性能测试。各项指标的含义是什么?

1.为什么需要性能测试呢?

随着互联网行业的发展,用户量大大增加,业务和系统架构越来越复杂,数据越来越多,用户不仅仅满足于功能的实现,在某些场景下,更在意系统性能

2.什么是性能测试:

性能测试是基于系统性能的预期指标,建立测试模型,制定测试方案,制定监控策略,验证被测系统在高并发的条件下的处理能力、响应能力、稳定性等,能都满足预期。定位性能瓶颈,排查性能隐患,保障系统的质量,提升用户体验。

3.什么样的系统需要做性能测试:

访问量高的系统,比如淘宝,核心业务比如淘宝下单,算法逻辑高的,比如下单界面的账单计算,还有推广类的促销等

4.性能测试发生的场景:

新系统/新项目,线上性能问题的验证和调优,新技术选型

性能容量评估和规划

日常系统性能回归

性能测试指标:

事务:在性能测试领域里,衡量一个系统性能的好坏,只要看得是单位时间内,系统可以处理多少业务量。各个系统的业务各不相同,为了方便衡量业务的性能,需要在测试脚本中添加一对变迁,测试工具统计单位时间内,标签的业务量,就可以统计出真是的业务量

脚本中的标签,就叫事务,事务是用户定义的,想测试什么业务的性能,就把改业务加到事务中

TPS/QPS

Transation per Second每秒处理的事务数

响应时间:网络传输时间+各组件业务处理时间

一个请求从发送出去到接手回来所需要的时间

LR==》网络设置《==》中间件《==》应用程序《==DB

平均响应时间:在测试过程中,所有请求的平均耗时

如果出现响应时间过长的情况,最后可能发现在DB和应用程序身上

TOP响应时间:

将所有的请求时间先从大到小进行排序,计算指定比例的请求都小于某个时间,该指标统计的是大多数请求的耗时

Tp9090%响应时间):90%的请求耗时都低于某个时间

Tp9595%响应时间):95%的请求耗时都低于某个时间

Tp9999%响应时间):99%的请求耗时都低于某个时间

并发数/虚拟用户(Vuser

压测工具中设置线程/进程数量

成功率

请求的成功率

PVpage view

页面/接口的访问量

UVunique vistor)日活

页面/接口的每日唯一访客

吞吐量

网络中上行和下行的流量综合,吞吐量代表网络的流量,TPS越高,吞吐量越大

TPS、响应时间和并发数的关系

在系统达到性能瓶颈之前,TPS和并发数成正比管理

响应时间单位为秒的情况下

TPS=1/响应时间*并发数

TPS=并发数/响应时间

响应时间单位为毫秒的情况下

TPS=1000/响应时间*并发数

TPS=1000*并发数/响应时间

性能监控指标:

操作系统级别监控

Cpu使用率、内存使用率、网络IO,磁盘(readwriteutil

中间件监控

连接数、长短链接、使用内存

应用层监控

线程状态、JVM参数、GC频率、锁

数据库监控

连接数、锁、缓存、内存、sql效率

性能测试流程:

需求调研==》测试计划==》环境搭建==》数据准备==》测试脚本==》压测执行==》调优回归==》测试报告

需求调研:项目背景、测试范围、业务逻辑&数据流向 系统架构、配置信息、测试数据量、外部依赖、系统使用场景、业务比例、日常业务量、预期指标、上线时间

测试计划:项目描述、业务模型及性能指标、测试环境说明、测试资源、测试方法以及场景设计原则(基准测试、单交易负载测试、混合场景测试、高可用性测试、异常场景测试、稳定性测试、其他特殊性测试)测试进度安排及测试准则

环境搭建:

测试机器硬件配置尽量和线上一致

系统版本与线上一致

测试环境部署线上最小单元模块

应用、中间件、数据库配置与线上一致

其他特殊配置

数据构造:

业务接口:--适合数据表关系复杂

          --优点:数据完整性比较好

存储过程:--适合表数量少,简单

          --优点:速度最快

脚本导入:--适合数据逻辑复杂

          --自由度比较高

数据量级:--测试数据

          --基础数据

脚本编写:

选择工具,选择协议,参数化,关联,检查点,事务判断

压测执行:

分布式执行
监控 --linux  --jvm --数据库

收集测试结果

数据分析

瓶颈定位

调优回归:

性能调优需要整个团队完成

反复尝试

回归验证

监控工具

全链路排查

日志分析

模块隔离

性能测试工具:

Loadrunner(功能强大,重量级,商业软件)

Jmeter(小巧灵活,轻量级,开源)

Ngrinder(开源压测平台)

Locustpython开源框架)

现状和趋势:

性能自动化,平台化

测试工具多样性,开源、二次开发

在高并发下验证功能的正确性

线上线下相结合,线上发现问题,线下调优

posted @ 2020-12-09 14:43  takoua  阅读(27)  评论(0编辑  收藏  举报