Курсы: Технопарк

Преподаватель: Акбашев Александр

Четвертая лекция о тестировании

1. Контроль качества разрабатываемого ПО

Обеспечение качества

  • Критерии оценки
  • Оценка соотвествия критериям
  • Формальные проверки (умолчал)

Автоматизация обаспечения качества

  • Статический анализ кода (idea – inspection)
  • Тесты
  • Коммит-хуки
  • Непрерывная интегация

Подходы к тестированию
White & black box

Юнит-тесты

  • 100% контроль окружения
  • Пишут все программисты
  • Перед отправкой проверяются самим программистом
  • После коммита изменения проверяются системой Continuous integration
  • Метрика – покрытие кода тестами

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

  • Пишутся для ключевых элементов
  • Все по-настоящему
  • Заданы лишь начальные значения
  • “Быстрое” покрытие
  • Плохое покрытие

Нагрузочное тестирование

  • Выдерживает ли сервер заяленное количество пользователей
  • Выявление наиболее популярных и наиболее редких багов
  • Метрика – максимальное число пользователей в один момент времени (PCCU)

 

2. Юнит-тесты. Мотивация (10:25)

“Лучше написать и выполнить неполные тесты, чем не выполнить полные. (Мартин Фаулер)

Проверка отдельных модулей

Безопасный рефакторинг
Совместимость модулей
Защита от повторения багов

TDD

3. Юнит-тесты. Требования и организация (19:50)

Требования:

  • Независимость от внешних факторов
    Антимигающий
  • Независимость от порядка выполнения
  • Зависимостьтот “боевого” кода
  • Минимум “перектытий”
  • Один тест – одна проверка
  • Повторяемость результатов

Первый тест

4. Юнит-тесты. Дублеры (30:10)

Что дают дублеры:

  • Повышение скорости тестов
  • Независимость от окружения
  • Полное покрытие
  • “Свой человек”

Используй интерфейсы

Какими бывают дублеры:

  • Dummy
  • Fake
  • Stubs
  • Spies
  • Mocks

5. Другие виды тестирования (53:00)

  1. Функциональное тестирование
  2. Нагрузочное

Инструменты нагрузочного тестирования:

  • jMeter
  • Yanki-tanki
  • Gatling

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

Тик сервера

System.nano.Time()

Пару слов про многопоточность

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

6. GC

Стадии:

  1. Поиск недостижимых объектов
  2. Освобождение памяти
  3. Вызов finalize

Типы ссылок:

  • Strong references
  • Weak references
  • Soft references
  • Phantom references

Юзайте Autoclosable, будьте мудрыми

Разница GC в Java7 & Java8 (интересно для общего образования)

Алгоритмы сборки муссора – историческая справка, на которую мы не можем повлиять, но чтобы для нас это не было магией можни и посмотреть.

7. Отладка по приборам и не только

Инструменты, которые хорошо бы освоить:

  1. Log4j2
  2. Remote debug
  3. JMX [Java Manager eXtensions]
  • jConsole
  • jVisualVM
  • Java Mission Control (платный)