Мой Справочник | Оптимизация
Тестирование
-
Функциональное (работа приложения)
-
Нефункциональное
- Нагрузочное (DDos)
- Кроссплатфоренное (Работа на всех платформах)
- Установочное тестиование (Как устанавливается)
- Тестиование безопасности (Безопасность данных)
- Отказ и восстановление (Варианты отказа, как восстановить данные)
-
Юзабилити (как удобно пользоваться)
-
Регрессионное (перепровека старого функционала, после внедрения нового)
-
Дымовое (smoke-testing, проверка только нового функционала)
-
Позитивное (проверка системы с работой с ожидаемыми типами данных)
Негативное (проверка системы с работой с неожидаемыми типами данных, например если в цифровое поле будет введен еще текст, как система будет себя вести)
-
Ящики
- Черный (без поверки кода, с позиции пользователя)
- Белый (проверка кода, unit-тесты, проверяется самими разработчиками)
- Серый (если тестировщик имеет опыт программирования, совместно с разработчиком)
Верификация и валидация, Selenium IDE
Критерии оптимизации
- Время загрузки сайта
- Работа сайта без js
- Прогрессивное улучшение
- Количество запросов к серверу
- Отказ от большого количества библиотек
- Шрифты и изображения - самые тяжёлые ресурсы (можно использовать тег picture)
- Нужно ли загружать кастомные шрифты? (Есть же много системных)
- Не стоит грузить шрифты, анимации, тяжелые картинки на mobile вообще (делаем @media на @font-face)
- Оптимизация изображений. SVG вместо png для декорирования. Встроенный в html svg-спрайт
- Минификация и конкатинация js и css
- Critical CSS & Load CSS (встроенный css в html для первых 1000px высоты страницы)
- Google page speed, GT-Metrix
- Web page test (speed index около 1000 это круто)
- Кеширование и Storage
Делить весь контент на три составляющие по значимсти:
-
Core content
Должно начать отображаться уже в первой секунде загрузки и содержаться в 14kB
Должно загружаться даже без JS и в старых браузерах
-
Enhancent
Улучшение
-
Leftovers
Необязательый, тяжёлый контент, которым можно пожертвовать (Аналитика, реклама, виджеты)
Если не загрузился полностью какой-либо этап, то не слеующий не грузится (реализация на JS)
Уже готовые реализации: