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

1,946 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,946
On SlideShare
0
From Embeds
0
Number of Embeds
1,463
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Тестирование Обзорная лекция Марина Широчкина Руководитель группы тестирования
  2. 2. Введение Что это такое и с чем его едят?
  3. 3. Тестирование – процесс сравнения ожидаемых результатов с полученными. 4
  4. 4. Тестирование – набор инженерных практик, нацеленных на раннее обнаружение дефектов. 5
  5. 5. Тестирование – способ предоставления и получения обратной связи: как технологической, так и продуктовой. 6
  6. 6. Пример продуктовой обратной связи •  «Здесь нельзя грабить корованы!» (с) пользователь 7
  7. 7. Пример продуктовой обратной связи •  «Здесь нельзя грабить корованы!» (с) пользователь •  «Оно делает не то, что надо!» (с) менеджер 8
  8. 8. Пример продуктовой обратной связи •  «Здесь нельзя грабить корованы!» (с) пользователь •  «Оно делает не то, что надо!» (с) менеджер •  «Я не могу использовать разработанный тобой API, он не возвращает все необходимые данные.» (с) коллега-разработчик 9
  9. 9. Пример технической обратной связи •  «Поддержка продукта при такой архитектуре будет слишком сложна.» (с) системный архитектор 10
  10. 10. Пример технической обратной связи •  «Поддержка продукта при такой архитектуре будет слишком сложна.» (с) системный архитектор •  «Ребята, оно падает каждые полчаса, я не буду это поддерживать.» (с) системный администратор 11
  11. 11. Пример технической обратной связи •  «Поддержка продукта при такой архитектуре будет слишком сложна.» (с) системный архитектор •  «Ребята, оно падает каждые полчаса, я не буду это поддерживать.» (с) системный администратор •  «Эта реализация не выдержит предполагаемой нагрузки.» (с) кто-то битый жизнью 12
  12. 12. Раннее обнаружение проблем – залог здорового сна. 13
  13. 13. Уровни тестирования Баг лучше поймать сразу же после его создания. Народная мудрость
  14. 14. Unit-тесты – тесты, проверяющие корректность работы отдельных модулей программы. 15
  15. 15. 16
  16. 16. 17
  17. 17. Входные (тестовые) данные Выходные данные (полученный результат) 18
  18. 18. Плюсы unit-тестов •  Можно запустить сразу после внесения изменений в код – позволяют найти дефект сразу после его «создания». 19
  19. 19. Плюсы unit-тестов •  Можно запустить сразу после внесения изменений в код – позволяют найти дефект сразу после его «создания». •  Могут служить документацией к коду. 20
  20. 20. Плюсы unit-тестов •  Можно запустить сразу после внесения изменений в код – позволяют найти дефект сразу после его «создания». •  Могут служить документацией к коду. •  Упрощают процесс рефакторинга. 21
  21. 21. Минусы unit-тестов •  Их надо писать. 22
  22. 22. Минусы unit-тестов •  Их надо писать. •  Их надо уметь писать. 23
  23. 23. Минусы unit-тестов •  Их надо писать. •  Их надо уметь писать. •  Их надо поддерживать. 24
  24. 24. Даже если все компоненты по отдельности работают правильно, то это ещё ничего не значит. 25
  25. 25. Интеграционные тесты – тесты, проверяющие корректность взаимодействия отдельных модулей друг с другом. 26
  26. 26. 27
  27. 27. 28
  28. 28. 29
  29. 29. Плюсы интеграционных тестов •  Находят баги, которые не могут быть обнаружены unit-тестами. 30
  30. 30. Плюсы интеграционных тестов •  Находят баги, которые не могут быть обнаружены unit-тестами. •  Запускаются после сборки проекта и позволяют быстро обнаружить проблемы взаимодействия. 31
  31. 31. Минусы интеграционных тестов •  все минусы unit-тестов 32
  32. 32. Даже если все компоненты по отдельности работают правильно и корректно взаимодействуют друг с другом – это ещё ничего не значит. 33
  33. 33. Приёмочные тесты – тесты, проверяющие работоспособность системы целиком. В реальном окружении, с реальными данными, на реальных сценариях. 34
  34. 34. OS Железка 35
  35. 35. Плюсы приёмочных тестов •  Находят баги, которые не могут быть обнаружены unit- и интеграционными тестами 36
  36. 36. Плюсы приёмочных тестов •  Находят баги, которые не могут быть обнаружены unit- и интеграционными тестами •  Позволяют оценить работоспособность продукта целиком 37
  37. 37. Плюсы приёмочных тестов •  Находят баги, которые не могут быть обнаружены unit- и интеграционными тестами •  Позволяют оценить работоспособность продукта целиком •  На этом уровне с продуктом могут ознакомиться будущие пользователи 38
  38. 38. Минусы приёмочных тестов •  Самые высокоуровневые – сложнее локализовывать проблему 39
  39. 39. Минусы приёмочных тестов •  Самые высокоуровневые – сложнее локализовывать проблему •  Занимают больше времени 40
  40. 40. Минусы приёмочных тестов •  Самые высокоуровневые – сложнее локализовывать проблему •  Занимают больше времени •  Обнаруживают проблемы с некоторой задержкой 41
  41. 41. Что же выбрать? 42
  42. 42. Виды тестирования Каждому виду багов – свой вид тестирования
  43. 43. «АААА! Ничего не работает» 44
  44. 44. Функциональное тестирование – проверка работы кода/продукта на соответствие требованиям. Проверка логики работы. 45
  45. 45. «Не работает у части пользователей» 46
  46. 46. Конфигурационное тестирование на клиенте – проверка работоспособности на различных конфигурациях. Для веб-сайтов – в разных браузерах. 47
  47. 47. «Мы это выкатили, и оно перестало работать!» 48
  48. 48. Конфигурационное тестирование сервер-сайда – проверка работоспособности в окружении, максимально идентичном продакшену (железка, OS, утилиты, библиотеки, конфиги, версии). 49
  49. 49. «Всё сломалось, когда туда пришли пользователи» 50
  50. 50. Нагрузочное тестирование – проверка работоспособности под нагрузкой (одновременная обработка большого потока запросов). 51
  51. 51. «Работает, но страшно тормозит» 52
  52. 52. Тестирование производительности – проверка скорости работы системы. 53
  53. 53. Причём: •  Необходимо измерить длительность полного цикла «запрос-ответ». Оценить общее время, обратить внимание на отдельные этапы 54
  54. 54. Причём: •  Необходимо измерить длительность полного цикла «запрос-ответ». Оценить общее время, обратить внимание на отдельные этапы •  То же самое – под нагрузкой 55
  55. 55. Причём: •  Необходимо измерить длительность полного цикла «запрос-ответ». Оценить общее время, обратить внимание на отдельные этапы •  То же самое – под нагрузкой •  В пользовательских условиях (сетевые условия) 56
  56. 56. «Всё было хорошо, пока не пришли злые китайские хакеры» 57
  57. 57. Тестирование безопасности – 58
  58. 58. «А как этим пользоваться?» 59
  59. 59. купил айфон а чо с ним делать где кнопки чтобы нажимать и как мне позвонить сереге а вот и он звонит и чо 60
  60. 60. Тестирование юзабилити – тестирование удобства использования. Коридорный вариант доступен всем. 61
  61. 61. «Оно работало, а потом вдруг упало» 62
  62. 62. Тестирование стабильности – тестирование стабильности работы под нагрузкой, длительное время. 63
  63. 63. Всё? 64
  64. 64. Ещё много… •  Volume тестирование •  Stress/Recovery тестирование •  Spike тестирование •  Localization тестирование •  Compatibility тестирование И т. д. И т. п. 65
  65. 65. Какие выбрать? 66
  66. 66. Исходя из специфики вашего проекта. 67
  67. 67. Способы тестирования 68
  68. 68. Ручное тестирование – выполнение тестов вручную или с помощью скриптов. Ручной анализ результатов. 69
  69. 69. Плюсы и минусы ручного подхода Плюсы •  Более информативно – замечаются дефекты рядом 70
  70. 70. Плюсы и минусы ручного подхода Плюсы •  Более информативно – замечаются дефекты рядом Минусы •  Долго 71
  71. 71. Плюсы и минусы ручного подхода Плюсы •  Более информативно – замечаются дефекты рядом Минусы •  Долго •  Дорого 72
  72. 72. Автоматическое тестирование – выполнение с помощью скриптов или инструментов. Оценка результатов проводится автоматически. 73
  73. 73. Плюсы и минусы неручного подхода Плюсы •  Удобно и легко 74
  74. 74. Плюсы и минусы неручного подхода Плюсы •  Удобно и легко Минусы •  Тесты нужно писать и поддерживать 75
  75. 75. Плюсы и минусы неручного подхода Плюсы •  Удобно и легко Минусы •  Тесты нужно писать и поддерживать •  Тесты выполняются «в лоб» 76
  76. 76. Плюсы и минусы неручного подхода Плюсы •  Удобно и легко Минусы •  Тесты нужно писать и поддерживать •  Тесты выполняются «в лоб» •  Сами тесты/скрипты/инструменты могут содержать баги и порождать ложные результаты 77
  77. 77. Разумная комбинация методов – залог успеха. 78
  78. 78. Инструменты     Функциональное, приемочное тестирование: Selenium (web app): http://seleniumhq.org/   TestComplete (desktop app): http://smartbear.com/products/qatools/automated-testing-tools Функциональное, unit тестирование: подбирается под используемый язык, см http://clck.ru/4bsKa Нагрузочное тестирование/тестирование производительности: Яндекс.Танк: https://github.com/yandex-load/yandex-tank Jmeter: http://jmeter.apache.org/ 79
  79. 79. Инструменты     сымитировать плохую сеть: Как Fiddler: http://www.fiddler2.com/fiddler2/   Charles: http://www.charlesproxy.com/ Утилита tc: man tc Большой зоопарк разнообразных браузеров: http://browsershots.org/ 80
  80. 80. Марина Широчкина pancakyes@yandex.ru Спасибо

×