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

Preview:

Citation preview

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

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

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

Введение

4

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

5

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

6

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

7

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

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

8

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

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

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

9

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

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

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

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

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

10

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

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

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

11

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

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

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

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

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

12

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

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

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

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

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

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

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

13

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

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

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

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

15

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

16

17

18

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

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

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

19

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

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

20

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

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

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

21

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

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

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

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

22

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

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

23

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

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

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

24

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

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

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

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

25

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

26

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

27

28

29

30

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

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

31

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

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

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

32

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

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

33

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

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

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

34

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

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

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

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

35

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

36

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

37

Железка

OS

38

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

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

39

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

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

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

40

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

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

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

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

41

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

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

42

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

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

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

43

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

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

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

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

44

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

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

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

46

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

47

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

48

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

49

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

50

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

51

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

52

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

53

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

54

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

55

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

56

Причём:

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

57

Причём:

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

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

58

Причём:

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

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

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

59

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

60

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

61

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

62

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

63

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

64

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

65

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

66

Всё?

67

Ещё много…

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

68

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

69

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

70

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

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

71

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

72

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

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

73

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

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

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

74

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

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

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

75

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

76

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

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

77

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

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

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

78

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

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

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

79

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

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

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

80

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

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

pancakyes@yandex.ru

Спасибо

Recommended