接口自动化测试,完整入门篇,果断收藏了
ccwgpt 2024-10-11 11:24 53 浏览 0 评论
一、自动化测试
众所周知,自动化测试已经成为软件项目中不可或缺的测试方法。基于用户交互界面(GUI)的自动化测试方法具有模拟用户行为和过程可视化的特点,因此受到了广大入门自动化人士的喜爱。诸如:QTP、Selenium等都具有强大的功能支撑和丰富的知识库,而逐渐成为自动化测试人士必备工具之一。
然而,伴随着敏捷开发和持续交付在软件开发项目中的普及和应用,测试工作的重心不得不进一步前移。而由于用户界面的开发通常处于软件开发的末端且缺陷修复成本较大,因此基于GUI的自动化测试无法很好的适用于此类项目。基于应用程序接口(API)的自动化测试却可以很好的解决了此类问题。
二、接口自动化测试
在分层测试策略中各层工作有明确的测试重心,测试工作通过逐层开展螺旋上升。这样一方面促使开发测试一体化,直接提高了测试效率;另一方面也可以尽早发现程序缺陷,降低缺陷修复成本。
图-2.1分层测试策略
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文件。
四、结语
随着自动化测试成为测试工程师必备技能之一。拥有了该项技能在面对功能、模块日趋复杂和迭代频繁的软件开发项目时,测试人员可以从容不迫的解决和应对这些问题。本文基于此种考虑,介绍了自动化测试的相关知识。结合作者在项目中的实践分享了接口自动化测试过程中的几点感悟,希望对想要迈入和初步迈入的自动化测试领域的同志们有所帮助。
我是一名从事了多年软件测试的老测试员,今年年初我花了一个月整理了一份最适合2020年学习的软件测试学习干货,可以送给每一位对软件测试感兴趣的小伙伴,想要获取的可以关注我的头条号并在后台私信我:【测试】,即可免费获取。
相关推荐
- Android开发基础入门(一):UI与基础控件
-
Android基础入门前言:从今天开始,我们开始分享Android客户端开发的基础知识。一、工具指南工欲善其事必先利其器,我们首先介绍一下开发Android常用的集成开发环境。小雨在上大学期间,开发a...
- 谷歌Material Design质感设计UI开发框架
-
谷歌MaterialDesign质感设计是一个新的用户界面设计概念,即将到来的Android版本称为“AndroidL”中会使用这种设计语言。在这篇文章中,我们收集出最新的和最好的Android...
- Android主流UI开源库整理(android 开源ui)
-
前言最近老大让我整理一份Android主流UI开源库的资料,以补充公司的Android知识库。由于对格式不做特别限制,于是打算用博客的形式记录下来,方便查看、防丢并且可以持续维护、不断更新。标题隐...
- 系统工具类App的开发框架(系统开发方法工具)
-
系统工具类App的开发框架选择,很大程度上取决于目标平台(Android、iOS或两者兼有),以及对性能、系统级访问深度和开发效率的需求。由于这类App常常需要深入操作系统底层,因此原生开发框架通常是...
- 2025年vue前端框架前瞻(vue前端开发规范手册)
-
Vue是一个轻量且灵活的JavaScript框架,广受开发者喜爱,因其简单易用的API和组件化的开发方式而闻名。Vite是一个现代化的前端构建工具,以其极快的开发服务器启动速度和热模块替换...
- 前端流行框架Vue3教程:28. Vue应用
-
28.Vue应用应用实例每个Vue应用都是通过createApp函数创建一个新的应用实例main.jsimport{createApp}from'vue'import...
- 2024 Vue 最全的生态工具组合推荐指南
-
Vue3虽然Vue2很多项目在用,但是官方已经宣布不再维护Vue2,所以新项目肯定首选Vue3来进行开发,组合式API开发起来比选项式API方便多了,而且Vue3的响应式实现也更...
- 基于 Vue3 Element Plus 的中后台管理系统模板
-
PureAdmin是一个开源的前端中后台管理系统模板,基于Vue3、Element-Plus,支持移动端、国际化、多主题设置,支持前端静态路由、后端动态路由配置,旨在为开发人员提供一个易于使用、高...
- 重磅!滴滴开源全新跨端小程序框架,基于 Vue 3!
-
最近,滴滴出行开源了自主研发的全新轻量级跨端小程序框架——星河(Dimina),为开发者提供了“一次开发,多端运行”的高性能、低门槛解决方案。下面就来一览Dimina的魅力!什么是星河(Dim...
- 【推荐】一款基于 Vue + .NET 8 开源、免费、功能强大的快速开发框架
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍Vue.NetCore是一款集高效、灵活、易于扩展于一体的快速开发框架(基于Vue提供Vue2/Vue...
- 搭建Trae+Vue3的AI开发环境(vue ide 开发工具)
-
从2024年2025年,不断的有各种AI工具会在自媒体中火起来,号称各种效率王炸,而在AI是否会替代打工人的话题中,程序员又首当其冲。作为一个后端开发,这篇文章基于Trae工具,来创建和运行一个简单的...
- 一款基于 Vue + .NET 8 开源、免费、功能强大的快速开发框架
-
项目介绍Vue.NetCore是一款集高效、灵活、易于扩展于一体的快速开发框架(基于Vue提供Vue2/Vue3版本和.NET8前后端分离),适用于多种应用场景。通过前后端分离的设计、强大的...
- 盘点一下这些年PHP在桌面应用方面的解决方案
-
今天作者给大家盘点一下近些年PHP在实现桌面客户端方面的项目。PHP-GTKPHP-GTK是2001年3月创立,是PHP的一个扩展,实现了与GTK+的绑定,提供面向对象的接口,极大地简化了客户端跨平台...
- PHP+Uniapp校园圈子系统校园论坛小程序开发:踩坑与优化经验分享
-
一、系统架构与技术选型1.架构设计采用前后端分离架构,前端使用Uniapp实现跨端开发(支持微信小程序、H5、App),后端基于PHP(推荐ThinkPHP或Laravel框架)提供RESTful...
- 智能匹配+安全护航:PHP代练系统护航小程序如何提升用户信任?
-
在代练行业中,用户信任是平台发展的核心要素。基于PHP后端与uni-app跨端框架的代练系统,通过智能匹配与安全护航两大核心策略,能够有效提升用户信任,构建健康可持续的代练生态。以下从技术实现与用户体...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- beego框架 (52)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)