|
|
@@ -0,0 +1,80 @@
|
|
|
+# Реализуйте интеграционное тестирование работы анализатора.
|
|
|
+
|
|
|
+Прежде чем проводить исследования на биоматериалах, нужно провести верификацию на наличие необходимых функций в коде.
|
|
|
+
|
|
|
+Вам предстоит задача - разработать интеграционный тест для выполнения верификации программного обеспечения анализатора.
|
|
|
+
|
|
|
+Для этого разработайте АПИ сервер анализатора, который содержит конечные точки (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**
|
|
|
+ * Формат данных:
|
|
|
+
|
|
|
+ ```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." | На анализатор отправлена услуга, которую анализатор не может выполнить (услуги нет в списке поддерживаемых)
|
|
|
+
|
|
|
+1. Проверка статуса заказа
|
|
|
+
|
|
|
+ * метод: **GET**
|
|
|
+ * путь: `/api/analyzer/{{name}}`
|
|
|
+ * возможные ответы (код и ответ в body):
|
|
|
+
|
|
|
+ Код ответа | Тело ответа (body) | Комментарий
|
|
|
+ :---------:|--------------------|------------
|
|
|
+ `200` | {"patient": 1,<br/>"services": [<br/>{ "сode": 619, "result": "" },<br/>{ "code": 258, "result": "" }<br/>]} | заказ готов
|
|
|
+ `200` | {"progress":50} | Заказ обрабатывается (прогресс в процентах)
|
|
|
+ `400` | "Analyzer is not working." | анализатор не выполняет никакой запрос
|
|
|
+ `404` | $"Analyzer with name '{name}' not found" | Не найден анализатор с указанным именем
|
|
|
+
|
|
|
+## Вторая задача
|
|
|
+
|
|
|
+Разработайте тестовые сценарии и unit-тесты для тестрования АПИ, реализованного в первой задаче
|