24
Внешние конфиги, сборка, автоматические тесты Спецкурс. Занятие 4

Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

  • Upload
    7bits

  • View
    131

  • Download
    3

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

Спецкурс. Занятие 4

Page 2: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 3: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 4: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 5: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 6: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 7: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 8: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 9: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 10: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

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

Page 11: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

Файлы 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: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 13: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 14: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 15: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 16: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 17: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

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

Page 18: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

Автотесты

Page 19: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

Автотесты

Page 20: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

Автотесты

Page 21: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

Автотесты

Page 22: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

Автотесты

Page 23: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

Автотесты

Page 24: Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 4

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

Автотесты