Search
Write a publication
Pull to refresh

Подводные камни при системном тестировании модулей под Magento

Reading time4 min
Views7.2K
Три предыдущих года я работал тестировщиком-мануальщиком в компании, которая очень успешно разрабатывает модули под Magento. За этот период я смог накопить достаточно большой список различных подводных камней, о которых тестировщику (да и программисту) никогда нельзя забывать.
Честно говоря, это не какие-то никому не известные «подводные камни», о которых никто не знает, или о которые модуль в боевых условиях никогда не споткнётся. Это скорее всем известные фичи и места самой Magento, в взаимодействии модуля с которыми всплывает очень много, кхе-кхе, багов. Причём баги эти очень даже критичны.


Non-base currency support
Очень много модулей работают с ценами — от простого отображения в своих блоках, до формирования частей (дискаунты, таксы, шипинги) и/или суммы ордера, отправки amount на платёжные системы. Поэтому обязательно настраиваем на магазине еще одну валюту и внимательно смотрим. Еще иногда бывают баги с округлением при переводе из одной валюты в другую.
Рекомендуется этот кейс автоматизировать. Однако без личного аудита тут всё же не обойтись, тем более что цена ошибки очень велика.

Big Database
У нас есть sample-data, которую мы обозвали «XXL» — десятки тысяч сгенерированных кастомеров, продуктов и ордеров. Практика показывает, что очень многие модули на таких «сторах» обнажают свою неудачную реализацию. Чаще всего это выражается в огромных приростах времени загрузки страниц.

Multi-store
Здесь имеется ввиду поддержка различных website/store/store-view — различные значения опции для разных локалей «стора», (не)отображение на некоторых локалях, редиректы при смене локали на фронтенде.
Рекомендуется этот кейс автоматизировать.

Single-store
Иногда разработчики забывают о том, что на сторе может быть только один Store View и ID его может отличаться от 1.
Рекомендуется этот кейс автоматизировать.

HTTPS
Чаще всего встречаются следующие проблемы:
— ломается javascript/AJAX модуля
— когда модуль добавляет вкладку в My Account, то часто там не используется https в URL
— запросы с https отправляются на http, и наоборот
— еще можно сделать Store Base Unsecure Url c https (чтобы весь стор использовал на фронтенде https)
Рекомендуется этот кейс автоматизировать.

Multi-Address Checkout
«Из коробки» в Magento есть чекаут, который позволяет оформить ордер на несколько адресов. Так что если ваш модуль как-то взаимодействует с чекаутом — не забывайте про multi-address checkout.

Checkout as Guest
Очень важный участок. Количество различных тестовых сценариев здесь просто огромное: от процесса создания ордера, до обработки кастомных дискаунтов и созданных гостями ордеров.

Register at Checkout
Если модуль как-то работает с логином или регистрацией, то не забывайте, что чекаут также имеет форму login/register.
Сюда можно отнести также возможные проблемы с CAPTCHA.

Require Email Confirmation
В бекенде есть опция «Require Email Confirmation», которая включает необходимость подтвердить свой email при регистрации. Правильная работа с этой фичей важна для модулей, которые работают с событием регистрации нового пользователя. Особенно критично это для различных реферальных систем.

Backend Admin Permissions (ACL)
Наверняка ваш модуль добавляет какие-то пункты меню в бекенде. Необходимо убедиться, что администраторы, которые не должны иметь доступ к этим пунктам меню, действительно не имеют к ним доступа. Проверяется проходом по прямой ссылке. Еще нужно обратить внимание на «скрытые» ссылки, например store/admin/promo_catalog/delete/id/1 — эта ссылка удалит Catalog Price Rule c ID=1. Такие ссылки также должны учитывать то, кто по ним проходит.
Рекомендуется этот кейс автоматизировать.

Cross-Browser compatibility
Здесь всё просто. Тестируем фронтенд в различных браузерах. Обращать внимание на вертску и отработку скриптов.
В бекенде проблемы с кросс-браузерностью очень редки, поэтому бекенд достаточно протестировать под Firefox и Chrome.
Рекомендуется этот кейс автоматизировать.

Themes
Не помешает поставить свой модуль на какую-нибудь фронтенд-тему (лучше на приближенный к «боевому» интернет-магазин) и убедиться, что там ничего не сломалось.

Full Page Cache
FPC доставит много хлопот разработчику, уж поверьте. Актуально для модулей, которые показывают на фронтенде блоки, содержимое которых может изменяться.

CSV Translations
В папке app/locale/xx_XX/ лежат csv-файлы, которые отвечают на перевод текста. Убедитесь, что ваш модуль также имеет такой файл, что все лейблы и сообщения модуля имеются в этом файле, и что изменение этого файла «переводит» лейблы на фронтенде.
Рекомендуется этот кейс автоматизировать.

Update from previous version
При рефакторинге или изменении структуры таблиц модуля в БД обязательно проверяем апдейт с предыдущей версии.

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

Product is out of stock
Не забывайте о том, что продукты могут быть или стать out of stock.

Slow speed connection
Иногда девелоперы забывают о том, что коннект не всегда радует своим качеством. Для эмуляции медленного коннекта можно использовать программу Fiddler, например.

Database prefix
А еще девелоперы иногда забывают, что у таблиц в БД бывают префиксы. Такой баг обязательно уронит весь модуль. Или даже весь «стор».

Compilation
В последнее время багов связанных с компиляцией (Backend>Tools>Compilation) в новых модулях стало заметно меньше. Похоже, что наши программисты совсем не любят наступать на грабли дважды.

Flat category / product
Просто включите эти опции в System > Configuration > Catalog, сделайте реиндекс и пойдите в категорию или на продукт. Типичный баг.

Store code to URL / SEO Optimization
Эти опции влияют на URLы. Там где урлы, там и эти опции.

Special symbols & Injections
Проверяем модуль на устойчивость к скриптам и прочим XSS/SQL-инъекциям, на отображение и обработку специальных символов, на подмену значений в форме и т.д.

Locale / Timezone
Все, что связано с локализацией: формат дат и цен, учитывается ли выставленная в настройках магазина таймзона, и т.д.

Form Save after Error
Хорошим тоном является сохранение введенных в форму значений, на случай если сервер при сохранении/отправке формы вернёт ошибку.

Create Order From Backend
Ордер можно создать также и из админки. Об этом тоже часто забывают.

Create Customer From Backend
Аналогично предыдущему пункту.

W3C Validation
Проверьте доступные роботам страницы на валидность вёрстки. Можно спорить о некоторых моментах этой валидации, но факт остаётся фактом — покупатели вашего модуля станут вашей головной болью, если вы не позаботитесь об этом вопросе заранее.
Tags:
Hubs:
Total votes 12: ↑8 and ↓4+4
Comments1

Articles