对于DevOps来说,跟踪软件生命周期性能指标(如响应时间、吞吐量、每秒事务数、错误率等)至关重要。这些参数很复杂,直接影响用户体验。有效的性能测试有助于DevOps团队跟踪质量指标并及早发现缺陷。它还通过跟踪风险容忍度、用户数量、并发请求、流量峰值以及其他可能导致崩溃的因素来帮助团队完善软件。
一、为什么要进行性能测试?
性能,在某种程度上,是与功能质量完全不同的质量衡量标准。如果软件的功能方面出现问题,它通常会很快显现出来——一旦有缺陷的产品发布,马上就可以发现错误并使用反馈来纠正问题。但是,性能问题、瓶颈和稳定性缺陷可能会在数周或数月内被忽视,直到下一个年度峰值或直到数据增长到一定水平才会被发现,这时候的损失往往是大的。但如果提前进行软件性能测试,开发人员的就可以提前找出软件的性能症状和问题。以下这些都是很常见的症状和问题:
速度问题:例如响应慢和加载时间长——这很容易被观察到并且解决。
瓶颈:当数据流因没有足够的容量来处理工作负载而中断或停止时,就会发生这种情况。
可扩展性差:如果软件无法处理所需数量的并发任务,结果可能会延迟,错误可能会增加,或者可能会发生其他意外行为,从而影响磁盘使用情况和CPU使用率,导致内存泄漏、操作系统限制、网络配置不佳。
软件配置问题:通常设置的级别不足以处理工作负载。
硬件资源不足:性能测试可能会显示物理内存限制或CPU性能。
二、性能测试七大类型
性能测试对于确保客户期望的软件稳定性、可扩展性和可靠性至关重要。在制定全面的性能测试策略之前,要先了解性能测试类型。一般来说,分为以下几大类:
负载测试:是通过逐渐增加系统的负载,测试系统性能的变化,并确定在满足系统性能指标的情况下,系统所能承受的大负载量的测试。简而言之,负载测试时通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值。
压力测试:是通过逐步增加系统的负载,测试系统性能的变化,并确定在什么负载条件下,系统性能处于失效状态,并获得系统能提供的大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效。
配置测试:主要是通过对被测试软件的软硬件配置进行测试,找到系统各项资源的分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统提供重要依据。
并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。
容量测试:在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的大会话能力、大容量等。系统可处理同时在线的大用户数,通常和数据库有关。
可靠性测试:通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定,因为运行时间较长,通常可以测试出系统是否有内存泄漏等问题。
失败测试:对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。
三、如何选择性能测试工具?
在DevOps中,软件开发生命周期中的所有关键步骤都是自动化的,包括测试,性能测试自然也不例外。
在选择DevOps性能测试平台时,无论是开源工具还是商业工具,除了它本身的功能之外,这些因素都必须要考虑到:
许可限制——有的商业产品带有许可限制,可能会影响使用该解决方案的方式。在某些情况下,协议允许或禁止外包人员/企业使用工具,并且在某些情况下不允许将性能测试工具部署在特定地理区域之外。
供应商支持——除了单纯的工具之外,供应商是否提供技术支持、培训等也很重要,一锤子买卖通常会带来很大的麻烦。即使在选择开源工具的时候,也可以考虑是否有商业公司提供服务和支持。
社区支持——经验表明,过多地依赖供应商并不是一个好的选择,因此,构建自己的IT能力很重要,而社区支持是必须考虑的另一个因素。一个可以寻求支持的在线论坛,可以让技术团队紧跟新发展、补丁、漏洞、功能更新。
市场流行——了解市场偏好,紧跟市场趋势,即使在遇到不能解决的问题的时候,也能很快找到技术支援。如果预算有限,选择在小众工具上构建功能,那也应该将这一风险考虑进去。
与监控和诊断工具的集成——如果能将性能测试工具与企业内部的监控和诊断工具集成,那好不过。因此,要了解监控和诊断工具的内部环境,然后与性能测试工具供应商确认是否支持,以及可集成程度,能尝试一下集成再做决定。
与需求管理和缺陷管理工具的集成——大多数企业提供的性能测试工具都能够与行业缺陷管理和需求管理工具集成。相反,性能测试工具供应商无法支持所有商业缺陷管理平台。如果要与缺陷管理平台集成,那就要考虑这些工作量是否会过大。虽然从实施的角度来看,这不是主要问题,但如果在评估阶段没有将其考虑进去,那么它可能会成为一大阻碍。
对于DevOps实施团队来说,选择一个集成性能测试的开发平台,可以省去许多不必要的麻烦。以飞算SoFlu软件机器人为例,它将开发、测试、运维三大流程全部打通,并且自动化执行,无需考虑与第三方平台的集成成本,而且由于平台使用可视化开发,简单易上手,人力资源投入大幅减少,开发效率快速提升。
目前,飞算SoFlu软件机器人正在不断更新和优化中。值得一提的是,在性能测试方面,飞算SoFlu软件机器人全自动测试平台新增了并发数自动分配功能。在性能测试计划导入测试用例之后,可以自定义将并发数量分配到哪台资源的服务器上执行,不仅可以合理利用资源,同时还能测试其他资源的情况,执行报告和性能结果会整合在测试报告中一并查看。
关于飞算SoFlu软件机器人的更多信息,可以点击链接:https://www.feisuanyz.com/