本文作者:武让
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channel=content&utm_source=csdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。
学习极狐GitLab 的相关资料:
- 极狐GitLab 官网:https://gitlab.cn
- 极狐GitLab 官网文档:https://docs.gitlab.cn
- 极狐GitLab 论坛:https://forum.gitlab.cn/
- 极狐GitLab 安装配置:https://gitlab.cn/install
- 极狐GitLab 资源中心:https://resources.gitlab.cn
搜索【极狐GitLab】公众号,后台输入加群,备注gitlab,即可加入官方微信技术交流群。
极狐GitLab 公众号后台回复新手指南,免费领取极狐GitLab 新手指南一份,从零到一快速上手极狐GitLab。
1. 理论篇
1.1 什么是性能测试
WIKI百科对于性能测试的解释是:
性能测试用于评估和确定系统在特定工作量下的响应和稳定方面的性能。可以用于调查、测量、验证系统的其他质量属性,例如可扩展性,可靠性和资源使用情况。
性能测试按照测试目的不同,可分成不同类型,常见的类型有:
- 负载测试:负载测试是最简单的性能测试形式。通常用来了解系统在预期负载下的行为。如测试系统是否可以承受预期的并发用户数,以及重要业务的响应时间等。在测试期间还监视了数据库、服务器等,有助于识别系统中的性能瓶颈。通俗的讲就是“这样的压力你能不能承受”。
- 压力测试:压力测试通常用于了解系统性能的上限。与负载测试不同,压力测试通过不断增加负载,目的是找出系统性能的下降点。也可以用来确定如果系统负载远高于预期的最大值,系统性能是否表现足够。通俗的讲就是“你究竟能承受多少压力”。
- 浸泡测试:也被称为耐力测试、长跑测试。目的是确定系统是否可以维持连续的预期负载。如在浸泡测试期间,监视内存利用率以检测是否存在内存泄露。也可以用来确认系统在长期持续活动后的吞吐量和响应时间是否有下降。通俗的讲就是“这样的压力你能不能一直承受”。
- 冲击测试:也被称为尖峰测试。通过突然增加或减少大量用户产生的负载并观察系统行为进行测试,目的是确定系统性能是否会受到影响,以及它能否处理负载的急剧变化。通俗的讲就是“这样的压力突然来一下你能不能承受”。
1.2 为什么要做性能测试
性能测试是一种非功能软件测试技术,是确保软件质量的关键。但大多数情况下,它被视为单独的事后步骤,并且在功能测试完成之后才进行,甚至在代码发布之后才进行。
企业一般出于以下原因之一运行性能测试:
- 确定系统是否满足性能要求
- 定位系统中的性能瓶颈
- 测量系统的哪些部分或工作负载导致系统执行不良
- 比较两个或以上的系统并确定其中性能最好的一个
性能测试的目的包括评估应用系统吞吐量、处理速度、数据传输速度、网络带宽使用、最大并发用户、内存利用率、工作负载效率和命令响应时间等。
某种意义上讲,性能测试不像接口测试、单元测试那么“刚需”。但当企业有上面提到的这些性能测试的需求,或者将系统性能也作为产品本身的重要评估指标,那就需要开展性能测试。性能测试的门槛相对较低,一般是基于接口测试编排。如上一篇文章《极狐GitLab自动化测试指南02——接口测试》中提到的Postman、Apifox也可以进行性能测试。所以我将性能测试作为该系列文章的第三篇,跟随接口测试,趁热打铁。
1.3 如何做性能测试
从流程层面来说,微软在《Performance Testing Guidance for Web Applications》中列出了Web应用性能测试的7个核心活动:
- 确定测试环境和工具:确定可供使用的生产环境、测试环境和测试工具。 在测试和生产环境中记录硬件、软件、基础设施规范和配置,以确保一致性。
- 确认可接受的性能标准:确定性能测试的指标。一般来说,用户比较关注系统响应时间,业务比较关注系统吞吐量,运维比较关注资源使用情况。
- 计划和设计测试:确定关键场景,定义测试数据以及确定如何模拟数据的多样性。
- 准备测试环境和工具:在执行测试之前配置测试环境并准备好测试工具。
- 实现测试:根据测试计划编写性能测试脚本。
- 执行测试:执行测试,收集并监控测试结果。
- 分析结果、优化和重新测试:整理和分析测试结果。与团队分享结果发现,通过解决发现的性能缺陷来优化应用程序。 重复测试,以确认每个问题都已被彻底解决。
从工具层面来说,性能测试工具主要分为两个类别,目前市面上大多数性能测试工具已经是这两类工具的集合体:
- 脚本工具:通过录制或者编写脚本模拟关键业务流程。
- 监控工具:观察正在测试的应用系统的行为和响应特征。
从实践层面来说,有以下几个注意事项:
- 性能测试环境应与其他环境(如UAT或开发环境)隔离。
- 创建尽可能接近生产环境的性能测试环境。
- 多次运行性能测试以获得更准确的测试结果。
- 不要在两次测试之间更改性能测试环境。
- 性能缺陷越早发现越好补救。