DevOps 基础概念 【续】

93 阅读4分钟

BDD: 行为驱动测试

  1. BDD 与 TDD 的目的

    • BDD: 从外到内描述系统的行为; 用于集成/验收测试
    • TDD: 从内到外测试系统的功能; 用于单元测试
  2. Behave 的基本工作原理

    • Behave 是一个 Python BDD 框架,它使用 Gherkin 语法来描述行为和场景。
    • Feature 文件描述高级功能、场景和预期行为。
    • Behave 将 Gherkin 步骤映射到 Python 步骤实现。
  3. 特征文件和 Gherkin 语法:

    • 特征文件提供了一种结构化且人类可读的方式来定义软件的行为。
    • Gherkin 语法(Given-When-Then)有助于编写清晰、简洁且易于理解的场景。
  4. 特征文件和步骤文件之间的关系:

    • 功能文件包含功能和场景的高级描述。
    • 独立步骤文件中的步骤定义(Python 代码)可执行特征文件中描述的操作。
  5. 如何在步骤中替换变量: Gherkin 步骤中的变量是使用占位符(例如 {variable})捕获的。

image.png

  1. Selenium 在Behave中的作用:
    • Selenium 使浏览器自动化
    • 它是一个 Web 浏览器驱动程序,通过像人类一样与用户界面交互来测试网站 • 它支持 Firefox、Chrome、Safari、IE、PhantonJS

Continuous Delivery

  1. 单元测试和集成测试在什么阶段运行?

    • 一般的,我们有Build -> Deploy -> Test Stage -> Production
    • 单元测试在Build中
    • 集成测试在Test Stage中
  2. 哪 3 项 IBM Cloud 服务构成了其平台即服务?

    • Cloud Foundry
    • Docker/ Kubernetes
    • Cloud Functions/ OpenWhisk

Docker

  1. 了解如何运行有状态服务?

    • 公开容器内的卷并将其映射到主机文件系统以保留其状态
    • 将状态保存在外部数据库中
  2. 分层文件系统的优势?

    • Docker 的分层文件系统可以有效利用磁盘空间并加快映像构建速度。层是可重用的,如果层没有更改,则会从缓存中重用它,从而减少存储和网络开销。
  3. 在只读层中如何删除文件?

    • 最顶层会更新为空白,从而隐藏文件,使其看起来像已删除
  4. 容器和虚拟机的区别:

    • 容器共享主机操作系统内核,使其轻量级且启动速度更快。

    • 容器可以跨环境移植,而虚拟机则不然。

  5. 在容器中运行进程的最佳实践:

    • one process per container
  6. 运行 Docker 的 Hello-World 映像会发生什么?

    • 在本地搜索镜像,如果没有找到,则从 Docker Hub 中拉取。
    • 从image创建一个新container。
    • 执行 hello-world 程序,该程序打印一条消息。
    • 退出container。

Security

  1. Injection attacks 发生场景:

    • 作为命令/查询的一部分发送到解释器的不受信任的数据
  2. 动态和静态应用程序测试之间的区别:

    • 动态抓取应用程序的界面, 测试应用程序对各种输入的反应
    • 检查所有代码或运行时二进制文件以支持对常见漏洞的彻底搜索

Kubernetes

  1. 将 Kubernetes 应用程序公开到集群之外

    • NodePort:在每个节点上分配一个端口,并将流量转发到目标服务。
    • LoadBalancer:创建将流量路由到服务的外部负载均衡器。
    • Ingress:管理对服务的外部访问,允许您定义路由规则。
  2. secrets

    • 用于管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。
    • 处理数据库凭据等机密: Base64 编码secrets并将它们作为卷或绑定到容器环境变量
  3. 什么是 OpenShift?

    • OpenShift是红帽开发的一个平台,基于Kubernetes构建,提供更全面的企业容器和编排解决方案
  4. 什么是 Ingress 以及它的用途是什么?

    • Kubernetes 中的 Ingress 是一种通过路径(例如 /shopcarts、/orders 等)将单个主机名映射到多个微服务来为多个后端微服务创建单个入口点的方法
  5. Service 如何找到它公开的 Pod?

    • Kubernetes 服务抽象了 Pod 访问方式的详细信息。服务使用lables和selectors来发现流量应转发到的 Pod

基础设施即代码/配置管理

  1. 使用 convergent Configuration Management system 的优势

    • 该语言不是描述进行更改所需的步骤,而是描述人们想要结束的最终状态以及系统最终处于该状态
  2. 基于代理与无代理的优点

    • 基于代理的优点: 富客户端可以执行更多操作并按计划运行;网络流量低
    • 基于无代理的优点: 内存占用小,支持稀有系统; 无需在每台服务器上一直运行代理
  3. Ansible 如何管理服务器组?

    • Ansible 允许将服务器分组(例如,网络服务器、数据库服务器),然后同时对整个服务器组进行更改,而不是逐一更改它们