81

Марина Широчкина — «Тестирование»

  • Upload
    yandex

  • View
    6.205

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Марина Широчкина — «Тестирование»
Page 2: Марина Широчкина — «Тестирование»

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

Тестирование Обзорная лекция

Page 3: Марина Широчкина — «Тестирование»

Что это такое и с чем его едят?

Введение

Page 4: Марина Широчкина — «Тестирование»

4

Тестирование – процесс сравнения ожидаемых результатов с полученными.

Page 5: Марина Широчкина — «Тестирование»

5

Тестирование – набор инженерных практик, нацеленных на раннее обнаружение дефектов.

Page 6: Марина Широчкина — «Тестирование»

6

Тестирование – способ предоставления и получения обратной связи: как технологической, так и продуктовой.

Page 7: Марина Широчкина — «Тестирование»

7

Пример продуктовой обратной связи

• «Здесь нельзя грабить корованы!» (с) пользователь

Page 8: Марина Широчкина — «Тестирование»

8

Пример продуктовой обратной связи

• «Здесь нельзя грабить корованы!» (с) пользователь

• «Оно делает не то, что надо!» (с) менеджер

Page 9: Марина Широчкина — «Тестирование»

9

Пример продуктовой обратной связи

• «Здесь нельзя грабить корованы!» (с) пользователь

• «Оно делает не то, что надо!» (с) менеджер

• «Я не могу использовать разработанный тобой API, он не возвращает все необходимые данные.»

(с) коллега-разработчик

Page 10: Марина Широчкина — «Тестирование»

10

Пример технической обратной связи

• «Поддержка продукта при такой архитектуре будет слишком сложна.»

(с) системный архитектор

Page 11: Марина Широчкина — «Тестирование»

11

Пример технической обратной связи

• «Поддержка продукта при такой архитектуре будет слишком сложна.»

(с) системный архитектор

• «Ребята, оно падает каждые полчаса, я не буду это поддерживать.»

(с) системный администратор

Page 12: Марина Широчкина — «Тестирование»

12

Пример технической обратной связи

• «Поддержка продукта при такой архитектуре будет слишком сложна.»

(с) системный архитектор

• «Ребята, оно падает каждые полчаса, я не буду это поддерживать.»

(с) системный администратор

• «Эта реализация не выдержит предполагаемой нагрузки.»

(с) кто-то битый жизнью

Page 13: Марина Широчкина — «Тестирование»

13

Раннее обнаружение проблем – залог здорового сна.

Page 14: Марина Широчкина — «Тестирование»

Народная мудрость

Баг лучше поймать сразу же после его создания.

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

Page 15: Марина Широчкина — «Тестирование»

15

Unit-тесты – тесты, проверяющие корректность работы отдельных модулей программы.

Page 16: Марина Широчкина — «Тестирование»

16

Page 17: Марина Широчкина — «Тестирование»

17

Page 18: Марина Широчкина — «Тестирование»

18

Unit – модуль/объект/функция – атомарная, независимая часть кода. Вместо внешних вызовов должны быть использованы заглушки. Для каждого модуля пишется нужное количество тестов, покрывающих логику его работы.

Входные (тестовые) данные

Выходные данные (полученный результат)

Page 19: Марина Широчкина — «Тестирование»

19

Плюсы unit-тестов

• Можно запустить сразу после внесения изменений в код – позволяют найти дефект сразу после его «создания».

Page 20: Марина Широчкина — «Тестирование»

20

Плюсы unit-тестов

• Можно запустить сразу после внесения изменений в код – позволяют найти дефект сразу после его «создания».

• Могут служить документацией к коду.

Page 21: Марина Широчкина — «Тестирование»

21

Плюсы unit-тестов

• Можно запустить сразу после внесения изменений в код – позволяют найти дефект сразу после его «создания».

• Могут служить документацией к коду.

• Упрощают процесс рефакторинга.

Page 22: Марина Широчкина — «Тестирование»

22

Минусы unit-тестов

• Их надо писать.

Page 23: Марина Широчкина — «Тестирование»

23

Минусы unit-тестов

• Их надо писать.

• Их надо уметь писать.

Page 24: Марина Широчкина — «Тестирование»

24

Минусы unit-тестов

• Их надо писать.

• Их надо уметь писать.

• Их надо поддерживать.

Page 25: Марина Широчкина — «Тестирование»

25

Даже если все компоненты по отдельности работают правильно, то это ещё ничего не значит.

Page 26: Марина Широчкина — «Тестирование»

26

Интеграционные тесты – тесты, проверяющие корректность взаимодействия отдельных модулей друг с другом.

Page 27: Марина Широчкина — «Тестирование»

27

Page 28: Марина Широчкина — «Тестирование»

28

Page 29: Марина Широчкина — «Тестирование»

29

Page 30: Марина Широчкина — «Тестирование»

30

Плюсы интеграционных тестов

• Находят баги, которые не могут быть обнаружены unit-тестами.

Page 31: Марина Широчкина — «Тестирование»

31

Плюсы интеграционных тестов

• Находят баги, которые не могут быть обнаружены unit-тестами.

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

Page 32: Марина Широчкина — «Тестирование»

32

Минусы интеграционных тестов

• Их надо писать.

Page 33: Марина Широчкина — «Тестирование»

33

Минусы интеграционных тестов

• Их надо писать.

• Их надо уметь писать.

Page 34: Марина Широчкина — «Тестирование»

34

Минусы интеграционных тестов

• Их надо писать.

• Их надо уметь писать.

• Их надо поддерживать.

Page 35: Марина Широчкина — «Тестирование»

35

Даже если все компоненты по отдельности работают правильно и корректно взаимодействуют друг с другом – это ещё ничего не значит.

Page 36: Марина Широчкина — «Тестирование»

36

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

Page 37: Марина Широчкина — «Тестирование»

37

Железка

OS

Page 38: Марина Широчкина — «Тестирование»

38

Плюсы приёмочных тестов

• Находят баги, которые не могут быть обнаружены unit- и интеграционными тестами

Page 39: Марина Широчкина — «Тестирование»

39

Плюсы приёмочных тестов

• Находят баги, которые не могут быть обнаружены unit- и интеграционными тестами

• Позволяют оценить работоспособность продукта целиком

Page 40: Марина Широчкина — «Тестирование»

40

Плюсы приёмочных тестов

• Находят баги, которые не могут быть обнаружены unit- и интеграционными тестами

• Позволяют оценить работоспособность продукта целиком

• На этом уровне с продуктом могут ознакомиться будущие пользователи

Page 41: Марина Широчкина — «Тестирование»

41

Минусы приёмочных тестов

• Самые высокоуровневые – сложнее локализовывать проблему

Page 42: Марина Широчкина — «Тестирование»

42

Минусы приёмочных тестов

• Самые высокоуровневые – сложнее локализовывать проблему

• Занимают больше времени

Page 43: Марина Широчкина — «Тестирование»

43

Минусы приёмочных тестов

• Самые высокоуровневые – сложнее локализовывать проблему

• Занимают больше времени

• Обнаруживают проблемы с некоторой задержкой

Page 44: Марина Широчкина — «Тестирование»

44

Что же выбрать?

Page 45: Марина Широчкина — «Тестирование»

Каждому виду багов – свой вид тестирования

Виды тестирования

Page 46: Марина Широчкина — «Тестирование»

46

«АААА! Ничего не работает»

Page 47: Марина Широчкина — «Тестирование»

47

Функциональное тестирование – проверка работы кода/продукта на соответствие требованиям. Проверка логики работы.

Page 48: Марина Широчкина — «Тестирование»

48

«Не работает у части пользователей»

Page 49: Марина Широчкина — «Тестирование»

49

Конфигурационное тестирование на клиенте – проверка работоспособности на различных конфигурациях. Для веб-сайтов – в разных браузерах.

Page 50: Марина Широчкина — «Тестирование»

50

«Мы это выкатили, и оно перестало работать!»

Page 51: Марина Широчкина — «Тестирование»

51

Конфигурационное тестирование сервер-сайда – проверка работоспособности в окружении, максимально идентичном продакшену (железка, OS, утилиты, библиотеки, конфиги, версии).

Page 52: Марина Широчкина — «Тестирование»

52

«Всё сломалось, когда туда пришли пользователи»

Page 53: Марина Широчкина — «Тестирование»

53

Нагрузочное тестирование – проверка работоспособности под нагрузкой (одновременная обработка большого потока запросов).

Page 54: Марина Широчкина — «Тестирование»

54

«Работает, но страшно тормозит»

Page 55: Марина Широчкина — «Тестирование»

55

Тестирование производительности – проверка скорости работы системы.

Page 56: Марина Широчкина — «Тестирование»

56

Причём:

• Необходимо измерить длительность полного цикла «запрос-ответ». Оценить общее время, обратить внимание на отдельные этапы

Page 57: Марина Широчкина — «Тестирование»

57

Причём:

• Необходимо измерить длительность полного цикла «запрос-ответ». Оценить общее время, обратить внимание на отдельные этапы

• То же самое – под нагрузкой

Page 58: Марина Широчкина — «Тестирование»

58

Причём:

• Необходимо измерить длительность полного цикла «запрос-ответ». Оценить общее время, обратить внимание на отдельные этапы

• То же самое – под нагрузкой

• В пользовательских условиях (сетевые условия)

Page 59: Марина Широчкина — «Тестирование»

59

«Всё было хорошо, пока не пришли злые китайские хакеры»

Page 60: Марина Широчкина — «Тестирование»

60

Тестирование безопасности – об этом вам прочитают отдельную лекцию

Page 61: Марина Широчкина — «Тестирование»

61

«А как этим пользоваться?»

Page 62: Марина Широчкина — «Тестирование»

62

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

Page 63: Марина Широчкина — «Тестирование»

63

Тестирование юзабилити – тестирование удобства использования. Коридорный вариант доступен всем.

Page 64: Марина Широчкина — «Тестирование»

64

«Оно работало, а потом вдруг упало»

Page 65: Марина Широчкина — «Тестирование»

65

Тестирование стабильности – тестирование стабильности работы под нагрузкой, длительное время.

Page 66: Марина Широчкина — «Тестирование»

66

Всё?

Page 67: Марина Широчкина — «Тестирование»

67

Ещё много…

• Volume тестирование • Stress/Recovery тестирование • Spike тестирование • Localization тестирование • Compatibility тестирование И т. д. И т. п.

Page 68: Марина Широчкина — «Тестирование»

68

Какие выбрать?

Page 69: Марина Широчкина — «Тестирование»

69

Исходя из специфики вашего проекта.

Page 70: Марина Широчкина — «Тестирование»

70

Руками или роботом?

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

Page 71: Марина Широчкина — «Тестирование»

71

Ручное тестирование – выполнение тестов вручную или с помощью скриптов. Ручной анализ результатов.

Page 72: Марина Широчкина — «Тестирование»

72

Плюсы и минусы

Плюсы • Более информативно – замечаются дефекты рядом

Page 73: Марина Широчкина — «Тестирование»

73

Плюсы и минусы

Плюсы • Более информативно – замечаются дефекты рядом

Минусы • Долго

Page 74: Марина Широчкина — «Тестирование»

74

Плюсы и минусы

Плюсы • Более информативно – замечаются дефекты рядом

Минусы • Долго • Дорого

Page 75: Марина Широчкина — «Тестирование»

75

Автоматическое тестирование – выполнение с помощью скриптов или инструментов. Оценка результатов проводится автоматически.

Page 76: Марина Широчкина — «Тестирование»

76

Плюсы и минусы

Плюсы • Удобно и легко

Page 77: Марина Широчкина — «Тестирование»

77

Плюсы и минусы

Плюсы • Удобно и неутомительно

Минусы • Тесты нужно писать и поддерживать

Page 78: Марина Широчкина — «Тестирование»

78

Плюсы и минусы

Плюсы • Удобно и неутомительно

Минусы • Тесты нужно писать и поддерживать • Тесты выполняются «в лоб»

Page 79: Марина Широчкина — «Тестирование»

79

Плюсы и минусы

Плюсы • Удобно и неутомительно

Минусы • Тесты нужно писать и поддерживать • Тесты выполняются «в лоб» • Сами тесты/скрипты/инструменты могут содержать баги и порождать ложные результаты

Page 80: Марина Широчкина — «Тестирование»

80

Разумная комбинация методов – залог успеха.

Page 81: Марина Широчкина — «Тестирование»

Марина Широчкина

[email protected]

Спасибо