如何在 Serverless 环境中开发并测试无服务器应用

阅读时长 8 分钟读完

什么是 Serverless?

Serverless 是一种新型的云计算模型,由亚马逊 AWS Lambda 推出后迅速风靡起来。Serverless 的核心思想是将应用程序的处理逻辑从基础设施中抽象出来,以此降低开发者对底层基础架构的关注点。换言之,Serverless 环境提供一种无需手动管理服务器、中间件及其他基础构建块就能够快速进行应用程序开发的方式。

Serverless 环境中的应用部署方式

一般而言,Serverless 应用部署方式有以下两种:

  • Framework 方式:通过 Serverless Framework 发布和管理应用
  • Console 方式:通过控制台进行操作,只需要进行几个简单的配置即可。

Framework 方式

Serverless Framework 是 Serverless 应用程序开发、部署和管理的框架,支持多种编程语言,包括 JavaScript、Java、Python 等,同时该框架支持多种部署方式,提供了一些常见功能,如实现自动化测试、多环境部署、自动伸缩等。

步骤如下:

  1. 安装 Serverless Framework:
  1. 创建一个 Serverless 应用程序。
  1. 配置 Serverless 应用程序。

打开 serverless.yml 文件,填写应用程序配置。

-- -------------------- ---- -------
-------- ----------

---------
  ----- ---
  -------- ----------

----------
  ------
    -------- -------------
展开代码
  1. 编写应用程序代码。

打开 handler.js 文件,编写 Serverless 应用程序的处理函数。

-- -------------------- ---- -------
---- --------

-------------------- - ----- ------- -------- -- -
  ------ -
    ----------- ----
    ----- ----------------
      -------- ------ ------------
    --
  --
--
展开代码
  1. 部署应用程序。
  1. 测试应用程序。

Console 方式

部署 Serverless 应用程序的另一种方式是通过控制台进行操作,只需要进行几个简单的配置即可。

  1. 在 AWS 控制台上进入 Lambda 服务。

  2. 点击「Create function」创建一个新的 Lambda 函数。

  3. 填写函数的相关配置,选择相应的运行环境等。

  4. 在「Function code」中编写应用程序代码,使用语言不限,可以通过上传 zip 包或者直接编辑实现。

  5. 配置函数的触发器,设置函数被调用的条件和触发方式。

  6. 提交并测试应用程序。

如何在 Serverless 环境中进行测试

与传统的应用程序不同,Serverless 应用程序需要进行多种类型的测试,如单元测试、集成测试、端到端测试等。特别需要注意的是,Serverless 应用程序的测试还需要考虑到事件、资源管理等方面的特殊情况。

如何进行单元测试

Serverless 应用程序的单元测试与传统应用程序的单元测试相似,需要针对不同的函数编写单元测试,并对测试结果进行断言。

以 AWS Lambda 为例,我们使用 AWS SDK 中提供的 lambda-local 工具进行测试,这个工具能模拟函数调用、传入参数等行为,使得测试更为灵活方便。

使用步骤如下:

  1. 安装 lambda-local
  1. 编写测试用例代码。
-- -------------------- ---- -------
----- ----------- - ------------------------
----- ------ - ------------------
----- ----- - -----------------
----- ------- - ----------------------

-------------- --------- ---------- -
  --- ------- --------

  --------------------- -
    ------- - ----------------------
    ------ - -
      ------- --------------
    --
    ------------------------------
  ---

  -------------------- -
    ------------------
  ---

  ---------- ------ ----- ------- -------------- -
    ----- ----- - - ---- ------- --
    ----- ------- - ---
    ----- -------------- - - -------- ------- ------- --
    ----------------------------- ----- - -------- ------------------------------ ---
    ---------------------- -------- --------------- ------- -
      -- ------- ------------
      ------------------------------ --------------- ------- -------- ---------- ---------
      -------
    ---
  ---
---
展开代码
  1. 运行测试用例。

如何进行集成测试

除了进行单元测试之外,还需要进行更为全面的集成测试,确保在 Serverless 环境下,所有函数间协同工作的正确性。

AWS 提供了 AWS SAM(Serverless Application Model)框架,可以将 Lambda 函数和其他资源资源以及整个应用作为一项单元来定义、运行和测试。可以使用 SAM 执行本地模拟、打包和部署应用程序。

使用步骤如下:

  1. 安装 AWS SAM。
  1. 编写 YAML 文件来描述 Serverless 应用程序的函数、触发器和其他资源。
-- -------------------- ---- -------
------------------------- ------------
---------- ----------------------------

----------
  -------------------
    ----- ---------------------------
    -----------
      -------- -----------
      -------- ----------
      -------- -----------------
      -------
        --------------
          ----- ---
          -----------
            ----------
              ---- ------------------
            ----- ------
            ------- ---

--------
  --------------
    ------------ ---- ------- -------- ----
    ------ ---- -----------------------------------------------------------------------------------
    -------
      ----- ------------------
展开代码
  1. 执行本地测试。
  1. 执行部署。

如何进行端到端测试

Serverless 应用程序的端到端测试,则需要涵盖触发器的各种情况、异常场景、调用事件等一系列复杂情况的测试。同时,又要保证测试的可重复性和独立性。

可以使用测试框架,如 Cypress、Puppeteer 等,进行测试。这里使用 Cypress 测试 Serverless 应用程序。

使用步骤如下:

  1. 安装 Cypress。
  1. 写测试代码。
  1. 运行测试。

如何进行 Serverless 应用程序的排错

排错是 Serverless 应用程序开发中的常见问题。由于 Serverless 应用程序的分布式、异步性质,故而需要根据其特点采取一些特殊的排错方法。针对 Serverless 应用程序的排错,我们可以采取以下一些方式:

  • 日志记录
  • 远程追踪工具
  • 监控工具

结语

Serverless 技术是现代应用开发的一个重要方向,其能够大大降低我们开发应用程序的成本,提高开发效率。在 Serverless 应用程序开发和测试过程中,我们需要更多的针对性和专门工具,以适应 Serverless 的特殊侧重点。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bd317ea231b2b7edf540c8

纠错
反馈

纠错反馈