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

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.rhkb.cn/news/41870.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

赶上ChatGPT的车,百度文心一言和阿里通义千问上线

百度“文心一言”,地址:https://yiyan.baidu.com 阿里“通义千问”,地址:https://tongyi.aliyun.com 以下介绍来自官方: 一、“文心一言”介绍: 你好,我是文心一言 ERNIE Bot 作为一个人工…

阿里入局,通义千问备受期待

目录 官宣内测体验内容鸟鸟分鸟后言 继百度文心一言发布三周之后,4月7日阿里通义大模型终于推出通义千问,阿里正式加入ChatGPT战局。下午市场一片大热,对于深耕NLP多年的阿里,大家有足够的期待。 官宣内测 “你好,我叫…

全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门翻译编程语言应用——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门翻译编程语言应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字…

语音助手开发教程

注:本教程属于功能验证性质 思维导图: 1、搭建MQTT服务器(腾讯云为例) 购买云服务器,镜像选择为ubuntu系统,服务器的概要页面的网络信息栏中点击管理规则,自行添加8083、1883、18083端口&…

我和程序员打了13年交道后,为什么做了缘创派?

可能很多朋友还不认识我,我叫闫辉,曾经在CSDN工作了十三年。做过《程序员》杂志记者,CTO俱乐部的产品和运营等等。 最初加入CSDN的时候,公司也就是10来个人,办公地点就在现在的鸟巢下面,那个地方当时叫利康…

【陈老板赠书活动 - 04期】- 【C++、Linux、算法等系列众书】

陈老老老板🦸 👨‍💻本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 👨‍💻本文简述:与几分醉意.一起搞的赠书活动一次30本书哦!!…

腾讯云云函数收费?python脚本挂回自己路由一样玩

前言腾*宣布六月一日云函数开始收费。。。而且python脚本中无法使用xpath。。。搞了大半天放弃了,最终还是使用正则完成了代码,功能又不咋地,又要收费。。。还是挂到自己的路由上吧,想怎么样就怎么样,模块装好了没有坑…

钉钉:开放不是玩流量

钉钉,正在重新思考自己真正的价值——答案不是规模、不是流量、不是过去20年里消费互联网的“成熟”游戏规则,而是更能切实服务B端客户、帮助企业做好数字化。 作者|皮爷 出品|产业家 “过去一年如果给我打分数的话,有两件事肯定是做对的。…

使用科大飞讯语音合成报 20021 引擎错误

错误编码20021为引擎错误,是因为项目本身没有找到它的dll文件和so文件 解决方法: 将从官网下载的包中这4个文件放到项目根目录下 完美运行

基于QT平台webapi科大讯飞语音机器人2.0

本博是针对上一个版本的语音机器人更新,主要更新内容为对iat的支持,即使用语音交互取代文字输入的方式,由于之前忙于其他事情一直没来的及更新,以后会将语音机器人一直做下去,添加更多的功能和大家分享。 那么先来看看…

使用科大飞讯语音合成SDK报 20021 引擎错误

一、报错 在参考在Java中实现在线语音识别进行语音识别的时候,检查Jar包已经导入后,点击main运行,控制台报错20021如下 二、解决 如果没有Jar包和.os、.dll文件去官网https://www.xfyun.cn/sdk/dispatcher注册申请项目,然后免费…

飞讯管理员端的主页设计

首先创建一个web项目&#xff0c;由于需要使用react&#xff0c;则使用npm安装react与antd npm i react react-dom 然后在目录中可见 此两个文件夹 之后使用react需要将jsx翻译为js语句&#xff0c;使用babel。在页面中引入 <script src"https://unpkg.com/babel-…

基于QT平台webapi科大讯飞语音机器人

最近打算做一个语音识别&#xff0c;语义理解机器人方面的软件&#xff0c;于是了解了科大讯飞语音平台&#xff0c;平台大部分都是对Java的支持&#xff0c;对c和c的支持特别少&#xff0c;对c的支持有Windows的SDK&#xff0c;但是代码相对冗杂&#xff0c;且不支持跨平台&am…

基于阿里云微信小程序语音识别

页面效果 其中采用阿里云语音识别&#xff1a;阿里云一句话语音识别 语音识别页面 <template><view><view class"chat_list"><view v-for"v in chatList" :class"v.type right ? type_right : type_left"><chat …

飞讯管理员端群组部分完整版实现

群组概括信息页面&#xff1a; /GroupBrief 需要展示有关群组的概括信息&#xff0c;包括群组的组成占比&#xff0c;群组数量&#xff0c;不同群组的数量&#xff0c;均可视化展示 群组有六个种类 Public Work Meeting AVChatRoom Community Private 使用一个一维数组存储…

快速开发智能硬件,阿里云AIoT首期云端一体训练营开麦了

6月10号&#xff0c;阿里云AIoT面向智能硬件开发者发起首期云端一体物联网开发训练营&#xff0c;免费报名火热开启&#xff0c;为期5天干货详解&#xff0c;内容覆盖阿里云Cloud AIoT Native架构中多个核心产品&#xff0c;包括物联网平台、IoT Studio、HaaS开发板&#xff0c…

微信小程序+云函数+腾讯云对话机器人API(ChatBot)

文章目录 前言 一、小程序云开发是什么&#xff1f; 二、步骤 1. 在app.js中绑定好云环境id&#xff0c;并且选好当前环境以及选好云文件夹 2. 去到腾讯云API Explorer中选好Region地区和Query这个必填参数&#xff0c;然后进行代码生成 3. 在上面的API Explorer网站点击前往获…

001,Python微信接龙脚本与腾讯会议定时挂网课脚本

目录 前言: 微信接龙: 腾讯会议: 前言: 这是我的第一篇博客,看到一个视频,推荐写写博客来验证所学,觉得很有道理,就来写一个. 这两个脚本是我的处女作,还有很多不完善的地方,但重点是能跑..... 系统是win11 微信接龙: 我使用的wxauto库,pip install wxauto就行,不过需要…

如何用网易邮箱大师登录QQ邮箱账号

非常无语&#xff0c;非常不理解为什么QQ邮箱整这么多幺蛾子&#xff1f; 问题描述&#xff1a; 登陆的时候&#xff0c;问你是否有授权码&#xff0c;如果有用授权码登录&#xff08;注意不是QQ密码&#xff09;&#xff1b;如果没有&#xff0c;就需要获取授权码。 获取授权…

利用masigpro包进行时间序列分析

这边文章的代码主要源于网上已有的精品推文&#xff0c;根据自身数据和作图时出现的报错“Error in plot.new() : figure margins too large”进行了个性化修改 值得注意的是&#xff1a;maSigPro软件包主要用于差异基因分析&#xff0c;因此其内置的函数和方法都是基于差异基…