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

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

** 测试环境准备**

进行测试之前首先需要与开发确认好测试环境,通常情况下,一般情况业务涉及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 分享)的更多相关文章

  1. 【开源】分享一个前后端分离方案-前端angularjs+requirejs+dhtmlx 后端asp.net webapi

    一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家.关于前后端分离这个话题大家也谈了很久了,希望我这个实践能对大家有点点帮助,演示和源码都贴在后面. 二.技术架构 这两年a ...

  2. 【开源.NET】 分享一个前后端分离的轻量级内容管理框架

    开发框架要考虑的面太多了:安全.稳定.性能.效率.扩展.整洁,还要经得起实践的考验,从零开发一个可用的框架,是很耗时费神的工作.网上很多开源的框架,为何还要自己开发?我是基于以下两点: 没找到合适的: ...

  3. 【开源】【前后端分离】【优雅编码】分享我工作中的一款MVC+EF+IoC+Layui前后端分离的框架——【NO.1】框架概述

    写博客之前总想说点什么,但写的时候又忘了想说点什么,算了,不说了,还是来送福利吧. 今天是来分享我在平时工作中搭建的一套前后端分离的框架. 平时工作大多时候都是在做管理类型的软件开发,无非就是增.删. ...

  4. Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)

    Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享)  点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...

  5. 分享我在前后端分离项目中Gitlab-CI的经验

    长话短说,今天分享我为前后端分离项目搭建Gitlab CI/CD流程的一些额外经验. Before Gitlab-ci是Gitlab提供的CI/CD特性,结合Gitlab简单友好的配置界面,能愉悦的在 ...

  6. 一个Java程序猿眼中的前后端分离以及Vue.js入门

    松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ...

  7. 前后端分离时代,Java 程序员的变与不变!

    事情的起因是这样的,有个星球的小伙伴向邀请松哥在知乎上回答一个问题,原题是: 前后端分离的时代,Java后台程序员的技术建议? 松哥认真看了下这个问题,感觉对于初次接触前后端分离的小伙伴来说,可能都会 ...

  8. [原创]基于VueJs的前后端分离框架搭建之完全攻略

    首先请原谅本文标题取的有点大,但并非为了哗众取宠.本文取这个标题主要有3个原因,这也是写作本文的初衷: (1)目前国内几乎搜索不到全面讲解如何搭建前后端分离框架的文章,讲前后端分离框架思想的就更少了, ...

  9. 某神秘公司 RESTful、共用接口、前后端分离、接口约定的实践

    阅读本文大概需要 4.6 分钟. 本文来自 https://juejin.im/post/59eafab36fb9a045076eccc3 前言 随着互联网高速发展,公司对项目开发周期不断缩短,我们面 ...

随机推荐

  1. ChCore Lab2 内存管理 实验笔记

    本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第二篇.所有章节的笔记可在此处查看:chcore | 康宇PL's Blo ...

  2. 原来 Linux 日志文件系统是这样工作的~

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 作者:Linux Performance 链接:http://linuxperf.com/?p ...

  3. 小干货:Linux 系统的备份恢复

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! tar 命令 副本(本机备份整个系统,以后还原还是还原到 ...

  4. 一文了解RPC框架原理

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 1.RPC框架的概念 RPC(Remote Proced ...

  5. 【Docker入门】Docker的常用命令

    ​ ​ 了解和安装完docker之后,我们学习一下docker的常用命令就和当初学linux命令一样,放心命令其实大致相同只不过细节不同. 一.Docker启动类命令 1.启动docker:syste ...

  6. 关于background-*的一些属性

    1.盒模型 盒模型从外到内一次为:margin-box.border-box.padding-box.content-box. 2.一些属性设置的相对位置 ⑴background-position的属 ...

  7. spring boot 统一接口异常返回值

    创建业务 Exception 一般在实际项目中,推荐创建自己的 Exception 类型,这样在后期会更容易处理,也比较方便统一,否则,可能每个人都抛出自己喜欢的异常类型,而造成代码混乱 Servic ...

  8. 九种常见UML图(分类+图解)

    九种常见UML图 1.类图 概述 类图(Class Diagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础. 类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静 ...

  9. [C++STL] vector 容器的入门

    vector容器的入门 #include<vector> 创建vector容器的几种方式 数据类型可以是结构体,也能是另外一个容器 vector 的初始化: (1) 创建并声明大小 vec ...

  10. C++:接送旅客

    接送旅客 时间限制:1.00sec        内存限制:128MB 题目描述: 现在,你是一家酒店的员工,你需要帮助这家酒店的旅客运送行李离开酒店.现在,你送顶层开始往下移动,为了减少电梯移动的距 ...