Практическое задание. Тестирование использования промокода в корзине.
Всем привет!
Предлагаю выполнить практическое задание для отработки навыков: тест-дизайна и проектирования тестов. Пример моего решения можете изучить в посте ниже.
Вы тестируете фичу «Использование промокода в корзине» в интернет-магазине.
На странице корзины пользователь может:
- ввести промокод в поле и нажать «Применить»;
- увидеть, что промокод применился (отобразилась скидка и изменился итог);
- удалить промокод и вернуть расчёт корзины к исходному.
Промокод может давать скидку разного типа и имеет ограничения по применению (время, лимиты, минимальная сумма заказа). После любых изменений корзины (добавление/удаление товара, изменение количества) система должна корректно пересчитывать итог и поведение промокода. (подробные требования к фиче смотрите ниже)
Ваша задача:
1. Составить набор функциональных проверок для этой фичи так, чтобы закрыть:
- позитивные сценарии;
- негативные сценарии;
- сценарии изменения корзины после применения промокода.
- граничные случаи;
2. Выбрать и явно указать, какие техники тест-дизайна вы применяете (например: классы эквивалентности, граничные значения, таблицы принятия решений, переходы состояний).
3. Сформировать итоговый артефакт для команды (например, чек-лист с проверками.
Требования к фиче:
1. Общие положения
1.1. Пользователь может ввести промокод на странице корзины до оформления заказа.
1.2. В один заказ может быть применён только один промокод.
1.3. Промокод влияет только на стоимость товаров и не применяется к стоимости доставки.
1.2. В один заказ может быть применён только один промокод.
1.3. Промокод влияет только на стоимость товаров и не применяется к стоимости доставки.
2. Типы промокодов
2.1. Промокод может быть одного из двух типов:
2.1.1. Фиксированная скидка. Скидка задаётся фиксированной суммой в валюте заказа. Пример: 500 ₽ скидки
2.2.2. Процентная скидка. Скидка задаётся в процентах от стоимости товаров в корзине. Пример: 10% от суммы товаров
3. Правила расчёта скидки
3.1. Скидка рассчитывается только от итоговой стоимости товаров в корзине на момент применения промокода.
3.2. Скидка не может превышать стоимость товаров.
Если рассчитанная скидка больше суммы товаров — итоговая стоимость товаров становится 0.
Если рассчитанная скидка больше суммы товаров — итоговая стоимость товаров становится 0.
4. Срок действия промокода
4.1. У каждого промокода есть дата и время начала действия и окончания действия.
4.2. Промокод можно применить только если текущее серверное время находится в интервале:
start_at ≤ now ≤ end_at
4.3. Если срок действия истёк или ещё не наступил — промокод считается невалидным.
5. Ограничение по количеству использований
5.1. Глобальный лимит
У промокода есть максимальное количество успешных применений (usage_limit_total).
- Каждый оформленный заказ с этим промокодом уменьшает доступный лимит на 1
- Если лимит исчерпан — промокод нельзя применить
5.2. Лимит на пользователя
Один пользователь может использовать конкретный промокод только 1 раз за всё время.
- Проверка производится по user_id
- Если пользователь уже оформил заказ с этим промокодом — повторное применение запрещено
6. Минимальная сумма заказа
6.1. У промокода может быть задана минимальная сумма товаров в корзине (min_order_amount).
6.2. Промокод можно применить только если:
стоимость товаров в корзине ≥ min_order_amount
6.3. Если после изменения корзины сумма стала меньше порога:
- промокод автоматически удаляется
- пользователю показывается уведомление, что условия больше не выполняются
7. Поведение при применении
7.1. Пользователь вводит промокод и нажимает кнопку «Применить».
7.2. Система выполняет проверки:
- Промокод существует
- Срок действия валиден
- Не превышен глобальный лимит
- Пользователь ранее не использовал промокод
- Выполнено условие по минимальной сумме заказа
7.3. Если все проверки пройдены:
- промокод применяется
- в корзине отображается:
7.4. Если хотя бы одна проверка не пройдена — промокод не применяется.
8. Поведение при изменении корзины
8.1. После применения промокода система должна автоматически пересчитывать его валидность при:
- удалении товара
- изменении количества товара
- добавлении нового товара
8.2. Если условия промокода перестали выполняться (например, сумма стала меньше минимальной):
- промокод удаляется
- скидка обнуляется
- пользователю показывается уведомление
9. Удаление промокода
9.1. Пользователь может вручную удалить применённый промокод.
9.2. После удаления:
9.2. После удаления:
- скидка пересчитывается
- заказ возвращается к полной стоимости
10. Сообщения об ошибках
Система должна отображать понятные сообщения:
- «Промокод не существует»
- «Срок действия промокода истёк»
- «Промокод ещё не активен»
- «Достигнут лимит использований промокода»
- «Вы уже использовали этот промокод»
- «Минимальная сумма заказа для этого промокода — X»
11. Фиксация использования
11.1. Промокод считается использованным только после успешного оформления и оплаты заказа.
11.2. Если заказ не был завершён (отмена, ошибка оплаты) — использование промокода не засчитывается.
11.2. Если заказ не был завершён (отмена, ошибка оплаты) — использование промокода не засчитывается.
12. После применения промокода пользователь может заменить его на другой только путём предварительного удаления текущего промокода, при условии что он ещё не был использован.
практика
тестирование
qa
тест-дизайн