Евгений Колесников преди 10 месеца
родител
ревизия
d8fddfe109
променени са 3 файла, в които са добавени 140 реда и са изтрити 4 реда
  1. 46 0
      articles/testing_lab_de22.md
  2. 80 0
      articles/testing_lab_ws21.md
  3. 14 4
      readme.md

+ 46 - 0
articles/testing_lab_de22.md

@@ -0,0 +1,46 @@
+# Библиотека формирующая список свободных временных интервалов в графике сотрудника для формирования оптимального графика работы сотрудников (ДЭ22)
+
+## Разработка библиотеки
+
+Разработайте библиотеку, которая позволит вернуть список
+свободных временных интервалов (заданного размера) в графике сотрудника для формирования оптимального графика работы сотрудников.
+
+Необходимо обязательно следовать правилам именования библиотек, классов и методов в них. В случае ошибок в рамках именования ваша работа не может быть проверена
+и ваш результат не будет зачтен. Классы и методы должны содержать модификатор **public** (если это реализуемо в рамках платформы), чтобы внешние приложения могли получить к ним доступ.
+
+Вход:
+
+* список занятых промежутков времени (в двух массивах: _startTimes_ - начало, _durations_ - длительность),
+* минимальное необходимое время для работы менеджера (consultationTime),
+* рабочий день сотрудника (начало - _beginWorkingTime_ и завершение - _endWorkingTime_)
+
+Выход:
+
+* список подходящих свободных временных промежутков (в массив строк формата HH:mm-HH:mm)
+
+Требования к именованиям и форматам:
+
+  | C# | Java | Python
+-------|----|------|--------
+Библиотека классов | SF2022User{NN}Lib.dll | SF2022User{NN}Lib.jar | SF2022User{NN}Lib
+Название класса | Calculations | Calculations | Calculations
+Название метода | AvailablePeriods() | availablePeriods() | available_periods()
+Входящие обязательные параметры | TimeSpan[] startTimes,<br/>int[] durations,<br/>TimeSpan beginWorkingTime,<br/>TimeSpan endWorkingTime,<br/>int consultationTime |LocalTime[] startTimes,<br/>int[] durations,<br/>LocalTime beginWorkingTime,<br/>LocalTime endWorkingTime,<br/>int consultationTime | time[] start_times,<br/>int[] durations,<br/>time begin_working_time,<br/>time end_working_time,<br/>int consultation_time
+Возвращаемые параметры | string[] | string[] | string[]
+
+Пример:
+
+Вход | Выход
+-----|------
+startTimes [10:00, 11:00, 15:00, 15:30, 16:50],<br/>durations [60, 30, 10, 10, 40],<br/>beginWorkingTime 08:00,<br/>endWorkingTime 18:00,<br/>consultationTime 30 |["08:00-08:30",<br/>"08:30-09:00",<br/>"09:00-09:30",<br/>"09:30-10:00",<br/>"11:30-12:00",<br/>"12:00-12:30",<br/>"12:30-13:00",<br/>"13:00-13:30",<br/>"13:30-14:00",<br/>"14:00-14:30",<br/>"14:30-15:00",<br/>"15:40-16:10",<br/>"16:10-16:40",<br/>"17:30-18:00"]
+
+## Тестирование программных решений
+
+### Тестовые сценарии
+
+Опишите 10 тестовых сценариев для библиотеки, функционал которой описан ранее. Важно, чтобы тестовые сценарии предусматривали различные ситуации. Например, недостаточное время в промежутках между ранее созданными
+консультациями, либо в начале рабочего дня, либо в конце рабочего дня; различная длительность консультация и т.д.
+
+### Модульные тесты
+
+Реализуйте unit-тесты по описанным тестовым сценариям

+ 80 - 0
articles/testing_lab_ws21.md

@@ -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`      | &nbsp;             | заказ принят
+        `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-тесты для тестрования АПИ, реализованного в первой задаче

+ 14 - 4
readme.md

@@ -478,10 +478,12 @@ tablayout
 **Лабораторнo-практические работы**
 
 <!-- 1. [Создание проекта по индивидуальному заданию. Разработка Unit-тестов для проекта](./articles/5_3_1_10_unit_test_lab.md) -->
-1. [Реализация тестов для прошлых чемпионатов (WS22)](./articles/testing_lab.md)
-1. [Реализация тестов для прошлых чемпионатов (WS23)](./articles/testing_lab_ws23.md)
-1. [Реализация тестов для прошлых чемпионатов (DE21)](./articles/testing_lab_de21.md)
-1. [Лабораторная работа «Разработка тестовых пакетов»](./articles/rest_booking.md)
+1. [Подсистема "Расчета количества базовых станций" (РЧ22)](./articles/testing_lab.md)
+1. [Библиотека по расчету заработной платы (РЧ23)](./articles/testing_lab_ws23.md)
+1. [Рассчет количества необходимого сырья (ДЭ21)](./articles/testing_lab_de21.md)
+1. [Библиотека расчета списка доступного времени бронирования столика в ресторане](./articles/rest_booking.md)
+1. [Библиотека формирующая список свободных временных интервалов в графике сотрудника для формирования оптимального графика работы сотрудников (ДЭ22)](./articles/testing_lab_de22.md)
+1. [Интеграционное тестирование анализатора](./articles/testing_lab_ws21.md)
 <!-- 1. Лабораторная работа «Использование инструментария анализа качества»
 1. Лабораторная работа «Анализ и обеспечение обработки исключительных ситуаций»
 1. Лабораторная работа «Функциональное тестирование»
@@ -503,6 +505,14 @@ tablayout
 
 1. [Настройка подключения к базе данных (DBeaver)](./articles/dbeaver_connect_mysql.md)
 
+<!--
+TODO
+
+- MAUI
+- API express
+
+-->
+
 <!-- ## [Курсовой проект (ПМ 06)](./articles/kp2.md) -->
 
 <!--