本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
常见问题解答
我有一个 Lambda 函数,该函数可以在不调用任何其他服务的情况下执行计算并返回结果。我还需要在云端对其进行测试吗?
是。Lambda 函数的配置参数可能会改变测试结果。所有 Lambda 函数代码均依赖于超时和内存设置,如果这些设置不正确,可能会导致函数失败。Lambda 策略还允许将标准输出记录到亚马逊。 CloudWatch
在云端进行测试如何帮助单元测试? 如果测试在云端并连接到其他资源,那不属于集成测试吗?
我们将单元测试定义为在架构组件上单独运行的测试。此定义不一定排除使用服务调用或其他网络通信。
许多无服务器应用程序都有可以单独测试的架构组件,即使在云端也是如此。一个基本的例子便是一个获取输入、对其进行解释并将发送消息至 SQS 队列的 Lambda 函数。要对这种函数进行单元测试,可能会包括测试输入值是否导致某些值出现在队列消息中。考虑使用以“安排、执行、断言”模式编写的测试:
-
安排:分配资源(接收消息的队列和所测试的函数)。
-
执行:调用所测试的函数。
-
断言:检索函数发送的消息,并验证输出。
Mock 测试方法包括使用进行中的 Mock 对象模拟队列,以及创建包含 Lambda 函数代码的类或模块的进行中的实例。在断言阶段,将从 Mock 模拟对象中检索队列消息。
在基于云的方法中,测试将面向测试目的创建 SQS 队列,并将部署带有配置为使用隔离的 SQS 队列作为输出目标的环境变量的 Lambda 函数。运行 Lambda 函数后,测试将从 SQS 队列中检索消息。
基于云的测试将运行相同的代码,断言相同的行为,并验证应用程序的功能正确性。但是,它还有一个额外的优势,那就是能够验证 Lambda 函数的设置:IAM 角色、IAM policy 以及函数的超时和内存设置。