使用postman 自动化测试接口

2021-11-15 15:06:58 浏览数 (1)

为什么需要自动化测试

软件测试是软件开发的重要组成部分,是贯穿整个软件生命周期,对软件产品进行验证和确认的活动过程,其目的是尽早发现软件产品中存在的各种问题,如与用户需求、预先定义不一致等问题。

随着代码库的增长,需要确保自己没有破坏自己以前可以正常运行的任何功能。测试覆盖率越高,代码将越灵活且具有更好的抗错误性。

单元测试

对软件中的最小可测试单元进行检查和验证,具体来说就是开发者编写一小段代码,用于检验被测代码的一个很小的,很明确的功能是否正确。

集成测试

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 也就是说,在集成测试之前,单元测试应该已经完成,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价

系统测试

是对整个系统的测试,将需测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件数据等其他系统元素及环境结合在一起测试, 系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。

接口测试流程

接口测试一般遵循如下流程,细节部分可根据实际项目情况进行调整。

编写接口测试计划

一般来说,接口测试计划包含概述、测试资源、测试功能及重点、测试策略、测试风险、测试标准。

编写、评审接口测试用例

和功能测试类似,在开始接口测试前,需要根据需求文档、接口文档等项目相关文档编写并评审接口测试用例。

执行接口测试

依据编写的接口测试用例,借助测试工具(如 Postman、JMeter、SoapUI 等)执行接口测试,上报发现的问题。

接口自动化测试持续集成要点

进行项目测试时,接口会增加、减少或变更,测试用例也会相应更新,因此需要借助工具(如 GitHub 等)来维护测试用例进行持续集成,通过自动化测试实时监控项目接口运行情况。对接口测试而言,持续集成是核心内容,通过自动化的手段才能做到低成本、高收益。接口自动化测试持续集成主要包括以下内容。

① 流程方面。在回归阶段加强接口异常场景的覆盖,并逐步向系统测试、冒烟测试阶段延伸,最终达到全流程自动化。

② 结果展示。更加丰富的结果展示、趋势分析、质量统计和分析等。

③ 问题定位。报错信息、日志更精准,方便问题复现与定位。

④ 结果校验。加强自动化校验能力,如数据库信息校验。

⑤ 代码覆盖率。不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。

⑥ 性能需求。完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

初识postman

创建一个request

将请求保存到collection

运行collection

编写测试用例

postman 内置包含了一些js模块(chai,lodash,tv4 uuid xml2js)等,具体可以查看文档

只需要require 就可以使用

代码语言:javascript复制
var uuid = require('uuid');
    console.log(uuid())

HTTP响应状态码

1××:指示信息,表示请求已接收,继续处理。 2××:成功,表示请求已被成功接收、理解和接受。 3××:重定向,要完成请求必须进行更进一步的操作。 4××:客户端错误,请求有语法错误或请求无法实现。 5××:服务器错误,服务器未能实现合法的请求。 以下对常见状态代码和状态描述进行说明。 200 OK:客户端请求成功。 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。 401 Unauthorized:请求未经授权。 403 Forbidden:服务器收到请求,但是拒绝提供服务。 404 Not Found:请求资源不存在,如输入了错误的 URL。 500 Internal Server Error:服务器发生不可预期的错误。 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

测试脚本流程

Pre-request 在请求之前,tests在请求之后。

项目示例

我们可以使用官方模板来,查看如何编写测试用

  • 注册登录,用户鉴权
  • rest API

TDD测试驱动开发

在开发功能代码之前,先编写单元测试用例代码,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。

  • 接口路径
  • 接口状态码
  • 请求参数
  • 返回结果

postman 脚本 newman

Newman是Postman的命令行运行程序,要运行Newman,请确保您具有Node.js> = v10

安装

代码语言:javascript复制
yarn init -y    //项目初始化
yarn add newman //安装newman

使用

新建一个js文件index.js , ./sample-collection.json文件可以通过postman导出。

代码语言:javascript复制
const newman = require('newman'); 
 
// call newman.run to pass `options` object and wait for callback
newman.run({
    collection: require('./sample-collection.json'),
    reporters: 'cli',
    environment: {
      name: 'dev',
      values: [
        {
          key: 'base_url',
          value: 'http://10.1.11.235',
          enabled: true,
        }
      ],
    },
}, function (err) {
    if (err) { throw err; }
    console.log('collection run complete!');
});

运行

node index.js 就可以运行,运行完成后测试报告就打印在命令行中。

安装 newman-reporter-html, 修改报告生成,就可以生成html 形式的测试报告

代码语言:javascript复制
...
- reporters: 'cli',
  reporters: ['cli',html],
...

文件上传

将上传文件sample-file.txtcollection.json在同一个目录中就可以测试文件上传接口。

代码语言:javascript复制
{
    "info": {
        "name": "file-upload"
    },
    "item": [
        {
            "request": {
                "url": "https://postman-echo.com/post",
                "method": "POST",
                "body": {
                    "mode": "formdata",
                    "formdata": [
                        {
                            "key": "file",
                            "type": "file",
                            "enabled": true,
                            "src": "sample-file.txt"
                        }
                    ]
                }
            }
        }
    ]
}

持续集成

整合github

整合Jenkins

总结

优点

  • Postman 安装简单、使用方便、功能强大,另外,这也是开发人员常用的接口调试工具
  • 接口文档生成,版本管理
  • 导入导出
  • CI/CD 对接到各个平台

缺点

  • request名称重复容易导致请求错误
  • 客户端编写js,不是很方便,没有代码自动提示

0 人点赞