互联网产品前后端分离测试(Eolink 分享)
在互联网产品质量保障精细化的大背景下,根据系统架构从底层通过技术手段发起测试,显得尤为重要,测试分层的思想正是基于此产生的,目前也是较为成熟的测试策略。
一般采用自下而上的测试方式,以最简单的单一前后端系统为例,一般我们先保质底层服务接口的质量,再从前端发起全链路的端到端的业务测试。
** 测试环境准备**
进行测试之前首先需要与开发确认好测试环境,通常情况下,一般情况业务涉及3个测试环境:测试环境、准生产环境及生产环境。测试一般在测试环境实施测试。为了方便快捷切换接口测试环境的 host 指向,我们可借助以下工具进行切 换:Eolink、Nohost、postman 等。
01 后端接口逻辑测试
接口后端逻辑测试思路:输入-业务逻辑-输出。测试人员输入测试用例的入参场景数据,调用接口发起后台服务处理,检查输出结果跟预期是否一致。接口测试用例设计严格按照接口文档设计,出了正常的功能测试外,应根据业务诉求考虑幂等、并发、数据一致性等逻辑。
测试用例设计方法
考虑三个方面:输入-业务逻辑-输出
举例:接口A提供了根据门店ID查询门店详情信息,我们需要关注:输入:门店 ID;业务逻辑:查询(从哪查);输出:返回结果。
针对输入验证点:必填项校验(哪些字段是必填的)、参数长度校验(参数有无长度限制)、参数有效值校验(参数< 0 就是无效值)、参数组合校验、参数如果是枚举值,枚举值所有值都要测试、参数值的默认值校验,例如有些参数不传,会默认为0、某些参数特定的规则:例如资质编号为13 15 18位等。
业务逻辑:
设计方法:分支覆盖—>路径覆盖—>场景覆盖
一定要先明白接口对外提供的功能是什么,同时接口处理逻辑图也要清晰,准确的画出数据图,例如查询接口是从哪个表查询的,写入接口具体是写入到哪个表中,写入的哪个字段,字段具体是什么,举例:数据流图。
不同的业务场景需要不同的数据,要明白不同类型的数据如何构造,如何验证到真实的业务逻辑,下游 mock 有无风险等。
输出:分为正常输出和异常输出
针对输入点,我们预期结果是什么,一定要明确,比如参数为空,返回结果期望是参数为空;正确的参数,返回结果期望返回正确的结果,要确认返回值返回哪些信息,正确的结果的应该返回的每一个字段都需要校验。
测试方式
手工测试
手工测试就是借助浏览器或者部分测试工具(postman、Eolinkhttps://www.eolink.com/等)手动执 行测试用例的过程。针对新开发接口建议首先进行全面的手工测试后再将部分可 重复执行用例加入自动化测试。
自动化测试。
接口测试相对容易实现自动化,且相对 UI 自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,是支持后端快速发版需求,达到低成本高收益的根源。收益比较高的自动化主要体现在核心链路的冒烟和回归上。
接口自动化测试同样需要有需求分析、用例设计,依据用例设计编排测试计划功能,编写自动化测试脚本,实现接口自动化测试、自动执行及自动发送测试报告等环节。可考虑通过 Eolink 实施自动化回归计划的用例编排。
一个好的接口自动化测试框架应该涵盖以下几点:
a) 流程方面:在回归阶段加强接口各种场景的覆盖度,并逐步向系统测试, 冒烟测试阶段延伸,最终达到全流程自动化。
b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等。
c) 问题定位:报错信息、日志更精准,方便问题复现与定位。
d) 结果校验:加强自动化校验能力,如数据库信息校验。
02 前端交互测试
前端页面与后端代码之间的交互测试,可以理解为业务功能测试的一部分。
测试用例准备
根据业务要求编写功能测试用例,最好按业务模块拆分,逻辑清晰,此外针对编辑框可以通过等价类等方法丰富测试场景,按钮功能异常测试等,测试用例要严格评审对齐产品、研发、测试的三方认知。
测试数据准备
测试用例执行之前最好对测试场景进行梳理,需要准备什么样的数据,可以提前准备,比如退货退款场景可以提前铺设购买交易的订单,一些常用测试数据的准备也可以通过Eolink工具一键构造,降低场景数据构造成本。
测试方法
可以使用抓包工具来进行交互层面测试,查看每个交互功能,对应的接口是否正确 (包含请求头、请求参数、响应以及其他约束项),确保前端按照后端的要求正确地进行了调用。
在交互过程中,针对一个接口也会有多个场景,前端会根据不同的入参来调 用不同的场景,根据不同响应结果, 进行响应数据的改写,来获得不同响应,验证不同响应下前端的展示效果。在这里我们也可以使用一些 不同场景的交互测试。推荐 Mock 工具:https://www.eolink.com/
其他关注点
除了上述关注点外,业务质量要求较高的应该做到以下几点:

互联网产品前后端分离测试(Eolink 分享)的更多相关文章
- 【开源】分享一个前后端分离方案-前端angularjs+requirejs+dhtmlx 后端asp.net webapi
一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家.关于前后端分离这个话题大家也谈了很久了,希望我这个实践能对大家有点点帮助,演示和源码都贴在后面. 二.技术架构 这两年a ...
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架
开发框架要考虑的面太多了:安全.稳定.性能.效率.扩展.整洁,还要经得起实践的考验,从零开发一个可用的框架,是很耗时费神的工作.网上很多开源的框架,为何还要自己开发?我是基于以下两点: 没找到合适的: ...
- 【开源】【前后端分离】【优雅编码】分享我工作中的一款MVC+EF+IoC+Layui前后端分离的框架——【NO.1】框架概述
写博客之前总想说点什么,但写的时候又忘了想说点什么,算了,不说了,还是来送福利吧. 今天是来分享我在平时工作中搭建的一套前后端分离的框架. 平时工作大多时候都是在做管理类型的软件开发,无非就是增.删. ...
- Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)
Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享) 点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...
- 分享我在前后端分离项目中Gitlab-CI的经验
长话短说,今天分享我为前后端分离项目搭建Gitlab CI/CD流程的一些额外经验. Before Gitlab-ci是Gitlab提供的CI/CD特性,结合Gitlab简单友好的配置界面,能愉悦的在 ...
- 一个Java程序猿眼中的前后端分离以及Vue.js入门
松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ...
- 前后端分离时代,Java 程序员的变与不变!
事情的起因是这样的,有个星球的小伙伴向邀请松哥在知乎上回答一个问题,原题是: 前后端分离的时代,Java后台程序员的技术建议? 松哥认真看了下这个问题,感觉对于初次接触前后端分离的小伙伴来说,可能都会 ...
- [原创]基于VueJs的前后端分离框架搭建之完全攻略
首先请原谅本文标题取的有点大,但并非为了哗众取宠.本文取这个标题主要有3个原因,这也是写作本文的初衷: (1)目前国内几乎搜索不到全面讲解如何搭建前后端分离框架的文章,讲前后端分离框架思想的就更少了, ...
- 某神秘公司 RESTful、共用接口、前后端分离、接口约定的实践
阅读本文大概需要 4.6 分钟. 本文来自 https://juejin.im/post/59eafab36fb9a045076eccc3 前言 随着互联网高速发展,公司对项目开发周期不断缩短,我们面 ...
随机推荐
- XCTF练习题---MISC---Janos-the-Ripper
XCTF练习题---MISC---János-the-Ripper flag:flag{ev3n::y0u::bru7us?!} 解题步骤: 1.观察题目,下载附件 2.发现是压缩包,进行解压,是一个 ...
- go-micro集成链路跟踪的方法和中间件原理
前几天有个同学想了解下如何在go-micro中做链路跟踪,这几天正好看到wrapper这块,wrapper这个东西在某些框架中也称为中间件,里边有个opentracing的插件,正好用来做链路追踪.o ...
- 【Rust】使用HashMap解决官方文档中的闭包限制
问题概述 值缓存是一种更加广泛的实用行为,我们可能希望在代码中的其他闭包中也使用他们.然而,目前 Cacher 的实现存在两个小问题,这使得在不同上下文中复用变得很困难. 第一个问题是 Cacher ...
- 1903021121-刘明伟 实验一 19信计JAVA—Markdown排版学习
项目 内容 班级博客链接 19信计班(本) 作业要求链接 实验一 课程学习目标 学习使用Markdown排版 这个作业帮助我们实现了什么学习目标 学会使用Markdown排版 任务一:在博客园平台注册 ...
- EF Core 的关联查询
0 前言 本文会列举出 EF Core 关联查询的方法: 在第一.二.三节中,介绍的是 EF Core 的基本能力,在实体中配置好关系,即可使用,且其使用方式,与编程思维吻合,是本文推荐的方式. 第四 ...
- Go基础3:函数、结构体、方法、接口
目录 1. 函数 1.1 函数返回值 同一种类型返回值 带变量名的返回值 函数中的参数传递 函数变量 1.2 匿名函数--没有函数名字的函数 在定义时调用匿名函数 将匿名函数赋值给变量 匿名函数用作回 ...
- Tenseal库
在此记录Tenseal的学习笔记 介绍 在张量上进行同态计算的库,是对Seal的python版实现,给开发者提供简单的python接口,无需深究底层密码实现. 当前最新版本:3.11 位置:A lib ...
- 136. Single Number - LeetCode
Question 136. Single Number Solution 思路:构造一个map,遍历数组记录每个数出现的次数,再遍历map,取出出现次数为1的num public int single ...
- 联盟链 Hyperledger Fabric 应用场景
一.说明 本文主要通过一个例子分享以 Hyperledger Fabric 为代表的联盟链应用场景. 关于 Fabric 的相关概念请先参考文章 <Hyperledger Fabric 核心概念 ...
- centos6搭建mysql
目前CentOS6.5及一下版本基本上被官方给放弃更新了,但是考虑到忠实粉丝迟迟不肯放手,所以还留了入口但是非常有限 1.搭建mysql 可参照:https://blog.csdn.net/huang ...