81

Марина Широчкина: Тестирование

  • Upload
    yandex

  • View
    1.732

  • Download
    0

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

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

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

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

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

• все минусы unit-тестов

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

33

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

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

34

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

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

35

Железка

OS

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

36

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

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

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

37

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

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

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

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

38

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

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

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

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

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

39

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

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

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

40

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

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

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

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

41

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

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

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

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

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

42

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

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

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

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

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

44

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

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

45

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

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

46

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

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

47

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

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

48

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

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

49

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

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

50

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

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

51

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

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

Ещё много…

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

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

66

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

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

67

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

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

Инструменты      

Функциональное, приемочное тестирование: Selenium (web app): http://seleniumhq.org/ TestComplete (desktop app): http://smartbear.com/products/qa-tools/automated-testing-tools Функциональное, unit тестирование: подбирается под используемый язык, см http://clck.ru/4bsKa Нагрузочное тестирование/тестирование производительности: Яндекс.Танк: https://github.com/yandex-load/yandex-tank Jmeter: http://jmeter.apache.org/

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

80

Инструменты      

Как сымитировать плохую сеть: Fiddler: http://www.fiddler2.com/fiddler2/ Charles: http://www.charlesproxy.com/ Утилита tc: man tc Большой зоопарк разнообразных браузеров: http://browsershots.org/

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

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

[email protected]

Спасибо