浅谈接口自动化测试

昨晚在某个测试交流群,听了一个测试老司机分享接口自动化测试的内容,对接口自动化有了更深的一些认识,也为接下来公司的接口自动化实施,提供了更多的思路。

这篇博客,就说说功能测试到接口自动化的进阶,以及接口自动化的一些事。。。

 

前言

自动化测试,算是近几年比较火热的一个话题,当然,更是软件测试未来的一个发展趋势。未来,功能测试等非核心的测试工作,都将被外包。

想要在软件测试这个行业继续前行,就必须拥有核心竞争力,掌握自动化测试技术,是必不可少的一个技能。

在《Google软件测试之道》一书中有介绍到:在Google,70%的自动化测试工作集中于单元测试,20%集中于接口测试,剩下10%才是UI测试。

诚然,我们没有Google那么完善的机制和工程师文化,没必要一切照搬Google,但Google作为互联网2.0时代最耀眼的一个公司,它的技术发展方向,流程管理等可以说是不久的将来,

我们也要到达的方向。选择适合自己的,落地应用,是当下我们应该做的。

目前国内的互联网行业,大环境来说,还处在一个快速发展,需要流程化标准化的时期,如何跟上不断变幻发展的节奏,除了不断了解接触新的东西,还需要不断学习,提升自身,以内在

的驱动力,去紧跟时代浪潮。即使做不了弄潮儿,也不能变成时代淘汰的那一批。说到这里,推荐2本书:吴军的著作《浪潮之巅》、《硅谷之谜》,感兴趣的童鞋可以去看看。。。

 

一、接口测试的必要性和意义

接口,即API,应用程序编程接口,关于接口的介绍,之前的博客就有详细介绍过,感兴趣的童鞋可以去看看:接口测试简介

这里主要说说接口测试的必要性和意义:

接口测试实施在多系统的平台架构下,有着极为高效的成本收益比(当然,单元测试收益更高,但实施单元测试的成本投入更大,技术要求更高,所以应该选择更适合自身的才是最好的方案)。

接口测试天生为高复杂性的平台带来高效的缺陷检测和质量监督能力,平台复杂,系统越庞大,接口测试的效果越明显。

总的来说,接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益驱动作用下的最佳方案,主要体现在如下三个方面:

1、节省了测试成本

   根据数据模型推算,底层的一个程序BUG可能引发上层的8个左右BUG,而且底层的BUG更容易引起全网的死机;接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。

2、接口测试不同于单元测试

   接口测试是站在用户的角度对系统接口进行全面高效持续的检测。

3、效益更高

   将接口测试实现为自动化和持续集成,当系统复杂度和体积越大,接口测试的成本就越低,相对应的,效益产出就越高。

 

二、做接口测试需要哪些技能

关于这点,在之前的博客也说过,传送门:做接口测试需要哪些技能

做接口测试,需要的技能,基本就是以下几点:

业务流:了解系统及内部各个组件之间的业务逻辑交互;

数据流:了解接口的I/O(input/output:输入输出);

协议:包括http协议,TCP/IP协议族(之前的博客有系统的介绍过协议,传送门:http协议:菜鸟入门系列)

工具:工具可以辅助我们更好更高效的完成工作,常用的接口测试工具有:jmeter、loadrunner、soapui、postman等;

数据库知识:无论是从数据库获取知识,还是确认数据落地,抑或接口对数据执行了哪些操作,都需要确认,因此数据库知识(其实就是增删改查)就很有必要;

补充:接口文档的几个必要点:完整性、一致性、容错性

 

三、接口自动化测试

1、如何开展

首先,调试单个接口,保证单个接口的正确和通畅(类似于性能测试中的基准测试);

其次,明确数据流,业务流;

最后,将N个接口测试脚本串起来,执行即可;

最重要的一点,别想太多太复杂,先把最基础最简单的做起来,就成功一大半了,至于扩展性的第三方接口、https、定时任务、自动出测试报告、自动发邮件等等功能,这都是不断累计和优化的,

行动起来就行,想太多不如行动起来,让接口自动化测试落地,才是我们首先需要考虑的!

2、开展之前需要知道的

现在的测试对象包含几个页面?

每个页面涉及几个接口?

分别在哪一步调用?

每个接口包含哪些字段?

各个字段对应数据库哪张表?

每个表中各个字段是什么意思?

各个接口对表产生了怎样的操作?

3、自动化框架

什么是框架?你可以理解为一个完整的环,也可以理解为让接口测试脚本运行的一整套环境,平台,随便什么都可以;一般一个自动化测试框架包含以下几点:

数据池:即测试数据的存储管理,一般集成为一个data包,其中包括:

       log(日志文件)、report(测试报告文件,一般为xml格式)、case-data(单个接口的测试数据,一般为json格式)、server-data(接口业务串联的数据,可以用excel管理)

脚本管理中心:接口测试脚本的统一管理、存储、调度中心,常用的工具有maven、ant等,或者可以使用编程语言中的单元测试框架提供的功能,选择自己适用的即可;

运行平台:一般是借助工具来运行这些测试脚本,工具可以使用上面提及到的几种(jemter、loadrunner、soapui等),同样,选择合适的很重要;

持续集成工具:最常见的就是Jenkins,它的作用就是监控外部程序的调用执行,定时或者触发调度任务,测试脚本执行等功能;

通信服务:dubbo、spring_boot、thrift等RPC、REST同步调用服务;

测试结果统计管理中心:比如testlink,目的是为了测试结果自动更新上传,更好的统计测试结果,以便后期的优化;

上面说了这么多,实际上它的意义就是:数据与脚本分离,测试结果自动提交通知,提高测试脚本和测试数据的维护便利等等。。。

我正在使用的框架为:jemter+maven+Jenkins+dubbo+MySQL......

 

关于接口自动化测试,基本就是上述的内容,当然,选择适合自身实际情况的框架,落地实施,才是重点,行动起来,才能咸鱼翻身。。。

 

原文:https://www.cnblogs.com/imyalost/p/7430126.html

转载于:https://www.cnblogs.com/peachh/p/9746352.html

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

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

相关文章

Leetcode--1248. 统计「优美子数组」(java)

给你一个整数数组 nums 和一个整数 k。 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。 请返回这个数组中「优美子数组」的数目。 示例 1: 输入:nums [1,1,2,1,1], k 3 输出:2 解释&…

2021年MEMS传感器产业链变化与趋势

来源:宸元资本一MEMS基本概念和相关产业政策MEMS基本概念微机电系统(MEMS, Micro-Electro-Mechanical System),也叫做微电子机械系统、微系统、微机械等,指尺寸在几毫米乃至更小的高科技装置。微机电系统其内部结构一般…

python基础之流程控制

python流程控制 python的流程控制跟大多数的语言一样,包括if条件语句、for循环语句、while循环语句;跳出循环continue,break等 写在前面 python中的运算 1)算数运算 以下假设变量:a10,b20: 2&am…

【剑指offer】面试题38:字符串的排列(Java)

输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s "abc" 输出:["abc","acb","bac","bca","…

从自动驾驶汽车开始,机器学习开始与物理世界交互

大数据文摘出品来源:Wired编译:王烨今天,有许多人工智能与我们互动的例子,使我们的生活的效率更高。智能体向我们通过电子商务网站向我们推荐产品,通过社交媒体为我们推荐新闻,通过交友应用向我们推荐朋友&…

Leetcode--全排列(Java)

给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 代码&#xff1a; class Solution { public List<List<Integer>> permute(int[] nums)…

突破!在人工染色体中存储图片和视频:天津大学元英进团队验证DNA数据存储新方法...

来源&#xff1a;中国生物技术网天津大学元英进教授团队从头编码设计合成了一条长度为254,886 bp、专用于数据存储的酵母人工染色体&#xff0c;借助无线通信中前沿的纠错编码将两张经典图片和一段视频存储于高效组装的人造染色体&#xff0c;利用酵母繁殖实现了数据稳定复制&a…

10分钟 在linux里创建.net core helloworld控制台程序

官方教程 安装linux https://www.cnblogs.com/LittleFeiHu/p/9749455.html 第一步 &#xff1a;选择和你本机适用的Linux版本&#xff0c;我这里用的是18.04. 第二步 &#xff1a;注册秘钥&#xff0c;产品仓储&#xff0c;以及安装依赖项&#xff0c;每台机器只需要注册一次&a…

leetcode--983.最低票价

在一个火车旅行很受欢迎的国度&#xff0c;你提前一年计划了一些火车旅行。在接下来的一年里&#xff0c;你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有三种不同的销售方式&#xff1a; 一张为期一天的通行证售价为 costs[0] 美元…

陈天桥雒芊芊脑机接口中心等团队研究登顶刊:超声波“读心”

来源&#xff1a;澎湃新闻 作者&#xff1a;贺梨萍 脑机接口&#xff08;BMIs&#xff09;在全球的研究正如火如荼&#xff0c;神经科学家们希望通过这样一种设备将神经活动映射到相应的行为&#xff0c;它以读取和解释大脑活动&#xff0c;并向计算机或机器发送指令。实际上&a…

软工 课堂作业:选出一个整数组中最大子数组

项目计划日志 10.6 看ppt&#xff0c;熟悉内容。 10.6下午&#xff0c;开始编程调试。 10.7 运行调试&#xff0c;写博客。 时间记录日志日期开始时间结束时间中断时间净时间活动10.69:0011:0020min1.5h查资料10.78:0012:0030min3.5h查资料&#xff0c;编程10.71…

图灵奖得主 Yann LeCun 最新文章 :自监督学习,人工智能世界的“暗物质”

来源&#xff1a;AI前线作者&#xff1a;Yann LeCun &#xff0c;Ishan Misra译者&#xff1a;王强策划&#xff1a;刘燕近年来&#xff0c;AI 产业在开发“可以从大量经过细致标记的数据中学习的 AI 系统”这个研究领域上取得了巨大进步。这种监督学习的范式在训练专业模型方面…

Leetoce--572. 另一个树的子树(java)

给定两个非空二叉树 s 和 t&#xff0c;检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s: 3 / \ 4 5 / \ 1 2 给定的树 t&#xff1a; 4 / \ 1…

Linux 安装Python37

1、下载python3.7.0 https://www.python.org/downloads/release/python-370/ 2、创建Linux的python37目录 mkdir /usr/local/python37 3、解压python3.7.0源码 tar zxvf python3.7.0.tar.zg 4、配置编译参数 ./configure --prefix/usr/local/python37 5、make 6、make install …

无脑人:我们真的需要大脑吗?

© Mental Floss来源&#xff1a;神经科技编辑&#xff1a;Yezi审阅&#xff1a;mingzlee7在一次讨论中&#xff0c;有位德高望重的人&#xff08;我不会透露这个人是谁&#xff09;告诉我&#xff1a;“我认为自我存在于心脏&#xff01;而不是大脑&#xff01;那些声称意…

get和post的联系与区别

get和post是什么&#xff1f;HTTP协议中的两种发送请求的方法。 那么他们有什么区别呢&#xff1f; 在web开发时&#xff0c;我们可以很直观的看到他们的区别&#xff1a; 1.get将参数放入URL中&#xff0c;而post则通过request body传递参数 2.get比post更不安全&#xff…

JS数组的需要注意的问题

一、在js中数组是我们经常使用的数据类型&#xff0c;也为我们提供了很多方法。但是有些方法需要注意使用&#xff1a; 1、indexOf(args)&#xff1a;匹配一个数组中与args相等的项的索引位置&#xff0c;如果该数组包含这个匹配项则返回第一个匹配的索引&#xff0c;并停止匹配…

基金委最新改革:9大科学部整合为4个板块资助布局

来源&#xff1a;微信公众号科学网&#xff08;sciencenet-cas&#xff09;3月24日&#xff0c;国家自然科学基金委员会&#xff08;以下简称自然科学基金委&#xff09;第八届委员会第四次全体会议在北京召开。会议上&#xff0c;自然科学基金委主任、党组书记李静海作全委会工…

Leetcode--236. 二叉树的最近公共祖先(Java)

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它自己的…

万恶之源 - Python运算符与编码

格式化输出 现在有个需要我们录入我们身边好友的信息,格式如下: ------------ info of Alex Li ----------Name : Alex LiAge : 22job : Teacher Hobbie: girl------------- end ---------------- 我们现在能想到的办法就是用一下方法: name input(请输入姓名:) age …