• 0
  • 0
分享

接口测试

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

为什么介绍接口测试?

接口常被开发挂在嘴边,在开发过程中无处不在,但对于测试人员来说,它又如此朦胧,无形无色无味,难以触碰。相信这也是测试人员比较难理解的一种测试类型。查询的大部分资料都是介绍一堆模糊的概念。所以,我打算以浅薄的认知来介绍接口测试,当然会举例子。

我所知道的接口测试

我所了解的模块接口测试大体分为两类:模块接口测试和web接口测试。

模块接口测试                                               

模块接口测试是单元测试的基础。它主要测试模块的调用与返回。

package com.java.base;
public class InterfaceTest {
    
    //求两个整数相加的和
    public static int add(int a, int b){
        return a + b;
    }
    
    public static void main(String[] args) {
        
        //测试整数相加
        int resule = add(1,2);
        if(resule == 3){
            System.out.println("success!"); 
        
           }else{
            System.out.println("fail!");
        }
    }
}

我擦!这明明是一个没有使用单元测试框架的单元测试嘛!但其实我们也可以把add()方法看成一个接口,这个接口接收两个整数并返回两个整数的和。

通过这个例子放大了来看,假如几个开发人员去完成一个系统,他们分别开发一些功能模块,最终数据会在这些功能模块之间传递。当A开发好自己负责的功能模块后会提供相应的接口(类方法、函数),B肯定需要模拟数据调用A写的接口,检查返回值是否正确。

当然,测试的手段遵循测试的一些要点。

1、检查接口返回的数据是否与预期结果一致。

2、检查接口的容错性,假如传递数据的类型错误时是否可以处理。例如上面的例子是支持整数,传递的是小数或字符串呢?

3、接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。

4、接口的性能,接口处理数据的时间也是测试的一个方法。牵扯到内部就是算法与代码的优化。

5、接口的安全性,如果是外部接口的话,这点尤为重要。

web接口测试 

web接口测试又可分为两类:服务器接口测试和外部接口测试。

服务器接口测试:是测试浏览器与服务器的接口。这个很容易理解,我们知道web开发一般分前端和后端,前端开发人员用html/css/javascript等技术。后端开发人用php/java/python/ruby等各种语言。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这也可认为是接口测试,调用的登录接口还是查询接口,传参的是用户密码还是搜索关键字。

外部接口测试:这个很典型的例子就是第三方登录,比如你做的新系统免于新用户重新注册的麻烦会提供第三方登录,那用户在登录的时候调用的就是第三方登录的接口,由第三方验证用户名和密码并且返回给当前系统。

对于服务器接口测试,我们来看例子。

准备:

Python 下载地址: https://www.python.org/ 

Flask 微型web框架。flask安装:> pip install flask

查看flsk是否安装成功。

1.png

来写一个例子hello.py:

from flask import Flask
app = Flask(__name__)
@app.route("/user/<name>")
def user(name):
    return "<h1>hello %s !</h1>" %name
if __name__ == '__main__':
    app.run(debug=True)

运行hello.py

2.png

通过浏览器访问:http://127.0.0.1:5000/user/zhangsan

3.png

这是一个最简单的get请求,我们可以把“zhangsan”改成任意字符来时行测试。

对于web接口测试来说有哪些测试要点:

1、请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等。

2、检查返回数据的正确性与格式;json是一种非常创建的格式。

3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。

4、接口的性能,web接口同样注重性能,这直接影响用户的使用体验。如果我搜索一个关键字半天结果都没返回,果断弃用。


作者:虫师

原文链接:https://www.cnblogs.com/fnng/p/4790294.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   无论是要理解测试,还是做好软件测试,都要抓住这7个核心问题:  1. 测试选择标准与测试充分性 (终止原则)  测试选择标准是选择测试集或确定?个测试集是否满足指定目标的方法。测试充分性标准可以用来决定何时测试充分或者是否完成。  2. 测试有效性与测试目标  通过一系列程序的执行对测试的效率进行分析。对将要执行的测试用例的选择因其目标而异, 即测试集的效率评价基于具体想要实现的目标。  3. 以寻找缺陷为目标的测试  在以寻找缺陷为目标的测试活动中, 是否能够导致系统失效,这是测试是否成功的标准。这与测试软件是否满足设计规约或其它属性有很大的不同, 后者的成功取决于软件在现实的测试用例和...
            0 0 760
            分享
          • 一、软件质量模型功能性:能够满足明确和隐含要求的功能;可靠性:能够处理异常情况,在错误中很快恢复;易用性:易懂、易学、漂亮好看;效率性:占用少量资源,提供适当的性能;维护性:指产品可被修改的能力;可移植性:指软件产品从一种环境迁移到另一种环境的能力。二、软件测试分类(1)是否覆盖源代码黑盒测试;白盒测试;灰盒测试。(2)按照阶段划分单元测试:对软件中最小的可测单元进行的测试;集成测试:在单元测试的基础上,对多个单元组装后的产物进行测试;系统测试:在集成测试的基础上,把软件看作一个整体进行测试;验收测试:也叫交付测试,以最终用户的角度确认软件是否符合预期。(3)是否运行静态测试;动态测试。(4)...
            0 0 2384
            分享
          •   聊到自动化测试,我们做 GUI 自动化测试的过程当中,以前就只要把这个自动化做起来就好了,但随着你的用例,用的数量越来越多之后,你不单单是把一个场景自动化就可以了。因为随着你的用例变多之后,你所有的用例设置,包括你的代码的结构,都要考虑这个东西的可维护性,因为可维护性一直是 GUI 自动化测试很大的一个痛点。我们在后面的 GUI 测试过程中,就会去考虑,怎么来做分成?怎么来做基于可重用的脚本?怎么来做基于页面的对象模型?甚至到后面还有 BDD,就完全是业务,用户行为驱动的这种测试。那么,从这些概念当中,可能你已经听出来了,不管是你之前有没有接触过这些概念,你都能够发现一个很重要的信息点,自...
            0 0 643
            分享
          •   软件在各行各业的日益普及,软件质量问题引起的不良后果越来越严重,软件质量的重要性日益凸显。软件测试作为保证软件产品质量最直接、最有效的手段,越来越多的企业和用户认识到软件测试的重要性。  作为软件开发环节的一部分,软件测试的风险是显而易见的,软件测试项目风险管理是一种特殊的项目风险管理形式。若能够进行风险管理,重视风险评估,制定积极的风险应对计划,就能最大程度地避免风险或减少因风险而造成的损失。  正式投入市场之前,软件需要经过技术人员的反复测试。如软件有任何质量问题,以便技术员追查问题根源,并及时消除;如没有任何质量问题,经过技术人员的检验,才能真正做到“防患于未然”,这也是企业和个人使...
            0 0 717
            分享
          • 读者提问:文件上传和下载,用例怎么写 ?阿常回答:我们先分别给文件上传一个特定的场景。文件上传:每个文件大小不超过 20M,文件个数不超过 10个,文件格式不限。一、文件上传测试点一)文件大小1、文件大小 0 KB,上传时是否有提示。2、文件大小 19.8 M,是否能上传成功。3、文件大小 20.2 M,是否能上传成功。4、文件大小,是提交前校验,还是提交后校验。二)文件个数1、上传文件个数 1个,是否能上传成功。2、上传文件个数 10个,是否能上传成功。3、上传文件个数 11个,上传时是否有提示。4、上传文件个数,是提交前校验,还是提交后校验。三)文件格式1、验证所有支持...
            0 0 1226
            分享
      • 51testing软件测试圈微信