Для тестирования существуют разные подходы, которые дают разные результаты. Чтобы ответить на ваш вопрос, я перечислю их ниже и затем вернусь к ответу.
Модульное тестирование
- Они используются для тестирования очень маленьких частей вашего приложения.
- «Единица» - это отдельный класс, а не комбинация классов.
- При модульном тестировании любое взаимодействие с другими классами, как правило, проверяется, поэтому проверяется только сам «модуль»
- Модульный тест выполняется очень быстро
- Поскольку модульные тесты бывают быстрыми, они часто используются для тестирования всех путей (например, счастливый путь, альтернативный путь и пути исключений)
- Обычно делается в phpunit
- Нет взаимодействия с базой данных
Интеграционное тестирование
- Они используются для проверки взаимодействия между различными единицами
- Должно быть проверено только несколько путей, так как количество путей значительно увеличивается при использовании большего количества модулей (например, класс A имеет 3 пути, класс B имеет 4 пути, поэтому 100% охват в интеграционных тестах должен охватывать 12 путей)
- Все еще довольно быстро
- Обычно делается в phpunit
- Может иметь взаимодействие с базой данных
Тестирование функций
- Они используются для тестирования одной функции
- Обычно проверяется только счастливый путь (может быть, еще один)
- Обычно взаимодействует с базой данных
- Довольно медленно
- Может иметь несколько таких, но не слишком много
- Обычно делается в Behat
Тестирование браузера
- Они используются для тестирования функции от начала до конца
- Имитирует, как реальный пользователь будет посещать ваше приложение
- Может использоваться для проверки работоспособности функции в разных браузерах
- В зависимости от оснастки можно записывать видео реальных движений мыши / нажатий клавиш
- Очень медленно
- Следует использовать только несколько избранных
- Обычно делается в сумерках (для Laravel)
Заключение
Чтобы сделать вывод, что уровни тестирования имеют различное использование, связанное со скоростью тестирования, охватом тестирования и размером тестируемого кода Что касается тестирования функций по сравнению с тестированием в браузере, то разница будет заключаться в том, чтобы фактически имитировать взаимодействие пользователей с вашим приложением по сравнению с машиной, выполняющей всю работу, для проверки совместимости между различными браузерами и проверки работоспособности функции от начала до конца.