Внешние 
конфиги, 
сборка, 
автоматические 
тесты 
Спецкурс 
ОмГУ-­‐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

More Related Content

PPTX
Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты
PPTX
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
PPTX
системы сборок проектов
PDF
Testing with Selenium
PPTX
Полный цикл разработки на Python + Django
PPTX
Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.
PDF
Easy selenium test automation on python
PPTX
Django: инструкция по применению
Стажировка-2013, разработчики, занятие 6. Внешние конфиги, сборка, автотесты
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4
системы сборок проектов
Testing with Selenium
Полный цикл разработки на Python + Django
Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.
Easy selenium test automation on python
Django: инструкция по применению

What's hot (20)

PDF
Flask как хорошее решение для веб проекта
PDF
Нескучное тестирование с pytest
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
PDF
Как мы делаем модули PHP в Badoo – Антон Довгаль
PDF
Операционные системы и среды
PDF
Учим автотесты человеческому языку с помощью Allure и PyTest
PPTX
Maven 3 : уличная магия
PDF
C++ STL & Qt. Занятие 11.
PPTX
курс Java 2016. занятие 03. интерфейсы, generic, исключения
ODP
Скриптовой язык Groovy и его применение в рамках разработки ПО
PPTX
Система обработки бизнес-логики server-side приложения на Groovy
PPTX
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
PPTX
Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)
PPTX
"Опыт создания системы управления сборкой и тестированием" (полная)
PDF
Многопоточное программирование на C#, путевые заметки
PPT
Ubuntu+python+selenium=легкий старт
PDF
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
PPTX
Seminar6 configuring amp-amp_testing_yournetwork
PDF
Python Development process in Yandex
PDF
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
Flask как хорошее решение для веб проекта
Нескучное тестирование с pytest
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Как мы делаем модули PHP в Badoo – Антон Довгаль
Операционные системы и среды
Учим автотесты человеческому языку с помощью Allure и PyTest
Maven 3 : уличная магия
C++ STL & Qt. Занятие 11.
курс Java 2016. занятие 03. интерфейсы, generic, исключения
Скриптовой язык Groovy и его применение в рамках разработки ПО
Система обработки бизнес-логики server-side приложения на Groovy
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Автоматизация для ленивых тестировщиков. Selenium + Python + Behave (BDD)
"Опыт создания системы управления сборкой и тестированием" (полная)
Многопоточное программирование на C#, путевые заметки
Ubuntu+python+selenium=легкий старт
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Seminar6 configuring amp-amp_testing_yournetwork
Python Development process in Yandex
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
Ad

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

PPTX
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
PPTX
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
PPTX
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
PPTX
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
PPTX
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
PPTX
Спецкурс 2014, занятие 3. Абстракции, именование, документирование
PDF
Расширь границы возможного вместе с Gradle
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Спецкурс 2014, занятие 3. Абстракции, именование, документирование
Расширь границы возможного вместе с Gradle
Ad

More from 7bits (20)

PDF
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
PDF
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
PDF
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
PDF
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
PDF
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
PDF
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
PPTX
Курс Java-2016. Занятие 13. Spring
PDF
Курс Java-2016. Занятие 12. DBMS, JDBC
PDF
Курс Java-2016. Занятие 11. Servlets, JSP
PDF
Курс Java-2016. Занятие 10. Reflection, mock
PDF
Курс Java-2016. Занятие 09. Web
PDF
Курс Java-2016. Занятие 08. Итераторы, многопоточность
PDF
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
PPTX
Курс Java-2016. Занятие 05. Тестирование и Java
PDF
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
PDF
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
PPTX
Курс Java-2016. Занятие 01. Введение в Java как технологию
PPTX
Спецкурс-2015. Занятие 05. Системы контроля версий
PPTX
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
PPTX
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
Курс Java-2016. Занятие 01. Введение в Java как технологию
Спецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.

Спецкурс 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