Внешние 
конфиги, 
сборка, 
автоматические 
тесты 
Спецкурс 
ОмГУ-­‐2014 
Занятие 
4
Внешние 
конфиги 
Персистентность 
(время 
жизни) 
Спецкурс 
ОмГУ-­‐2014 
– 
длительность 
существования 
данных
Виды 
персистентности: 
1. 
локальная 
(стек) 
– 
все 
параметры 
методов, 
локальные 
переменные 
блоков 
2. 
динамическая 
(куча) 
– 
все, 
что 
создано 
при 
помощи 
new, 
живет 
до 
сборки 
мусора 
либо 
до 
delete 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Виды 
персистентности: 
3. 
глобальная 
(сегмент 
данных) 
– 
все 
статические 
поля 
классов 
и 
глобальные 
переменные 
4. 
дисковая 
– 
все, 
что 
сохранено 
в 
файлы 
на 
диске 
– 
в 
БД 
или 
просто 
в 
файловой 
системе 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Время 
связывания 
переменных: 
1. 
при 
написании 
кода 
– 
использование 
«магических 
чисел» 
2. 
при 
компиляции 
– 
использование 
именованных 
констант 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Время 
связывания 
переменных: 
3. 
при 
загрузке 
программы 
– 
чтение 
значения 
из 
внешнего 
источника 
(config 
file) 
4. 
при 
создании 
объекта 
– 
любой 
способ, 
но 
в 
момент 
создания 
объекта 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Время 
связывания 
переменных: 
5. 
по 
требованию 
– 
в 
любой 
момент 
работы 
программы 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Важно: 
чем 
раньше 
время 
связывания, 
тем 
ниже 
гибкость 
и 
ниже 
сложность 
кода. 
Обеспечивайте 
уровень 
гибкости, 
удовлетворяющий 
требованиям, 
но 
не 
больше! 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги 
Внешние 
конфиги 
в 
Java: 
1. 
файлы 
.properdes 
2. 
файлы 
XML 
3. 
бинарные 
файлы 
(не 
для 
людей)
Файлы 
.properHes: 
1. 
пары 
<ключ>=<значение> 
2. 
# 
-­‐ 
однострочный 
комментарий 
Пример: 
tabSize 
= 
4 
useSpaces 
= 
true 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Файлы 
XML: 
<?xml 
version="1.0" 
encoding="UTF-­‐8" 
?> 
<!DOCTYPE 
log4j:configuradon 
SYSTEM 
"log4j.dtd”> 
<log4j:configuradon 
xmlns:log4j=h†p://jakarta.apache.org/log4j/> 
<appender 
name="console" 
class="org.apache.log4j.ConsoleAppender”> 
<param 
name="Target" 
value="System.out"/> 
<layout 
class="org.apache.log4j.Pa†ernLayout”> 
<param 
name="ConversionPa†ern" 
value="aa 
%p 
%c: 
%m%n"/> 
</layout> 
</appender> 
<!-­‐-­‐Корневой 
logger-­‐-­‐> 
<root> 
<priority 
value 
="debug" 
/> 
<appender-­‐ref 
ref="console" 
/> 
</root> 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Цели 
создания 
внешних 
конфигов: 
1. 
увеличить 
гибкость 
2. 
избежать 
перекомпиляции 
3. 
настроить 
под 
систему 
4. 
перенести 
настройки 
в 
другую 
систему 
Спецкурс 
ОмГУ-­‐2014 
Внешние 
конфиги
Спецкурс 
ОмГУ-­‐2014 
Сборка 
проекта 
Сборка 
проекта 
– 
получение 
из 
исходного 
кода 
и 
ресурсов 
(config 
файлов, 
картинок, 
стилей 
и 
т.д.) 
исполняемого 
модуля
Примеры 
сборки: 
1. 
создание 
файла 
.exe 
при 
помощи 
утилиты 
make 
из 
файлов 
.cpp, 
.h, 
.rc 
и 
т.д. 
2. 
создание 
.class 
или 
.jar 
файлов 
при 
помощи 
javac 
– 
только 
для 
десктопных 
приложений 
Спецкурс 
ОмГУ-­‐2014 
Сборка 
проекта
Сборка 
Java-­‐программ: 
1. 
Apache 
Ant 
– 
низкоуровневый 
сборщик, 
все 
файлы 
внутри 
проекта, 
может 
многое, 
стиль 
императивный 
2. 
Apache 
Maven 
– 
использует 
внешние 
репозитории 
кода, 
стиль 
декларативный, 
поддерживает 
версионность 
библиотек, 
чувствителен 
к 
соглашениям 
Спецкурс 
ОмГУ-­‐2014 
Сборка 
проекта
Сборка 
Java-­‐программ: 
3. 
Gradle 
– 
используется 
код 
на 
Groovy, 
стиль 
императивный 
4. 
Ivy 
– 
дальнейшее 
развитие 
Ant 
Спецкурс 
ОмГУ-­‐2014 
Сборка 
проекта
Apache 
Ant: 
1. 
в 
корне 
проекта 
build.xml 
2. 
может 
использовать 
.properdes 
файлы 
3. 
пример 
4. 
сайт 
Спецкурс 
ОмГУ-­‐2014 
Сборка 
проекта
Apache 
Maven: 
1. 
в 
корне 
проекта 
pom.xml 
2. 
построен 
на 
плагинах 
(plug-­‐in) 
3. 
пример 
4. 
сайт 
Спецкурс 
ОмГУ-­‐2014 
Сборка 
проекта
Регрессионное 
тестирование 
– 
любой 
вид 
тестирования, 
позволяющий 
обнаружить 
ошибки 
в 
уже 
протестированном 
коде 
Спецкурс 
ОмГУ-­‐2014 
Автотесты
Модульное 
тестирование 
– 
автоматизированная 
проверка 
функций 
(методов) 
независимо 
от 
остального 
кода 
Спецкурс 
ОмГУ-­‐2014 
Автотесты
Спецкурс 
ОмГУ-­‐2014 
Автотесты 
Модульный 
тест 
– 
любой 
код, 
который 
вызывает 
функцию 
(метод), 
передавая 
ей 
входные 
параметры, 
и 
проверяет 
постусловие 
и 
инвариант
Основные 
принципы: 
1. 
независимость 
– 
глобальные 
объекты 
в 
одном 
состоянии 
до 
и 
после 
теста 
2. 
быстрота 
выполнения 
– 
иначе 
не 
будут 
часто 
запускать 
Спецкурс 
ОмГУ-­‐2014 
Автотесты
Преимущества 
использования: 
1. 
поощряются 
изменения 
и 
рефакторинг 
2. 
используются 
интерфейсы 
3. 
сокращается 
время 
на 
ручное 
регрессионное 
тестирование 
Спецкурс 
ОмГУ-­‐2014 
Автотесты
Инструментарий: 
1. 
библиотека 
xUnit 
от 
Кента 
Бека 
(JUnit 
для 
Java) 
2. 
прогон 
тестов 
в 
IDE 
3. 
команды 
в 
Ant 
и 
настройки 
в 
Maven 
4. 
Condnuous 
integradon 
сервера 
(позже) 
Спецкурс 
ОмГУ-­‐2014 
Автотесты
Test 
driven 
development 
(разработка 
через 
тестирование): 
написание 
теста 
предшествует 
реализации, 
реализация 
постепенно 
совершенствуется, 
чтобы 
проходить 
новые 
тесты 
Спецкурс 
ОмГУ-­‐2014 
Автотесты
Спецкурс 
ОмГУ-­‐2014 
Вопросы? 
Email: 
at@7bits.it 
Skype: 
anna_tarasenko 
Web: 
7bits.ru

Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты

  • 1.
    Внешние конфиги, сборка, автоматические тесты Спецкурс ОмГУ-­‐2014 Занятие 4
  • 2.
    Внешние конфиги Персистентность (время жизни) Спецкурс ОмГУ-­‐2014 – длительность существования данных
  • 3.
    Виды персистентности: 1. локальная (стек) – все параметры методов, локальные переменные блоков 2. динамическая (куча) – все, что создано при помощи new, живет до сборки мусора либо до delete Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 4.
    Виды персистентности: 3. глобальная (сегмент данных) – все статические поля классов и глобальные переменные 4. дисковая – все, что сохранено в файлы на диске – в БД или просто в файловой системе Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 5.
    Время связывания переменных: 1. при написании кода – использование «магических чисел» 2. при компиляции – использование именованных констант Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 6.
    Время связывания переменных: 3. при загрузке программы – чтение значения из внешнего источника (config file) 4. при создании объекта – любой способ, но в момент создания объекта Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 7.
    Время связывания переменных: 5. по требованию – в любой момент работы программы Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 8.
    Важно: чем раньше время связывания, тем ниже гибкость и ниже сложность кода. Обеспечивайте уровень гибкости, удовлетворяющий требованиям, но не больше! Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 9.
    Спецкурс ОмГУ-­‐2014 Внешние конфиги Внешние конфиги в Java: 1. файлы .properdes 2. файлы XML 3. бинарные файлы (не для людей)
  • 10.
    Файлы .properHes: 1. пары <ключ>=<значение> 2. # -­‐ однострочный комментарий Пример: tabSize = 4 useSpaces = true Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 11.
    Файлы XML: <?xml version="1.0" encoding="UTF-­‐8" ?> <!DOCTYPE log4j:configuradon SYSTEM "log4j.dtd”> <log4j:configuradon xmlns:log4j=h†p://jakarta.apache.org/log4j/> <appender name="console" class="org.apache.log4j.ConsoleAppender”> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.Pa†ernLayout”> <param name="ConversionPa†ern" value="aa %p %c: %m%n"/> </layout> </appender> <!-­‐-­‐Корневой logger-­‐-­‐> <root> <priority value ="debug" /> <appender-­‐ref ref="console" /> </root> Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 12.
    Цели создания внешних конфигов: 1. увеличить гибкость 2. избежать перекомпиляции 3. настроить под систему 4. перенести настройки в другую систему Спецкурс ОмГУ-­‐2014 Внешние конфиги
  • 13.
    Спецкурс ОмГУ-­‐2014 Сборка проекта Сборка проекта – получение из исходного кода и ресурсов (config файлов, картинок, стилей и т.д.) исполняемого модуля
  • 14.
    Примеры сборки: 1. создание файла .exe при помощи утилиты make из файлов .cpp, .h, .rc и т.д. 2. создание .class или .jar файлов при помощи javac – только для десктопных приложений Спецкурс ОмГУ-­‐2014 Сборка проекта
  • 15.
    Сборка Java-­‐программ: 1. Apache Ant – низкоуровневый сборщик, все файлы внутри проекта, может многое, стиль императивный 2. Apache Maven – использует внешние репозитории кода, стиль декларативный, поддерживает версионность библиотек, чувствителен к соглашениям Спецкурс ОмГУ-­‐2014 Сборка проекта
  • 16.
    Сборка Java-­‐программ: 3. Gradle – используется код на Groovy, стиль императивный 4. Ivy – дальнейшее развитие Ant Спецкурс ОмГУ-­‐2014 Сборка проекта
  • 17.
    Apache Ant: 1. в корне проекта build.xml 2. может использовать .properdes файлы 3. пример 4. сайт Спецкурс ОмГУ-­‐2014 Сборка проекта
  • 18.
    Apache Maven: 1. в корне проекта pom.xml 2. построен на плагинах (plug-­‐in) 3. пример 4. сайт Спецкурс ОмГУ-­‐2014 Сборка проекта
  • 19.
    Регрессионное тестирование – любой вид тестирования, позволяющий обнаружить ошибки в уже протестированном коде Спецкурс ОмГУ-­‐2014 Автотесты
  • 20.
    Модульное тестирование – автоматизированная проверка функций (методов) независимо от остального кода Спецкурс ОмГУ-­‐2014 Автотесты
  • 21.
    Спецкурс ОмГУ-­‐2014 Автотесты Модульный тест – любой код, который вызывает функцию (метод), передавая ей входные параметры, и проверяет постусловие и инвариант
  • 22.
    Основные принципы: 1. независимость – глобальные объекты в одном состоянии до и после теста 2. быстрота выполнения – иначе не будут часто запускать Спецкурс ОмГУ-­‐2014 Автотесты
  • 23.
    Преимущества использования: 1. поощряются изменения и рефакторинг 2. используются интерфейсы 3. сокращается время на ручное регрессионное тестирование Спецкурс ОмГУ-­‐2014 Автотесты
  • 24.
    Инструментарий: 1. библиотека xUnit от Кента Бека (JUnit для Java) 2. прогон тестов в IDE 3. команды в Ant и настройки в Maven 4. Condnuous integradon сервера (позже) Спецкурс ОмГУ-­‐2014 Автотесты
  • 25.
    Test driven development (разработка через тестирование): написание теста предшествует реализации, реализация постепенно совершенствуется, чтобы проходить новые тесты Спецкурс ОмГУ-­‐2014 Автотесты
  • 26.
    Спецкурс ОмГУ-­‐2014 Вопросы? Email: at@7bits.it Skype: anna_tarasenko Web: 7bits.ru