草庐IT

互联网产品前后端分离测试(Eolink 分享)

eolink 2023-03-28 原文

在互联网产品质量保障精细化的大背景下,根据系统架构从底层通过技术手段发起测试,显得尤为重要,测试分层的思想正是基于此产生的,目前也是较为成熟的测试策略。

一般采用自下而上的测试方式,以最简单的单一前后端系统为例,一般我们先保质底层服务接口的质量,再从前端发起全链路的端到端的业务测试。

** 测试环境准备**

进行测试之前首先需要与开发确认好测试环境,通常情况下,一般情况业务涉及3个测试环境:测试环境、准生产环境及生产环境。测试一般在测试环境实施测试。为了方便快捷切换接口测试环境的 host 指向,我们可借助以下工具进行切 换:Eolink、Nohost、postman 等。

01 后端接口逻辑测试

接口后端逻辑测试思路:输入-业务逻辑-输出。测试人员输入测试用例的入参场景数据,调用接口发起后台服务处理,检查输出结果跟预期是否一致。接口测试用例设计严格按照接口文档设计,出了正常的功能测试外,应根据业务诉求考虑幂等、并发、数据一致性等逻辑。

测试用例设计方法

考虑三个方面:输入-业务逻辑-输出

举例:接口A提供了根据门店ID查询门店详情信息,我们需要关注:输入:门店 ID;业务逻辑:查询(从哪查);输出:返回结果。

针对输入验证点:必填项校验(哪些字段是必填的)、参数长度校验(参数有无长度限制)、参数有效值校验(参数< 0 就是无效值)、参数组合校验、参数如果是枚举值,枚举值所有值都要测试、参数值的默认值校验,例如有些参数不传,会默认为0、某些参数特定的规则:例如资质编号为13 15 18位等。

业务逻辑:

设计方法:分支覆盖—>路径覆盖—>场景覆盖

一定要先明白接口对外提供的功能是什么,同时接口处理逻辑图也要清晰,准确的画出数据图,例如查询接口是从哪个表查询的,写入接口具体是写入到哪个表中,写入的哪个字段,字段具体是什么,举例:数据流图。

不同的业务场景需要不同的数据,要明白不同类型的数据如何构造,如何验证到真实的业务逻辑,下游 mock 有无风险等。

输出:分为正常输出和异常输出

针对输入点,我们预期结果是什么,一定要明确,比如参数为空,返回结果期望是参数为空;正确的参数,返回结果期望返回正确的结果,要确认返回值返回哪些信息,正确的结果的应该返回的每一个字段都需要校验。

测试方式

手工测试

手工测试就是借助浏览器或者部分测试工具(postman、Eolink https://www.eolink.com/ 等)手动执 行测试用例的过程。针对新开发接口建议首先进行全面的手工测试后再将部分可 重复执行用例加入自动化测试。
自动化测试。

接口测试相对容易实现自动化,且相对 UI 自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,是支持后端快速发版需求,达到低成本高收益的根源。收益比较高的自动化主要体现在核心链路的冒烟和回归上。

接口自动化测试同样需要有需求分析、用例设计,依据用例设计编排测试计划功能,编写自动化测试脚本,实现接口自动化测试、自动执行及自动发送测试报告等环节。可考虑通过 Eolink 实施自动化回归计划的用例编排。

一个好的接口自动化测试框架应该涵盖以下几点:

a) 流程方面:在回归阶段加强接口各种场景的覆盖度,并逐步向系统测试, 冒烟测试阶段延伸,最终达到全流程自动化。

b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等。

c) 问题定位:报错信息、日志更精准,方便问题复现与定位。

d) 结果校验:加强自动化校验能力,如数据库信息校验。

02 前端交互测试

前端页面与后端代码之间的交互测试,可以理解为业务功能测试的一部分。

测试用例准备

根据业务要求编写功能测试用例,最好按业务模块拆分,逻辑清晰,此外针对编辑框可以通过等价类等方法丰富测试场景,按钮功能异常测试等,测试用例要严格评审对齐产品、研发、测试的三方认知。

测试数据准备

测试用例执行之前最好对测试场景进行梳理,需要准备什么样的数据,可以提前准备,比如退货退款场景可以提前铺设购买交易的订单,一些常用测试数据的准备也可以通过Eolink工具一键构造,降低场景数据构造成本。

测试方法

可以使用抓包工具来进行交互层面测试,查看每个交互功能,对应的接口是否正确 (包含请求头、请求参数、响应以及其他约束项),确保前端按照后端的要求正确地进行了调用。

在交互过程中,针对一个接口也会有多个场景,前端会根据不同的入参来调 用不同的场景,根据不同响应结果, 进行响应数据的改写,来获得不同响应,验证不同响应下前端的展示效果。在这里我们也可以使用一些 不同场景的交互测试。推荐 Mock 工具: https://www.eolink.com/

其他关注点

除了上述关注点外,业务质量要求较高的应该做到以下几点:

有关互联网产品前后端分离测试(Eolink 分享)的更多相关文章

  1. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  2. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

  3. ruby-on-rails - 2个用户之间的产品订单 - 2

    我有三个模型:User、Product、Offer以及这些模型之间的关系问题。场景:用户1发布了一个产品用户2可以向用户1发送报价,例如10美元用户1可以接受或拒绝提议我现在的问题是:用户、产品和报价之间的正确关系是什么?我如何处理那些“接受或拒绝”操作?是否有更好的解决方案?用户模型:classUser:productsend产品型号:classProduct:usersend提供模型:classOffer提前致谢:)编辑:我正在使用Rails3.2.8 最佳答案 警告:小小说来了第1部分:设置关联我建议阅读Railsguideo

  4. ruby - 在 ruby​​ 中的字符串前后添加空格? - 2

    我想在随机字符串前后添加一个空格。我试过使用"Random_string".center(1,"")但它不起作用。谢谢 最佳答案 我发现这是最优雅的解决方案:padded_string="#{random_string}"走简单的路没有错。 关于ruby-在ruby​​中的字符串前后添加空格?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3357897/

  5. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  6. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

  7. ruby - 对回文产品问题感到困惑 - 2

    我一直在学习Ruby,所以我想我应该尝试一下项目中的一些Euler难题。尴尬的是,我只完成了问题4...问题4如下:Apalindromicnumberreadsthesamebothways.Thelargestpalindromemadefromtheproductoftwo2-digitnumbersis9009=91×99.Findthelargestpalindromemadefromtheproductoftwo3-digitnumbers.所以我想我会在嵌套的for循环中从999循环到100并测试回文,然后在找到第一个(应该是最大的)时跳出循环:final=nilrang

  8. ruby-on-rails - 在服务器上没有互联网访问权限的 Capistrano 部署 - 2

    如何使用Capistrano将Rails应用程序部署到无法访问外部网络或存储库的生产或暂存服务器?我已经设法完成部署的一半,并意识到Capistrano没有在我的本地机器上下载gitrepo,但它首先连接到远程服务器并尝试在那里下载Git存储库。我希望有一个类似Javaee的构建系统,其中创建可交付成果并将该可交付成果发送到服务器。就像您构建.ear文件并将其部署到您想要的任何服务器上一样。显然在RoR中,你被迫(据我所知)在该服务器上构建应用程序,在那里创建一个gem存储库,在那里克隆最新的分支等等。有什么方法可以将准备运行的包发送到远程服务器吗? 最佳答

  9. ruby-on-rails - Rails 嵌套属性 - 如何将类别属性添加到新产品? - 2

    我正在使用Rails创建一个新产品,并想为每个产品添加一个类别。我有三个表:产品、类别和分类(存储产品和类别之间的关系)。我正在尝试使用嵌套属性来管理分类的创建,但不确定应如何更新我的Controller和View/表单,以便新产品也更新分类表。这是我的模型:classProduct:categorizationshas_attached_file:photoaccepts_nested_attributes_for:categorizations,allow_destroy:trueattr_accessible:description,:name,:price,:photovali

  10. ruby - ZeroMQ 安全地通过互联网 - 2

    我一直在使用zeroMQ,我希望能够通过Internet安全连接。我在ruby​​中,可以使用SSL和/或某种shh连接,但找不到有关如何执行此操作的任何示例。我找到了这个旧的stackoverflow链接,HowdoeszeromqworktogetherwithSSL?说他们正在研究某种安全性,但那是一年前的事了,我找不到任何新的引用资料。即使这不是内置在zeroMQ中,我也假设会有一些方法可以使用OpenSSL或类似的东西来设置它。注意:如果您想要安全传输,zeroMQ网站提到使用VPN或其他东西。我不想使用VPN。一定有更好的方法。 最佳答案

随机推荐