互联网产品前后端分离测试(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---wireshark1
XCTF练习题---MISC---wireshark1 flag:flag{ffb7567a1d4f4abdffdb54e022f8facd} 解题步骤: 1.观察题目,下载附件 2.得到一个wire ...
- 在C#中使用 SendMessage 实现操作外部其他程序上的控件教程
一.C#代码实现 本案例使用的是c# winform .NET Framework 4.7.2 首先我们声明一个寻找窗体的函数 [DllImport("User32.dll", E ...
- 【面试普通人VS高手系列】volatile关键字有什么用?它的实现原理是什么?
一个工作了6年的Java程序员,在阿里二面,被问到"volatile"关键字. 然后,就没有然后了- 同样,另外一个去美团面试的工作4年的小伙伴,也被"volatile关 ...
- MyBatisPlus 入门教程,这篇很赞
在之前的文章中我们经常使用MybatisPlus进行增删改查,可能有些小伙伴对mybatisplus不是很熟悉,今天特意出了一般入门级的教程,我自己也是一边学习一边写的,有什么地方写的不好的地方请留意 ...
- TS 自学笔记(二)装饰器
TS 自学笔记(二)装饰器 本文写于 2020 年 9 月 15 日 上一篇 TS 文章已经是很久之前了.这次来讲一下 TS 的装饰器. 对于前端而言,装饰器是一个陌生的概念,但是对于 Java.C# ...
- 图文详解 HDFS 的工作机制及其原理
大家好,我是大D. 今天开始给大家分享关于大数据入门技术栈--Hadoop的学习内容. 初识 Hadoop 为了解决大数据中海量数据的存储与计算问题,Hadoop 提供了一套分布式系统基础架构,核心内 ...
- 385. Mini Parser - LeetCode
Question 385. Mini Parser Solution 分析:用NI(count,list)来表示NestedInteger,则解析字符串[123,[456,[789]]]过程如下: # ...
- MMDeploy安装笔记
MMDeploy的TensorRT教程 Step1: 创建虚拟环境并且安装MMDetection conda create -n openmmlab python=3.7 -y conda activ ...
- Go微服务框架go-kratos实战01:quickstart 快速开始
先来感受下用 kratos 快速创建项目 一.环境准备 1.1 安装依赖软件 protoc protoc-gen-go 建议开启 GO111MODULE 1.2 安装 kratos cli go in ...
- Linux常用命令-软件包管理工具-rpm
命令简介 rpm(RPM Package Manager)是一个强大的命令行驱动的软件包管理工具,用来安装.卸载.校验.查询和更新 Linux 系统上的软件包. 语法格式 rpm [OPTION... ...