• 0
  • 0
分享
  • 拨测API接口+监控方案——软件测试圈
  • quinn 2022-11-24 13:43:29 字数 4892 阅读 4166 收藏 0

简介

在业务运维场景中,需要对核心的API接口进行拨测。而各个接口需要传递的参数或者接口之间的依赖是比较复杂的,通常接口之间都是通过链式请求来完成一个业务场景。常见的就是先登录,拿到token以后,再进行后续的API请求。postman提供了基于GUI的方式完成这种场景适配,但是对于运维来讲,需要定时的基于策略的形式来对API进行监控。本篇文章就带你从0-1打造API监控体系。

知识储备

1. Postman使用方法

2. Docker基础知识

部署步骤

1. 从postman导出collection

以下文件以拨测httpbin.org为例,在Postman的GUI工具中导出拨测的json文件(httpbin.json)。示例中包含两个接口,一个模拟认证,一个模拟接口请求

1.png

2. 将导出的文件放到docker中运行

docker run -d -p 8080:8080 -v ./httpbin.json:/runner/collection.json kevinniu666/postman-prometheus:1.0.0

3. 获取拨测指标

curl 10.128.120.52:8080/metrics
# TYPE postman_lifetime_runs_total counter
postman_lifetime_runs_total{collection="httpbin"} 1
 
# TYPE postman_lifetime_iterations_total counter
postman_lifetime_iterations_total{collection="httpbin"} 1
 
# TYPE postman_lifetime_requests_total counter
postman_lifetime_requests_total{collection="httpbin"} 2
 
# TYPE postman_stats_iterations_total gauge
postman_stats_iterations_total{collection="httpbin"} 1
 
# TYPE postman_stats_iterations_failed gauge
postman_stats_iterations_failed{collection="httpbin"} 0
 
# TYPE postman_stats_requests_total gauge
postman_stats_requests_total{collection="httpbin"} 2
 
# TYPE postman_stats_requests_failed gauge
postman_stats_requests_failed{collection="httpbin"} 0
 
# TYPE postman_stats_tests_total gauge
postman_stats_tests_total{collection="httpbin"} 2
 
# TYPE postman_stats_tests_failed gauge
postman_stats_tests_failed{collection="httpbin"} 0
 
# TYPE postman_stats_test_scripts_total gauge
postman_stats_test_scripts_total{collection="httpbin"} 4
 
# TYPE postman_stats_test_scripts_failed gauge
postman_stats_test_scripts_failed{collection="httpbin"} 0
 
# TYPE postman_stats_assertions_total gauge
postman_stats_assertions_total{collection="httpbin"} 3
 
# TYPE postman_stats_assertions_failed gauge
postman_stats_assertions_failed{collection="httpbin"} 0
 
# TYPE postman_stats_transfered_bytes_total gauge
postman_stats_transfered_bytes_total{collection="httpbin"} 794
 
# TYPE postman_stats_resp_avg gauge
postman_stats_resp_avg{collection="httpbin"} 541
 
# TYPE postman_stats_resp_min gauge
postman_stats_resp_min{collection="httpbin"} 494
 
# TYPE postman_stats_resp_max gauge
postman_stats_resp_max{collection="httpbin"} 588
 
# TYPE postman_request_status_code gauge
postman_request_status_code{request_name="authentication",iteration="0",collection="httpbin"} 200
 
# TYPE postman_request_resp_time gauge
postman_request_resp_time{request_name="authentication",iteration="0",collection="httpbin"} 588
 
# TYPE postman_request_resp_size gauge
postman_request_resp_size{request_name="authentication",iteration="0",collection="httpbin"} 54
 
# TYPE postman_request_status_ok gauge
postman_request_status_ok{request_name="authentication",iteration="0",collection="httpbin"} 1
 
# TYPE postman_request_failed_assertions gauge
postman_request_failed_assertions{request_name="authentication",iteration="0",collection="httpbin"} 0
 
# TYPE postman_request_total_assertions gauge
postman_request_total_assertions{request_name="authentication",iteration="0",collection="httpbin"} 1
 
# TYPE postman_request_status_code gauge
postman_request_status_code{request_name="business-request",iteration="0",collection="httpbin"} 200
 
# TYPE postman_request_resp_time gauge
postman_request_resp_time{request_name="business-request",iteration="0",collection="httpbin"} 494
 
# TYPE postman_request_resp_size gauge
postman_request_resp_size{request_name="business-request",iteration="0",collection="httpbin"} 740
 
# TYPE postman_request_status_ok gauge
postman_request_status_ok{request_name="business-request",iteration="0",collection="httpbin"} 1
 
# TYPE postman_request_failed_assertions gauge
postman_request_failed_assertions{request_name="business-request",iteration="0",collection="httpbin"} 0
 
# TYPE postman_request_total_assertions gauge
postman_request_total_assertions{request_name="business-request",iteration="0",collection="httpbin"} 2

4. 将指标接入prometheus中,prometheus的配置文件中添加以下信息。

  - job_name: http-api-monitor
    scrape_interval: 15s
    scrape_timeout: 10s
    metrics_path: /metrics
    scheme: http
    static_configs:
    - targets:
      - 10.128.120.52:8080 #该ip为容器运行节点IP地址
      labels:
        usage: "httpbin接口拨测"

5. 配置prometheus告警规则,详细的规则,大家可以根据prometheus的指标自己来设置。

  - alert: 接口返回码异常
    expr: postman_request_status_code  != 200 
    for: 1m
    labels:
      severity: error
    annotations:
      summary: "接口响应代码非200"
      description: "后端接口拨测失败"
  - alert: 接口返回内容判定失败
    expr: postman_request_failed_assertions  != 0
    for: 1m
    labels:
      severity: error
    annotations:
      summary: "接口返回内容判定失败"
      description: "后端接口postman测试未通过"

接下来的事情就是对接Alertmanager,并把告警发送给运维了。如果需要Grafana的图表,项目中有说明。源代码地址:

GitHub - kevinniu666/postman-prometheus: Run Postman collections continuously and export results as Prometheus metrics

写在后面

整个实现方案的核心是这个容器,它将postman的运行转化成为了prometheus可识别的指标。这个容器的源代码已经在文档中提供了。如果你对nodejs有了解,可以自己去修改源码。该容器可以通过环境变量控制一些行为,列举如下:

2.png

 放一张产线的业务拨测图表:

3.png

 

作者:一直学下去

原文链接:https://blog.csdn.net/lwlfox/article/details/127023067

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 软件测试是对项目研发过程的产物(文档,代码等)进行审查,保障产品质量的过程。我们可以通过手工测试,自动化测试,工具扫描等方法完成这个任务。其中,自动化测试是当前重要的一种测试方法,具有响应速度快、稳定性高、人工干预少的特点,很好的契合了高响应、海量数据验证等需求的测试任务。数据驱动是自动化测试的灵魂,数据驱动的应用程度直接决定了自动化测试的水平和质量。一、自动化测试和数据驱动如果你有100亩麦子需要收割,你会怎么做?方法一:拎起镰刀或者雇几个人拎起镰刀割麦子。方法二:制造或者购买一台收割机,然后开着收割机割麦子。显然,这两种方法都能完成任务,但是,方法二具有重资产、高效率的特点。测试就如同这割...
            1 1 1931
            分享
          • 测试团队不管在公司的位置如何,都应该自己主动争取自己团队内部的一致团结,作为背锅部门,我们需要时刻保持警惕,对于一些外部的问题,需要及时留存证据,以防后续有其他部门的人扯皮。1.客户/实施提出BUG的后续推进    描述:客户/实施 经常报某一类相同问题BUG,该问题实际上是产品设计时易用性不强,导致客户认为该问题为bug。测试人员可针对该类问题,提出建议邮件到产品组来解决并优化该问题。举例:考勤-加班报表月度统计数据维度问题建议    (可在邮箱搜索该邮件)   意义: 测试同学更多的发现问题并提出建议,提高测试团队主动性...
            0 0 1523
            分享
          • 今天聊下微信小程序的抓取,其实小程序的抓取不难,主要解决抓包和如何调试小程序这两个问题。如果你运用chrome调试已经比较熟练了的话,就手到擒来。先来说小程序抓包问题不用破解的办法如何抓到小程序的包?破解是个费劲的事,一不小心微信账号还可能被封。小程序抓不到包通常就是你手机的安卓系统版本太高和微信APP的版本太高了。版本越高,通常它的安全性就越好。换用安卓系统是4.4的手机和微信APP版本在6.7左右的版本。使用Fiddler或Charles抓包妥妥的。如果你实在没有低安卓系统版本手机和低版本微信,继续看下面的文字,待会再介绍一种抓包方法。只要抓包搞定了,很多小程序也就能抓取了,剩下就是解决I...
            0 0 9333
            分享
          •   当时下的副业成为刚需,仅仅靠主业已经不是最保险的生活方式了。而副业的发展形式如果不能与主业相结合,很可能会浪费大量时间 ,同时还会影响到主业的正常运行。那么适合软件测试人员的副业有哪些呢?这里介绍几个与软件测试有关的副业,在发展副业的同时,还可以辅助主业,同时可以平行运行。也为业余生活多了一份收入。  一、众测平台  任务时长一般在1-5日内,可以利用碎片时间找寻缺陷 ,集中一个小时来提交,有可以测试的手机,找到缺陷后按照平台要求的格式提交即可。收入按照缺陷的等级积分总和来计算,注册后需要先通过平台考核,才可以开始接任务。典型的众测平台有:testin、Alltesting等。  二、招聘...
            0 0 1344
            分享
          •   “为什么入软件这行?”很多人问我,“一个女孩子做这个不太好,做不长久,特别年龄大了更不好做。”  我只是很随意的说专业对口,我能说是看上这个行业的高工资和技术范么,这样太俗了,然而就是这个俗气的理由让我走上这一条路,且想一直走下去。为什么呢?  一是因为做了这么久的软件测试,已经爱上它了,这大概就是日久生情吧(偷笑),现在这个对我来说不仅仅是一份工作,还是一份兴趣爱好。  二是性格使然,只有这份默默劳作不需要太多交流的工作比较符合我的性格。  三这也是我在这么多年的工作生涯中不断摸索出来的一条路,一条生活之路吧。  回想刚毕业那会懵懵懂懂的,啥也不懂,还记得刚入公司很幸运进了公司的实验室,...
            0 0 996
            分享
      • 51testing软件测试圈微信