1.性能测试基础知识

ぐ巨炮叔叔 提交于 2020-01-08 19:57:23

认识性能与性能测试

  • 软件性能的覆盖面广泛,对一个系统而言,包括执行效率、资源占用、稳定性安全性兼容性、可扩展性、可靠性等等。
  • 性能测试用来保证系统运行后的性能可以满足用户需求。性能测试在软件质量保证中起重要作用。

认识软件性能

1.用户眼中的软件性能:

  • 响应快!
  • 运行稳!
  • 无错误!

2.开发人员视角的软件性能

架构是否合理 系统架构
数据库设计是否存在问题 数据库设计
代码是否存在性能方面的问题 代码
代码中是否有不合理的内存使用方式 代码
系统中是否有不合理的线程同步方式 设计与代码
系统中是否有不合理的资源竞争 设计与代码

3.系统管理员视角的软件性能

系统管理员关心的问题 软件性能描述
服务器的资源使用状况合理吗 资源利用率
系统是否能够实现扩展 系统扩展性
系统最多支持多少用户的访问,支持多少业务处理量 系统容量
系统可能的瓶颈在哪里 系统扩展性
更换哪些设备能提高系统性能 系统扩展性
是否支持7*24的业务访问 系统稳定性

4.性能测试的角度

  • 1.服务器硬件性能
  • 2.根据需求和历史数据制定性能目标
  • 3.建立性能通过模型
  • 4.对开发代码框架和硬件框架进行性能分析
  • 5.针对开发发布版本的基准测试
  • 6.执行软件性能验收及稳定性测试
  • 7.生产环境的配置和优化
  • 8.制定性能测试的测试用例
  • 9.制定性能测试的场景设计
  • 10.协调各部门配合
  • 11.特定的性能分析

为什么进行性能测试

测试目的

  • 能力验证(容量是否满足要求;响应时间是否满足要求;系统是否可以稳定运行)
  • 能力规划(探索性的测试(POC测试);了解系统性能以及获得扩展性能)
  • 性能提升(发现系统性能瓶颈;通过性能调优解决性能瓶颈;对比产品升级前后的性能表现)
  • 系统可用性(评价系统的可用性如何;测试系统高可用机制是否完备健全;评估系统恢复时间和商业风险)

职责描述

角色 职责
客户、产品经理 1.负责提出性能测试需求的人员或组织,包括公司内部客户或外部客户的技术支持、实施、咨询组织 2.配合测试组指定测试需求、测试目标等,一般提供唯一接口人协助落实性能测试项目工作。
项目经理/性能测试经理 1.负责性能测试体系的裁剪和执行,使之符合性能测试项目的实际情况,保证性能测试工作的有效进行。 统筹整个项目的支持实施。 2.负责项目进度、质量、成本及风险
性能测试分析师 1.在项目经理的组织下,负责性能测试的需求分析,测试方案、测试案例、测试场景等的设计工作。 2.分析系统的瓶颈及调优建议。 3.协助编写测试报告 4.可以由项目经理兼任。
性能测试工程师 1.负责性能的测试脚本开发、参数化数据、业务数据、基础数据准备工作 2.负责监控部署 3.负责任务执行、结果搜集及瓶颈初步定位。 4.协助编写测试报告工作

性能测试基本过程

性能需求分析 性能测试准备 性能测试执行 结果分析与性能调优 测试报告与总结
↓ 被测系统分析 →↓ 性能测试设计 →↓ 执行性能测试 →↓ 是否通过 → →↓编写性能测试报告
↓ 需要调研 ↓ 准备测试环境 ↓ 性能分析
↓ 确定业务测试场景 →↓性能调优
↓ 确定性能指标 ↓ 测试脚本准备 ↓调优测试
评审性能指标 → 测试数据构造→ 性能监控&采集数据→ ↑←是否通过 知识沉淀
1.性能需求分析

性能测试人员需要与PM、DEV及项目相关的人员进行沟通,同时收集各种项目资料,对系统进行分析,确认测试的目标。并将其转化为可衡量的具体性能指标

测试需求分析阶段的主要任务时分析被测系统及其性能需求,建立性能测试数据模型,确定性能测试范围确定合理性指标,进行评审。

2.性能测试准备

主要包括:编写吃上方案、测试策略、设计场景、编写脚本、准备测试环境,构造测试数据,环境预调优等。

针对系统的提点设计出合理的测试场景。 为了让测试结果更加准确,这里需求很细致的工作。如建立用户模型,只有知道真实的用户是如何对系统产生的压力,才可以设计出有代表性的压力吃上场景。这就设计到很多信息,如用户群的分布、各类型用户用到的功能、用户的使用习惯、工作时间段、系统各模块压力分布等等。只有从多方面不断的积累这种数据,才会让压力场景更有意义。最后将设计场景转换成具体的用例。

测试数据的设计也是一个重点且容易出问题的地方。生成测试数据量达到未来预期数量只是最基础的一步,更需要考虑的是数据的分布是否合理,需要仔细的确认程序中使用到的各种查选条件,这些重点列的数值要尽可能的模拟真实的数据分布,否则测试的结果可能是无效的。

预调优指根据系统的特单和团队的经验,提前对系统的各个方面做一些优化调整,避免测试执行过程中的无谓返工。比如一个高并发的系统,10000人在线,连接池和线程池的配置还用默认的,显然是会测出问题的。

3.执行性能测试

执行阶段工作主要包含两个方面的内容:

一是执行测试是用例模型,包括执行脚本和场景;

其次测试过程监控,包括测试结果、记录性能业务指标和资源占用情况

4.结果分析与性能调优

发现问题或者性能指标不达到预期,及时的分析定位,处理后重复测试过程。

性能问题通常是相互关联相互影响的,表面上看到的现象很可能不是根本问题,
而是另一处出现问题后引起的反应。

这就要求监控收集数据时要全面,从多方面各个角度去判断定位。调优的过程其实也是一种平衡的过程,在系统的各个方面达到一个平衡即可

5.性能报告与总结

编写性能测试报告,阐明性能测试目标、性能结果、测试环境、数据构造规则、遇到的问题和解决办法等。并对此次性能测试经验进行总结与沉淀。

上面所有内容中如果排除技术上的问题,性能测试中最难做好的,就是用户模型的分析。它直接决定了压力测试场景是否能够有效的模拟真实世界压力,而正是这种对真实压力的模拟,才使性能测试有了更大的意义。可以说,性能测试做到一定程度,差距就体现在了模型建立上。

至于性能问题的分析、定位或者调优,很大程度是一直技术问题,需要多方面的专业知识。数据库、操作系统、网络、开发都是一个合格的性能测试人员需要拥有的技能,只有这样,才能从多角度全方位的去考虑分析问题。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!