Стажировка-2014, занятие 3. Конфиги, сборка,...

25
Стажировка-2014 Внешние конфиги, сборка, автоматические тесты Занятие 3

Transcript of Стажировка-2014, занятие 3. Конфиги, сборка,...

Page 1: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Внешние конфиги, сборка, автоматические тесты

Занятие 3

Page 2: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Персистентность (время жизни) – длительность существования данных

Внешние конфиги

Page 3: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Виды персистентности:1. локальная – все параметры методов, локальные переменные блоков2. динамическая – все, что создано при помощи new, живет до сборки мусора либо до delete

Внешние конфиги

Page 4: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Виды персистентности:3. глобальная – все статические поля классов и глобальные переменные4. дисковая – все, что сохранено в файлы на диске – в БД или просто в файловой системе

Внешние конфиги

Page 5: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Время связывания переменных:1. при написании кода –использование «магических чисел»2. при компиляции –использование именованных констант

Внешние конфиги

Page 6: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Время связывания переменных:3. при загрузке программы –чтение значения из внешнего источника (config file)4. при создании объекта – любой способ, но в момент создания объекта

Внешние конфиги

Page 7: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Время связывания переменных:5. по требованию – в любой момент работы программы

Внешние конфиги

Page 8: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Важно:чем раньше время связывания, тем ниже гибкость и нижесложность кода.Обеспечивайте уровень гибкости, удовлетворяющий требованиям, но не больше!

Внешние конфиги

Page 9: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Внешние конфиги в Java:1. файлы .properties2. файлы XML3. бинарные файлы (не для людей)

Внешние конфиги

Page 10: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Файлы .properties:1. пары <ключ>=<значение>2. # - однострочный комментарий

Пример:tabSize = 4useSpaces = true

Внешние конфиги

Page 11: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Файлы 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>

Внешние конфиги

Page 12: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Цели создания внешних конфигов:1. увеличить гибкость2. избежать перекомпиляции3. настроить под систему4. перенести настройки в другую систему

Внешние конфиги

Page 13: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Сборка проекта – получение из исходного кода и ресурсов (config файлов, картинок, стилей и т.д.) исполняемого модуля

Сборка проекта

Page 14: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Примеры сборки:1. создание файла .exe при помощи утилиты make из файлов .cpp, .h, .rc и т.д.2. создание .class или .jar файлов при помощи javac – только для десктопных приложений

Сборка проекта

Page 15: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Сборка Java-программ:1. Apache Ant – низкоуровневый сборщик, все файлы внутри проекта, может многое, стиль императивный2. Apache Maven – использует внешние репозитории кода, стиль декларативный, поддерживает версионность библиотек, чувствителен к соглашениям

Сборка проекта

Page 16: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Сборка Java-программ:3. Gradle – используется код на Groovy, стиль императивный4. Ivy – дальнейшее развитие Ant

Сборка проекта

Page 17: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Apache Ant:1. в корне проекта build.xml2. может использовать .properties файлы3. пример4. сайт

Сборка проекта

Page 18: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Apache Maven:1. в корне проекта pom.xml2. построен на плагинах (plug-in)3. пример4. сайт

Сборка проекта

Page 19: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Регрессионное тестирование– любой вид тестирования, позволяющий обнаружить ошибки в уже протестированном коде

Автотесты

Page 20: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Модульное тестирование –автоматизированная проверка функций (методов) независимо от остального кода

Автотесты

Page 21: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Модульный тест – любой код, который вызывает функцию (метод), передавая ей входные параметры, и проверяет постусловие и инвариант

Автотесты

Page 22: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Основные принципы:1. независимость – глобальные объекты в одном состоянии до и после теста2. быстрота выполнения – иначе не будут часто запускать

Автотесты

Page 23: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Преимущества использования:1. поощряются изменения и рефакторинг2. используются интерфейсы3. сокращается время на ручное регрессионное тестирование

Автотесты

Page 24: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Инструментарий:1. библиотека xUnit от Кента Бека (JUnit для Java) 2. прогон тестов в IDE3. команды в Ant и настройки в Maven4. Continuous integration сервера (позже)

Автотесты

Page 25: Стажировка-2014, занятие 3. Конфиги, сборка, автоматические тесты.

Стажировка-2014

Test driven development (разработка через тестирование):написание теста предшествует реализации, реализация постепенно совершенствуется, чтобы проходить новые тесты

Автотесты