Спецификация языка тестовых состояний в конечном компьютере функции шага - PullRequest
0 голосов
/ 14 апреля 2020

У нас есть конечный автомат с функцией состояния, имеющий спецификацию языка состояний, записанную в формате json, которая вызывает несколько лямбда-функций на основе ввода и условия во время выполнения рабочего процесса.

Есть ли способ юнит / интеграция тестирует этот json код (рабочий процесс), высмеивая зависимости Lambda? Например Проверьте, когда заданный c вывод лямбды равен XXX, тогда шаг YYY вызывается рабочим процессом пошаговой функции.

Я проверил «Разработка и проверка AWS Рабочие процессы пошаговых функций локально» do c но, похоже, он обеспечивает способ локального тестирования лямбда-функции в пошаговой функции. То, что я хочу, - это смоделировать Lambda и протестировать json (рабочий процесс / язык состояний).

1 Ответ

1 голос
/ 21 апреля 2020

У нас был разработчик, который хотел запускать лямбда-функции локально и тестировать в этой усадьбе. Я, честно говоря, считаю, что это довольно бесполезно и не добавляет никакой ценности, причина в том, что вы не проверяете ничего, кроме своего собственного понимания Спецификации языка States.

Скажем, вы пишете тест на какую-то работу выдает исключение:

    "Try": {
      "Next": "Job Succeeded",
      "Type": "Parallel",
      "Branches": [{
        "StartAt": "TODO",
        "States": {
        "TODO": {
          "Comment": "This throws an exception.",
          "Type": "Task",
          Resource": "arn:aws:states:::states:startExecution.waitForTaskToken",
          "Parameters": {
            "Input": {
              "something.$": "$$.Execution.Input.something"
            }
          },
          "End": true
        }
        }
      "Catch": [{
        "ErrorEquals": ["States.ALL"],
        "Next": "Job Failed"
      }]
    }

И проверка, когда TODO не удается, переходит к Job Failed, а при успешном завершении - Job Succeeded. Что ж, это определенно произойдет, нет необходимости проверять это, если только вы не работаете на AWS.

Единственные реальные тесты, которые стоит сделать, это интеграционные тесты и тестирование производительности. Вы можете смоделировать отключение службы, отключение базы данных и т. Д. c. запустив пошаговую функцию, и получим результат. Даже если вы знаете, что ваши задачи вернутся к тестам интеграции функций, это не даст вам много.

Я бы посоветовал сосредоточить ваши усилия на тестировании производительности пошаговых функций, это покажет, если у вас начнутся проблемы в вашей системе, если время действия пошаговой функции истекло и т. д. c. Но модульное тестирование пошаговой функции не скажет вам ничего, чего вы еще не знаете. В этом вся суть с пошаговыми функциями.

...