初识性能测试

性能测试的意义:

1、随着社会的发展,科技的进步,信息技术的飞速发展,计算机的普及,软件产品已经应用到社会的各个行业领域,加上网络的发展,信息的共享性等,人们对计算机及网络的依赖性越来越大。软件产品的使用者对高质量、高效率的工作方式的要求越来越高,因此对于工作和生活中息息相关的IT系统服务,他们也要求提供更快、更高效的服务品质。

2、网络的发展,让人们对网络的依赖越来越大,对外界新事物的好奇心等也越来越强烈,成千上万的用户在庞大的网络系统中游转。网络时代的到来,也给提供服务的系统带来严重的系统负荷,这就是系统网络发展中最明显的特征:"高并发"、"数据集中"。

3、数据越来越集中于后台系统服务器中,众多系统同时为成千上万的网络用户提供服务,如银行、电信、社交网站等公司的软件系统随处可见,影响着我们生活的方方面面。随着各个企业的业务发展、用户访问量的增加,其服务系统承载的负荷也会随着增加,系统性能的好坏将严重影响企业的利益,因此对于IT服务系统的性能测试与优化也越来越受业界的重视。

什么是性能测试
通过一定的手段,在多并发情况下获取被测系统各项性能指标,验证被测系统在高并发下的的处理能力、响应能力,稳定性等,否满足预期。定位性能瓶颈,排查性能隐患,保障系统的质量,提升用户体验。

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

a 用户量大, PV 比较高的系统
b 系统核心模块 /接口
c 业务逻辑 /算法比较复杂
d 促销 /活动推广计划
e 新系统,新项目
f 线上性能问题验证和调优
g 新技术选型
h 性能容量评估和规划日常
i 日常系统性能回归

性能测试指标:

TPS/QPS=并发数/响应时间

Transaction Per Second 每秒处理的事务数

事务:在性能测试领域里,衡量一个系统的好坏主要看的是单位时间内,系统可以处理多少业务量。各个系统的业务各不相同,为了方便使用统一指标来衡量业务的性能。用事务来代表操业务操作,一个事务可以代表一个业务,也可以代表多个业务操作。事务是用户定义的,想测试什么业务的性能,就把改业务加到事务中。

一个请求的响应时间都包含哪些时间?

 

 

平均响应时间

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

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

TOP响应时间

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

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

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

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

并发数/虚拟用户(Vuser):压测工具中设置的并发线程/进程数量

成功率:请求的成功率

PV(Page View):页面、接口的访问量

UV(Unique Visitor):页面/接口的每日唯一访客

操作系统级别监控:CPU使用率、内存使用率、网络IO(input/output)、磁盘(read/write/util)

中间件监控:连接数、长短连接、使用内存

应用层监控:线程状态、JVM参数、GC频率、锁

DB层监控:连接数、锁、缓存、内存、SQL效率

性能测试流程

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

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

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

环境搭建:测试机器硬件配置尽量和线上一致,系统版本与线上一致,测试环境部署线上最小单元模块,应用、中间件、数据库配置要与线上一致,其他特殊配置

数据构造:测试数据分为两部分:基础数据和参数化数据,通常采用以下三种方法进行构造:1.业务接口(适合数据表关系复杂,优点:数据完整性比较好)2.存储过程(适合表数量少,简单,优点:速度最快)3.脚本导入(适合数据逻辑复杂,优点:自由度比较高)

脚本编写:选择工具(Loadrunner,Jmeter,Locust等),选择协议(Http,TCP,RPC),参数化,关联,检查点,事物判断

压测执行:分布式执行,监控(Linux,Jvm,数据库),收集测试结果,数据分析,瓶颈定位

调优回归:性能调优需要整个团队完成,反复尝试,回归验证,监控工具,全链路排查,日志分析,模块隔离

测试报告:概述,测试环境,结果与分析,调优说明,项目时间表,结论,建议

性能测试工具:

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

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

Locust(Python开源框架)

Ngrinder(开源压测平台)

现状和趋势:

想能自动化、平台话

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

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

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

posted @ 2021-12-15 15:25  Hephia  阅读(160)  评论(0)    收藏  举报