Евгений Колесников пре 2 година
родитељ
комит
e8cf54202e
4 измењених фајлова са 77 додато и 3 уклоњено
  1. 5 3
      articles/5_3_1_10_unit_test.md
  2. 71 0
      articles/testing_lab.md
  3. BIN
      img/test_07.png
  4. 1 0
      readme.md

+ 5 - 3
articles/5_3_1_10_unit_test.md

@@ -10,11 +10,11 @@
 
 в С# тест реализуется как отдельный проект в том же "решении".
 
-К наименованию проекта добавляется суффикс **.Tests**. Т.е. если основной проект у нас называется, например, *Demo*, то тестовый проект должен называться *Demo.Tests*
+К наименованию проекта добавляется суффикс "**.Tests**". То есть, если основной проект у нас называется, например, "*Demo*", то тестовый проект должен называться "*Demo.Tests*"
 
 ### Именование классов
 
-Внутри тестового проекта тестирующие классы тоже должны заканчиваться словом **Tests** (*тестирующий* класс, это класс, который тестирует соответсвующий класс в основном приложении. В тестирующем приложении могут быть и другие вспомогательные классы, правила именования для них обычные), например, для класса *UserManager* создается тестирующий класс *UserManagerTests*.
+Внутри тестового проекта тестирующие классы тоже должны заканчиваться словом "**Tests**" (*тестирующий* класс, это класс, который тестирует соответсвующий класс в основном приложении. В тестирующем приложении могут быть и другие вспомогательные классы, правила именования для них обычные), например, для класса "*UserManager*" создается тестирующий класс "*UserManagerTests*".
 
 ### Именование методов
 
@@ -34,8 +34,10 @@
 1. **Arrange** - подготовка тестовых данных
 
     ```cs
+    // исходные данные
     int x = 10;
     int y = 20;
+    // ожидаемый результат
     int expected = 30;
     ```
 
@@ -47,7 +49,7 @@
 
 1. **Assert** - проверка результата
     ```cs
-    Assert.AreEqual(exprected, actusl);
+    Assert.AreEqual(expected, actual);
     ```
 
 Для проверки результатов используется класс **Assert**, который реализует множество методов для проверки.

+ 71 - 0
articles/testing_lab.md

@@ -0,0 +1,71 @@
+# Реализация тестов для прошлых чемпионатов
+
+## Чемпионат 2022 года
+
+### Подсистема "Расчета количества базовых станций"
+
+В отдельной библиотеке классов реализуйте алгоритм расчета количества базовых станций (далее  - **БС**).
+На сегодняшний день базовые станции по всему городу арендуются компанией **ТНС**. В связи с ростом количества абонентов руководство компании приняло решение о постепенной установке собственных базовых станций.
+В 2022 году планируется закупка необходимого оборудования для Адмиралтейского и Василеостровского района Санкт-Петербурга. 
+
+Количество базовых станций может быть рассчитано как на основании площади предполагаемой зоны обслуживания, так и на основании радиуса (в км). Также в качестве входных данных необходимо использовать площадь покрытия базовой станции и радиусы трех любых базовых станций (включая основную базовую).
+
+Расчет радиуса зоны обслуживания R₀, км производится по формуле:
+
+**`R₀ = √(s/π)`**, где **s** - площадь района обслуживания
+
+Сота - площадь, покрываемая одним приемопередатчиком (базовой станцией) сети сотовой связи.
+
+Число сот L можно определить по формуле:
+
+**`L = K * (R₀ / R)²`**,  где:
+- R - радиус покрытия базовой станции, 
+- К - коэффициент застройки. 
+
+Радиус покрытия базовой станции вы должны рассчитать на основе площади (**S**) покрытия базовой станции, выразив **R**  из формулы **`S = πR²`**.
+
+Коэффициенты застройки:
+* Плотная городская застройка **`К = 1,21`**
+* Средняя городская застройка (малые города, новые жилые комплексы) **`К = 0,9`**
+* Сельская застройка **`К = 0,47`**
+
+Количество базовых станций рассчитайте по формуле: 
+**`n = L / C`**, где 
+- **n** - количество базовых станций, 
+- **C** - количество базовых станций в одном кластере. 
+
+Обратите внимание, что при расчете количестве базовых станций по району значение **L** - среднее арифметическое по всем **БС**.
+Кластер состоит из **С** базовых станций, работающих в разных диапазонах частот. **С** - аддитивная (суммирующая) составляющая, равная:
+
+**`С = D₁⁵/² + D₂³/² + D₃¹/²`**, где D₁, D₂, D₃ - диаметры 3-х любых базовых станций с разной частотой, в порядке убывания, то есть - D₁ - наибольший диаметр, D₃ - наименьший диаметр. 
+
+Не забывайте, что **`D = 2R`**. 
+
+На рисунке пример расположения базовых станций.
+![](../img/test_07.png)
+При расчете количества базовых станций необходимо использовать показания хэндовера по указанным районам.
+Хэндовер (Handover) – процедура передачи активного соединения между сотами. Хэндовер позволяет абонентам не быть привязанным к какой-либо географической точке и дает возможность передвигаться в пределах сети оператора без разрыва соединения.
+
+Для каждого района с помощью соответствующего метода в API можно получить значение хэндовера.
+
+*Обратитесь к документации по работе с API в ресурсах. Так же в ресурсах изучите допустимые значения хэндовера.*
+
+Если средние показания хэндовера меньше допустимых значений хотя бы по одной из базовых станций, то используется формула  **`n = L / C * 1,4`**.
+
+Рассчитайте **n** общее для всех районов, и для каждого района отдельно. 
+
+### Тестирование
+
+Для выполнения процедуры тестирования созданной библиотеки вам необходимо создать отдельный проект модульных тестов.
+
+В рамках проекта разработайте тесты, максимально полно покрывающие функционал методов. Ничего страшного, если ваши методы работают не совсем идеально и тесты могут быть не пройдены в связи с этим - в данном модуле это не так важно.
+
+Обратите внимание, что имена тестов должны отражать их суть, т.е. вместо *TestMethod1()* тест следует назвать, например, *BaseStations_OverHandover()* для тестирования случая превышения показателя хэндовера.
+
+Чтобы проверить работу своей библиотеки необходимо подготовить 10 unit-тестов.


+ 1 - 0
readme.md

@@ -540,6 +540,7 @@ tablayout
 **Лабораторнo-практические работы**
 
 1. [Создание проекта по индивидуальному заданию. Разработка Unit-тестов для проекта](./articles/5_3_1_10_unit_test_lab.md)
+1. [Реализация тестов для прошлых чемпионатов](./articles/testing_lab.md)
 1. Лабораторная работа «Разработка тестового сценария проекта»
 2. Лабораторная работа «Разработка тестовых пакетов»
 3. Лабораторная работа «Использование инструментария анализа качества»