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

Мы несколько раз использовали такую частичную автоматизацию: когда делали проект в сжатые сроки и полноценные автотесты не окупились бы, и когда работали с объемными таблицами в файлах. Два небольших инструмента мы написали на java и один нашли среди уже существующих.

Сервис для валидации API

Нужно проверить, что мобильное приложение использует жестко определенный формат API запросов. В теле запросов от 25 до 50 параметров, которые зависят  от действий пользователя, настроек приложения, местонахождения и модели телефона.

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

В первой версии ответ на запрос к сервису был один и тот же, позже мы добавили возможность задать кастомные ответы, привязанные к определенному значению выбранной переменной в теле запроса, — это помогло нам в функциональном тестировании.

Для минимальной настройки сервиса:

  1. Задать DEFAULT_RESPONSE в классе ParserServer
  2. Описать список ожидаемых полей в классе RequestExample
  3. В классе RequestExampleParser в методе parseString описать, как ожидаемые поля связаны с JSON в теле запроса

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

Код сервиса и пример валидации запроса:
https://bitbucket.org/thumbtacktech/it-picnic-2019/src/master/validationservice.

Генератор .xlsx и .csv файлов

Для тестирования ETL приложения необходимы большие файлы (порядка 100 тысяч строк) форматов .xls, .xlsx и .csv. У файлов схожая структура — шапка, имена столбцов и сами данные. Особенность данных: часть из них должна совпадать с тем, что уже хранится в базе данных.

Мы можем найти генератор .csv файлов, но с готовыми решениями для .xls и .xlsx все сложнее, к тому же это не решает проблему с записью в сгенерированный файл 100 тысяч разных значений из базы данных.

Пример с генерацией .xlsx файла:

Наш генератор .xlsx и .csv файлов
https://bitbucket.org/thumbtacktech/it-picnic-2019/src/master/filegenerator/.

Работа генератора на примере генерации .xlsx файла
https://bitbucket.org/thumbtacktech/it-picnic-2019/src/master/filegenerator/src/main/java/com/lineate/qa/filegenerator/Demo.java:

Задать в генераторе определенное значение, случайное значение из множества или значение из базы данных:
https://bitbucket.org/thumbtacktech/it-picnic-2019/src/master/filegenerator/src/main/java/com/lineate/qa/filegenerator/data/CustomGenerator.java

SQL для файлов

С таблицей в файле нельзя работать так же, как с таблицей в базе данных? Можно!

Утилита для командной строки, которую нам не пришлось писать — Q. Есть подзапросы, группировки, джойны файлов и хорошая документация (она хороша, поэтому мы просто не могли про нее не сказать).

Пример команды:

Утилита Q:
https://github.com/harelba/q

Документация:
http://harelba.github.io/q/

Резюме

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

Автотесты — это средство, а не цель. Чтобы начать заниматься автоматизацией, не нужен опыт программирования или большой бюджет, нужно уметь увидеть ту часть работы, которую давно пора отдать машинам.

Екатерина Боброва, QA Engineer

RSS