В предыдущей статье был представлен вариант применения техники тест-дизайна «Таблица решений» для тестирования фильтрации с зависимыми фильтрами.
В этой статье я хочу показать, как эту технику можно применять для тестирования сложных форм на примере калькулятора транспортного налога.
Калькуляторы расчета суммы транспортного налога разрабатываются на основе официальных документов, в которых указываются условия расчета, применение льгот, ставки по годам и др. Для примера взяты данные по расчету транспортного налога на 2018-2019 года, для которых и была сделана таблица решений. Указать ресурс, для которого был сделан этот тест-дизайн, нет возможности, но в целом все калькуляторы транспортного налога выглядят похожим образом и для наглядности можно открыть любой такой калькулятор в сети. Значения параметров и сами параметры меняются каждый год, поэтому данные в описании алгоритма составления и приведенных ниже скриншотах таблиц уже немного отличаются от текущих для расчета налога.
Алгоритм создания «таблицы решений» для формы калькулятора расчета суммы транспортного налога
Сначала заполнялись данные в блоке Условия, для этого были выбраны нужные условия. Для формы калькулятора - это поля, списки, чек-боксы, радио-батоны:
Вид транспортного средства
Год налогового периода
Кол-во месяцев владения
Право на льготы
Год выпуска авто
Налоговая база
Легковой автомобиль стоит более 3 млн рублей
Марка ТС (если автомобиль стоит более 3 млн рублей)
Модель ТС (если автомобиль стоит более 3 млн рублей)
Затем были выбраны возможные значения для каждого из параметров и заполнены строки выбранными данными с учетом возможных зависимостей между параметрами и покрытием всех возможных сочетаний между ними, применяя при этом другие техники тест-дизайна для уменьшения количества тестов:
1. Так как для отдельных видов транспортных средств (далее ТС) расчет отличается, то тесты были поделены на 13 отдельных таблиц по количеству видов ТС. Для каждой таблицы сначала шли тесты для 2019 года, потом для 2018 года.
2. Калькулятор разрабатывался для отдельного региона, поэтому поля для выбора региона в форме не было предусмотрено.
3. Количество тестов для каждого года определялось количеством вариантов значений «Налоговой базы», для которых было сделано разбиение на классы эквивалентности с учетом граничных значений согласно документации. Это основной параметр для расчета после года налогового периода и для этого параметра было больше всего возможных значений для тестов даже после применения других техник тест-дизайна, именно поэтому он стал определяющим для количества требуемых тестов.
4. Затем для всех тестов были проставлены значения 1-12 в строке «Год налогового периода». Эта цифра влияет только на сумму при расчете, поэтому зависимости с другими полями нет.
5. Потом для всех тестов были проставлены возможные на тот момент «года выпуска авто» согласно документации, так чтобы покрыть все возможные варианты года выпуска хотя бы раз.
6. Далее для всех тестов были проставлены варианты предоставления льгот согласно документации, также с учетом классов эквивалентности и данных в других строках для тестов, чтобы покрыть все возможные варианты.
7. Затем были выбраны тесты по количеству лошадиных сил и году выпуска, для которых можно было протестировать выбор авто более 3 млн. Для таких тестов были указаны конкретные Марка ТС и Модель ТС, чтобы проверить правильность выбора повышающего коэффициента и расчет с таким коэффициентом для отдельных авто из соответствующего списка «дорогих авто».
После заполнения всех данных в блоке Условия уже заполнялся блок Действия, для которого в качестве основных параметров были выбраны:
Отображение доп.полей в форме
Налоговая ставка (зависит налоговой базы)
Коэффициент льготы
Текст о применении льготы
Значение повышающего коэффициента
Рассчитанная сумма налога по соответствующей формуле
Значения для этих параметров также были выбраны согласно документации, с учетом классов эквивалентности и покрытия всех требуемых вариантов значений этих параметров и результатов расчета.
Ниже представлен пример "таблицы решений" №1 - для "автомобили легковые".
Ниже представлен пример "таблицы решений" №6 - для "яхты и другие парусно-моторные суда".
Для каждого вида ТС количество тестов получилось разным, так как в расчете учитываются разные параметры: если для легковых авто – это около 150 тестов для 2018-2019 годов, то для снегоходов или яхт – всего 8-10 тестов. Всего на 13 таблиц получилось около 300 ручных тестов, которые покрыли полностью все основные сочетания параметров ввода/вывода данных. И это с учетом применения техник сокращения количества тестов.
На такой тест-дизайн я потратила всего около двух дней. Тестирование по таким тестам также прошло достаточно быстро. После ручных тестов - из этих таблиц были выбраны тесты, которые были покрыты автотестами для регресса.
Думаю, что без применения такой техники тест-дизайна достаточно сложно быстро проверить работу такого калькулятора, чтобы покрыть все основные варианты сочетаний данных на входе/выходе и быть уверенными в корректности расчета.