26
Спецкурс ОмГУ2014 Внешние конфиги, сборка, автоматические тесты Занятие 4

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

  • Upload
    7bits

  • View
    70

  • Download
    1

Embed Size (px)

DESCRIPTION

Занятие на спецкурсе в ОмГУ, 2014 год.

Citation preview

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

Спецкурс  ОмГУ-­‐2014  

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

Занятие  4    

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

Файлы  .properHes:  1.  пары  <ключ>=<значение>  2.  #  -­‐  однострочный  комментарий    Пример:  tabSize  =  4  useSpaces  =  true  

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

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

Спецкурс  ОмГУ-­‐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>    

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

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

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

Спецкурс  ОмГУ-­‐2014  

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

Автотесты    

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

Спецкурс  ОмГУ-­‐2014  

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

Автотесты    

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

Спецкурс  ОмГУ-­‐2014  

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

Автотесты    

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

Спецкурс  ОмГУ-­‐2014  

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

Автотесты    

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

Спецкурс  ОмГУ-­‐2014  

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

Автотесты    

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

Спецкурс  ОмГУ-­‐2014  

Инструментарий:  1.  библиотека  xUnit  от  Кента  Бека  (JUnit  для  Java)    2.  прогон  тестов  в  IDE  3.  команды  в  Ant  и  настройки  в  Maven  4.  Condnuous  integradon  сервера  (позже)  

Автотесты    

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

Спецкурс  ОмГУ-­‐2014  

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

Автотесты    

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

Спецкурс  ОмГУ-­‐2014  

Email:  [email protected]  Skype:  anna_tarasenko  Web:  7bits.ru  

Вопросы?