我在阿里做测试,入职5个月的回顾与总结

news2024/11/29 9:00:20

d75a4f8ac8c4f51792cebe01363f40a8.gif

初来阿里实习的时候,我对测试人员的职责知之甚少,在校时更是从未接触过测试工作。一头雾水之际,主管说:“做项目吧,在实战中快速成长”。从学生到校招生,我在思维和心态完成了一次真正意义上的转变,也希望未来能够开启一段新的旅程。在主管、师兄师姐和同事们的帮助下,我从一个懵懂的小白努力学习成长为可以独立完成需求的测试同学,也希望未来自己能够不断进步独自owner项目。特地写下此文,针对试用期内自己对于业务的感悟和沉淀梳理出的测试相关的知识做个总结。

345b558b840da67335c661c6b8386c80.png

思维形成-测试流程总结

针对每一个需求,测试人员都应该从需求设计阶段就开始参与,通过测试左移尽早地介入需求、发现问题。"第一时间发现缺陷,第一时间解决"。下面是我在测试过程中根据业务特性梳理出的测试人员在项目各个阶段应该保障的行为规范。

  需求设计阶段 - 测试计划与需求评估

在需求评审阶段,测试人员需要了解需求、业务目标和实现逻辑,为测试设计做准备。可以在这个阶段识别出产品设计的风险,同开发人员一起梳理出业务的风险点和监控点,纳入风险防控的考虑范围内。在此阶段还应根据测试资源、业务要求的角度明确测试范围、测试目标、测试重点和难点、如何安排测试节奏等。

除此之外,我们还应该思考需求中是否涉及到用户体验、公关、资金风险、财务等等一系列隐藏问题,这些都可以通过需求阶段挖掘出来。提前识别到其中的风险并提出,可以有效防止因为需求设计方案变化带来的额外开发和测试成本。

  开发设计阶段 - 分析与设计

在此阶段,作为测试人员应该熟悉技术实现方案,评估该方案是否满足业务的需求以及是否存在潜在风险,以便更加准确地写好测试用例。根据需求、质量特性、稳定性、资损防控等特性写好测试用例,并在提测之前邀请开发、业务等关联方进行测试用例评审。

在测试用例评审的过程中也有助于将团队各方成员的理解拉到一致。这个阶段的核心就是我们需要了解需求中隐藏的逻辑、是否有相关的历史逻辑影响需求的实现或是对于用户来说有矛盾的地方,以及是否涉及到上下游接口逻辑的处理等等。

此时和需求设计阶段的区别就是需求设计阶段是偏向于白盒的,而在开发设计阶段的代码设计细节偏向于黑盒。

  测试阶段 - 测试执行与策略实施

首先可以对主流程进行冒烟测试或是让提测方执行,确保提测是满足约定的标准和内容的。在测试执行的过程中,需要对缺陷修复进行验证、通过手工或自动化的方式进行回归测试、进行非功能性的验证(如页面的性能、适配、监控、资损对账等)。可以组织业务验收测试结果,看看项目是否符合业务预期的功能和价值。

  发布前后

  1. 灰度验证:灰度验证是发布的必须过程,在发布上线前测试人员需要对变更和可能影响的功能在安全生产环境进行验证,并保持一段时间的观察,让问题有机会暴露出来,避免上线出现问题。

  2. 发布执行配合:测试人员要和开发人员梳理对齐发布上线的方案,关注发布的整体过程,检查相关配置项的参数是否正确、配置项是否生效以及需要验证日志、监控的结果是否符合业务预期。

  3. 线上回归:发布后需要进行一段时间的监控观察,以及在外网4G的情况下进行线上的回归验证。

  4. 问题跟踪:通过对线上问题的跟踪可以帮助测试人员反思测试遗漏该点的原因,评估自己测试方案的不足并吸取经验教训再进行改进,形成稳定性建设的良好循环。

e74b1a23f808c761305b694914bdb7b2.png

行之有道-测试用例的设计

作为新人,如何写好测试用例是一门需要下功夫的学问。测试用例写好了,可以保障后面的测试工作高效有序进行。回想起刚入职时写的第一份测试用例,可以说就是需求PRD的一份简要“翻译”。但其实测试用例的设计是需要结合测试方法理论和有自己对于业务特性的思考的。那么作为一个测试开发新人来说,怎么样才能提高所写的测试用例的质量呢?下面我会结合业务场景,讲讲我是如何设计测试用例的。

这里我给出一个具体的需求:

用户在活动页面可以看到抽奖的入口,在活动页面可以看到目前已发放奖品份额的进度条。用户点击抽奖按钮时,前端会针对两类不同规则的用户分别发放不同的奖品:即属于A规则的用户发放a奖品,属于B规则的用户发放b奖品。没有进行实名身份认证的用户无法进行抽奖。

  第一步:分析需求

从接到一个需求开始,我们首先要做的是分析这个需求的内容,确定需求影响的范围,影响到了哪些页面,这个需求是修改了原有的接口还是新增了接口,需要获取的数据是从哪儿读取的等等,这些都可以在技术方案评审之前有所思考和明确。而不是看到需求上有什么,就怎么写怎么做,在这中间最重要的就是自己的思考与见解。

举个例子,针对上述需求,我们是不是可以很快地编写出测试用例呢?

用例描述

前提条件

用例步骤

预期结果

没有进行实名身份认证的用户无法进行抽奖

用户没有进行实名身份认证

1、用户A进入活动页

2、用户A执行抽奖

1、提示用户需要首先进行实名认证

2、没有请求抽奖接口

属于A规则的用户A发放a奖品

用户A符合A规则

1、用户A进入活动页

2、用户A执行抽奖

1、用户A获得了a奖品

2、用户A没有获得b奖品

属于B规则的用户发放b奖品

用户B符合B规则

1、用户B进入活动页

2、用户B执行抽奖

1、用户B获得了b奖品

2、用户B没有获得a奖品

这样的用例乍看没有问题,是正常的功能验证,但是细想其实遗漏了一些场景。比如说:

  1. A规则和B规则是互斥的吗?一个用户有没有可能即在A规则中又在B规则中?

  2. 用户是否可以反复进行抽奖?其中的幂等性是否能够保障?

  3. 用户原本符合A规则,抽奖获得了a奖品后变成了符合B规则,是否还能够继续抽奖获得b奖品呢?

  4. 用户在抽奖的过程中请求接口异常了,页面该如何展示呢?

所以我们在接到需求的时候,需要深入思考其中的逻辑和用户可能存在的场景,挖掘潜在的需求,才能把一个测试用例写全面。

  第二步:分析技术方案

参与开发的技术方案评审的时候,可以站在整个业务的层面进行思考,方案不仅在技术上要合理,还要对用户友好。我们设计开发的功能最终使用者是客户,我们要把自己当作客户来进行测试。例如我曾经参与过的积分抽奖需求,用户在活动页中奖后,服务端会根据用户中奖的消息写入数据库中,页面根据它再展示用户已中奖。在技术层面这是没有问题的,但若是写入数据库异常或是延迟了,在用户看来自己就像没有中奖,体验很差不说可能还会引起客诉。所以最后我们的设计方案在用户中奖后也写了一份缓存数据,保证用户能及时看到自己的中奖信息。这样一个小小的改动就能让我们收获客户更高的满意度,提供更优的使用体验。同时也要思考当前的技术方案是否可以支持后续业务增长、业务多样化的需求。避免一次需求一个技术方案,重复造轮子。

在这个需求例子中,我们要针对技术方案分析什么呢?在完成了上一阶段对需求的全面思考后,我们应该可以分析出,我们需要特别关注技术方案中如何保证规则的互斥、抽奖的幂等性、用户在不同规则转变的情况以及异常case的代码逻辑。在这个阶段及时提出其中可能存在的风险和异常提前告知开发和产品经理,可以有效减少后续代码改动的成本,并提升用户的体验。

  第三步:设计测试用例

在真正动手编写测试用例之前,要对整个需求的逻辑了解清晰,有条件的话可以先画流程图,然后再对各个模块充分考虑各种入参和出参的组合情况。测试用例是为了验证功能需求而设计的,应避免过度设计,从需求本身出发。下面我简要介绍一下我常用常考虑的几种设计方法。

  • 等价类+边界值划分

对于各种输入和输出,必须要考虑等价类划分和进行边界值的测试,以及进行异常值、特殊值的测试。在规定了输入数据必须遵守的规则后,可以确认一个符合规则的有效等价类和若干个从不同角度违反规则的无效等价类。

例1:进度条的文案会根据抽奖预算池的消耗程度展示不同的文案。

输出条件

有效等价类

预期结果

奖池预算消耗进度为0%-100%

1.progress=0%

2.progress=50%

3.progress=100.0%

1.xx大奖等你来抽

2.疯抢中

3.活动结束咧

  • 场景法

现在的业务需求通常都是事件来触发控制流程的,触发的不同事件便形成了场景。对于包含逻辑过程、复杂场景、状态机等的业务推荐使用场景法,测试用例的设计应尽可能贴近用户的真实使用场景,围绕场景进行更多的探索。具体来说是从活动参与者的角度根据不同的场景来设计用例,一般有以下3种场景:

  1. 一般场景:从输入和输出都完全满足业务的要求,比如用户进入活动页,在抽奖所需资源足够、奖池库存足够的情况下进行了一次抽奖,并成功领取到了奖品的场景。

  2. 特殊场景:用户在一般场景的执行过程中发生了不符合预期规则的场景,如用户抽奖时的余额不足、奖池库存不足等,需要充分考虑并验证该类特殊场景下的表现是否符合预期,避免资损。

  3. 异常场景:根据梳理出的核心链路和强弱依赖,在所有结点上考虑异常或注入错误即可得到异常场景用例。

  • 历史经验

当利用场景法设计出测试用例,并充分验证了等价类和边界值条件后,可以利用测试人员积累的经验和历史缺陷、故障等手段补充测试用例。例如我负责的会员相关业务,其实是很重运营的配置的。但是活动的数量多、需要配置的信息繁杂、运营手头的活动又有很多,很容易造成配置出错的情况。对于这类场景,我们在系统实现阶段就要考虑人工配置错误的场景下系统的健壮性以及在测试过程中验证即使在配置错误的场景下我们的活动页也要保持用户感知不到的正常表现。

例3:在这个抽奖需求中,抽奖可以限制参与的用户只能为某类特定的用户,这个信息需要运营同学配置在对应奖品权益的素材信息上,供服务端读取。

根据历史经验可以增加测试用例:如果运营同学在奖品素材上配置了该字段且不为特定的字段时,前台应该过滤这个权益,不透出给用户。并且应该增加对应的监控报警,第一时间发现配置上的错误,避免资损。

  • 稳定性相关分析设计

当功能性的测试用例设计完成之后,可以补充一些非功能性的稳定性相关的测试用例,比如性能、并发、可用性、兼容性限流验证等相关的用例。

例4:梳理并验证活动核心接口在限流后的表现是否符合业务预期,以及是否配置了限流、限流是否能生效等,以及对应预案的执行和恢复情况。

例5:发布兼容性测试,代码和数据有兼容性时需增加对应的测试用例。

如我们本次示例需求中的活动页面还有灰度放量的新版和老版的区分,在完成了需求的功能测试之后,还应对代码和数据的兼容性进行分场景的测试与回归。

95ea4bf4e616ccfdf73933beaad0e810.png

更进一步-项目质量方案

在充分地理解需求和较为全面地设计好测试用例后,测试人员应该对项目的质量保障有更高追求。例如我所在的会员业务是淘宝内用户数量较多的业务,在各个大促期间更是会有比平常高不少的QPS,如果保障项目的稳定性,是我们在完成功能性验证后更需要关注的重点。下面我将从核心链路梳理、强弱依赖梳理、限流兜底和资损防控四方面来介绍。

  稳定性治理:核心链路梳理

每一个业务动作背后都是多个系统之间的调用,而这些系统之间的调用组成了一条条的链路,梳理并明确这些链路的调用关系对于稳定性保障具有重要的意义。针对技术方案,测试人员需要在脑海中形成整个业务的流程和明确其中的数据流转。通过梳理业务场景下的核心链路不仅可以帮助测试人员提前发现技术方案的风险点,也可以让我们明确哪些链路是需要重点保障的,在测试时更有侧重点。

  稳定性治理:强弱依赖梳理

强弱依赖治理就是通过科学的手段持续稳定地得到应用间依赖关系、流量、强弱等数据,提前发现因为依赖问题可能导致的故障,避免依赖故障影响用户体验。在测试前提前梳理强弱依赖,在测试过程中验证下游依赖异常时,活动页的表现是否符合预期,避免页面空窗、白屏等。

针对示例需求的强弱依赖梳理如下,通常我会使用混沌工程工具真实地注入各个强弱依赖的故障以此来验证业务表的现是否符合预期,对于难以真实注入故障的场景可以考虑通过debug抛出异常来实现。

  稳定性治理:限流兜底

通过限流,我们可以较好地控制系统的QPS,从而达到保护系统或者接口服务器稳定的目的。一方面,限流可以防止接口被刷,造成不必要的服务层压力;另一方面,是为了防止接口被滥用。完整梳理并针对本次活动涉及到的所有接口并配置限流以此来保护系统接口和下游接口。并在上线前验证了限流后的表现和恢复限流的表现是否符合预期、是否对用户友好。

所以在本需求中,我们还需要关注抽奖接口在达到了设置的限流请求时页面的表现。

用例描述

前提条件

用例步骤

预期结果

抽奖接口在限流时需要提示用户

抽奖接口的QPS超过了设定的限流阈值N

1、同时有超过N个的用户执行抽奖

1、没有被限流的用户可以正常抽奖

2、被限流的用户,活动页面提示“活动太火爆啦,稍等一下再试试吧”


  资损防控:资金链路测试+对账监控

资损相关:活动发放的奖品有特定用户身份的限制、每人限兑一次的门槛,且每款奖品限量xxxx份,防止资损也是测试过程中必须严格保障的要求。

解决方案:校验业务的数据是否正确,保证数据是干净符合预期的,特别是涉及资金的需求,通过主动的对账发现需求中的漏洞。对账就是稳定性中的关键环节。我们需要梳理出可能出现资损的场景,并通过离线小时级的SQL对账和接收消息的实时对账,对奖品的限领规则、奖品发放的量级和兑换奖品用户的身份进行对账,以便及时发现潜在问题,及时止血,在用户的舆情到来之前发现问题。

182cee7debd6106644efd729518fb57c.png

对于产品设计和系统实现环节,在测试保障层面通过对业务流程和技术方案核心链路及强弱依赖的梳理,确保正常和异常的业务场景都能被充分覆盖。此外,从预发环境至线上多环境对测试回归,也是确保问题充分暴露的重要环节。在测试环节中,梳理并验证了奖品兑换时的各类特殊和异常场景,确保只有符合业务规则的场景下可以领取到对应的奖品权益。

特殊和异常场景梳理

预期结果

用户非目标用户

1、前端提示:兑换失败,前端提示:请刷新后重试,奖品详情页进行刷新操作
2、奖品不发放,且积分不扣减

3、如条件满足可再次进行兑换

用户未授权

用户已授权 但未认证

用户未满18周岁

用户积分不足

奖品库存不足

用户已经领取过奖品

操作兑换后,奖品发放失败

兑换操作时,返回未知错误

操作兑换后,接口返回超时

8709a528036a0e4e4b9c1dbd63e0cb68.png

质量底线-安全生产

安全生产对于系统稳定性来说是至关重要的,必须要严格遵守,也是我们测试人员必须要遵从的质量底线。对于变更流程环节,除了在预发环境中做好充分的测试,对于发布上线的环节要严格遵守变更窗口期、变更规范、变更管控。线上生效后,需对关键业务大盘的监控核对进行重点观察,确保业务符合预期。

cdebc05509b2b54e88de3f8413985632.png

写在最后

未来希望自己能更加了解部门的业务特性、提升自己的测试思维和代码技术、把学习成果落地在业务中,快速成长。也希望各位校招生能够在工作中快速成长,捍卫技术质量!

6f47348317af6f56213fdbe348200c28.png

团队介绍

大淘宝技术质量团队,负责保障整个淘宝和天猫主站的业务质量,一直致力于技术驱动,构建业界领先的质量体系。

我们有QCon、QECon、MTSC、GIAC、绿盟、TOP100 Summit等众多行业大会的讲师,有GitHub获得3.2k Star的开源产品JVM-Sandbox作者,最关键的是有对技术极致追求,对生活充满热爱的大家庭,欢迎加入我们,简历投递邮箱:wenbo.shb@alibaba-inc.com。

¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

众享比特董事长严挺出席2022中国计算机大会“元宇宙、Web3.0、NFT:机遇还是泡沫?”技术论坛

12月10日晚,为期三天的2022中国计算机大会(2022CNCC)成功落下帷幕。众享比特董事长严挺出席“元宇宙、Web3.0、NFT:机遇还是泡沫?”技术论坛并参与专题研讨。 第三行左一为众享比特董事长严挺 中国计算机大会&#xf…

一文教你集成通知系统的多种HMS Core服务,实现数据安全和真实用户验证

1、介绍 Overview 云数据库是AppGallery Connect提供的服务之一,实现云端数据的同步,提供统一的数据模型和丰富的数据管理接口。在保证数据的可用性、可靠性、一致性,以及安全等特性基础上,能够实现数据在客户端和云端之间的无缝…

SpringBoot扩展SpringMVC配置

SpringBoot扩展SpringMVC配置1.继承WebMvcConfigurer接口2.实现一个自己的视图解析器3.其他自定义配置视图跳转Spring Boot通过WebMvcAutoConfiguration来提供一些默认配置;大多数时候使用默认的配置即可满足要求。但有时可能需要做一些个性化定制,此时就…

Nginx 可视化!配置监控一条龙!

nginx-gui这个东西真的要吹一波,太好用了,而且源码公开。对于我这样一个作为Linux菜鸟的Java开发来说,这个可视化配置工具简直是福音! 需求 nginx 可视化管理,例如 配置管理 性能监控 日志监控 其他配置 目前已实现…

CIDR格式网络策略值设置方式

CIDR的格式是IP网段/网络ID,斜杠左面的是网络IP段,斜杠右面是网络ID。如果网络用的是IPV4,它最大有效值是32,它的作用本质上是用来表示网络策略所用的子网掩码二进制里的1有多少个,也就是网络ID的位数。 传统的IPV4-t…

策略模式

文章目录策略模板模式1.策略模式的本质2.何时选用策略模式3.优缺点4.策略模式的结构5.实现支付案例支付案例参数不一致问题策略模板模式 1.策略模式的本质 策略模式的本质:分离算法,选择实现。 纵观整个策略模式实现的功能和设计,它的本质还是“分离算法…

会议学习笔记

目录1.标注高效的核心思路:1.部分监督PSL2.自监督SSL魔方复原3.单一标注无标注2.深度通用学习DUL1.通用特征点检测2.通用MRI重建3.学习与知识融合如何把大数据小任务转换成小数据大任务 1.标注高效的核心思路: 以一变二:数据增广无中生有&am…

[附源码]Node.js计算机毕业设计电影院订票管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

腾讯云年终:云服务器CVM、轻量应用服务器、GPU服务器价格表出炉!

腾讯云年终:云服务器CVM、轻量应用服务器、GPU服务器价格表出炉!小编来详细说下腾讯云年末限时回馈优惠活动云服务器配置及精准报价。 一、轻量应用服务器配置及优惠价格表 先说轻量应用服务器吧,因为轻量服务器太便宜了,轻量应用…

2022年山东最新交安安全员考试模拟题及答案

百分百题库提供交安安全员考试试题、交安安全员考试真题、交安安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 1.根据《建筑工程安全生产管理条例》,意外伤害保险费由施工单位支付。实行施工总承包的&…

C++四种强制类型转换

四种强制类型转换🏞️1. C语言中的类型转换🍁2. 为什么C需要四种类型转换🌠3. C强制类型转换📖3.1 static_cast📖3.2 reinterpret_cast📖3.3 const_cast📖3.4 dynamic_cast🌁4. RTTI…

JAVA毕业设计——基于Springboot+vue的疫情物资管理系统(源代码+数据库)

github代码地址 https://github.com/ynwynw/yiqingMaterial-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于Springbootvue的疫情物资管理系统(源代码数据库)047 一、系统介绍 本项目分为管理员与普通用户两种角色 管理员角色包含以下功能&#xf…

安全智能分析 技术背景

安全数据资产 统一管理DataOps,即 Data 和 Operations 的集成,于 2014 年首次提出。Gartner 将 DataOps 定义为“一种协作性的数据管理 实践,专注于改进组织内数据管道的通信、集成和自动化”[7]。DataOps 是一种面向流程的自动化方法&#x…

Linux安装多版本jdk(jdk8和jdk11)并可随意选择版本

一、官网下载不同版本的压缩包 官网下载地址 我这里下载的是jdk8和jdk11 二、将压缩包上传至服务器自定义的文件夹中 三、安装jdk8 1、解压压缩包 tar zxvf /install/java/jdk-8u202-linux-x64.tar.gz2、修改配置 vi /etc/profile在配置文件中添加以下配置(需修改成自己的…

购物车系统设计

1 主要功能 在用户选购商品时,下单前,暂存用户想购买的商品。 购物车对数据可靠性要求不高,性能也无特别要求,在整个电商系统是相对容易设计和实现的一个子系统。 购物车系统的主要功能: 把商品加入购物车&#xf…

3个月前被裁员了,心情跌落谷底,直到学姐给了我这份面试文档…

3个月前的某一天,正在愉快的打工,突然被喊去谈话,然后就被辞退了。。 加入了找工作的大军 然而,因为疫情,因为大专学历的我,找工作比以往都艰难了许多 很多,纯粹就是因为学历,都不…

如何在SpringBoot中异步请求和异步调用

一、SpringBoot中异步请求的使用 1、异步请求与同步请求 特点: 可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在耗时处理完成(例如长时间的运…

Python运维之远程登录paramiko(VsCode)

Python运维之远程登录----paramiko paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。 par…

CentOS7中搭建docker

一、配置要求 系统:Centos7 Linux 内核:官方建议 3.10 以上 1.查看当前的内核版本 uname -r 2.卸载旧版本(如果之前安装过的话) yum remove docker docker-common docker-selinux docker-engine 二、安装Docker 1.安装依赖包 …

【C进阶】第十篇——数据在内存中的存储

数据类型的介绍 类型的基本归类 整型在内存中的存储 原码,反码,补码 大小端介绍 什么是大小端 为什么有大端和小端? 判断当前机器的字节序 浮点型在内存中的存储 例题引入 浮点数的存 浮点数的取 浮点数的比较 数据类型的介绍 char //字符数据类型 short…