testing_lab_ws21.md 5.0 KB

Реализуйте интеграционное тестирование работы анализатора.

Прежде чем проводить исследования на биоматериалах, нужно провести верификацию на наличие необходимых функций в коде. 

Вам предстоит задача - разработать интеграционный тест для выполнения верификации программного обеспечения анализатора.

Для этого разработайте АПИ сервер анализатора, который содержит конечные точки (endpoints), и возвращает определенные ответы. Затем напишите интеграционный тест, который будет обращаться к этому АПИ, отправлять на него запросы и получать ответы, в зависимости от содержания запроса. 

Логика работы анализатора:

  • приём заказа
  • обработка заказа (тут вы эмулируете какую-то задержку, можете случайным образом, можете в список услуг прописать)
  • получение статуса: возвращаете прогресс, если заказ в работе. если заказ выполнен, то возвращаете результат и ОСВОБОЖДАЕТЕ анализатор

Есть два анализатора Biorad и Ledetect с пересекающимся набором услуг (т.е. есть услуги, которые можно выполнить на обоих анализаторах, но есть и такие, которые можно выполнить только на одном)

Коды и названия услуг и поддержка анализатором:

Код Название Доступные анализаторы
619 TSH Ledetect, Biorad
311 Амилаза Ledetect
548 Альбумин Biorad
258 Креатинин Biorad, Ledetect
176 Билирубин общий Biorad
501 Гепатит В Ledetect
543 Гепатит С Ledetect, Biorad
229 СПИД Ledetect
415 Кальций общий Ledetect
323 Глюкоза Ledetect
855 Ковид IgM Biorad
346 Общий белок Ledetect
836 Железо Biorad

Первая задача: разработать http-сервер для реализации АПИ анализатора

АПИ анализатора

  1. Отправка заказа:

    • метод: POST
    • путь: /api/analyzer/{{name}}, где {{name}} - название анализатора
    • тип данных: JSON
    • Формат данных:

      {
          "patient": 1, // id клиента
          "services": [ // массив услуг
              { "serviceCode": 619 }, // код услуги
              { "serviceCode": 258 },
          ] 
      }
      
    • возможные ответы:

      Код ответа Тело ответа (body) Комментарий
      200   заказ принят
      404 $"Analyzer with name '{name}' not found" Не найден анализатор с указанным именем
      400 "Analyzer is busy" Анализатор занят
      400 "Analyzer can not do this order. May be order contains services which analyzer does not support." На анализатор отправлена услуга, которую анализатор не может выполнить (услуги нет в списке поддерживаемых)
  2. Проверка статуса заказа

    • метод: GET
    • путь: /api/analyzer/{{name}}
    • возможные ответы (код и ответ в body):

      Код ответа Тело ответа (body) Комментарий
      200 {"patient": 1,
      "services": [
      { "сode": 619, "result": "" },
      { "code": 258, "result": "" }
      ]}
      заказ готов
      200 {"progress":50} Заказ обрабатывается (прогресс в процентах)
      400 "Analyzer is not working." анализатор не выполняет никакой запрос
      404 $"Analyzer with name '{name}' not found" Не найден анализатор с указанным именем

Вторая задача

Разработайте тестовые сценарии и unit-тесты для тестрования АПИ, реализованного в первой задаче