黑盒白盒测试及监控

        

概念引入-黑盒白盒测试

        一般按阶段有四个测试阶段:单元测试、集成测试、系统测试、确认测试

        白盒测试属于前两者,黑盒测试属于后两者。

        

单元测试(Unit Testing)

        用于验证代码中最小的可测试单元(通常是函数或方法)的行为是否符合预期。单元测试通常由开发人员编写,并在开发过程中频繁运行,以确保代码的正确性和稳定性。
        目标是隔离和测试代码的各个部分,以便快速发现和修复潜在的问题。

集成测试(Integration Testing)是单元测试之后进行的一种测试方法
        用于验证多个组件或模块在集成后的行为是否正确。集成测试的目标是检查不同组件之间的交互和协作,以确保整个系统的功能和性能符合预期。
        帮助发现在组件集成过程中可能出现的问题,如接口不匹配、数据传递错误等。

系统测试(System Testing)
        用于验证整个系统的功能、性能和稳定性。系统测试的目标是模拟真实环境下的使用情况,对整个系统进行全面的测试,以确保系统在各种情况下都能正常运行。
        可涵盖功能测试、性能测试、安全性测试等多个方面,以确保系统的质量和可靠性。

确认测试(Validation Testing)
        用于验证软件是否满足用户的需求和预期。确认测试通常在开发完成后进行,以确保软件的功能和性能符合用户的期望。
        关注软件是否满足用户需求、是否符合规范和标准,并且通常由用户或客户参与进行。

从单元级别到整个系统级别,逐步验证软件的正确性、稳定性和符合性。

白盒测试:关注内部结构和实现细节,测试人员具有对被测试软件的内部知识。        
        用于验证代码的逻辑正确性、路径覆盖和代码覆盖率等。测试人员可以查看代码、执行路径和数据流,以设计和执行测试用例。

黑盒测试:关注软件外部行为和功能,测试人员可对被测试软件的内部结构和实现细节一无所知。
        通常在确认测试和系统测试阶段使用,用于验证软件是否符合用户需求、功能是否正常、界面是否友好等。测试人员根据需求和规格说明书设计和执行测试用例,关注输入和输出之间的关系。

黑盒白盒监控

        类似黑白盒测试,黑盒监控白盒监控是两种不同的系统监控方法,分别关注于系统的外部表现内部实现

(1)黑盒监控

        从系统的外部进行监控,而不关注系统的内部实现。黑盒监控主要关注系统的功能和性能,例如系统的响应时间、可用性、吞吐量等。黑盒监控通常通过模拟用户行为或者发送请求到系统,然后观察系统的响应来判断系统是否正常运行。

        黑盒监控的优点:

  • 不依赖于系统的内部实现,适用于各种类型的系统;
  • 更接近用户的实际体验,可以发现用户在使用过程中可能遇到的问题;
  • 相对来说,黑盒监控的实施成本较低

        黑盒监控的缺点:

  • 无法深入到系统内部,难以定位具体;
  • 对于一些隐藏的、不容易触发的问题,黑盒监控可能无法发现。

(2)白盒监控:

        从系统的内部进行监控,关注系统的内部实现和组件。白盒监控通常通过收集系统的内部指标(如CPU使用率、内存使用情况、磁盘空间等)和应用程序的运行指标(如错误日志、事务处理时间等),来判断系统的健康状况。

白盒监控的优点:

  • 能够深入到系统内部,帮助定位具体的问题;
  • 可以发现一些隐藏的、不容易触发的问题;
  • 有助于优化系统性能,提高系统稳定性。

白盒监控的缺点:

  • 依赖于系统的内部实现,可能需要更多的开发和维护成本
  • 对于一些外部因素导致的问题,白盒监控可能无法发现。

总结:黑盒监控和白盒监控各有优缺点,实际应用中,常会结合使用这两种监控方法,以获得更全面、准确的系统监控结果。黑盒监控帮助我们从用户的角度发现问题,而白盒监控则让我们能够深入系统内部,找到问题的根源。

黑盒白盒监控事例

譬如在K8S中:(以下这段话参考自《Prometheus 中文文档》

白盒监控层面,需关注:

  • 基础设施层(Node):为整个集群和应用提供运行时资源,需要通过各节点的kubelet获取节点的基本状态,同时通过在节点上部署Node Exporter获取节点的资源使用情况;
  • 容器基础设施(Container):为应用提供运行时环境,Kubelet内置了对cAdvisor的支持,用户可以直接通过Kubelet组件获取给节点上容器相关监控指标;
  • 用户应用(Pod):Pod中会包含一组容器,它们一起工作,并且对外提供一个(或者一组)功能。如果用户部署的应用程序内置了对Prometheus的支持,那么我们还应该采集这些Pod暴露的监控指标;
  • Kubernetes组件:获取并监控Kubernetes核心组件的运行状态,确保平台自身的稳定运行。

黑盒监控层面,则主要关注:

  • 内部服务负载均衡(Service):在集群内,通过Service在集群暴露应用功能,集群内应用和应用之间访问时提供内部的负载均衡。通过Balckbox Exporter探测Service的可用性,确保当Service不可用时能够快速得到告警通知;
  • 外部访问入口(Ingress):通过Ingress提供集群外的访问入口,从而可以使外部客户端能够访问到部署在Kubernetes集群内的服务。因此也需要通过Blackbox Exporter对Ingress的可用性进行探测,确保外部用户能够正常访问集群内的功能;

        在 Kubernetes 中,可用 Prometheus 对集群进行白盒监控和黑盒监控。以下是一个简短的示例。(两个 ConfigMap,一个用于配置 Prometheus 的白盒监控,另一个用于配置黑盒监控。白盒监控通过 kubernetes-pods 作业收集 Kubernetes 集群中所有标记为 "prometheus.io/scrape: true" 的 Pod 的指标。黑盒监控则使用 Blackbox Exporter 对名为 "example-service" 的服务进行 HTTP 请求检查。)

  1. 白盒监控示例:
# prometheus-config-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
data:
  prometheus.yml: |
    scrape_configs:
    - job_name: 'kubernetes-pods'
      kubernetes_sd_configs:
      - role: pod
      relabel_configs:
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        action: keep
        regex: true

     2. 黑盒监控示例:

# blackbox-config-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: blackbox-config
data:
  config.yml: |
    modules:
      http_2xx:
        prober: http
        http:
          method: GET

# prometheus-config-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
data:
  prometheus.yml: |
    scrape_configs:
    - job_name: 'blackbox'
      metrics_path: /probe
      params:
        module: [http_2xx]
      static_configs:
        - targets:
          - http://example-service.default.svc.cluster.local
      relabel_configs:
        - source_labels: [__address__]
          target_label: __param_target
        - source_labels: [__param_target]
          target_label: instance
        - target_label: __address__
          replacement: blackbox-exporter.default.svc.cluster.local:9115

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值