性能测试基础
- WHY:为什么要进行性能测试
- WHAT:关注的性能测试内容
- WHO:哪些人员关注性能
- WHERE:性能测试的关注领域
- WHEN:何时进行性能测试
WHY:为什么要进行性能测试
- 应用程序是否能够很快的响应用户的要求?
- 应用程序是否能处理预期的用户负载并有盈余能力?
- 应用程序是否能处理业务所需要的事务数量?
- 在预期和非预期的用户负载下,应用程序是否稳定?
- 是否能确保用户在真正使用软件时获得舒服的体验?
WHAT:(关注什么)
- 并发用户数/吞吐量
- 平均响应时间
- 服务器资源占用情况
- 可靠性、可扩展性
- 发现引起系统问题的原因,关注采用何种技术提高系统性能
- 软、硬件配置是否合适
WHO:(谁关注)
- 开发人员
系统架构:架构设计是否合理?
数据库设计:数据库设计是否存在问题?
代码:代码是否存在性能问题?系统中是否存在不合理的内存使用方式?
设计和代码:系统中是否存在不合理的线程同步方式和不合理的资源竞争? - 系统管理人员(操作系统、网络、服务器等等)
资源利用率:应用服务器和数据库资源使用状况合理吗?
系统容量:系统最多能支持多少用户的访问?系统最大的业务处理量是多少?
系统稳定性:系统是否能支持7X24小时的业务访问?
系统可扩展性:系统是否能够实现扩展?系统性能可能的瓶颈在哪里?更换哪些设备能够提高系统性能? - 用户
响应时间:过长时间的等待会让使用者烦躁不安;
系统稳定性:出现HTTP500错误或数据库崩溃会让用户对系统失去信心 - 业务人员
参数:如何向用户提供参数,例如支持多少用户使用?响应时间是多少? - 测试人员
以上所有层面都需要关注
是否能够发现系统中存在的瓶颈?
是否真实有效的评估系统性能能力?
WHERE:(关注领域)
- 能力验证
性能测试中最简单也是最常用的一个应用领域,主要关心的是“在给定的条件下,系统能否具有预期的表现”。 - 规划能力
规划能力领域与能力验证领域有些不同,其主要关心的是“应该如何才能使系统具有我们要求的性能能力”或 是“在某种可能发生的条件下,系统具有如何的性能能力 - 性能调优
主要应用于对系统性能进行调优。一般来说,性能调优活动会和其他领域的活动交杂在一起。是一种在开发阶段和测试阶段都可能会涉及到的性能测试应用领域。 - 发现缺陷
主要该应用领域的主要目的是通过性能测试的手段来发现系统中存在的缺陷
WHEN:(何时测试)
- 功能测试中后期
概念和术语介绍
性能测试关注的内容:
响应时间、可靠性、可扩展性、并发处理事务的数量、负载盈余、软硬件配置、资源的利用率
性能测试主要用来保证产品上线或发布后系统的性能满足用户需求,性能测试在软件质量保证中起重要作用。
并发数:
- 系统用户数:简单地说就是该系统的注册用户数。
- 在线用户数:登录系统的用户。(在线用户并不一定都会对服务器产生压力,因为有的用户登录后什么都不干)
- 并发用户数(广义):是对服务器产生压力的用户。例如,可能在线的666个用户中,只有20%的用户对服务器产生了压力,这20%的用户数就是并发用户数。
- 并发用户数(狭义):用户对系统做同一个操作
- 严格意义的并发用户数:同一时间进行
响应时间(Response Time):
用户反应时间+网络传输(请求)时间+服务器处理(一层或多层)时间+数据库处理时间+网络传输(响应)时间。
事务响应时间(Transaction Response Time):
事务是指一组密切相关的操作组合。
每秒事务通过数(Transaction Per Second):
TPS 是指每秒系统能够处理的事务数。它是衡量系统处理能力的重要指标。
当压力加大时,TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈了。如果环境没有发生大的变化,对于同一系统会存在一个最大处理事务能力,它并不随着并发用户的增减而改变。
点击率(Hit Per Second):
每秒点击数代表用户每秒向Web 服务器提交的HTTP请求数。点击率越大,服务器压力越大。
这里的点击并不是鼠标的一次点击,一次点击可能有多次HTTP请求