Как стать автором
Поиск
Написать публикацию
Обновить

Таблица решений для тестирования скриптов

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров4.6K

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

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

Для примера я взяла скрипт выгрузки данных из таблицы БД Mysql, сгенерированный нейросетью и далее доработанный до нужного вида. Код самого скрипта в статье я выкладывать не стала, но отдельные его части для наглядности будут приведены ниже.  Для скрипта есть следующие параметры:

parser.add_argument("--host", required=True, type=validate_host, help="Хост базы данных")
parser.add_argument("--user", required=True, type=validate_user, help="Имя пользователя базы данных")
parser.add_argument("--password", required=True, type=validate_password, help="Пароль пользователя базы данных")
parser.add_argument("--database", required=True, type=validate_database_name, help="Название базы данных")
parser.add_argument("--table_name", required=True, help="Имя таблицы")
parser.add_argument("--columns", nargs='+', required=True, help="Столбцы для выборки")
parser.add_argument("--where", type=validate_where, help="Условие WHERE")
parser.add_argument("--limit", type=validate_limit, default=1000, help="Ограничение на количество строк")
parser.add_argument("--offset", type=validate_offset, default=0, help="Смещение для выборки")
parser.add_argument("--order_by", type=validate_order_by, help="Сортировка результатов")
parser.add_argument("--format", choices=['csv', 'json', 'xml', 'sql'], type=validate_format, default='csv', help="Формат выгрузки данных")
parser.add_argument("--output", default='export_data', type=validate_output, help="Название файла для выгрузки без расширения")

Я также добавила в скрипт разные валидации для этих параметров (функции валидации прописаны в type).

Пример запуска скрипта:

python scripts/auto_export_from_dbsql.py --host=localhost --user=testuser --password=testpass --database=testdb --table_name=person --columns company name address --where="name = 'Алексей'" --limit=40 --offset=5 --order_by="name asc" --format=csv --output="export_file"

Таблица решений состоит из блока действий и блока реакций системы на эти действия. В случае с таблицей для тестов скрипта в блок действий (в таблице блок “Параметры скрипта”) я вношу список параметров скрипта. Черным цветом выделены обязательные параметры. Слева от параметров добавлено описание для каждого параметра, чтобы быстрее можно было войти в контекст. Справа от параметров добавлен столбец со значением параметра по умолчанию, если он не был явно указан при запуске скрипта.

В блоке реакции системы (в таблице блок “Результат работы скрипта”) расписаны списком те проверки, которые нужно проверять при запуске скрипта. Для разных скриптов это могут быть самые разные проверки.

Также под этими блоками я добавила строку “Пример запуска скрипта”. Тут удобно указывать пример для запуска скрипта для каждого теста, чтобы при ретестах можно было копировать и менять только значения параметров, если это нужно.

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

Ниже представлены скриншоты итоговой таблицы решений с тестами для этого скрипта.

Таблица решений для тестов скрипта - часть 1
Таблица решений для тестов скрипта - часть 1
Таблица решений для тестов скрипта - часть 2
Таблица решений для тестов скрипта - часть 2
Таблица решений для тестов скрипта - часть 3
Таблица решений для тестов скрипта - часть 3

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

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

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

Теги:
Хабы:
+1
Комментарии0

Публикации

Ближайшие события