性能测试从零开始实施指南-场景模型篇

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 需求不明确导致无法对测试点&测试场景进行详尽完善的分析,最终的测试结果与实际需要的结果差距很大,无法对瓶颈定位和线上容量规划提供精确的参考;

今年跳槽到一家电商企业,性能测试需要从零开始。在性能测试不断推动落地过程中,积累了一些从零开始的经验和教训,自己也在有计划的写一个系列《性能测试从零开始实施指南》。前面已经聊过了从零开始要做的一些事情,比如:《性能测试从零开始实施指南——流程篇》《性能测试从零开始实施指南-文档建设篇》《性能测试从零开始实施指南-测试计划篇》


最近在忙着准备双十一全链路压测相关的工作,正好今晚私信收到一个同行的消息,看完感触蛮多的,也算是督促了这篇博客的出现吧。私信的主要内容包含下面几点:


1、性能测试,需求分析是重中之重——分析不到位会导致场景不符合实际,做无用功;

2、工具+监控没太多学习成本;

3、真实的性能需求,才是影响最终测试结果的关键因素;


这几点问题,和我在实际工作中的感受很类似。相信很多性能测试的同学,都遇到过下面这些问题:


1、需求不明确,有时候甚至是“我们有个XXX接口,你给我压一下”这种伪需求;


2、需求不明确导致无法对测试点&测试场景进行详尽完善的分析,最终的测试结果与实际需要的结果差距很大,无法对瓶颈定位和线上容量规划提供精确的参考;


3、工作结果没有正向有效的反馈机制,出了问题甚至需要背锅这种蛋疼的事情;


当然,实际工作中,还会遇到很多其他的问题,重要的是:我们如何分析问题背后的原因,然后想办法解决问题!


这篇文章,聊聊在性能测试过程中,我是如何理解并且去实践场景建模的方法。。。

 

关于场景建模,我个人的实践和经验,主要从如下三方面入手:


一、业务场景


在测试开始前的需求阶段,一定要梳理调研清楚,我们测试的范围和目的是什么?


以我司来说,主要是社交电商+鉴定,社交必备的风控业务,电商先天自带的物流仓储业务,基础的消息及推送服务,以及双十一必备的促销活动,在双十一大促期间,这些都是核心的业务链路。


那么,我们可以确定大体的测试范围,包含如下几个核心业务链路:


640.png


知道了测试的业务链路范围,接下来就是和对应的业务&产品&开发同学梳理确认各自负责的核心业务链路(这里指的是带有业务属性的链路及对应API,以及重要程度和优先级)。


以交易业务来说,交易业务链路,会包含如下的一些核心业务链路:


640.png


其中,首页可能会包含开屏页、登录首页、促销活动页,个人主页等;商品会包含商品详情、商品列表、商品收藏等;以及订单、购物车、支付、搜索等和交易有强依赖的业务。


根据不同业务链路包含的细分业务功能,以及结合系统架构类型(微服务可能会根据业务属性来做高度内聚解耦),划分不同功能的优先级和重要程度。


这样,我们在需求阶段,就可以得到一个比较明确的业务场景,从而开始下一步的工作。

 

二、链路场景


完成了测试范围的确认和业务场景的梳理划分,接下来,就是从需求→测试点的拆分(关于这点,初始的想法是和压测场景合并来说,但仔细想想,作为一个独立场景更好)。


在链路场景构建过程中,最重要的,是考虑到如下三点:


1、任务拆解


任务拆解,和字面意思一样,根据梳理出来的业务场景,从用户的角度来划分不同的操作流程,然后梳理出不同业务链路的任务List;


2、任务排期


根据拆分的业务链路,分析梳理它的前置项(环境准备、服务联调)、跨部门合作(运营投放、渠道引流)、资源投入(开发、运维、测试)、交付产出(版本、API文档、日志服务、监控)。


然后按照时间节点,预估工期并进行倒排,工时预估到天/人,可以有半天左右的浮动,但一定要明确交付时间和预案(比如各team交付太晚或资源不足的备份方案)。


3、权重划分


你看,按照上面的玩法,梳理出来的东西一定很多。但很多时候,交付产出总会晚点,资源投入总会少点,预案基本是没有的。

针对这种问题,作为性能测试,该如何做呢?答案其实上面已经说到了,划分权重和优先级,在有限的时间和资源投入范围内,优先保障核心和重要链路的测试覆盖!


毕竟,兜底方案,是有很多的,比如流量限流、服务降级甚至熔断(这些手段都是有损的,但为了保障到时候服务不挂掉,这些都是可接受的)。


PS:有些细节性的东西,限于保密和安全规则,无法详细介绍,但抓住重点,按照上面介绍的思路去实践,总归会有适合自己团队的方法。

 

三、压测场景


前面我们确认了测试范围、业务场景、业务链路,划分了优先级和权重,做了一些预案及任务排期,但最终要落地的,还是测试方案及具体的测试场景。


比如,针对不同的业务场景,我们要采用哪些测试策略,如何进行测试,什么时候开始,预期结果以及验收标准等等。


这里,我建议在输出最终的测试方案前,先画个思维导图,和开发、运维甚至架构童鞋快速的review一下,先达成大方向的一致,然后输入测试方案,执行压测。


可以参照如下的压测思路进行具体的测试场景设计:


640.jpg


这里主要分享一些我个人的思路和方法,具体实践,还是建议根据各自team的特点,针对性执行。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
6月前
|
测试技术
性能场景之压测策略设计
【2月更文挑战第19天】性能场景之压测策略设计
581 4
性能场景之压测策略设计
|
6月前
|
设计模式 安全 测试技术
【软件设计师备考 专题 】系统实施:程序设计和系统测试
【软件设计师备考 专题 】系统实施:程序设计和系统测试
114 0
|
消息中间件 监控 测试技术
消息队列和应用工具产品体系-性能测试场景和工具
消息队列和应用工具产品体系-性能测试场景和工具
消息队列和应用工具产品体系-性能测试场景和工具
|
消息中间件 弹性计算 Java
使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践
使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践
1263 6
|
6月前
|
敏捷开发 监控 测试技术
深入探索自动化测试框架的设计与实施
【5月更文挑战第23天】 在快速迭代的软件开发周期中,自动化测试已成为提升效率、确保质量的关键手段。本文将深入分析自动化测试框架的设计原则和实施策略,通过具体案例探讨如何构建一个既灵活又稳定的测试框架来支持持续集成和持续部署(CI/CD)的实践。文中不仅涉及框架选择、架构设计,还详细讨论了脚本开发、维护以及性能优化等方面的挑战与解决方案,旨在为读者提供一套系统化的自动化测试实施指南。
|
4月前
|
测试技术
软件测试自动化策略与实施:提升质量与效率的关键
【7月更文挑战第25天】软件测试自动化是提高软件质量和效率的重要手段。通过明确自动化测试目标、选择合适的测试工具、制定详细的测试计划、建立稳定的测试框架以及持续优化与迭代,企业可以构建高效、可靠的自动化测试体系。在实施过程中,注重与项目团队的沟通与协作,确保自动化测试与项目开发的紧密结合,共同推动产品质量的不断提升。
|
4月前
|
测试技术
性能测试场景设计
**性能测试场景设计**涉及模拟用户行为和负载以评估系统在真实环境下的性能、稳定性和可靠性。常用的测试方法包括:**负载测试**,模拟实际使用以检查不同负载下的性能;**压力测试**,超负荷运行以检测系统极限;**稳定性测试**,验证系统长时间高负载的稳定性;**并发测试**,检查多用户访问时的性能和问题;以及**容量测试**,确定系统处理能力和资源利用率。测试场景多样,旨在确保系统应对未来增长需求的能力。
|
4月前
|
Devops jenkins 测试技术
如何在Visual Basic项目中实施单元测试以确保代码健壮性
【7月更文挑战第2天】本文探讨了如何在Visual Basic项目中实施单元测试以确保代码健壮性。单元测试基础包括验证代码单元的功能,促进重构和提高代码质量。MSTest、NUnit和xUnit是VB.NET的单元测试工具。遵循TDD原则,保持测试独立,关注单一功能,并确保快速执行。示例展示了如何为`Calculator`类的加法方法编写MSTest。持续集成与自动化测试工具如Jenkins和Azure DevOps辅助测试运行和代码质量检查。单元测试是提升软件质量和开发效率的关键实践,反映了良好的开发文化。
51 2
|
6月前
|
敏捷开发 监控 Devops
深入理解与实施软件测试中的持续集成策略
【5月更文挑战第29天】 在快速迭代的软件开发过程中,持续集成(CI)策略是确保产品质量和加速市场交付的关键实践。本文将探讨持续集成在软件测试中的应用,分析其对提高测试效率、降低缺陷率以及优化资源分配的影响,并讨论如何在现有的测试框架中有效地实施CI策略。通过案例分析和最佳实践分享,旨在为读者提供一套系统的方法论,以便更好地融入现代敏捷开发流程,实现软件测试工作的自动化和高效化。
|
6月前
|
安全 数据管理 测试技术
网络安全与信息安全:防范漏洞、加强加密与提升安全意识深入探索自动化测试框架的设计原则与实践应用化测试解决方案。文章不仅涵盖了框架选择的标准,还详细阐述了如何根据项目需求定制测试流程,以及如何利用持续集成工具实现测试的自动触发和结果反馈。最后,文中还将讨论测试数据管理、测试用例优化及团队协作等关键问题,为读者提供全面的自动化测试框架设计与实施指南。
【5月更文挑战第27天】 在数字化时代,网络安全与信息安全已成为维护国家安全、企业利益和个人隐私的重要环节。本文旨在分享关于网络安全漏洞的识别与防范、加密技术的应用以及提升安全意识的重要性。通过对这些方面的深入探讨,我们希望能为读者提供一些实用的建议和策略,以应对日益严峻的网络安全挑战。 【5月更文挑战第27天】 在软件开发周期中,自动化测试作为保障软件质量的关键步骤,其重要性日益凸显。本文旨在剖析自动化测试框架设计的核心原则,并结合具体案例探讨其在实际应用中的执行策略。通过对比分析不同测试框架的优缺点,我们提出一套高效、可扩展且易于维护的自动