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

Preview:

Citation preview

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

Влад Алюков

О чём

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

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

2

3

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

Зачем?

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

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

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

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

4

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

5

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

6

Сложность

7

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

Скорость

Надёжность

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

8

Скорость

9

Надёжность

10

Недостатки

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

11

UNIT test

12

Testing Pyramid

13

Как?

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

Mock/Stub

DocTests

CodeCoverage

14

xUnit

15

unit test framework {lang}

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

16

Репорты

Html Report

xUnit Report

text report

17

Mock/Stub

Hardware

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

Базы данных

18

Различия

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

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

19

Mock (example)

20

DocTest

21

DocTest недостатки

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

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

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

22

23

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

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

24

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

25

Mutation Testing

26

Принцип

27

Недостатки

28

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

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

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

Опечатки

Копипаст

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

Code Convention

29

30

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

TDD

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

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

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

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

31

TDD

32

33

BDD

BDD

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

34

BDD

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

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

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

35

Достоинства

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

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

36

Недостатки

Много текста

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

37

38

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

False Positive

assertTrue(True)

39

Зависимый

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

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

40

Inspector

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

41

GodTest

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

42

Счётчик

43

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

44

45

Вопросы?

46

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

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

47

SLA

48

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

49

Цели

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

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

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

50

Стратегия

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

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

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

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

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

51

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

52

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

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

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

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

53

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

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

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

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

54

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

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

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

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

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

55

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

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

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

56

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

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

Регистрация

Логин

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

57

58

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

Метрики

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

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

Disk IO (tps, kb/t)

RAM (memory use)

CPU

LA

59

LoadAverage

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

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

60

Время ответа

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

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

61

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

62

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

63

Квантиль

64

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

Input/Output

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

65

66

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

Прогрев

67

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

68

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

69

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

multi-mechanize

locustio

jmeter

grinder

tsung

70

71

Вопросы?

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

Влад Алюков v.alyukov@corp.mail.ru