

# 测试 Lambda 持久性函数
<a name="durable-testing"></a>

使用耐用执行测试 SDK 在本地和云端运行并检查执行情况。有关编写测试、断言、云运行器、SAM CLI 集成和完整示例，请参阅《AWS 耐用执行 SDK 开发人员指南》中的[测试](https://docs.aws.amazon.com/durable-execution/testing/)。

## 用于云测试的 IAM 权限
<a name="durable-cloud-testing"></a>

当您使用云运行器或 `sam remote invoke` 测试已部署的耐用函数时，调用主体需要权限才能调用该函数并读取其执行历史记录。将以下权限附加到您的测试调用者：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction",
                "lambda:GetDurableExecution",
                "lambda:GetDurableExecutionHistory"
            ],
            "Resource": [
                "arn:aws:lambda:region:account-id:function:function-name",
                "arn:aws:lambda:region:account-id:function:function-name:*"
            ]
        }
    ]
}
```

用您的值替换 {{region}}、{{account-id}} 和 {{function-name}}。

## 调试失败
<a name="durable-testing-debugging"></a>

当测试失败时，检查执行结果以了解问题出在哪里。查看执行状态，以确定函数是成功、失败还是超时。阅读错误消息以了解失败原因。

检查各项操作结果，以找出行为与预期不符的地方。检查步骤结果，以查看产生了哪些值。验证操作顺序，以确认操作按照预期的顺序进行。对操作进行计数，以确保创建了适当数量的步骤、等待和回调。

常见的问题包括：非确定性代码在重放时会产生不同的结果；通过全局变量实现的共享状态在重放时会失效；以及由于条件逻辑错误而导致的操作缺失。使用标准的调试器和日志记录功能逐行执行函数代码并追踪执行流程。

对于云端测试，可在 CloudWatch Logs 中检查执行历史记录，以查看详细的操作日志。利用跟踪功能来跟踪跨服务的执行流程，并找出瓶颈所在。