Ответ
Виды тестирования классифицируются по целям и уровню детализации. В своей работе я регулярно сталкиваюсь со следующими:
1. По уровню (пирамида тестирования):
- Модульное (Unit): Проверка отдельных функций или методов. Пишутся разработчиками или тестировщиками. Пример на Java/JUnit:
@Test public void testCalculateDiscount() { Cart cart = new Cart(); cart.addItem(new Item("Book", 100)); double discount = cart.calculateDiscount(); assertEquals(10.0, discount, 0.01); // Проверка скидки 10% } - Интеграционное: Проверка взаимодействия между модулями, сервисами или БД.
- Системное (End-to-End / E2E): Проверка работы всей системы как единого целого (например, через Selenium).
2. По целям:
- Функциональное: Проверка соответствия требованиям (Smoke, Регрессионное, Приемочное).
- Нефункциональное:
- Нагрузочное/Производительности: Оценка поведения под нагрузкой (использую JMeter, k6).
- Безопасность: Поиск уязвимостей (SQL-инъекции, XSS).
- Юзабилити: Удобство интерфейса для пользователя.
- Совместимость: Работа в разных браузерах, ОС, устройствах.
3. По степени автоматизации: Ручное, автоматизированное (автотесты на Python/pytest, Java/Selenium) и полуавтоматическое.
Ответ 18+ 🔞
Слушай, а давай я тебе про тестирование расскажу, но не как в этих скучных учебниках, а по-человечески. Вот сидишь ты, пишешь код, и кажется, что всё летает. А потом приходит этот самый момент «ёперный театр», когда всё накрывается медным тазом. Чтобы этого не было, мы, тестировщики, и существуем, со своим арсеналом.
В общем, виды тестирования — это как инструменты в ящике. Одним гвоздь забить, другим — систему целиком проверить, чтобы она не развалилась, когда пользователи налетят, как гомосеки на халявный бар.
1. По уровню, или, как умные говорят, «пирамида».
-
Модульное (Unit): Это когда ты берешь одну маленькую функцию и начинаешь её вздрачивать со всех сторон. Типа, «а что если сюда ноль передать? А отрицательное число? А строку, ты чё, дурак?». Часто разработчики сами это пишут, но иногда и мы подключаемся. Смотри, пример:
@Test public void testCalculateDiscount() { Cart cart = new Cart(); cart.addItem(new Item("Book", 100)); double discount = cart.calculateDiscount(); assertEquals(10.0, discount, 0.01); // Ждём скидку 10%, а не хуй с горы }Вот тут мы проверяем, что корзина не обманывает и скидку считает правильно. Если тест падает — сразу понятно, где искать пиздопроебибну.
-
Интеграционное: А вот это уже интереснее. Тут мы смотрим, как эти самые модули друг с другом общаются. Один сервис данные шлёт, другой их принимает, третий в БД пишет. И вот тут часто вылезает, что один другому впендюрил не тот формат данных, и всё, приехали. Доверия ебать ноль между компонентами, пока не проверишь.
-
Системное (E2E): Это уже полный овердохуища тест. Представь: ты открываешь сайт, логинишься, добавляешь товар в корзину, оплачиваешь — и всё это делает скрипт, например, на Selenium. Проверяем, что вся цепочка работает. Медленно, хрупко, но если проходит — можно выдохнуть. Почти.
2. По целям. Тут два больших лагеря.
- Функциональное: Самое очевидное. Программа делает то, что должна? Соответствует требованиям? Тут у нас и «дымовое» (smoke) — быстрая проверка, что система вообще запустилась, а не пизда рулю. И регрессионное — чтобы новая фича не сломала то, что работало сто лет. И приёмочное — когда заказчик говорит «да, ок, я это хочу».
- Нефункциональное: А вот тут начинается магия. Программа-то может работать, но как?
- Нагрузочное: А что будет, если не 10 человек зайдут, а 10 000? Не ляжет ли всё, как смерд пердящий? Для этого юзаем JMeter, k6 — нагружаем и смотрим, где трещит.
- Безопасность: Самый любимый пункт для параноиков. Ищем дыры: SQL-инъекции (чтобы какой-нибудь распиздяй не сломал базу), XSS (чтобы в чужих браузерах скрипты не выполнялись). Подозрение ебать чувствую ко всем полям ввода.
- Юзабилити: А удобно ли пользоваться? Кнопки не с хуем в пальто размером? Меню логичное? Часто самый субъективный и спорный вид.
- Совместимость: А в Хроме работает? А в этом старом Firefox? А на телефоне бабки? Вот тут и выясняется, что твой шедевр выглядит как манда с ушами на Internet Explorer.
3. По автоматизации. Тут всё просто.
- Ручное: Берем руки, глаза, мозг и начинаем тыкать. Медленно, зато можно найти неочевидные хитрые жопы.
- Автоматизированное: Пишем скрипты (на Python/pytest, Java/Selenium), которые всё делают за нас. Быстро, можно гонять хоть каждую ночь. Но написать их — тоже ебушки-воробушки.
- Полуавтоматическое: Что-то делает скрипт, а что-то — человек. Компромисс, короче.
Вот так, чувак. Без этого всего выкатывать фичу — это как идти по охуенно тонкому льду. Может, пронесёт, а может, и вилкой в глаз.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶