8年测试经验,接口测试总结,测试进阶之路一篇打通...

news2024/12/23 9:34:44

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、什么是接口测试?

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

2、为什么做接口测试?

首先,节省测试成本,数据模型推算,底层的一个bug能够引发上层的8个左右bug,而且底层的bug很容易引起全网的宕机。相反接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。

其次接口测试不同于传统开发的单元测试,接口测试是站在用户的角度对系统接口进行全面高效持续的检测。

最后接口测试是自动化并且持续集成的,这也是为什么接口测试能够低成本高收益的根源。

总之接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益的驱动作用下的最佳解决方案,接口测试是一个完整的体系,也包括功能测试、性能测试。

3、接口测试的适用范围

接口测试一般应用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。

接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。接口测试在淘宝的应用是一个自下而上的发展过程。

接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比。接口测试天生为高复杂性的平台带来高效的缺陷检测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。

4、在接口测试中如何应对需求的频繁变化

在现在这个互联网软件时代,需求的频繁变动已经不是什么新鲜事。客户的需求变更、市场需求的变更,项目本身的调整,以及新需求的出现等等都会导致需求的变化。

这种需求的变化常会出现在项目开发阶段,根据需求的变化开发人员会对项目进行调整,而作为在项目开发阶段就接入进行测试的接口测试人员同样也会被影响。

这种影响有时是巨大的,影响着我们的工作效率,它会导致我们需要重复以前的部分测试工作,甚至会让我们以前所做的测试工作白费。而且越是大型的、复杂的项目,这种影响越大 ,暴露出的问题也越多。

针对这段期间我在项目中的体验,将需求变化对接口测试的影响和出现的问题罗列下:

①需求变化,接口测试人员不知道或过了很久才知道。由于某些原因,常常会导致新需求变动接口测试人员不知道,或是过了很久才知道。

往往接口测试人员是通过用例回归发现用例跑不通,然后会进行错误排查,最后发现问题后和开发确认后才知道是需求变化。

这样是很浪费时间,甚至会遗漏一些需要测试的新需求的功能点,导致测试不全,遗漏bug。

②需求变化,对原有测试用例及其代码的影响。这个也是最让我头痛的、最直接的影响。

需求变动有时会打乱了原有的测试规划,甚至包括对测试特性的划分原则,相应的测试结果分析验证、测试需求跟踪等都不到位。

并且我们接口测试会对一个项目写上百个测试用例,为了尽可能的发现bug,测试用例里面有无数的验证点。

往往一个很小的需求的改变会影响到很多的测试用例代码不通过,我们需要对很多测试用例进行调整,需要对测试数据以及测试代码进行修改,有时甚至需要修改我们的测试框架。

这对我们接口测试人员来说是一个不少的挑战。

③新需求变化测试时间短,开展详细的测试有难度。
由于新需求的提出已在开发期间,其测试时期短,接口测试有时没有人力和时间投入对新增修改需求的测试分析和设计上,基本上很难像对待老需求一样,开展详细的测试分析设计。

减少需求变更对接口测试的影响

1)良好的心态。从心态上,接口测试人员应该把需求变化当作是一种项目常态,平常心应对。但是,我们也要学会控制这种需求变化的趋势,不能任其发展。

2)及时沟通,最快知晓需求变更。和需求相关人员和开发人员做好即时沟通,第一时间知道需求的变更,及时做好测试策略更新。知道的越早对我们的影响越小,需要的测试成本也越低。

3)良好的团队合作。接口测试人员和开发人员的良好合作,分工明确,对新的改动及时通知对方,短时间内开展最有效的团队协作。接口测试人员要主动关注开发代码的修改,对测试用例和测试代码及时调整,做到小粒度的修改。

4)接口测试人员反应快,用例代码灵活性高。接口测试人员反应快,提前做好新需求的测试规划,包括测试设计和测试执行规划,并且在设计中要考虑新需求对老需求的影响;

并且我们原测试用例和代码也要有一定的灵活,可以在一定程度上适应需求变化,将未来的新需求的影响尽量降到很小。这里就不详细说了,下次就具体的MC的项目说说如何增强测试用例代码的灵活性,减少新需求对测试代码的影响。

5)做到及时的需求跟踪。通过测试用例代码的不断回归,尽早的主动的发现需求的变更。

我们接口测试人员要成熟、快速、有序、灵活、有责任心的应对需求的变化,把我们的接口测试工作做得更好。

5、如何简单设计接口测试用例

接口测试是项目测试的一部分,它测试的主要对象是接口 ,是测试系统组件间接口的一种测试。

接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点。测试的重点是检查数据交互、传递、和控制管理过程以及系统间的相互依赖关系等。

如何设计接口测试用例?
首先,明确出发点,和所有的测试一样 ,接口测试出发点是你要证明所测的程序是错误的。以这个出发点为导向 ,你的设计行为就会尽量朝这个方向,更易发现问题

其次,选择好测试对象。对于一个系统做接口测试选择好的测试对象是接口测试关键。一个系统有无数的接口 ,每个接口如果分别测试 ,那将是很痛苦的一件事情,而且任何一个内部接口的变动 ,都将导致我们用例的不可用。

可将这些最外层的接口分为两类:一类是数据进入系统的接口;一类是数据流出系统的接口。
进入系统的接口实际是我们用例的执行调用的接口。可通过变化参数对这些接口进行调用 ,模拟外部的使用;

而流出的接口则是我们用例真正该验证的点。数据从哪里流出,流出时的状态如何 ,此时系统又是什么状态都是我们所应该验证的。

然后,确认完整的测试对象的功能:确认外部接口提供给使用这些接口的外部用户什么样的功能,外部用户真正需要什么样的功能。此两个功能一定要准确详细,用例的设计要严格按照测试对象功能设计才是正确的用例。

最后当出发点、对象、功能都确定了,就可以真正设计用例了。下面详细介绍下如何去设计一个结构好、可读性高、渗透性强的接口测试用例。

接口测试用例设计和测试用例设计一样,用例设计的内容应该包括:主要测试功能点、测试环境、测试数据、执行操作以及预期结果。

1)接口测试环境分为两种:一种是程序内部的环境;一种是程序的所调用外部接口的环境。

2)接口测试测试数据分为接口参数数据和用例执行所需系统数据。数据的设计、准备测试用例的数据上需要花费更多的心思。要通过好的测试数据使用例查找问题。

接口参数数据需对每个参数根据测试接口的实际的功能进行分析,在符合业务逻辑的情况下进行逻辑组合排列 ,不要遗漏了某些边界值和错误点的数据。

每个用例执行所需系统数据和接口参数数据尽可能的采用不一样的数据 ,使用例更容易发现问题。

3)测试功能点,如果一个接口功能复杂时推荐对接口用例进行结构划分 ,这样子用例具有更好的可读性和维护性。

接口划分原则为以接口提供的功能点的不同进行合适粒度的划分。同一功能点的用例又可根据测试环境的不同、数据的不同进行用例的填充。

4)接口测试用例执行操作非常简单,就是所测接口的调用。

5)预期结果验证,这也是接口用例设计的很关键的一步 ,应该细而不冗余。每个用例均需验证 ,避免一个用例中重复做相同的验证 ,提高测试用例的效率。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不论生活多苦,心存希望,奋力向前。别畏惧失败,那只是通往成功的踏板。扬起梦想的风帆,鼓起勇气,跨越困难,成就辉煌。因为只有那些敢于追逐的人,才能创造属于自己的不朽传奇。

燃烧心中的激情,踏上征程,勇敢面对生活的挑战,努力奋斗,不断超越自己。在汗水的滋润下,收获成长的果实,让坚持与努力成为铺就成功之路的石子,创造属于自己的辉煌人生。

不畏艰辛,勇攀高峰,奋斗乃人生之真谛。锲而不舍,追求卓越,用智慧与汗水绘就辉煌。每一次努力,都是自我蜕变的机会,让梦想的火焰燃烧心间,创造属于自己的永恒光芒。

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

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

相关文章

开源数据库Mysql_DBA运维实战 (部署服务篇)

前言❀ 1.数据库能做什么 2.数据库的由来 数据库的系统结构❀ 1.数据库系统DBS 2.SQL语言(结构化查询语言) 3.数据访问技术 部署Mysql❀ 1.通过rpm安装部署Mysql 2.通过源码包安装部署Mysql 前言❀ 1.数据库能做什么 a.不论是淘宝,吃鸡,爱奇艺…

k8sday02

第四章 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。 Namespace ​ Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 ​ 默认情况下&…

机器学习实战1-kNN最近邻算法

文章目录 机器学习基础机器学习的关键术语 k-近邻算法(KNN)准备:使用python导入数据实施kNN分类算法示例:使用kNN改进约会网站的配对效果准备数据:从文本文件中解析数据分析数据准备数据:归一化数值测试算法…

淘宝API接口为开发者提供了与淘宝平台进行数据交互和操作的便捷途径

淘宝API接口是指淘宝开放平台提供的一套接口,用于与淘宝网进行数据交互和操作。通过使用淘宝API接口,第三方开发者可以实现商品搜索、店铺信息获取、订单管理、商家服务等功能,从而实现与淘宝平台的对接和数据共享。 淘宝API接口的使用可以帮…

C语言赋值号的运算顺序

从右到左。 int & f(int & a) { printf("参数 %d\n", a); return a; } int main(void) {int a 9;int b 3;f(a) f(b);// 运行到此处,a 3,b 3return 0; } 输出

卡尔曼滤波算法demo

代码 learn_kalman.py #codingutf-8 import numpy as np import time from kinematic_model import freedrop from controller import kalman_filterimport matplotlib.pyplot as plt # 支持中文 import matplotlib as mpl mpl.rcParams[font.family]SimHei plt.rcParams[a…

每天一道leetcode:剑指Offer 25.合并两个链表

今日份题目&#xff1a; 输入两个递增排序的链表&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 示例 输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4 提示 0 < 链表长度 < 1000 题目思路 递归…

BL302嵌入式ARM控制器:高性能处理器驱动的储能优化利器

嵌入式ARM控制器钡铼技术BL302系列是工业级坚固型工业控制器&#xff0c;采用NXP的高性能处理器I.MX6ULL&#xff0c;搭配先进的ARM Cortex-A7构架&#xff0c;运行速度高达800MHz&#xff0c;具有高度的稳定性。本产品最高可提供4路RS485/RS232&#xff0c;1路CAN口&#xff0…

嵌入式开发学习(STC51-13-温度传感器)

内容 通过DS18B20温度传感器&#xff0c;在数码管显示检测到的温度值&#xff1b; DS18B20介绍 简介 DS18B20是由DALLAS半导体公司推出的一种的“一线总线&#xff08;单总线&#xff09;”接口的温度传感器&#xff1b; 与传统的热敏电阻等测温元件相比&#xff0c;它是一…

SpringBoot整合达梦数据库

近期接到了一个需要国产化的项目&#xff0c;用到了达梦数据库&#xff0c;没想到一开始配置就出现了问题&#xff0c;下面把配置给大家粘贴出来&#xff0c;大家少踩点坑。 一、先下载达梦数据库 这是达梦数据库下载链接&#xff0c;达梦数据库没有免费的&#xff0c;个人好…

Chapter 12: Regular expressions | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Regular ExpressionsRegular ExpressionsCharacter matching in regular expressionsExtracting data using regular expressionsCombining searching and extractingEscape characterSummaryBonus section for Unix / Linux usersDebugg…

[保研/考研机试] 约瑟夫问题No.2 C++实现

题目要求&#xff1a; 输入、输出样例&#xff1a; 源代码&#xff1a; #include<iostream> #include<queue> #include<vector> using namespace std;//例题5.2 约瑟夫问题No.2 int main() {int n, p, m;while (cin >> n >> p >> m) {//如…

【LeetCode】字符串与栈的练习

字符串相乘 class Solution { public:/** 将两个字符串相乘拆分成两步&#xff1a;* 先将一个字符串的每个字符与另一个字符串相乘得到一个计算结果* 再将所有计算结果的字符串进行相加*/string multiply(string num1, string num2) {string result "0";// 一个字…

微服务——es数据聚合+RestClient实现聚合

数据聚合 聚合的种类 DSL实现Bucket聚合 如图所示&#xff0c;设置了10个桶&#xff0c;那么就显示了数量最多的前10个桶&#xff0c;品牌含有7天酒店的有30家&#xff0c; 品牌含有如家的也有30家。 修改排序规则 限定聚合范围 DSL实现Metrics聚合 如下案例要求对不同的品…

录像模糊变高清:提高录制视频清晰度的方法

录像是记录生活点滴的重要方式之一&#xff0c;然而&#xff0c;由于种种原因&#xff0c;我们可能会遇到一些模糊、不清晰的视频。为了解决这一问题&#xff0c;今天来给大家分享一下如何利用牛学长视频修复工具修复录像视频清晰度的方法&#xff0c;方便快捷&#xff0c;无需…

springBoot集成caffeine,自定义缓存配置 CacheManager

目录 springboot集成caffeine Maven依赖 配置信息&#xff1a;properties文件 config配置 使用案例 Caffeine定制化配置多个cachemanager springboot集成redis并且定制化配置cachemanager springboot集成caffeine Caffeine是一种基于服务器内存的缓存库。它将数据存储在…

批量查询快递信息的最佳解决方案

快递查询是我们日常生活中经常需要进行的操作&#xff0c;然而&#xff0c;当我们有多个快递单号需要查询时&#xff0c;逐个查询就显得非常繁琐和耗时。为了解决这个问题&#xff0c;今天给大家推荐一款实用的软件——【固乔快递查询助手】。 首先&#xff0c;在浏览器中搜索并…

Activity启动过程详解(Android 12源码分析)

Activity的启动方式 启动一个Activity&#xff0c;通常有两种情况&#xff0c;一种是在应用内部启动Activity&#xff0c;另一种是Launcher启动 1、应用内启动 通过startActivity来启动Activity 启动流程&#xff1a; 一、Activity启动的发起 二、Activity的管理——ATMS 三、…

Mysql根据创建时间表分区实践

背景 最近订单表遇到大数据量的问题&#xff0c;并且表中随着时间的积累会变得更大&#xff0c;当数据量较大时&#xff0c;存储的物理文件会变得非常大、使用性能很差。 我们用的是GaussDB。为了提高查询效率&#xff0c;建议表大于500w进行分区&#xff0c;所以在规划阶段我…

opencv基础47 查找图像轮廓cv2.findContours()详解

什么是图像轮廓&#xff1f; 图像轮廓是指图像中物体边缘的连续性曲线。在计算机视觉和图像处理中&#xff0c;轮廓通常被用于检测物体、分割图像以及提取物体特征。 图像轮廓是由一系列连续的像素点组成&#xff0c;这些像素点位于物体边界上。轮廓的特点是在物体和背景之间的…