• Like
тестирование
Upcoming SlideShare
Loading in...5
×

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

  • 1,457 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,457
On Slideshare
0
From Embeds
0
Number of Embeds
19

Actions

Shares
Downloads
19
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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