接口自动化测试,完整入门到入职篇

news2024/11/28 8:48:25

一、自动化测试

众所周知,自动化测试已经成为软件项目中不可或缺的测试方法。基于用户交互界面(GUI)的自动化测试方法具有模拟用户行为和过程可视化的特点,因此受到了广大入门自动化人士的喜爱。诸如:QTP、Selenium等都具有强大的功能支撑和丰富的知识库,而逐渐成为自动化测试人士必备工具之一。

然而,伴随着敏捷开发和持续交付在软件开发项目中的普及和应用,测试工作的重心不得不进一步前移。而由于用户界面的开发通常处于软件开发的末端且缺陷修复成本较大,因此基于GUI的自动化测试无法很好的适用于此类项目。基于应用程序接口(API)的自动化测试却可以很好的解决了此类问题。

二、接口自动化测试

在分层测试策略中各层工作有明确的测试重心,测试工作通过逐层开展螺旋上升。这样一方面促使开发测试一体化,直接提高了测试效率;另一方面也可以尽早发现程序缺陷,降低缺陷修复成本。

分层测试策略

API接口测试介于单元测试和界面测试之间,是一种灰盒测试方法,主要测试内部接口功能的完成性。相较于UI自动化测试,它具有自动化成本低和测试效率高的特点。

接口测试的工作原理是接口测试工具模拟客户端向服务器发送报文请求,服务器接受请求并做出响应。然后向客户端返回应答信息,接口测试工具对应答信息进行解析的一个过程。如图(报文传输的大致流程):

常用的接口测试工具有:

1、Apache JMeter:是一款基于Java的开源测试工具,主要应用于WEB应用程序的负载测试,同时也支持单元测试和接口测试;

2、Postman:是一款功能强大的网页测试工具,支持WEB API和HTTP请求,能够发送任何类型的HTTP请求(GET、HEAD、POST、PUT等)。Postwomen与其近似的一款免费开源、轻量级测试工具;

3、SoapUI,是一款用于SOAP和REST的开源API测试自动化框架,可以集成到Eclipse等开发工具中,支持用户二次开发;

4、Robot Framework,是一款基于Python3的开源自动化测试框架,具有良好的可扩展性,支持关键字驱动,运行用户二次开发。

基于这些接口测试工具,测试人员可以根据自身业务需要开发适合自己的接口自动化测试工具。有了接口自动化测试工具,我们就可以开展自动化测试工作。

接口自动化测试的基本流程有(如图):

1、在测试工具中登记待测交易的接口报文格式;

2、编写测试案例,向案例中添加交易接口并进行配置关联;

3、准备测试数据并对测试数据进行参数化;

4、测试工具自动执行自动化测试案例;

5、测试工具比对预期结果和返回结果,验证案例是否执行成功。

三、接口自动化测试要点

参照DevOps的评级标准,作者所处项目的所有交易的接口必须进行全量自动化测试覆盖。项目组为了保证项目测试达到该标准,为此做了大量的前期规划和实践探索,结合作者的自身的项目实践与大家分享几点接口自动化测试过程中的工作要点。

1、梳理交易流程做到一目了然。

以税金支付账号维护交易为例,该交易包含新增/修改提交复核、复核通过、复核退回、删除四个程序接口。各接口程序之间的关系如下图所示,提交复核分为新增提交复核和修改提交复核,提交之后可以复核通过也可以复核退回,删除交易只能处理复核退回的数据。

因此我们可以整理出该交易的分支案例如下:

1)新增提交复核>复核通过>修改提交复核>复核通过;

2)新增提交复核>复核退回>修改提交复核>复核退回>删除。

由图(税金支付账号维护交易流程图)我们可以一目了然的看出该上述两条分支案例已完全覆盖税金支付账号维护交易的所有业务分支。从而避免接口自动化测试时遗漏某一逻辑分支,造成缺陷逃逸。

2、详细的接口设计文档是成功的前提

子曰:”工欲善其事,必先利其器。”一个详细的接口设计文档是接口自动化测试顺利开展的重要前提。为了保证接口测试的顺利开展,我们要求项目组开发人员务必给出接口交易各字段的校验规则和操作步骤。

如图示,展示了提交复核接口各输入字段的校验规则,提交复核类型不能为空,必须是old/new。同时开发人员还写出了提交复核接口程序的处理步骤,如对数据库表:税金支付账号,先进行赋值操作,然后进行了保存到数据库中。

详细的字段校验规则,有助于后续测试人员在编写接口自动化测试案例时准确的填写接口字段值。并根据校验规则和操作步骤设置检查点,比对判断程序返回结果是否正确。详细的验证方法见下一部分“案例正确性验证”。

提交复核接口字段校验规则

提交复核接口操作步骤

3、案例的正确性验证

1)程序返回信息的正确性验证。案例执行完毕,对程序返回结果的正确处理决定了自动化案例能否正确发现程序缺陷。可以说全面的正确性验证决定了自动化测试案例的质量高低与否。如:图(提交复核接口字段校验规则)中提交复核类型字段输入NULL/add等非法值后,我们不仅要验证程序的错误码为200,同时也要验证报错信息是否符合预期,确定该条案例确实测试到该条校验规则。

为此我们引入了关键字比对功能,提取预期错误提示信息的唯一标识关键字。以关键字为标准,检索程序反馈信息是否存在该关键字,若检索到该错误信息关键字则判定该反向案例执行通过且正确。若未检索到该错误信息关键字,则判定该反向案例设计不能覆盖此条交易规则。

2)数据库操作的正确性验证。程序执行过程中涉及到大量的数据库增删改操作,从验证完备性考虑,需要进一步验证数据库操作是否正确,避免插入、修改的数据存在错误,或数据库操作失败后回滚造成脏数据的存在。

为了验证数据库插入、修改、删除是否成功,数据是否符合预期,我们采用了以下两种验证方法:1)交易关联验证;2)数据比对验证。

交易关联验证是通过业务逻辑进行验证,使用后置交易是否能成功执行来验证前置交易数据库操作是否正确。如:录入一张金额为100元的发票,我们可以先发起领票101元的交易,再发起领票100元的交易,如果领票101元失败,领票100元成功,即可证明录入金额为100元准确无误。

数据比对验证是系统或业务需要的登记类数据,这类数据没有后续的逻辑关系,传统的处理方法是人工查询数据库或查询交易,我们开发出一个数据库查询API,通过前置交易传入的表的KEY值查询到该条记录的其他字段值,并与预期值进行比对,从而实现了自动化核对。

4、其他要点提示

除了以上3点之外,测试人员还需要关注数据是否独立、测试案例是否形成了闭环、测试数据的参数化。数据是否独立决定了测试环境对自动化案例的影响程度,数据独立性越高则环境变化造成的影响越小。测试案例能否形成闭环决定了该条测试案例是否可以被重复大量执行。测试数据参数化决定了我们的案例复用程度和后期的维护成本,对等价的数据进行参数化设置不仅有助于我们覆盖大量测试数据。同时当程序发生改变时,我们可以简单快捷的修改测试数据。常用的测试数据来源有数据库、配置文件、接口返回值、excel/txt文件。

四、结语

随着自动化测试成为测试工程师必备技能之一。拥有了该项技能在面对功能、模块日趋复杂和迭代频繁的软件开发项目时,测试人员可以从容不迫的解决和应对这些问题。本文基于此种考虑,介绍了自动化测试的相关知识。结合作者在项目中的实践分享了接口自动化测试过程中的几点感悟,希望对想要迈入和初步迈入的自动化测试领域的同志们有所帮助。

 总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

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

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

相关文章

JMeter 插件大全:详细介绍 Jmeter 常用插件

JMeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如 LoadRunner),在功能的全面性上就稍显不足。这篇博客,就…

深入了解 Vite:快速、简洁、高效的前端构建工具(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

MySQL数据库索引优化实战

目录 一、前言 二、准备工作 2.1 用户表(TB_USER) 2.2 商品表(TB_SKU) 2.3 订单表(TB_ORDER) 三、实例分析 3.1 索引提升查询性能 3.2 多表查询 3.3 索引失效 四、总结 一、前言 在数据库的应用中,性能优化…

【操作系统】输入输出系统

6.1 I/O系统的功能、模型和接口 I/O系统管理的主要对象是I/O设备和相应的设备控制器。其最主要的任务是,完成用户提出的I/O请求,提高I/O速率,以及提高设备的利用率,并能为更高层的进程方便地使用这些设备提供手段。 6.1.1 I/O系…

本地git服务器的使用

最后总结一句,用gitlab最省事,管理权限最方便,别像下文一样整了。 Windows上使用: 首先要在windows开发机上生成密钥: 1.安装git,首先去git官网下载git,https://git-scm.com/downloads&#xff…

2023年工作初体验

23年终于正式入职,参与了正式上线的电商平台、crm平台等项目的研发,公司规模较小,气氛融洽,没有任何勾心斗角、末位淘汰,几乎没什么压力。虽然是我的第一家公司,但实际是个适合养老的公司(笑 总…

Web自动化测试:POM设计模式的实现

关于pom设计模式(project Object model/PageObject),一种底层、逻辑、用例的分层,在项目还没有开发出来时,就可以开始写UI自动化脚本了,在开发完成后,再进行元素定位的适配以及调试;而且也可以多人共同维护…

清风数学建模笔记-主成分分析

内容:主成分分析 介绍: 主成分分析是一种降维算法,它通过旋转和变换将多个指标转化为少数几个主成分,这些主成分是原变量的线性组合,且互不相关,其能反映出原始数据的大部分信息。 例如解决多重共线性问题…

CSS 放大旋转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-scale-up: isAnimating }"><!-- 元素内容 -->&l…

不要盲目自学网络安全!学习顺序特别重要!

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

计算机视觉入门与调优

大家好啊&#xff0c;我是董董灿。 在 CSDN 上写文章写了有一段时间了&#xff0c;期间不少小伙伴私信我&#xff0c;咨询如何自学入门AI&#xff0c;或者咨询一些AI算法。 90%的问题我都回复了&#xff0c;但有时确实因为太忙&#xff0c;没顾得过来。 在这个过程中&#x…

金和OA jc6 ntko-upload 任意文件上传漏洞

产品简介 金和网络是专业信息化服务商&#xff0c;为城市监管部门提供了互联网监管解决方案&#xff0c;为企事业单位提供组织协同OA系统升开发平台&#xff0c;电子政务一体化平台智慧电商平合等服务 漏洞概述 金和OA jc6系统ntkoUpload接口处存在任意文件上传漏洞&#xf…

day06、SQL语言之概述

SQl 语言之概述 6.1 SQL语言概述6.2 SQL语言之DDL定义数据库6.3 SQL语言之DML操纵数据库 6.1 SQL语言概述 6.2 SQL语言之DDL定义数据库 6.3 SQL语言之DML操纵数据库

python学完之后可以做什么,python学完可以做什么

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python学完可以做哪些工作&#xff0c;python学完之后可以做什么&#xff0c;今天让我们一起来看看吧&#xff01; Python是一种全栈的开发语言&#xff0c;你如果能学好Python&#xff0c;前端&#xff0c;后端&#x…

第十四章 14.2案例:使用KVM命令集管理虚拟机

查看命令帮助 [rootLinux01 ~]# virsh -h—————————————————————————————————————————— 查看KVM的配置文件存放目录〈test01 , xml是虚拟机系统实例的配置文件) [rootLinux01 ~]# ls /etc/libvirt/qemu —————————————…

[一文详解]Base64编码,Url Base64编码,UrlEncode编码,你还傻傻分不清吗?

base64编码 由来 Base64算法最早应用于解决电子邮件传输问题&#xff0c;在早期&#xff0c;电子邮件只支持ASCII码字符。 而ASCII码其长度为1个字节&#xff0c;是7位编码&#xff0c;最高位是0,是有符号字符型数。 如果要传输一封带有非ASCII码字符的电子邮件&#xff0c…

干洗机,将对相关行业带来巨大的发展机遇

干洗机是一种高效、节能、环保的清洗设备&#xff0c;广泛应用于干洗店、酒店、医疗机构、工厂等领域。全球市场 全球市场上&#xff0c;干洗机的市场规模和应用范围不断扩大。根据市场研究机构的数据&#xff0c;2019年全球干洗机市场规模约为80亿美元左右&#xff0c;年复合增…

2023年终总结,被裁员

在一个睡意朦胧的早上&#xff0c;我被闹钟惊醒&#xff0c;原来今天已经是2024年1月1日了&#xff0c;2023年平平无奇的结束了&#xff0c;唯一让我感触波深的事情是我在二月份的裁员名单里面。2024加油&#xff01;&#xff01;&#xff01; 工作上的总结 回顾2023&#xf…

LLM Agent之再谈RAG的召回信息密度和质量

话接上文的召回多样性优化&#xff0c;多路索引的召回方案可以提供更多的潜在候选内容。但候选越多&#xff0c;如何对这些内容进行筛选和排序就变得更加重要。这一章我们唠唠召回的信息密度和质量。同样参考经典搜索和推荐框架&#xff0c;这一章对应排序重排环节&#xff0c;…

听GPT 讲Rust源代码--compiler(8)

File: rust/compiler/rustc_trait_selection/src/solve/weak_types.rs 在Rust编译器的源代码中&#xff0c;rust/compiler/rustc_trait_selection/src/solve/weak_types.rs文件的作用是处理弱类型化解决方案。 在编译器中&#xff0c;当我们在代码中使用一个未经完全指定的泛型…