Евгений Колесников 10 mesiacov pred
rodič
commit
ec296e70ef

+ 18 - 19
articles/rest_booking.md

@@ -8,50 +8,49 @@
 
 В параметрах библиотеке передаются:
 
-* JSON-строка со временем работы ресторана по дням недели (1 - понедельник... 7- воскресенье), время работы задано строкой в формате "HH:MM-HH:MM", например:
+* JSON-строка со временем работы ресторана по дням недели, время работы задано строкой в формате "HH:MM-HH:MM", например:
 
     ```json
     {
-        "1": "11:00-23:00",
-        "2": "11:00-23:00",
-        "3": "11:00-23:00",
-        "4": "11:00-23:00",
-        "5": "11:00-05:00",
-        "6": "12:00-05:00",
-        "7": "12:00-03:00"
+        "mon": "11:00-23:00",
+        "tue": "11:00-23:00",
+        "wed": "11:00-23:00",
+        "thu": "11:00-23:00",
+        "fri": "11:00-05:00",
+        "sat": "12:00-05:00",
+        "sun": "12:00-03:00"
     }
     ```
 
 * Дата и время (в формате **DataTime**), для которого нужно рассчитать список доступного времени
 
-    ```cd
+    ```cs
     var targetTime = new DateTime(2024, 02, 28, 10, 0, 0);
     ```
 
-Библиотека должна возвращать IEnumerable список **TimeSpan** с шагом 30 минут, например:
+Библиотека должна возвращать список дат **IEnumerable<DateTime>** с шагом 30 минут, например:
 
     ```cs
-    var result = new List<TimeSpan>() {
-        new TimeSpan(11, 0, 0),
-        new TimeSpan(11, 30, 0),
-        new TimeSpan(12, 0, 0),
-        new TimeSpan(12, 30, 0),
+    return new List<DateTime>() {
+        new DateTime(targetYear, targetMonth, targetDay, 11, 0, 0),
+        new DateTime(targetYear, targetMonth, targetDay, 11, 30, 0),
+        new DateTime(targetYear, targetMonth, targetDay, 12, 0, 0),
+        new DateTime(targetYear, targetMonth, targetDay, 12, 30, 0),
         ...
     }
-    return result;
     ```
 
 Итоговая спецификация метода **CalcTimeList**
 
 ```cs
-public IEnumerable<TimeSpan> CalcTimeList(string workTime, DateTime targetTime);
+public IEnumerable<DateTime> CalcTimeList(string workTime, DateTime targetTime);
 ```
 
 При расчете нужно учитывать следующие ограничения:
 
 * при попытке заказать расчет на прошедшую дату генерировать исключение
 * при заказе расчета на "сегодня" учитывать текущее время и не включать в список прошедшее время
-* не включать в список время за 2 часа до завершения работы ресторана
+* не включать в список время за `2` часа до завершения работы ресторана
 * учитывать "ночной" режим работы. Т.е. при расчете списка на воскресение включать утренние часы, остающиеся от субботы (не конкретно эти дни, а просто проверять время работы предыдущего дня недели)
 
-## Написать модульные тесты для разработанной библиотеки
+## Написать тестовые сценарии и модульные тесты для разработанной библиотеки

+ 1 - 1
articles/testing_lab_ws21.md

@@ -1,4 +1,4 @@
-# Реализуйте интеграционное тестирование работы анализатора.
+# Реализуйте интеграционное тестирование работы анализатора (РЧ21).
 
 Прежде чем проводить исследования на биоматериалах, нужно провести верификацию на наличие необходимых функций в коде. 
 

+ 41 - 0
articles/testing_lab_ws22.md

@@ -0,0 +1,41 @@
+# Назначение инженера на выполнение заявки (РЧ22)
+
+## Разработка библиотеки классов
+
+### Описание предметной области
+
+1. Есть список заявок: _дата/время_, признак _требует выезда специалиста_, _тип заявки_ (интернет, мобильная маязь, телевидение, видеонаблюдение), _назначенный инженер_ (может быть пусто для новой заявки)
+
+1. У сотрудника с ролью _инженер_ есть набор компетенций (интернет, мобильная маязь, телевидение, видеонаблюдение)
+
+1. Есть график отпусков: _id сотрудника_, _дата с_, _дата по_
+
+### Ограничения
+
+* нельзя назначить заявку на время, если в это время (+-30 минут) инженер занят на другой заявке
+* проверять график отпусков
+* нельзя назначать инженера, если тип заявки не соответствует набору компетенций инженера
+* заявку может создавать только сотрудник с ролью _начальник отдела_
+
+### Спецификация библиотеки
+
+* название библиотеки: `somelib.dll`
+* название класса: `SomeClass`
+* спецификация метода (в формате C#, питонисты делайте по аналогии)
+
+    ```cs
+    public boolean someCheck(
+        IEnumerable<Application> appList,   // список заявок
+        IEnumerable<Vacation> vacationList, // график отпусков
+        DateTime appTime,                   // время, на которое хотят оформить заявку
+        Employer engineer,                  // на кого делается заявка 
+        Employer chief                      // кто пытается назначить
+    )
+    ```
+
+## Задание
+
+1. Разработать модели (классы) и наборы данных, необходимые для предметной области
+1. Написать библиотеку классов, реализующую метод проверки возможности назначить инженера на заявку
+1. Разработать тестовые сценарии
+1. Написать unit-тесты для разработанных тестовых сценариев

+ 12 - 4
readme.md

@@ -449,6 +449,8 @@ tablayout
 
 ## МДК 05.03. Тестирование информационных систем
 
+### Теория
+
 <!-- https://sergeygavaga.gitbooks.io/kurs-lektsii-testirovanie-programnogo-obespecheni/content/ -->
 
 1. [Тестирование и тестировщики](./articles/5_3_1_1_intro.md)<!-- тут_ещё_вспомнаем_про_библиотеку_классов -->
@@ -475,7 +477,7 @@ tablayout
 
 ---
 
-**Лабораторнo-практические работы**
+### Лабораторнo-практические работы
 
 <!-- 1. [Создание проекта по индивидуальному заданию. Разработка Unit-тестов для проекта](./articles/5_3_1_10_unit_test_lab.md) -->
 1. [Подсистема "Расчета количества базовых станций" (РЧ22)](./articles/testing_lab.md)
@@ -483,15 +485,19 @@ tablayout
 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. [Интеграционное тестирование анализатора (РЧ21)](./articles/testing_lab_ws21.md)
+1. [Назначение инженера на выполнение заявки (РЧ22)](./articles/testing_lab_ws22.md)
+
+<!-- 
+1. Лабораторная работа «Использование инструментария анализа качества»
 1. Лабораторная работа «Анализ и обеспечение обработки исключительных ситуаций»
 1. Лабораторная работа «Функциональное тестирование»
 1. Лабораторная работа «Тестирование безопасности»
 1. Лабораторная работа «Нагрузочное тестирование, стрессовое тестирование»
 1. Лабораторная работа «Тестирование интеграции»
 1. Лабораторная работа «Конфигурационное тестирование»
-1. Лабораторная работа «Тестирование установки» -->
+1. Лабораторная работа «Тестирование установки» 
+-->
 
 
 ## Практика №2, разработка web-приложений
@@ -510,6 +516,8 @@ TODO
 
 - MAUI
 - API express
+- генератор форм (и печать) 
+- рисование графиков
 
 -->