Задача автоматизировать интеграционное тестирование проекта, состоящего из разных частей, на разных платформах

Задача автоматизировать интеграционное тестирование проекта, состоящего из разных частей, на разных платформах (из одного места комплексно, сценарием - (с) Начальник) :worried:

Как это сделать никто не знает. Я тоже. Поэтому огромная просьба направить на путь наименьших ошибок и костылей.

Дано:

  1. Десктопное приложение на wpf
  2. Наш мобильный апп на Андроиде
  3. Веб часть
  4. Сервера

Так же нужно использовать на андроиде два сторонних приложения для работы нашего из пункта (2)
Надо подобрать инструменты, подход для интеграционного тестирования всей системы

Что есть:
Есть CI сервер - TeamCity. Он собирает все проекты и запускает серверные приложения (3 конфигурации - Dev, Test, Stage). Серверная часть состоит из 5 отдельных консольных приложений. Всё крутится на одном физической сервере.

Есть логи разной глубины в вебе. Есть БД для каждой конфигурации. - по ним тоже не совсем понятно, как их лучше вести, чтобы быстро и однозначно понять, что пошло не так.

Основной язык команды C#. Я тоже хотел бы, чтобы всё было на нём.

Что надо:
Разработчик залил, Тимсити забрал, собрал, развернул, опубликовал на фтп десктопное и андроид. Запускает сервер (5 частей) нужной конфигурации. (это есть)
А дальше нужен 3 шаг с интеграционными тестами.

Сейчас 3 шаг вручную. В десктопе что-то сделали и отправили в андроид, в андроиде провели манипуляции в двух сторонних аппах, только потом получаем, что нужно в андроид аппе. Апп тоже наш нужно протыкать (включить gps, отключать/включать WiFi)
Умею запускать через сикули десктоп апп и нажимать, что нужно (python). Андроид тоже можно через appium (selendroid + C#) был опыт. Для веба понятно веб драйвер + C# (был опыт).

Это всё надо запускать, проверять, желательно чтобы все тестовые данные были в одном месте, репорты отсылать.
Т.е. у меня вопросы начиная от выбора андроид симулятора (в крайнем случае будет, подключен постоянно к ПК андроид телефон) до выбора архитектуры всей системы тестирования.

Т.к. последний год был в ручном тестировании больше всего, то сейчас уже не в курсе о текущих инструментах, подходах, решениях в автоматизации.

  1. Чтобы провести какой-то минимальный тест, хватит и одного реального девайса.
    Для нагрузочного уже нужны будут симуляторы и эмуляторы. И много.
    Раньше пытался сделать для Genymotion тул, который включает девайс, включает Gps, задает ему координаты со временем. Но на тот момента он падал на ровном месте. Сейчас может проблем уже нет, а вероятнее есть и другие решения. Его плюс в быстроете, минусы, в неадекватном поведении иногда.
  2. Лучший выбор для C# инструмента с работой по андроиду.- буду смотреть в сторону Appium. Раньше уже мучался, но опять таки время прошло. Второй андроид и ios не интересует.
  3. WPF - sikuli освоил базово.
  4. Веб драйвер базово освоил, но давно, думаю быстро вспомнить.

Короче из ручного вернуться к автоматизатору тестирования за 5 мин. :cry:

  1. Составляете интеграционный скоуп задач, т.е. базовые сценарии, которые должны быть покрыты. Тут же следует объяснить начальнику, что при таком уровне сложности, автоматизироваться будут только базовые сценарии, иначе ваш автомейшен себя не окупит. Слишком много челенджей при условии отсутствия опытных человеко-ресурсов.
  2. Берете парочку дэвов за уши и ставите задачу построения фреймворка, включающего как минимум webdriver / sikuli wrapper модули. Можете попробовать взять готовые решения (если тесты надо писать быстро, не сильно заморачиваясь о сложных DSL), на основании недавних опросов. Важно также рассказать им об основных нюансах автоматизации / паттернах и т.п.
  3. Тут же надо предусмотреть remote execution support, т.к. по условию наши компоненты - кросс платформенные.
  4. 100% не стоит смотреть в сторону BDD.
  5. Опять же, ввиду кросс платформенности, нужно продумать способ хранения тестовых данных. Лучше взять БД, к примеру, MySQL / Mongo. Если все надо делать быстро, пусть используют уже готовые либы / фреймворки.
  6. Попросите выделить отдельный репозиторий под автомейшен.
  7. Настройте сборку / запуск через TeamCity. Когда все компоненты задеплоены, сразу пусть тригеряться ваши интегрейшен тесты.
  8. Для быстрого решения проблемы репортинга, посмотрите в сторону Allure, который содержит кучу готовых адаптеров под разные языки программирования.
  9. С мобайл интеграцией будет сложнее. Тут @anym0us вам лучше подскажет. Но простые задачи и Sikuli по идее сможет решить. Это чтобы лишние фреймворки не подключать.
  10. Еще рекомендую посмотреть в сторону написания какого-то легковесного http сервера (REST support), который сможет исполнять любые shell / cmd команды на ремоутных тачках. Т.к. велика вероятность того, что вам дополнительно придется дергать какие-то сервисы, что-то куда-то копировать / запускать / мониторить. Т.е. на всех тачках under test желательно наличие универсального рычага. Сами скрипты будет написать не проблема. Важно уметь их дернуть ремоутно, когда нужно.