首页 > 其他分享 >接口测试系列文章1——接口测试的核心概念

接口测试系列文章1——接口测试的核心概念

时间:2023-09-27 11:05:58浏览次数:41  
标签:调用 代码 接口 测试 文章 getAllPeople void


开发口中的接口是什么?

我相信绝大多数测试同学听闻“接口”二字都源于开发同学。书本中的标准接口定义叫Interface,在JAVA编程语言中接口是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过implements关键字实现接口,从而来重写接口中的抽象方法。
例如:

interface Animal {

public void eat();

public void travel();

}

class Cat implements Animal {

public void eat() {

// TODO Auto-generated method stub

}

public void travel(){
// TODO Auto-generated method stub

}

}

而实际工作中开发同学常常挂在嘴边的接口并不是理论上的接口interface,通常通过以下面两种方式体现:

1.就是一个http请求

例如:http://host:port/getAllPeople

这个请求就是一个接口,当你发送这个url后,会从服务器端收到请求。服务端的核心代码是,有一个方法来判断url是什么,如果匹配到getAllPeople,则调用相关的方法,例如getAllPeople(){//具体实现代码}

2.就是不通过http请求,直接调用方法getAllPeople(){//具体实现代码}

而对于我们测试人员最为关注的是第一种方式,即通过http请求调用后端服务代码,因为测试同学代码相对薄弱,直接通过代码调用的方式进行接口测试难度较高,另外好多公司的研发代码是绝对保密的,研发团队以外的人很难获取代码。

为什么近年接口测试这么火爆呢?

传统的开发模式转变,从过去的瀑布到如今的敏捷;

移动互联网的普及,用户页面需求变更频繁,但是服务端接口相对稳定;

微服务的兴起,好多服务根本没有供测试人员的UI可点,我们只能对服务端进行接口测试。
常见的接口类型

HTTP接口,

RPC接口,

Web Service接口,

Dubble接口,

RESTful接口,

其中RESTful接口是基于HTTP接口的,Web Service及Dubble属于RPC接口。目前HTTP接口是最核心也是应用最广泛的接口!

接口测试的核心测试点

校验接口参数是否达到要求(边界、业务规则)

校验接口返回数据的正确性与格式

校验接口覆盖率是否达到要求(一般要求核心接口要达到100%的测试率,非核心接口根据)

性能指标是否满足要求(接口的响应时间、处理能力)

安全指标是否满足要求(一般接口都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。)

接口测试较UI测试的优势

1.接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定

2.测试可以更早的介入(具体的时间点应该是在后台接口开发基本完毕之后,需要模块间进行接口联调的时候)

3.可以发现功能测试覆盖不到的服务端问题

接口测试开展的四个步骤

1.确认接口文档的准确性,这是接口测试通过与否的标准

2.准备接口测试数据

3.构建接口

代码选择java的httpclient jar包或者python的requests模块

工具选择postman、jmeter等

4.校验接口请求,在成功调用接口后,获取接口的响应数据,根据接口文档来判断接口测试的通过与否

做好接口测试必备的知识点

了解OSI网络模型,TCP/UDP协议,掌握HTTP/HTTPS协议,了解RPC, Web Service及REST,理解Session和Cookie;

掌握常用的接口测试工具Postman,Jmeter,SoupUI等;

掌握基本的抓包工具如Chrome开发者工具,Fiddler,Wireshark等;

掌握一门编程语言Python或Java;

了解Nginx, Apache, Tomcat等服务器中间件;

掌握数据库基本查询命令,及Redis操作,用于检查响应结果;

掌握基本的Linux日志查询和筛选命令。

总结

其实接口测试开展的顺利与否,技术并不占主要因素(核心技术就是我讲的这么多,你会了就可以从事接口测试了)。个人觉得沟通才是接口测试成败的核心,因为接口测试的开展以及接口文档的编写需要开发人员大量的配合,这是极其需要沟通技巧的!(沟通问题不是本文的讨论范围)


标签:调用,代码,接口,测试,文章,getAllPeople,void
From: https://blog.51cto.com/liwen629/7621640

相关文章

  • 接口测试系列文章2——接口测试面试必问的知识点(建议收藏)
    面试的本质我们每个人或多或少都经历过大大小小的各种面试,少则几次多着几十次,更甚者上百次,那么我们大家是否思考过,面试招聘对于企业来讲究竟意味着什么吗?有的同学会说,当然就是招人干活喽!不错!但是本质上面试是企业自我输血的过程。第一,血型匹配度?也就是价值观和企业是否一致。第二,拥......
  • 微服务测试的关键——通过ELK查询日志
    为什么需要ELK一般我们在工作中查询日志搜索问题时,通常需要直接在日志文件中进行grep、awk操作就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。随着微服务的广泛应用,无论系统日志,还是业务日......
  • 读懂这篇文章,就掌握微服务测试核心了!
    最近我写了四篇关于微服务测试的文章,本文介绍微服务测试的核心点,前面三篇分别介绍了:入门微服务必须了解的概念一文搞定微服务测试本质微服务负载的重要性微服务性能测试的关键——IP欺骗技术微服务如何查询应用日志微服务测试的关键——通过ELK查询日志相信这几篇文章一定会帮助......
  • 五分钟理解什么是自动化测试架构设计
    自动化测试常见的问题如下:1)产品UI经常变化,导致测试脚本不能复用。(2)测试脚本不够健壮,导致脚本回放时,测试脚本本身经常出错。(3)网络延迟,数据加载延迟造成测试脚本失败。(4)识别对象的ID可读性差,导致测试脚本的可读性差。(5)录制的测试代码过于庞大而且应变性差,导致测试脚本的复用......
  • 测试同学必须熟悉的python模块
    测试同学在进行python的面试过程中,必问的问题是你最常用的python模块有哪些?这些模块解决了你工作中的哪些问题?在这里我把测试同学在实际工作中常用的py模块进行了汇总,本文编写的目的是对各个模块的功能进行概要介绍并没有提供具体api的使用方法,如果大家想要深入了解各个模块api的具......
  • Jmeter场景组合测试——多个线程组的设计方案
    我们绝大多数同学在使用jmeter进行性能测试时都会在一个线程组中完成测试工作,今天我来重点讲解一下jmeter多个线程组在测试中的应用,这也是关于jmeter性能测试面试过程中的进阶问题,希望能够帮到大家来解决工作中不同的测试需求。线程组中的线程执行顺序是什么?首先大家需要明确一......
  • 测试技能提升篇——一文理解消息中间件里那些通用的核心概念
    我们测试同学在实际工作中或多或少都会接触过ActiveMQ、RabbitMQ,Kafka,和RocketMQ这类消息中间件产品,不同的公司会选择不同的产品,大家可能会觉得产品比较多,了解起来有些复杂!其实无论使用哪种中间件产品,他们的核心功能都是比较类似的。本文就不来汇总一下中间件产品的核心概念,给大家......
  • 测试技能提升篇——Docker的核心概念
    Docker已经不是什么新技术了,相信绝大多数同学在实际工作中都会对其有一定的了解,使用一些常用的命令行执行一些操控容器的基础操作,这方便的网络资源实现太多了,在这里就不进行相关讲解了。本文重点介绍一下涉及Docker的相关概念以及其核心组件的作用,相信会帮助想要深入研究Docker的同......
  • 测试技能提升篇——脏读、不可重复读、幻读的区别
     脏读事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据不可重复读事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。脏读与不可重复读的区别在于前者读到的是其他事务未提交的数据,后者读到的......
  • 使用HttpServletResponse实现curl接口时控制台输出(续)
    上一篇文章的问题在上一篇文章SpringBootRestController接口如何输出到终端中讨论了如何使用HttpSerlvetResponse写入输出流,使应急接口通过curl调用时可以在控制台输出信息,使运维人员知道命令执行情况。但是上一篇文章的问题是,HttpServletResponse是Controller的参数......