Первый семестр
- Описание требований к системе: варианты использования, пользовательские истории.
- Выявление классов. Построение и описание диаграммы классов анализа.
- Построение и описание диаграмм деятельности.
- Построение и описание диаграмм состояний.
- Построение и описание диаграммы проектных классов.
- Построение и описание диаграмм последовательности для операций проектных классов.
- Построение и описание диаграммы пакетов.
- Построение и описание диаграммы компонентов.
- Построение и описание диаграммы развёртывания.
Второй семестр
1 Модульное и интеграционное тестирование
Срок сдачи: второе занятие
Модульный тест – фрагмент кода (метод), написанный разработчиком, и проверяющий правильность отдельного модуля (метода) исходного кода программы. Цель модульного тестирования – изолировать отдельные части программы и показать, что по отдельности эти части работоспособны. Модульное тестирование позже позволяет программистам проводить рефакторинг, будучи уверенными, что модуль по-прежнему работает корректно. Для отделения модулей друг от друга используют так называемые mock-объекты – фиктивные объекты, предназначенные исключительно для тестирования.
Введение зависимости от внешних модулей или данных превращает модульные тесты в интеграционные.
Возможность создания модульных тестов встроена в популярные среды разработки, такие как Visual Studio и Eclipse.
Задание: создать не менее пяти (на каждого члена команды) осмысленных модульных или интеграционных тестов и добиться их успешного выполнения.
Тесты должны включать
- хотя бы один тест на исключение (проверка того, что метод действительно возбуждает исключение определённого типа при возникновении исключительной ситуации);
- хотя бы один тест, проверяющий возвращаемое значение, являющееся коллекцией;
- хотя бы один тест для метода, не возвращающего значение (void);
- хотя бы один тест, использующий mock-объект.
Убедитесь, что включили модульные и интеграционные тесты в репозитарий системы управления версиями, так как они потребуются в дальнейшем при настройке системы непрерывной интеграции.
2 Сборка проекта в командной строке
Срок сдачи: третье занятие
Определение расположения утилиты MSBuild.exe
Чтобы определить местоположение MSBuild.exe в системе, запустите Visual Studio Command Prompt и выполните команду
where msbuild
Эта команда выведет список всех расположений утилиты MSBuild.exe, например:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe
Сборка проекта
Находясь в папке проекта, выполните команду
c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe
(для .NET Framework v4.0.30319).
Задание: cобрать проект (получить исполняемый файл или установочный пакет) из командной строки.
Построение и выполнение тестов
Для выполнения модульных тестов используется утилита MSTest.exe. Определить её расположение можно используя команду where
:
> where mstest
c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe
Для выполения тестов необходимо предварительно выполнить сборку проекта, содержащего тесты (допустим, он называется "TestProject"):
msbuild "TestProject\TestProject.csproj"
Команда для выполнения тестов:
mstest "/testcontainer:TestProject\bin\Debug\TestProject.dll"
Задание: запустить тесты из командной строки.
3 Сборка и тестирование проекта с помощью системы автоматического построения
Срок сдачи: четвёртое занятие
Для того чтобы выполнять построение проекта и его тестирование с помощью одной команды в командной строке, необходим конфигурационный файл. Пример такого файла для MSBuild в Visual Studio 2010:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Test">
<ItemGroup>
<BuildArtifactsDir Include="BuildArtifacts\" />
<SolutionFile Include="Project.sln" />
</ItemGroup>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<BuildPlatform Condition=" '$(BuildPlatform)' == '' ">Any CPU</BuildPlatform>
</PropertyGroup>
<Target Name="Init" DependsOnTargets="Clean">
<MakeDir Directories="@(BuildArtifactsDir)" />
</Target>
<Target Name="Clean">
<RemoveDir Directories="@(BuildArtifactsDir)" />
</Target>
<Target Name="Compile" DependsOnTargets="Init">
<MSBuild Projects="@(SolutionFile)" Targets="Rebuild"
Properties="OutDir=%(BuildArtifactsDir.FullPath);Configuration=$(Configuration);Platform=$(BuildPlatform)" />
</Target>
<Target Name="Test" DependsOnTargets="Compile">
<PropertyGroup>
<TestSuccess>1</TestSuccess>
</PropertyGroup>
<Exec Command='"$(VS100COMNTOOLS)..\IDE\mstest.exe" /testcontainer:@(BuildArtifactsDir)\TestProject.dll' >
<Output TaskParameter="ExitCode" PropertyName="TestSuccess"/>
</Exec>
</Target>
</Project>
Источник
Запуск построения:
msbuild Project.msbuild
Результат:
...
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:03.36
Задание: разработать конфигурационный файл MSBuild для сборки и тестирования своего проекта и проверить его работу в командной строке.
Убедитесь, что включили конфигурационный файл в репозитарий системы управления версиями, так как он потребуется при настройке системы непрерывной интеграции.
4 Настройка системы непрерывной интеграции
Срок сдачи: пятое занятие
- Войдите в систему непрерывной интеграции (адрес уточните у преподавателя) и создайте учётную запись.
- Создайте новую задачу. В поле Job name введите свои фамилию и имя.
- В настройках задачи в группе Source Code Management выберите свою систему управления версиями и укажите ссылку на свой репозитарий.
- В группе Build Triggers установите опцию Poll SCM.
- В группе Build добавьте шаг Build a Visual Studio project or solution using MSBuild и введите имя конфигурационного файла в поле MSBuild Build File.
- Сохраните задачу.
- Запустите построение (Build Now).
- Откройте страницу Console Output и удостоверьтесь, что построение было выполнено успешно, и были запущены все требуемые шаги, включая тестирование проекта.
- Убедитесь, что при изменении исходного кода в системе управления версиями, Jenkins автоматически выполняет сборку и тестирование проекта.