zoukankan      html  css  js  c++  java
  • 接口测试基础001----接口、接口测试

    一、接口

    1、接口的含义

        接口也叫API(Application Programming Interface,应用程序编程接口), 是一组定义、程序及协议的集合。 它提供访问一组例程的能力,无需访问源码或理解内部工作机制的细节。

    2、接口的分类

    第一种是代码内部的接口或称程序接口

    • 程序模块间的接口,代码A与代码B在组合的时候,必然需要定义一些名称以及参数、类型。
    • 对于程序接口的测试,一般需要使用与开发程序接口相同的编程语言,通过对类、方法和函数的调用,验证其返回结果是否正确来进行测试。
    • 这种测试一般划分在白盒测试中,也算是集成测试阶段,既可以由开发人员自己完成,也可以由有良好编程能力的测试人员来做。

    第二种接口是协议接口

    • 系统与系统之间,通过网络数据的传递进行交互,这种类型的接口对底层代码做了封装,系统通过不同的协议提供接口对外提供调用
    • 此类测试一般不涉及底层程序,也看不到代码,属于黑盒层面,可以通过各种手段将网络数据发送到接口从而得到接口的响应信息,达到测试的目标。
    • 这一类测试工作多数情况下由测试人员完成。通常所说的的接口测试主要是对协议接口的测试

    3、协议接口的分类

      第一种:按照按系统不同的调用方式进行分类

     (1)系统与系统之间的接口

              既可以是公司内部不同系统之间调用的接口,也可以是不同公司不同系统之间调用的接口。后者如微信、微博所提供的第三方登录接口,如果你开发的系统不想自建用户体系,那么完全可以调用这些接口来实现用户的登录。

    (2)系统内部,服务与服务之间的调用

            大多情况下是指程序之间的调用。 假设系统开发一个用户查询接口,输入用户名,返回用户信息(性别、年龄、手机号、邮箱地址等),如果用户不存在则返回null。现在需要新开发一个用户抽奖的接口,该接口需要用户名和抽奖活动id,抽奖接口得到用户名后可以调用用户查询接口,如果用户查询接口返回null,那么抽奖接口就可以直接返回用户不存在了。这个例子中,用户抽奖接口调用的就是用户查询接口。用户查询接口和抽奖接口本质上就是程序开发的函数或方法,提供入参与返回值。

    (3)下层服务对上层服务的接口

    • 应用层:可以认为是系统所提供的UI层功能。对于Web系统来说,就是浏览器页面上所提供的功能,如登录、注册、查询、删除等。
    • Service层:可以理解为服务器所提供数据的处理。
    • DB层:数据库(DataBase)主要用来存放数据。

     各层之间的调用过程

             首先应用层实现了一个用户查询的功能,需要用户输入查询的关键字,并显示查询结果。当用户使用查询功能时,首先底层调用Service层所提供的查询接口,查询接口得到应用层调用的查询数据;然后再通过DAO访问数据库,根据用户输入的查询数据,查询数据库中的数据。最后,将查询到的数据库数据返回给应用层,用户在应用层看到查询结果。

             在这个过程中,各层之间的交互就是通过接口,应用层与Service主要通过HTTP接口,Service 层与DB层主要通过DAO(Data Access Object)数据库访问接口。

    第二种:按照协议的不同进行分类

    (1)webService接口

    • 使用soap协议
    • 通过http传输,请求报文和返回报文都是xml格式的
    • 通常使用的工具SoapUI、jmeter、loadrunner等

    (2)http api接口

    • 使用http协议:
    1. HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是从万维网(www,World Wide Web)服务器传输超文本到本地浏览器的传送协议。
    2. HTTP基于TCP/IP通信协议来传递数据(HTML文件、图片文件、媒体等)。
    3. HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端(即Web服务器)发送请求。
    • 通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串
    • 最常用的两种请求方式是get和post等方法
    • 通常使用的工具有postman、RESTClient、jmeter、loadrunner等

    二 、接口测试

    1、接口测试的含义

        接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点,检测后端实现是否符合接口规范。测试的重点是要检查数据的交换,传递和控制管理过程以及系统间的相互逻辑依赖关系等。

    2、接口测试的意义:

    • 更早地发现问题
    • 缩短产品研发周期
    • 发现更底层的问题
    • 前端随便变,接口测好了,后端不用变
    • 检查系统的安全性、稳定性

    3、接口测试的原理

           模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端再接收应答的一个过程。

    • 定位服务器资源,通过URL实现。(如:http://www.baidu.com或http://127.0.0.1:8080/资源路径)
    • 模拟用户提交数据
    • 查看相应的结果是否符合预期

    4、接口测试的工具    

    •  火狐浏览器----安装RESTClient插件,在附加附件中搜索下载安装,在扩展中查看是否安装成功。
    •   谷歌浏览器----安装Postman插件,在更多工具---扩展程序中,下载安装,使用时必须打开开发者模式。
    •   Java开发的测试工具----jmeter

    5、接口测试流程

    • 熟悉业务和需求
    • 分析接口文档
    • 编写接口测试用例
    • 提测后搭建测试环境(安装运行环境、启动项目、测试项目是否搭建成功)
    • 开始测试
    • 提交测试报告

    6、接口测试用例设计  

    • 通过性验证:首先肯定要保证这个接口功能是正确的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
    • 参数组合:现在有一个操作商品的接口,有个字段type,type传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,这样就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
    • 接口安全
    1. 绕过验证:如购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
    2. 绕过身份授权: 如修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,传一个其他的卖家能不能修改成功。
    3. 参数是否加密:如登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息。加密规则是否容易破解。
    4. 密码安全规则:对密码的复杂程度校验。
    • 异常验证:就是不按照接口文档上的要求输入参数,来验证接口对异常情况的校验。如必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11-----必传非必传、参数类型、入参长度。
    • 业务逻辑:就是根据系统的业务来设计用例,这个每个公司的业务不一样,就得具体的看自己公司的业务了,其实这也和功能测试设计用例是一样的。

    7、接口文档内容 

    • 接口说明
    • 调用url
    • 请求方法(get/post)
    • 请求参数、参数类型、请求参数说明、请求头header
    • 返回参数说明、请求响应的代码、响应内容

    案例:

  • 相关阅读:
    Python的Flask框架开发RESTful API
    自研接口测试平台(Django2+Bootstrap3+Unittest)
    接口自动化测试平台 http://120.79.232.23
    ​性能优化指南:性能优化的一般性原则与方法
    性能优化指南:性能优化的一般性原则与方法
    ​性能优化指南:性能优化的一般性原则与方法
    开源自动化测试平台介绍一览
    开源自动化测试平台介绍一览
    App自动化测试方案
    SQL Server中取两个表的交集,并集和差集
  • 原文地址:https://www.cnblogs.com/geqiandeqingmu/p/12727806.html
Copyright © 2011-2022 走看看