CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования

2,062 views

Published on

Published in: Internet
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,062
On SlideShare
0
From Embeds
0
Number of Embeds
956
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования

  1. 1. Как делать прототипы в автоматизации тестирования Павлов Игорь 2gis.ru @rnd2gis
  2. 2. Обо мне • В 2ГИС 1.5+ год • Команда автоматизации тестирования • Работал над инструменами тестирования для • внешних web-продуктов: Онлайн версии карт, API карт, API справочника, Личного кабинета рекламодателя • новой версии 2ГИС для ПК 2
  3. 3. Google for 'Прототип' 3
  4. 4. Google for 'Прототип автоматизация тестирования' 5
  5. 5. Вопросы 1. Что такое прототип в АТ? 2. Но мне не очень нужно прототипизировать GUI... 3. Каков алгоритм прототипизирования? 4. Какие бывают задачи для прототипизирования в АТ? 6
  6. 6. О чем будет • Прототип в АТ • Прототипы тестировщика • Прототипы разработчика в тестировании • Наш рецепт прототипизирования 7
  7. 7. Прототип Прототип — быстрая, черновая реализация будущей системы. wikipedia.org “ 8
  8. 8. Цель
  9. 9. Скорость создания
  10. 10. не интерактивный интерактивный По взаимодействию 11
  11. 11. Не интерактивный
  12. 12. Интерактивный
  13. 13. "на выброс" эволюционный По последующему использованию 14
  14. 14. "На выброс"
  15. 15. Эволюционный?
  16. 16. Эволюционный
  17. 17. не интерактивный разовый интерактивный эволюционный Прототипы в АТ 18
  18. 18. Quick Win FF Fast Feedback Fail Fast 19
  19. 19. Основная идея 1. Главное – цель и скорость создания 2. Прототип должен быть интерактивным 3. Прототип – ядро будущей системы 4. Прототип – работающая модель 20
  20. 20. О чем будет • Прототип в АТ • Прототипы тестировщика • Прототипы разработчика в тестировании • Наш рецепт прототипизирования 21
  21. 21. Для тестировщика
  22. 22. Термины Тестировщик – человек внутри команды, следящий за качеством продукта 23
  23. 23. Проблемы 1. Нет времени писать тесты 2. Я не умею писать нормальный код 3. Месяц пишим тесты, закончили и они упали 24
  24. 24. Задача Тестировать RESTful API 25
  25. 25. "Горизонтальный" прототип тестов Проблема: как выглядят запросы ко всем методам? Цель прототипа: тесты на код ответа 200 всех методов 26
  26. 26. class AuthRegisterTest(ApiTestCase): def test_registration(self): response = self.auth.register.request() class AuthLoginTest(ApiTestCase): def test_login(self): response = self.auth.login.request() class CatalogTest(ApiTestCase): def test_search(self): response = self.catalog.search.request() 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 27
  27. 27. "Вертикальный" прототип тестов Проблема: как работать данными из БД? Цель прототипа: пара тестов с максимальным использованием функционала БД 28
  28. 28. class AuthLoginActiveUserTests(ApiTestCase): def get_user(self): return self.postgres.auth.insertUser() @dataprovider(get_user) def test_correct_password(self, user): response = self.auth.login.request(self.method, { 'email': user['email'], 'password': user['password'] }, response_type=self.response_type) self.assertEquals(200, response.content['meta']['code 01. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 29
  29. 29. Прототипы улучшений качества Проблема: в команде постоянно не соблюдается codestyle Цель прототипа: Гит-хуки на линтеры, юнит-тесты и прочее 30
  30. 30. Основная идея 1. Проблема → цель 2. Цель можно достигнуть за 2 недели 3. Ключевые инструменты уже в прототипе 4. Нужно понять интерфейсы – горизонтальный прототип 5. Нужно проработать функциональность – вертикальный прототип 31
  31. 31. О чем будет • Прототип в АТ • Прототипы тестировщика • Прототипы разработчика в тестировании • Наш рецепт прототипизирования 32
  32. 32. Для разработчика в тестировании
  33. 33. Термины Разработчик в тестировании – человек из отдельной команды, создающий инструменты для тестировщиков 34
  34. 34. Проблемы 1. Плохое testability технологий 2. Узко заточенные инструменты для технологий 35
  35. 35. Пример ОС Инструмент Версия присутствия iOS UIAutomation SDK 4.0+ (iOS 4.0) Android uiautomator selendroid SDK API 16+ (Android 4.1) SDK API 10+ (Android 2.3.3) Winphone нет 36
  36. 36. Локальные проблемы 1. Множество фреймворков 2. У каждого свой запуск тестов и агрегация результатов 37
  37. 37. Задача Инструменты тестирования в одном стеке технологий 38
  38. 38. Стек технологий тестирования Платформы: web, desktop, mobile 1. Писать тесты на selenium 2. Запускать тесты одним инструментом 3. Удобно контролировать тестовое окружение 4. Получать результаты в одинаковом виде 39
  39. 39. Причины сделать 1. Доставлять всем командам 2. Более качественные инструменты 3. Планомерное развитие инструментов 4. Challenge 40
  40. 40. Со стороны бизнеса 1. Доставлять всем командам 2. Более качественные инструменты 3. Планомерное развитие инструментов 4. Challenge Профит 41
  41. 41. Профит 1. Быстрее - перенос части тестов 2. Взаимозаменяемое тестирование - общие знания 3. АТ там, где не было инструментов - меньше людей 42
  42. 42. Прототип составной системы Цель прототипа: применить инструменты из web тестирования в desktop 43
  43. 43. Стек 44
  44. 44. Задачи 1. драйверы для приложений на разных платформах 2. фреймворк для разных платформ 3. тестовое облако с разными платформами 4. runner для запуска тестов и сбора результатов 46
  45. 45. Ограничения 1. 2-3 человека 2. полгода 47
  46. 46. Как?
  47. 47. Как? 1. Прототипируем подсистемы 49
  48. 48. Как? 1. Прототипируем подсистемы 2. Знакомые и удобные технологии 51
  49. 49. Технологии 52
  50. 50. Как? 1. Прототипируем подсистемы 2. Знакомые и удобные технологии 3. Фиксируем интерфейсы 53
  51. 51. Стек технологий 54
  52. 52. Как? 1. Прототипируем подсистемы 2. Знакомые и удобные технологии 3. Фиксируем интерфейсы 4. По возможности делаем поверх существующих инструментов 55
  53. 53. Прототип поверх существующего: qtwebkitdriver Цель: получение элементов, клики/драги, работа с клавиатурой Интерфейс: json wire protocol 56
  54. 54. Qtwebkitdriver 57
  55. 55. Стек 58
  56. 56. Прототип для простоты: vmmaster Фокус: создание сессий виртуальных машин по требованию Интерфейс: json wire protocol 59
  57. 57. Прототип для простоты: vmmaster Использовать? 60
  58. 58. Стек 61
  59. 59. Прототип "с нуля": фреймворк Цель: разные платформы, упрощение setup, page/component objects Интерфейс: unittest
  60. 60. Стек 63
  61. 61. О чем будет • Прототип в АТ • Прототипы тестировщика • Прототипы разработчика в тестировании • Наш рецепт прототипизирования 64
  62. 62. Отвергаем Альфа-версия Наш рецепт прототипирования 1. Постановка узкой цели 2. Фиксация критерия готовности 3. Фиксация интерфейса прототипа 4. Поиск существующих инструментов, которые можно расширить 5. Разработка: проверка на реализуемость 6. Анализ результатов и качества кода 65
  63. 63. О чем будет • Прототип в АТ • Прототипы тестировщика • Прототипы разработчика в тестировании • Наш рецепт прототипизирования 66
  64. 64. Чем объяснять, - сказал Додо, - лучше показать! Льюис Кэрролл, Алиса в Стране Чудес “ 67
  65. 65. Что делать?
  66. 66. Как делать?
  67. 67. Что делать с тем, что сделано?
  68. 68. Павлов Игорь i.pavlov@2gis.ru @nwlunatic 71

×