SlideShare a Scribd company logo
1 of 26
Download to read offline
Внешние 
конфиги, 
сборка, 
автоматические 
тесты 
Спецкурс 
ОмГУ-­‐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

What's hot

Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
Regn
 
Seminar6 configuring amp-amp_testing_yournetwork
Seminar6 configuring amp-amp_testing_yournetworkSeminar6 configuring amp-amp_testing_yournetwork
Seminar6 configuring amp-amp_testing_yournetwork
Grigoriy Khazankin
 

What's hot (20)

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

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

Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
guestb0af15
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
Computer Science Club
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на Selenium
SQALab
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
Paul Stashevsky
 

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

Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотестыСтажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
 
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
 
Слои тестового фрамеворка. Что? Где? Когда?
Слои тестового фрамеворка. Что? Где? Когда?Слои тестового фрамеворка. Что? Где? Когда?
Слои тестового фрамеворка. Что? Где? Когда?
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Автоматизация в тестировании инфраструктуры
Автоматизация в тестировании инфраструктурыАвтоматизация в тестировании инфраструктуры
Автоматизация в тестировании инфраструктуры
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестирования
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Autotest
AutotestAutotest
Autotest
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
Linux basics. Занятие 3.
Linux basics. Занятие 3. Linux basics. Занятие 3.
Linux basics. Занятие 3.
 
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко АлексейSolit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
 
Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на Selenium
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
 
03 load testing
03   load testing03   load testing
03 load testing
 

More from 7bits

Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап? Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
7bits
 

More from 7bits (20)

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