72
Модульное и нагрузочное тестирование Влад Алюков

Тестирование осень 2013 лекция 4

Embed Size (px)

Citation preview

Page 1: Тестирование осень 2013 лекция 4

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

Влад Алюков

Page 2: Тестирование осень 2013 лекция 4

О чём

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

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

2

Page 3: Тестирование осень 2013 лекция 4

3

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

Page 4: Тестирование осень 2013 лекция 4

Зачем?

Документация

Более лёгкое внесение изменений

Качество кода

Уменьшение количества итераций Разработка > Тестирование > Разработка

4

Page 5: Тестирование осень 2013 лекция 4

Документация

5

Page 6: Тестирование осень 2013 лекция 4

Простое внесение изменений

6

Page 7: Тестирование осень 2013 лекция 4

Сложность

7

Page 8: Тестирование осень 2013 лекция 4

Преимущества

Скорость

Надёжность

Стабильность

8

Page 9: Тестирование осень 2013 лекция 4

Скорость

9

Page 10: Тестирование осень 2013 лекция 4

Надёжность

10

Page 11: Тестирование осень 2013 лекция 4

Недостатки

Гарантируют работоспособность на уровне модуля

11

Page 12: Тестирование осень 2013 лекция 4

UNIT test

12

Page 13: Тестирование осень 2013 лекция 4

Testing Pyramid

13

Page 14: Тестирование осень 2013 лекция 4

Как?

Тестовый фрэймворк

Mock/Stub

DocTests

CodeCoverage

14

Page 15: Тестирование осень 2013 лекция 4

xUnit

15

unit test framework {lang}

Page 16: Тестирование осень 2013 лекция 4

Анатомия теста

16

Page 17: Тестирование осень 2013 лекция 4

Репорты

Html Report

xUnit Report

text report

17

Page 18: Тестирование осень 2013 лекция 4

Mock/Stub

Hardware

Внешние зависимости

Базы данных

18

Page 19: Тестирование осень 2013 лекция 4

Различия

Mock ― эмуляция объекта

Stub ― заглушка для объекта

19

Page 20: Тестирование осень 2013 лекция 4

Mock (example)

20

Page 21: Тестирование осень 2013 лекция 4

DocTest

21

Page 22: Тестирование осень 2013 лекция 4

DocTest недостатки

Развесистая документация

Нецелевое использование docstring

Неудобно работать с фикстурами

22

Page 23: Тестирование осень 2013 лекция 4

23

Анализ существующих тестов

Page 24: Тестирование осень 2013 лекция 4

Анализ покрытия

24

Page 25: Тестирование осень 2013 лекция 4

Анализ покрытия

25

Page 26: Тестирование осень 2013 лекция 4

Mutation Testing

26

Page 27: Тестирование осень 2013 лекция 4

Принцип

27

Page 28: Тестирование осень 2013 лекция 4

Недостатки

28

Page 29: Тестирование осень 2013 лекция 4

Статический анализ кода

Связанность кода

Опасные конструкции

Опечатки

Копипаст

Утечки памяти

Code Convention

29

Page 30: Тестирование осень 2013 лекция 4

30

Практики написания тестов

Page 31: Тестирование осень 2013 лекция 4

TDD

Отслеживание прогресса

Документирование

Архитектура “в нагрузку”

Очевидные ориентиры и стимулы

31

Page 32: Тестирование осень 2013 лекция 4

TDD

32

Page 33: Тестирование осень 2013 лекция 4

33

BDD

Page 34: Тестирование осень 2013 лекция 4

BDD

В первую очередь ― валидация

34

Page 35: Тестирование осень 2013 лекция 4

BDD

Когда документация важна

Регрессионное тестирование

Приёмочные тесты

35

Page 36: Тестирование осень 2013 лекция 4

Достоинства

Виден прогресс

Понижает порог вхождения

36

Page 37: Тестирование осень 2013 лекция 4

Недостатки

Много текста

Условно человекочитаемый формат

37

Page 38: Тестирование осень 2013 лекция 4

38

Антипаттерны

Page 39: Тестирование осень 2013 лекция 4

False Positive

assertTrue(True)

39

Page 40: Тестирование осень 2013 лекция 4

Зависимый

Зависит от окружения

Зависит от других тестов

40

Page 41: Тестирование осень 2013 лекция 4

Inspector

Использует знание о структуре объектов (reflection api)

41

Page 42: Тестирование осень 2013 лекция 4

GodTest

Задействует много посторонних объектов и подсистем

42

Page 43: Тестирование осень 2013 лекция 4

Счётчик

43

Page 44: Тестирование осень 2013 лекция 4

Медленные тесты

44

Page 45: Тестирование осень 2013 лекция 4

45

Вопросы?

Page 46: Тестирование осень 2013 лекция 4

46

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

Page 47: Тестирование осень 2013 лекция 4

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

47

Page 48: Тестирование осень 2013 лекция 4

SLA

48

Page 49: Тестирование осень 2013 лекция 4

Нервные пользователи

49

Page 50: Тестирование осень 2013 лекция 4

Цели

Поиск узких мест

Оценка допустмых пределов

Определение границ QoS

50

Page 51: Тестирование осень 2013 лекция 4

Стратегия

Проработка модели нагрузки

Создание профилей нагрузки

Генерация нагрузки

Мониторинг тестируемых систем

Анализ результатов

51

Page 52: Тестирование осень 2013 лекция 4

Профили нагрузки

52

Page 53: Тестирование осень 2013 лекция 4

Модель нагрузки

Список профилей нагрузки

Интенсивность выполнения операции

Зависимость интенсивности операций от времени выполнения

53

Page 54: Тестирование осень 2013 лекция 4

Профиль нагрузки

Определение сценариев нагрузки

Определение точек нагрузки

Определение количества пользователей

54

Page 55: Тестирование осень 2013 лекция 4

Точки нагрузки

Определение точек нагрузки

Технические точки нагрузки

Функциональные точки нагрузки

Определение интенсивности выполнения операций

55

Page 56: Тестирование осень 2013 лекция 4

Технические точки нагрузки

Работа с базой (модификация сущностей)

Задействуют несколько подсистем приложения

56

Page 57: Тестирование осень 2013 лекция 4

Функциональные точки нагрузки

Критический важные функции вашего приложения

Регистрация

Логин

Основные бизнес-кейсы

57

Page 58: Тестирование осень 2013 лекция 4

58

Анализ результатов

Page 59: Тестирование осень 2013 лекция 4

Метрики

Время отклика

Количество ошибок

Disk IO (tps, kb/t)

RAM (memory use)

CPU

LA

59

Page 60: Тестирование осень 2013 лекция 4

LoadAverage

Количество процессов в очереди

Временной интервал 1/5/15 минут

60

Page 61: Тестирование осень 2013 лекция 4

Время ответа

Стремится к нормальному распределению

С наименьшим среднеквадратичным отклонением

61

Page 62: Тестирование осень 2013 лекция 4

Нормальное распределение

62

Page 63: Тестирование осень 2013 лекция 4

Квадратичное отклонение

63

Page 64: Тестирование осень 2013 лекция 4

Квантиль

64

Page 65: Тестирование осень 2013 лекция 4

Типичные проблемы

Input/Output

Недостаточно производительный генератор нагрузки

65

Page 66: Тестирование осень 2013 лекция 4

66

Типичные ошибки

Page 67: Тестирование осень 2013 лекция 4

Прогрев

67

Page 68: Тестирование осень 2013 лекция 4

Среднее арифметическое

68

Page 69: Тестирование осень 2013 лекция 4

Только протоколы

69

Page 70: Тестирование осень 2013 лекция 4

Достойные инструменты

multi-mechanize

locustio

jmeter

grinder

tsung

70

Page 71: Тестирование осень 2013 лекция 4

71

Вопросы?

Page 72: Тестирование осень 2013 лекция 4

Спасибо за внимание

Влад Алюков [email protected]