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