Компания
59,86
рейтинг
7 октября 2013 в 15:44

Разработка → Секреты тестирования интерфейсов в ТКС Банке

Постараюсь рассказать в общих чертах о том, как выглядит процесс тестирования интерфейсов в ТКС банке.

image

Смутное прошлое


Было все просто: пришла задача, задача сделана, задача протестирована вручную тестировщиком, задача ушла на обозрение пользователям. Но потом, все стало усложняться, задач становилось все больше и больше, разработчиков прибавлялось, и тестирование, бывало, заходило в тупик.

Очаровательное настоящее


Наш коллектив сильно изменился – маленький отдел веб-разработки стал в разы больше. Изменился и сам процесс — теперь наши интерфейсы покрыты тестами как внутри (код), так и снаружи. И да, у нас есть code review, а разработку задач осуществляем в ветках, пишем старательно документацию в wiki и генерим JS DOC.



Тестирование кода


Очевидно, там, где есть обработка данных, различные расчеты – должны быть и unit-тесты. Да, что там скромничать – где есть код, должны быть тесты.

Есть различные подходы к разработке через тестирование: TDD, BDD и др. Не будем разбираться, чем они отличаются друг от друга, а остановимся подробнее на нашем процессе тестирования.

За сборку статики и запуск тестов у нас отвечает Grunt. Мы используем связку Grunt + Karma + PhantomJS +Jasmin + Sinon + CoffeeScript. Да, вы не ослышались CoffeeScript.

Когда то у нас были бурные дискуссии о том, что CS красивый, модный и сильно ускоряет разработку, но все же по многим причинам мы отказались от этой дурной затеи писать весь код на CS. Но! Мы пишем тесты на CS по одной основной причине – писать и читать простыню callbacks куда приятнее на CS, чем на JS. Код получается более компактным и приятным.

Jasmine – выбрали за простоту, Sinon – для эмулирования запросов к API, Karma – просто крутой test runner, а PhantomJS – для запуска автотестов из Team City.

Сразу оговорюсь, мы не стали фанатеть и покрывать юнит-тестами все подряд, а только общие компоненты и те места, в которых обрабатываются данные. Да, пускай все скажут, что это плохо и что надо весь код покрыть тестами, но мы не увидели в этом такой необходимости, тем более что покрыть тестами работу с DOM можно, но бессмысленно и долго.

У нас есть Team City, который по нашему указанию автоматически запускает сборку и тесты для каждой ветки переданной на code review и если что-то пойдет не так, разработчик об этом узнает и битый код не попадет в master.
Все наши тесты разбиты по модулям. Модуль – это тест-кейсы + конфига для запуска. Такой подход дает возможность запускать нужные тесты по отдельности, либо, используя общий файл конфигурации, запустить все сразу.

Есть определенные моменты, когда хочется покрыть юнит-тестами DOM, и нам в этом помогает CS, своей чудной возможность многострочных комментариев. Вы просто пишите нужный HTML-код в тест-кейсе или в отдельном файле, а потом подключаете его там, где это нужно.

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


Как написал ранее, разработчики не покрывают юнит тестами работу с DOM, потому что считают это бессмысленной затеей. Для этого в ТКС Банке есть отдел тестирования, он и занимается тестированием визуальной части интерфейса.

Есть два типа тестирования:
  • Вручную
  • Автотесты

С первым вариантом все понятно, кликаем пока мышка не сломается, и не выскочат кнопки из клавиатуры. Со вторым – немного сложнее…

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

Наши автотесты используют Selenium WebDriver. Мы разработали свой фреймворк для тестирования «морды», основанный на связке популярных и проверенных решений, позволяющий писать максимально чистые и прозрачные тесты, исключающий дублирование кода и загоняющий в жесткие рамки проектирования и построения фреймворка, благодаря которым достигается гибкость конечных тестов и простота поддержки их работоспособности.

Непосредственно само тестирование проходит в развернутой распределенной сети selenium grid, где запущенные машины с определенной ОС и набором версий браузеров ожидают своего часа (на деле конечно быстрее) славы. Запускаются тесты из TeamCity, часть – автоматически, смотрящие на свой триггер сборки, как, к примеру, смоук-тесты, запускающиеся после каждого деплоя тестового стенда, часть – вручную, по востребованию, например, более громоздкие тесты из набора тестов на регресс, позволяющие, выявить привнесенные баги. Кстати, о багах. Автотесты охватывают не только поверхностное тестирование GUI портала, большинство автотестов комплексные, и охватывают тестирование на уровне БД и веб-сервисов. Так что в случае падения автотеста, тестировщик получает не только скриншот с информацией «сломалось тут, смотри дальше сам», но и вменяемый отчет с информацией по полученным/ушедшим, к примеру, данным в БД.

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

Буду признателен замечаниям и комментариям по делу, для формирования следующих статей, где более подробно расскажем, как и что у нас устроено.
Автор: @ekubyshin
Тинькофф Банк
рейтинг 59,86

Похожие публикации

Комментарии (24)

  • +14
    Вам бы лучше научиться тестировать свои же сноски мелким шрифтом ;)
    • +1
      Соглашусь, после недавней ситуации пропал интерес, как к ТКС, так и статьям про него.
      • +1
        Какой интерес? Вы видели их проценты или может они вам нравятся?
        • +2
          Поинтересуюсь. Процентов по кредитам?
          Потому что по вкладам 11% за годовой вклад, что не хуже чем у других.
          По кредитам да — не смог я прочесть их страничку…
          Или суть что процентов не видно в документах?
          • +1
            у них есть кредиты?

            Или кредитке, с льготным периодом, платить проценты?
            • +2
              Да, простите, у них кредитные карты.
              Хотя для меня разница туманна…
              Так со вкладами у них нормально?
              • +4
                до 700к у всех с вкладами нормально.
                • 0
                  А у кого свыше 700к с вкладами нормально?
          • 0
            Да, про вклады я забыл.
        • +2
          О том же самом поинтересуюсь, проценты по вкладам нравятся, 11% вполне нормально, повеселее, чем в сбере или втб.
          • 0
            Как ответил выше, про вклады я как-то забыл.
  • +9
    «И да, у нас есть code review, а разработку задач осуществляем в ветках, пишем старательно документацию в wiki и генерим JS DOC.»

    Вот это мне напомнило как маленькие дети хвастаются перед родителями/друзьями/знакомыми, лишь бы кто-то похвалил.
    • +2
      Лол, это мне сотрудники ТКС в карму насрали?) Что интересное — коммент почему-то не в минусах все же.
  • +3
    Не совсем ясна цель данного поста: Проба пера? Свободный микрофон? Я знаю так много, но NDA мешает рассказать? Или что это?

    Полагаю, что правильней было бы убрать пост в черновики и доработать. Но перед началом доработки четко определитесь: что вы хотите этим меседжем на Хабре сказать! И не надо пытаться объять необъятное — лучше поделить на несколько четких и конкретных постов, чем лить много воды в одном.
    • –1
      спасибо за предложение. это начало цикла статей
      • +5
        Зачастую это последняя фраза в «цикле статей».
  • 0
    Куда слать багрепорты? Интересует в основном мобильное приложение.
    • 0
      тут все написано www.tcsbank.ru/contacts/ в самом низу страницы. Либо можно воспользоваться экраном «Контакта» прямо в МБ, там есть форма обратно связи
      • +2
        Да, форма работает, прямо из приложения фидбек отправляется и саппорт даже отвечает.
        И причем очень оперативно отвечает, это конечно плюс.
        Одна только проблема: ответы эти в духе «это не баг, а фича» :(
        • 0
          в других банках комменты лучше?
  • 0
    Ну вот, статья – про тесты, комментарии – про вклады.

    В таком случае, немного оффтопа:

    Вы как-то оптимизировали работу с Selenium Grid?
    Дело в том, что как бы я не старался, все равно у меня тесты при локальном запуске проходят раза в два быстрее, чем при работе через Remote Driver. Хотя, этот драйвер находится на виртуалке, на той же машине, где запущены тесты.
    Единственным решением для меня, было копирование кода теста на виртуальную машину и запуск тестов там, локально.
    Вы сталкивались с проблемой скорости работы RemoteDriver?
    Вы как-нибудь это оптимизировали?
    • +1
      Спасибо! Это единственный комментарий по теме…

      Действительно, довольно часто наблюдаются проблемы со скоростью прохождения тестов именно на виртуалках, с некоторыми проблемами столкнулись и мы. Но тут скорее виноват не remoteWebDriver, а конфигурация сети и запускаемых драйвером браузеров. Проблемы с явным падением скорости у нас были только в IE и в Chrome, нас помогло следующее. Для ускорения тестов под управлением IEdriver попробуйте в настройках IE во вкладке уровней безопасности для всех зон, кроме «ограниченных» выставить уровень безопасности «Ниже среднего», и не забыть включить «защищенный режим». Для ускорения тестов под остальными браузерами, в частности по хромом, попробуйте в настройках локальной сети отключить «автоматическое определение параметров» и отключить использование прокси сервера. Нам эти настройки помогли, сейчас время прогона теста на виртуальных машинах практически не уступает времени прогона на локальной машине под webDriver
      • 0
        Спасибо, ekubyshin,
        Я как-то привык всегда выключать защищенный режим в IE, и с настройками безопасности не экспериментировал.
        Вы подсказали отличную идею.
  • 0
    как то так

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

Самое читаемое Разработка