Тестирование и развёртывание приложения

Содержание

Слайд 2

Личностное развитие

Личностное развитие

Слайд 3

Как познавать новое?

Как познавать новое?

Слайд 4

Принцип

Саморазвитие = автомат + творчество

Принцип Саморазвитие = автомат + творчество

Слайд 5

Ступени саморазвития

Автомат (знания + умения)

Автомат (знания + умения)

Автомат (знания + умения)


Творчество

Ступени саморазвития Автомат (знания + умения) Автомат (знания + умения) Автомат (знания

(неопределённости)

Творчество
(неопределённости)

Слайд 6

Неопределённость — отсутствие информации о чём-либо

Неопределённость — отсутствие информации о чём-либо

Слайд 7

Информационная энтропия

мера неопределённости или непредсказуемости информации, неопределённость появления какого-либо символа первичного алфавита

Сколько информации должно прийти,

Информационная энтропия мера неопределённости или непредсказуемости информации, неопределённость появления какого-либо символа первичного
чтобы неопределённость снизилась до 0.

Слайд 8

Разрешение неопределённости

H(x) → 0

Разрешение неопределённости H(x) → 0

Слайд 9

Неясность взаимосвязи между непосредственно управляемыми и контрольными параметрами нашего процесса развития
Сравнение понятий

Неясность взаимосвязи между непосредственно управляемыми и контрольными параметрами нашего процесса развития Сравнение
между собой, чем одно отличается от другого
Что-то непонятно в условиях задачи, чаще всего термин либо набор терминов
Что-то не получается в процессе решения, возникают различные нештатные ситуации

Какие бывают неопределённости

Слайд 11

Уровни развития компетенции

Репродуктивный

Прикладной

Творческий

Уровни развития компетенции Репродуктивный Прикладной Творческий

Слайд 12

Этапы развития компетентности

Творчество

Автомат

Этапы развития компетентности Творчество Автомат

Слайд 13

Что такое творчество?

Что такое творчество?

Слайд 14

последовательность действий по разрешению неопределённостей в русле достижения поставленной цели

последовательность действий по разрешению неопределённостей в русле достижения поставленной цели

Слайд 15

Раскрепощение психики

Раскрепощение психики

Слайд 16

Есть только два способа прожить свою жизнь. Первый – так, будто никаких

Есть только два способа прожить свою жизнь. Первый – так, будто никаких
чудес не бывает. Второй – так, будто все на свете является чудом.

Слайд 22

Метод проб и ошибок

Метод проб и ошибок

Слайд 23

Метод проб и ошибок

Томас Эдисон: 10 тыс. попыток

Метод проб и ошибок Томас Эдисон: 10 тыс. попыток

Слайд 24

Алгоритм полного перебора

Алгоритм полного перебора

Слайд 25

Теорема Гриса

Если существует кратчайший путь к целевой вершине, он будет найден методом

Теорема Гриса Если существует кратчайший путь к целевой вершине, он будет найден методом полного перебора
полного перебора

Слайд 26

X

X

X

X

X

X

Поиск в глубину

Отмечаем посещённые вершины

X X X X X X Поиск в глубину Отмечаем посещённые вершины

Слайд 27

X

X

X

X

X

X

Поиск в ширину

Отмечаем посещённые вершины

X X X X X X Поиск в ширину Отмечаем посещённые вершины

Слайд 28

Усовершенствование способов разрешения неопределённостей
Снижать число неизвестных
Применять методологию познания
Задавать правильные вопросы
Сводить задачу к

Усовершенствование способов разрешения неопределённостей Снижать число неизвестных Применять методологию познания Задавать правильные
предыдущей

Слайд 29

Усовершенствование способов разрешения неопределённостей

Павел Яблочков: 4 попытки

Усовершенствование способов разрешения неопределённостей Павел Яблочков: 4 попытки

Слайд 30

Диалектика

Искусство постижения истины путём задания правильных вопросов

Диалектика Искусство постижения истины путём задания правильных вопросов

Слайд 31

Выстраиваем цепочку правильных вопросов

Выстраиваем цепочку правильных вопросов

Слайд 32

Задавание правильного вопроса = измерение, разрешающее неопределённость

Задавание правильного вопроса = измерение, разрешающее неопределённость

Слайд 33

Ищите ответ самостоятельно

Ищите ответ самостоятельно

Слайд 34

Если возник вопрос — значит, ответ существует

Если возник вопрос — значит, ответ существует

Слайд 35

Вопрос → X → Y → Z → Ответ

Вопрос → X → Y → Z → Ответ

Слайд 36

Концентрация на вопросе = Получение ответа

Концентрация на вопросе = Получение ответа

Слайд 37

Уважающая себя мысль 2 раза не приходит

Уважающая себя мысль 2 раза не приходит

Слайд 38

Список источников

Основное
Апология Сократа
Альтшуллер. Как стать гением
Альтов. И тут появился изобретатель

Список источников Основное Апология Сократа Альтшуллер. Как стать гением Альтов. И тут появился изобретатель

Слайд 39

Профессиональное развитие

Профессиональное развитие

Слайд 41

Настроение

Цель: научиться тестировать и развёртывать веб-приложение
Внимание: тесты, ошибки в приложении, среды разработки

Настроение Цель: научиться тестировать и развёртывать веб-приложение Внимание: тесты, ошибки в приложении,
(окружения)
Намерение: чтобы приложение содержало меньше ошибок и было доступно в веб
Вербальный настрой:
«я создаю веб-приложения без ошибок»

Слайд 43

Знания

Тест, степень покрытия
Окружения разработки
Модульное и функциональное тестирование с помощью Minitest
Интеграционное тестирование
Подход «разработка

Знания Тест, степень покрытия Окружения разработки Модульное и функциональное тестирование с помощью
через тестирование» (TDD)
Развёртывание приложения на heroku
Подход BDD с Cucumber

Слайд 44

Тест и степень покрытия

Тест — набор утверждений о разработанной функциональности
Степень покрытия (%)

Тест и степень покрытия Тест — набор утверждений о разработанной функциональности Степень
= (код покрытый тестами) / (весь код)

Слайд 45

Окружения разработки

Определяют фазу ЖЦ проекта, в т.ч. набор гемов, БД и т.д.
Основные:
development

Окружения разработки Определяют фазу ЖЦ проекта, в т.ч. набор гемов, БД и
— фаза разработки
test — фаза альфа-тестирования
production — фаза эксплуатации
staging — фаза бета-тестирования
Настройки — в config/environments/*.rb
Задание извне — ENV["RAILS_ENV"]

Слайд 46

Уровни тестирования

Уровни тестирования

Слайд 47

Уровни тестирования

Уровни тестирования

Слайд 48

Виды тестирования. Связь с фазами ЖЦ

Анализ требований,
планирование

Разработка функциональности
(реакция на действия пользователя)

Детальная разработка

Интеграционное
тестирование

Функциональное
тестирование

Модульное
тестирование

Тестирование
белого

Виды тестирования. Связь с фазами ЖЦ Анализ требований, планирование Разработка функциональности (реакция
ящика

Тестирование
чёрного
ящика

Слайд 49

Способы тестирования в Rails

Способы тестирования в Rails

Слайд 50

Модульные тесты в Minitest

Тестирование моделей
Валидация,
связи,
собственные методы

Модульные тесты в Minitest Тестирование моделей Валидация, связи, собственные методы

Слайд 51

Модульные тесты в Minitest

require 'test_helper'
class CompetenceTest < ActiveSupport::TestCase
test '.save' do
compy

Модульные тесты в Minitest require 'test_helper' class CompetenceTest test '.save' do compy
= Competence.new(name: 'Minitest', user: User.first)
assert compy.save
end
test 'empty name do not allowed' do
compy = Competence.new user: User.first
assert_raise(StandardError) do
compy.save
end
end

Слайд 52

Утверждения

assert(test) — test истинно
assert_equal(expected, actual) — expected == actual

Утверждения assert(test) — test истинно assert_equal(expected, actual) — expected == actual …

Слайд 53

Результат выполнения тестов

Ошибка — E
Провал — F
Успех — S

Результат выполнения тестов Ошибка — E Провал — F Успех — S

Слайд 54

Фикстуры

специальные YAML-файлы, которые описывают объект, загружаемые в БД. Каждый файл — это

Фикстуры специальные YAML-файлы, которые описывают объект, загружаемые в БД. Каждый файл — это отдельный класс (таблица).
отдельный класс (таблица).

Слайд 55

Алгоритм загрузки

Очищается БД от любых данных.
Загружаются в таблицу
Выгружаются в переменную, если это

Алгоритм загрузки Очищается БД от любых данных. Загружаются в таблицу Выгружаются в
необходимо. Для прямого обращения.

Слайд 56

Модульные тесты в Minitest

require 'test_helper'
class CompetenceTest < ActiveSupport::TestCase
test '.save' do
compy

Модульные тесты в Minitest require 'test_helper' class CompetenceTest test '.save' do compy
= Competence.new(name: 'Minitest', user: User.first)
assert compy.save
end
test 'empty name do not allowed' do
compy = Competence.new user: users(:lomonosov)
assert_raise(StandardError) do
compy.save
end
end

Слайд 57

Модульные тесты в Minitest

test 'user attribute is User' do
compy = Competence.first

Модульные тесты в Minitest test 'user attribute is User' do compy =
assert_instance_of User, compy.user
end
test 'has many portfolios' do
compy = competences(:one)
assert_equal compy.portfolios.length, 2 #
end

Слайд 58

Использование ERb в фикстурах

<% 100.times do |num| %>
compy_<%= num %>:
name: <%= "competence#{num}"

Использование ERb в фикстурах compy_ : name: user: lomonosov
%>
user: lomonosov
<% end %>

Слайд 59

Функциональные тесты: контроллеры

test "should get new" do
get new_competence_url
assert_response :success
end

Функциональные тесты: контроллеры test "should get new" do get new_competence_url assert_response :success end

Слайд 60

Функциональные тесты: маршруты

test 'route show' do
assert_generates '/competences/1', controller: 'competences', action: 'show', id:

Функциональные тесты: маршруты test 'route show' do assert_generates '/competences/1', controller: 'competences', action:
1
end
test 'route create' do
assert_recognizes({ controller: 'competences', action: 'create' }, { path: 'competences', method: :post })
end

Слайд 61

Функциональные тесты: представления

test 'index view' do
get competences_url
assert_select 'table.table' do
assert_select 'thead'

Функциональные тесты: представления test 'index view' do get competences_url assert_select 'table.table' do
do
assert_select 'tr' do
assert_select 'th', 'Название'
assert_select 'th', 'Автор'
end
end
end
end

Слайд 62

Интеграционные тесты

require 'test_helper'
class CompetenceFlowTest < ActionDispatch::IntegrationTest
test 'create competence' do
get new_competence_url
assert_response

Интеграционные тесты require 'test_helper' class CompetenceFlowTest test 'create competence' do get new_competence_url
:success
post competences_url, params: { competence: { name: 'Сохранение вещества', user: users(:lomonosov) } }
assert_response :redirect
follow_redirect!
assert_select 'div', 'Competence was successfully created'
end
end

Слайд 63

Разработка через тестирование (TDD)

Разработка через тестирование (TDD)

Слайд 64

Ты просто не умеешь
Обращаться с
зазеркальными пирогами.
Их сначала подают,
а уж потом

Ты просто не умеешь Обращаться с зазеркальными пирогами. Их сначала подают, а уж потом разрезают.
разрезают.

Слайд 65

Принцип

Конечное состояние определяет текущее и последующие

Принцип Конечное состояние определяет текущее и последующие

Слайд 66

Развёртывание

Локальное веб-приложение
(на Rails)

Веб-приложение на хостинге
(heroku.com)

production

PostgreSQL

Развёртывание Локальное веб-приложение (на Rails) Веб-приложение на хостинге (heroku.com) production PostgreSQL

Слайд 67

12 факторная модель

1 код — много развёртываний (production, staging)
явно объявлять и изолировать

12 факторная модель 1 код — много развёртываний (production, staging) явно объявлять
зависимости (Gemfile)
хранить настройки в среде выполнения, разделять код и конфигурацию
Слабая зависимость от сторонних служб (СУБД и т. д.)
Разделять сборку, релиз (результат сборки + конфигурация) и выполнение
Любые данные сохранять в БД, не хранить в приложении

Слайд 68

12 факторная модель

Экспортировать сервисы через привязку портов
Масштабировать приложение с помощью процессов (UNIX,

12 факторная модель Экспортировать сервисы через привязку портов Масштабировать приложение с помощью
не JVM)
Максимизировать надёжность, быстрый запуск и корректное завершение работы
Среды окружения разработки, промежуточного развёртывания и окончательного развёртывания д.б. максимально похожими
Журнал приложения (лог) — это поток событий
Выполнять задачи администрирования с помощью разовых процессов, например, для выполнения миграций

Слайд 69

PostgreSQL

Открытый исходник
Большой размер таблиц (32 ТБ)
Особые типы данных (serial, xml, json)
Создание хранимых

PostgreSQL Открытый исходник Большой размер таблиц (32 ТБ) Особые типы данных (serial,
процедур на других языках (Java, Ruby и т. д.)
Наследование

Слайд 71

Умения

Создавать модульные тесты на Minitest
Создавать фикстуры
Создавать функциональные тесты
Создавать интеграционные тесты
Создавать ветки в

Умения Создавать модульные тесты на Minitest Создавать фикстуры Создавать функциональные тесты Создавать
git, переключаться между ними
Устанавливать PostgreSQL
Развёртывать приложение на heroku

Слайд 73

Неопределённости

Зачем нужны фикстуры?
Отличия MySQL от PostgreSQL?
Почему не проходил тест создания компетенции?

Неопределённости Зачем нужны фикстуры? Отличия MySQL от PostgreSQL? Почему не проходил тест создания компетенции?

Слайд 74

Результат

Результат

Слайд 75

Результат

Изучены способы, как разрешать неопределённости и творить
Научились тестировать приложение и развёртывать его

Результат Изучены способы, как разрешать неопределённости и творить Научились тестировать приложение и развёртывать его на heroku
на heroku
Имя файла: Тестирование-и-развёртывание-приложения.pptx
Количество просмотров: 27
Количество скачиваний: 0