Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Внешние конфиги, сборка,
автоматические тесты
Разработчики. Занятие 6
Персистентность (время
жизни) – длительность
существования данных
Внешние конфиги
Виды персистентности:
1. локальная – все параметры
методов, локальные переменные
блоков
2. динамическая – все, что
создано при помощи new, живет
до сборки мусора либо до delete
Внешние конфиги
Виды персистентности:
3. глобальная – все статические
поля классов и глобальные
переменные
4. дисковая – все, что сохранено в
файлы на диске – в БД или просто
в файловой системе
Внешние конфиги
Время связывания переменных:
1. при написании кода –
использование «магических
чисел»
2. при компиляции –
использование именованных
констант
Внешние конфиги
Время связывания переменных:
3. при загрузке программы –
чтение значения из внешнего
источника (конфиг-файл)
4. при создании объекта – любой
способ, но в момент создания
объекта
Внешние конфиги
Время связывания переменных:
5. по требованию – в любой
момент работы программы
Внешние конфиги
Важно:
чем раньше время связывания,
тем ниже гибкость и ниже
сложность кода.
Обеспечивайте уровень гибкости,
удовлетворяющий требованиям,
но не больше!
Внешние конфиги
Внешние конфиги в Java:
1. файлы .properties
2. файлы XML
3. бинарные файлы (не для
людей)
Внешние конфиги
Файлы .properties:
1. пары <ключ>=<значение>
2. # - однострочный комментарий
Пример:
tabSize = 4
useSpaces = true
Внешние конфиги
Файлы XML:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd”>
<log4j:configuration xmlns:log4j=http://jakarta.apache.org/log4j/>
<appender name="console" class="org.apache.log4j.ConsoleAppender”>
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout”>
<param name="ConversionPattern" value="aa %p %c: %m%n"/>
</layout>
</appender>
<!--Корневой logger-->
<root>
<priority value ="debug" />
<appender-ref ref="console" />
</root>
Внешние конфиги
Цели создания внешних конфигов:
1. увеличить гибкость
2. избежать перекомпиляции
3. настроить под систему
4. перенести настройки в другую
систему
Внешние конфиги
Сборка проекта – получение
из исходного кода и ресурсов
(конфиг-файлов, картинок,
стилей и т.д.) исполняемого
модуля
Сборка проекта
Примеры сборки:
1. создание файла .exe при
помощи утилиты make из файлов
.cpp, .h, .rc и т.д.
2. создание .class или .jar файлов
при помощи javac – только для
десктопных приложений
Сборка проекта
Сборка Java-программ:
1. Apache Ant – низкоуровневый
сборщик, все файлы внутри проекта,
может многое, стиль императивный
2. Apache Maven – использует
внешние репозитории кода, стиль
декларативный, поддерживает
версионность библиотек,
чувствителен к соглашениям
Сборка проекта
Apache Ant:
1. в корне проекта build.xml
2. может использовать .properties
файлы
3. пример
4. сайт
Сборка проекта
Apache Maven:
1. в корне проекта pom.xml
2. построен на плагинах (plug-in)
3. пример
4. сайт
Сборка проекта
Модульное тестирование –
автоматизированная проверка
функций (методов) с целью
исключения регрессии (багов в
оттестированном коде)
Автотесты
Модульный тест – любой код,
который вызывает функцию
(метод), передавая ей входные
параметры, и проверяет
постусловие и инвариант
Автотесты
Основные принципы:
1. независимость – глобальные
объекты в одном состоянии до и
после теста
2. быстрота выполнения – иначе
не будут часто запускать
Автотесты
Преимущества использования:
1. поощряются изменения и
рефакторинг
2. используются интерфейсы
3. сокращается время на ручное
тестирование регрессии
Автотесты
Инструментарий:
1. библиотека xUnit от Кента Бека
(JUnit для Java)
2. прогон тестов в IDE
3. команды в Ant и настройки в
Maven
4. Continuous integration сервера
(позже)
Автотесты
Test driven development
(разработка через
тестирование):
написание теста предшествует
реализации, реализация
постепенно совершенствуется,
чтобы проходить новые тесты
Автотесты

More Related Content

Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты

  • 1. Внешние конфиги, сборка, автоматические тесты Разработчики. Занятие 6
  • 2. Персистентность (время жизни) – длительность существования данных Внешние конфиги
  • 3. Виды персистентности: 1. локальная – все параметры методов, локальные переменные блоков 2. динамическая – все, что создано при помощи new, живет до сборки мусора либо до delete Внешние конфиги
  • 4. Виды персистентности: 3. глобальная – все статические поля классов и глобальные переменные 4. дисковая – все, что сохранено в файлы на диске – в БД или просто в файловой системе Внешние конфиги
  • 5. Время связывания переменных: 1. при написании кода – использование «магических чисел» 2. при компиляции – использование именованных констант Внешние конфиги
  • 6. Время связывания переменных: 3. при загрузке программы – чтение значения из внешнего источника (конфиг-файл) 4. при создании объекта – любой способ, но в момент создания объекта Внешние конфиги
  • 7. Время связывания переменных: 5. по требованию – в любой момент работы программы Внешние конфиги
  • 8. Важно: чем раньше время связывания, тем ниже гибкость и ниже сложность кода. Обеспечивайте уровень гибкости, удовлетворяющий требованиям, но не больше! Внешние конфиги
  • 9. Внешние конфиги в Java: 1. файлы .properties 2. файлы XML 3. бинарные файлы (не для людей) Внешние конфиги
  • 10. Файлы .properties: 1. пары <ключ>=<значение> 2. # - однострочный комментарий Пример: tabSize = 4 useSpaces = true Внешние конфиги
  • 11. Файлы XML: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd”> <log4j:configuration xmlns:log4j=http://jakarta.apache.org/log4j/> <appender name="console" class="org.apache.log4j.ConsoleAppender”> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout”> <param name="ConversionPattern" value="aa %p %c: %m%n"/> </layout> </appender> <!--Корневой logger--> <root> <priority value ="debug" /> <appender-ref ref="console" /> </root> Внешние конфиги
  • 12. Цели создания внешних конфигов: 1. увеличить гибкость 2. избежать перекомпиляции 3. настроить под систему 4. перенести настройки в другую систему Внешние конфиги
  • 13. Сборка проекта – получение из исходного кода и ресурсов (конфиг-файлов, картинок, стилей и т.д.) исполняемого модуля Сборка проекта
  • 14. Примеры сборки: 1. создание файла .exe при помощи утилиты make из файлов .cpp, .h, .rc и т.д. 2. создание .class или .jar файлов при помощи javac – только для десктопных приложений Сборка проекта
  • 15. Сборка Java-программ: 1. Apache Ant – низкоуровневый сборщик, все файлы внутри проекта, может многое, стиль императивный 2. Apache Maven – использует внешние репозитории кода, стиль декларативный, поддерживает версионность библиотек, чувствителен к соглашениям Сборка проекта
  • 16. Apache Ant: 1. в корне проекта build.xml 2. может использовать .properties файлы 3. пример 4. сайт Сборка проекта
  • 17. Apache Maven: 1. в корне проекта pom.xml 2. построен на плагинах (plug-in) 3. пример 4. сайт Сборка проекта
  • 18. Модульное тестирование – автоматизированная проверка функций (методов) с целью исключения регрессии (багов в оттестированном коде) Автотесты
  • 19. Модульный тест – любой код, который вызывает функцию (метод), передавая ей входные параметры, и проверяет постусловие и инвариант Автотесты
  • 20. Основные принципы: 1. независимость – глобальные объекты в одном состоянии до и после теста 2. быстрота выполнения – иначе не будут часто запускать Автотесты
  • 21. Преимущества использования: 1. поощряются изменения и рефакторинг 2. используются интерфейсы 3. сокращается время на ручное тестирование регрессии Автотесты
  • 22. Инструментарий: 1. библиотека xUnit от Кента Бека (JUnit для Java) 2. прогон тестов в IDE 3. команды в Ant и настройки в Maven 4. Continuous integration сервера (позже) Автотесты
  • 23. Test driven development (разработка через тестирование): написание теста предшествует реализации, реализация постепенно совершенствуется, чтобы проходить новые тесты Автотесты