白盒测试接口测试自动化测试

一、白盒测试:一种测试策略,允许我们检查程序的内部结构,对程序的逻辑结构进行检查,从中获取测试数据。白盒测试的对象基本是源程序,所以它又称为结构测试或逻辑驱动测试,白盒测试方法一般分为静态测试和动态测试。

二、如何做白盒测试

1、使用静态代码分析工具:FindBugs先找出一些简单的bug

  • 操作空对象;
  • 数组访问越界
  • 线程安全
  • 字符串拼接
  • 资源关闭

2、diff评估影响范围,找边界和影响范围

  往上找,找它的调用链,找测试范围的边界;

  往下找,找它对下游的影响,找影响范围;

3、做单测,从上往下传

  不只是对改动方法做单测;

  还要找到它影响的点,从上到下往下串。

4、单独拉分支,梳理代码逻辑

  checkpoint:根据checkpoint画出流程图/时序图,后面做接口测试的测试点/检查点;

  bug:梳理代码时能够确定的问题;

5、接口测试:

  基于第四步代码梳理的checkpoint来做接口测试;

  只做白盒测试不做接口测试,无法将代码的整个逻辑理顺;

6、debug:debug执行、

三、接口测试策略

根据接口文档,构造不同的参数组合,各种正常/异常的参数,然后组装请求发送服务端,最后进行返回结果的判断。但是对线上系统会有极大的风险,因为随着业务的越来越复杂,很多测试点是接口文档所描述不到的。

根据代码梳理的结果来画流程图/时序图,然后根据时序图上的各个点来构造各种正常/异常的测试场景进行接口测试,这样才能更为完善的进行接口测试,减小线上的风险。

时序图:序列图、循序图,通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作,可以直观的传达系统内外的交互过程。我们可以简单的举个例子:

  程序从入口进来,先做了什么逻辑判断和处理;

  处理完成后进行入库,入库的数据是什么,关键的状态是什么;

  入库的数据哪些字段是我们要去检查的,状态是如何变更的;

  缓存的key是什么,缓存失败的策略又是什么;

如何设计接口测试,微信扫描二维码支付:

  发起支付请求:

    构造相同订单,基于并发或者多线程请求被测服务;

    超时;

    其它异常;

  微信server回调pay接口生成预支付订单:

    回调多次,是否能保证只生成一笔订单

    回调失败,内部又如何处理

    返回未知异常

    返回已知异常

接口测试一定要先把代码的逻辑梳理清楚。如果只从接口文档的描述来做接口测试,我们对这些后台处理逻辑不清楚,那么这些测试点就会被遗漏,把所有风险都遗留在了线上。

四、接口自动化测试:

1、分析功能及接口的优先级别

  实施前,首先应该明确自动化测试的目标,可以从以下几个维度考虑:

  功能维度

  业务维度

  流量维度

  风险维度

  黄金流程维度

我们需要从以上五个方面去考虑需要做接口自动化测试的接口有哪些,然后就能够梳理出各接口及业务的级别(P0、P1、P2)

基于以上分析,我们就定义接口测试的策略,是要做单接口的还是模块级甚至是系统级的接口测试,又或者是三者都要做。

  场景及--单接口

  模块级--只在模块内,预下单-提交订单--确认支付

  系统级--整个业务流程-订单-支付-网关-回调

定义自动化达成目标

  定义好自动化测试的策略后,然后需要定义自动化测试要达成的目标。例如:

  核心接口覆盖率50%

  黄金流程覆盖率normal级别case,场景级40%

框架建设

  基本诉求:case规范要求、case量级预估、现状:系统变更频繁程度、业务接入的快慢程度、当前资源投入情况、变更的倾向性

  实现:common_env --工具+环境

      dao + client --MySQL、Redis、dubbo、HTTP

      Core--测试用例能力扩展、执行前、执行后、参数处理等

      gen--自动生成代码

      manager--case管理,报告输出等等

case模板:

  clean db.

  db init

  mock client add

  build request param

  send request

  rpc response assert

  db assert

  accountDao

  columnHolder

  assert.assertEquals

  accountDaaoassert.assertEquals

  log assert

  db clean

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2799629.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测7-DETR算法剖析与实现

文章目录 端到端目标检测框架DETR背景介绍模型结构模块解析数据模型结构 动手实现DETR 欢迎访问个人网络日志🌹🌹知行空间🌹🌹 端到端目标检测框架DETR 背景介绍 DETR是Facebook AI的Nicolas Carion等于2020年05月提交的论文中提…

解决IDEA搜不到插件

File -> Settings -> Plugins https://plugins.jetbrains.com/ 完成以上操作即可搜到插件

每日OJ题_二叉树dfs④_力扣98. 验证二叉搜索树

目录 力扣98. 验证二叉搜索树 解析代码 力扣98. 验证二叉搜索树 98. 验证二叉搜索树 难度 中等 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树…

小程序端学习

P2 创建Uni-app 分离窗口 一样的Ctrl S P3 细节知识点 创建新的小程序页面

【RT-DETR有效改进】大核注意力 | LSKAttention助力极限涨点

一、本文介绍 在这篇文章中,我们将讲解如何将LSKAttention大核注意力机制应用于RT-DETR,以实现显著的性能提升。首先,我们介绍LSKAttention机制的基本原理,它主要通过将深度卷积层的2D卷积核分解为水平和垂直1D卷积核,减少了计算复杂性和内存占用。接着,我们介绍将这一…

二、Vue组件化编程

2、Vue组件化编程 2.1 非单文件组件 <div id"root"><school></school><hr><student></student> </div> <script type"text/javascript">//创建 school 组件const school Vue.extend({template: <div&…

【UI自动化】八大元素定位方式|xpath css id name...

目录 一、基础元素定位 二、cssSelector元素定位——通过元素属性定位 三、xpath元素定位——通过路径 1 、xpath绝对定位 &#xff08;用的不多&#xff09; 缺点&#xff1a;一旦页面结构发生变化&#xff08;比如重新设计时&#xff0c;路径少两节&#xff09;&#x…

Android 面试问题 2024 版(其二)

Android 面试问题 2024 版&#xff08;其二&#xff09; 六、多线程和并发七、性能优化八、测试九、安全十、Material设计和 **UX/UI** 六、多线程和并发 Android 中的进程和线程有什么区别&#xff1f; 答&#xff1a;进程是在自己的内存空间中运行的应用程序的单独实例&…

力扣精选算法100道——Z字形变换(模拟专题)

目录 &#x1f388;了解题意 &#x1f388;算法原理 &#x1f6a9;先处理第一行和最后一行 &#x1f6a9;再处理中间行 &#x1f388;实现代码 &#x1f388;了解题意 大家看到这个题目的时候肯定是很迷茫的&#xff0c;包括我自己也是搞不清楚题目什么意思&#xff0c;我…

react hook使用UEditor引入秀米图文排版

里面坑比较多&#xff0c;细节也比较多 以下使用的是react 18 ice3.0&#xff0c;使用其他react脚手架的配置基本相同&#xff0c;例如umi4 1.下载UEditor 进入UEditor仓库&#xff0c;找到版本v1.4.3.3&#xff0c;点击进去 接着下载ueditor1_4_3_3-utf8-jsp.zip版本 下载好…

HarmonyOS开发技术全面分析

系统定义 HarmonyOS 是一款 “ 面向未来 ” 、面向全场景&#xff08;移动办公、运动健康、社交通信、媒体娱乐等&#xff09;的分布式操作系统。在传统的单设备系统能力的基础上&#xff0c;HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c;能够…

2.21数据与结构算法学习日记(最小生成树prim算法)

目录 最小生成树prim 最小生成树算法是一种用来在一个加权连通图中找到最小生成树的算法。最小生成树是一个包含图中所有顶点的树&#xff0c;其总权值最小。 prim算法 洛谷题目示例 P3366 【模板】最小生成树 题目描述 输入格式 输出格式 输入输出样例 说明/提示 题…

2024年.NET框架发展趋势预测

.NET框架仍然是全球开发人员的编程基石&#xff0c;为构建广泛的应用程序提供了一个通用的、强大的环境。微软对创新的坚定承诺见证了.NET的发展&#xff0c;以满足技术领域不断变化的需求。今年&#xff0c;在更广泛的行业运动、技术进步和开发者社区反馈的推动下&#xff0c;…

MySQL|MySQL基础(求知讲堂-学习笔记【详】)

MySQL基础 目录 MySQL基础一、 MySQL的结构二、 管理数据库1&#xff09;查询所有的数据库2&#xff09;创建数据库3&#xff09;修改数据库的字符编码4&#xff09;删除数据库5&#xff09;切换操作的数据库 三、表的概念四、字段的数据类型4.1 整型4.2 浮点型(float和double)…

零基础学习8051单片机(十五)

本次先看书学习&#xff0c;并完成了课后习题&#xff0c;题目出自《单片机原理与接口技术》第五版—李清朝 答: &#xff08;1&#xff09;当 CPU正在处理某件事情的时候&#xff0c;外部发生的某一件事件请求 CPU 迅速去处理&#xff0c;于是&#xff0c;CPU暂时中止当前的工…

电商+支付双系统项目------实现电商系统中分类模块的开发!

本篇文章主要介绍一下这个项目中电商系统的分类模块开发。电商系统有很多模块&#xff0c;除了分类模块&#xff0c;还有用户模块&#xff0c;购物车模块&#xff0c;订单模块等等。上一篇文章已经讲了用户模块&#xff0c;这篇文章我们讲讲项目中的分类模块。 有的人可能会很…

第2讲:C语言数据类型和变量

第2讲&#xff1a;C语言数据类型和变量 目录1.数据类型介绍1.1字符型1.2整型1.3浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof 操作符1.5.2 数据类型长度1.5.3 sizeof 中表达式不计算 2.signed 和 unsigned3.数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5…

[word] word如何设置每行字符数 #笔记#经验分享#媒体

word如何设置每行字符数 如何设置每行字符数&#xff1f; 设置WORD设定每行中的字符数和每页中的行数的具体步骤如下&#xff1a; 我们需要准备的材料分别是&#xff1a;电脑、word文档。 1、首先我们打开需要编辑的word文档&#xff0c;点击打开“页面布局”。 2、然后我们…

【算法与数据结构】200、695、LeetCode岛屿数量(深搜+广搜) 岛屿的最大面积

文章目录 一、200、岛屿数量1.1 深度优先搜索DFS1.2 广度优先搜索BFS 二、695、岛屿的最大面积2.1 深度优先搜索DFS2.2 广度优先搜索BFS 三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、200、岛屿数量 1.1 深度优先搜…

CQT新里程碑:SOC 2 数据安全认证通过,加强其人工智能支持

Covalent Network&#xff08;CQT&#xff09;发展新里程碑&#xff1a;SOC 2 数据安全认证通过&#xff0c;进一步加强了其人工智能支持 Covalent Network&#xff08;CQT&#xff09;现已完成并通过了严格的 Service Organization Control&#xff08;SOC) 2 Type II 的合规性…