Ответ
Тестирование, связанное с изменениями, — это совокупность методов проверки программного обеспечения, которые выполняются специально в ответ на внесенные изменения в код, конфигурацию или окружение. Его главная цель — убедиться, что изменения работают корректно и не нарушили существующую функциональность.
Основные виды такого тестирования:
| Вид тестирования | Цель | Когда выполняется |
|---|---|---|
| Повторное тестирование (Re-testing) | Проверить, что конкретный исправленный дефект больше не воспроизводится. | После получения фикса от разработчика. |
| Регрессионное тестирование | Убедиться, что новые изменения не вызвали непреднамеренных ошибок в уже работающих частях системы. | После любых изменений (новый функционал, фиксы, обновления библиотек). |
| Дымовое (Smoke) тестирование | Быстрая проверка базовой работоспособности критически важных функций после сборки. | После каждой новой сборки (build) для принятия решения о дальнейшем глубоком тестировании. |
| Санитарное (Sanity) тестирование | Узконаправленная проверка конкретной функции или области, которая была изменена. | После регрессионного тестирования или для проверки небольшого фикса. |
| Сборочное (Build Verification) тестирование | Проверить целостность и установку новой сборки. | При развертывании сборки на тестовое окружение. |
Практический пример в конвейере CI/CD:
- Разработчик пушит фикс для бага
#JIRA-123(логин падал при пустом пароле). - CI-сервер (Jenkins/GitLab CI) запускает сборку и автоматические тесты.
-
Автоматизированное тестирование:
# test_login.py (Re-testing + Regression) def test_fix_empty_password_login(): # ПРЯМОЙ РЕТЕСТ: Проверяем исправленный конкретный баг response = login(username="test_user", password="") assert response.status_code == 400 # Ожидаем корректную ошибку, а не падение assert "Password is required" in response.text def test_regression_existing_login_flows(): # РЕГРЕССИЯ: Проверяем, что фикс не сломал другие сценарии # Успешный логин response = login(username="test_user", password="correct_pass") assert response.status_code == 200 # Логин с неверным паролем response = login(username="test_user", password="wrong") assert response.status_code == 401 - QA-инженер после успешных автотестов проводит ручное санитарное тестирование формы логина, а затем дымовое тестирование ключевых сценариев приложения.
Ключевой принцип: Эффективное тестирование изменений требует хорошего покрытия автотестами (unit, integration) и четкого понимания области влияния (impact analysis) каждого изменения.
Ответ 18+ 🔞
А, вот это тема, про которую можно поговорить с чувством, с толком, с расстановкой, а главное — с матом! Речь про тестирование, когда что-то поменяли. Ну, знаешь, эта вечная история: «ой, мы тут баг поправили» или «фичу новую запилили». И все, пиздец, начинается! Надо же проверить, не наворочали ли мы такого, что потом вся система встанет раком.
Если по-простому, то это когда ты специально бегаешь за каждым изменением, как уборщица с тряпкой за пьяным гопником, и вытираешь за ним лужи. Главная задача — убедиться, что новое говно работает, а старое, которое уже год как работало, не перестало это делать из-за твоих кривых рук.
Вот основные способы, как мы эту проверку организуем, чтобы не охуеть с результата:
| Вид проверки | Зачем это надо? | Когда это делаем? |
|---|---|---|
| Повторный тест (Re-testing) | Убедиться, что конкретный, только что залатанный баг, действительно приказал долго жить. Чтобы он больше не вылезал, как хуй из штанов. | Как только разработчик, весь такой довольный, говорит «пофиксил». |
| Регрессионное тестирование | Это святое! Проверить, что твои правки не пошли ебашить всё подряд. Чтобы новая кнопка не отключила, блядь, расчёт зарплаты. | После любых изменений, хоть фича, хоть фикс, хоть библиотеку обновили. |
| Дымовое (Smoke) тестирование | Быстро-быстро пнуть систему, посмотреть — дымится или нет. Если не взорвалось на старте, можно копать дальше. | После каждой новой сборки, чтобы решить, стоит ли на неё тратить время или это говно даже не запускается. |
| Санитарное (Sanity) тестирование | Узкая проверка именно той дыры, куда ты лез. Не проверять всю квартиру, а посмотреть, закрыл ли ты тот самый сортир, из которого течёт. | После регрессии или когда фикс мелкий, и глубоко лезть нет смысла. |
| Сборочное (Build Verification) тестирование | Проверить, а установилась ли эта новая сборка вообще? Не рассыпалась ли она в пыль при развёртывании? | Когда выкатываем свежеиспечённую сборку на тестовый сервер. |
Как это выглядит в жизни, на примере:
- Разработчик такой: «Всё, ребят, я починил баг
#JIRA-123! Там логин падал, если пароль пустой». Пушит код. - CI-сервер (Jenkins или там GitLab) видит это безобразие, хватается за голову и запускает сборку и все автотесты.
-
Автоматика начинает свою волшебную работу:
# test_login.py (Re-testing + Regression) def test_fix_empty_password_login(): # ПРЯМОЙ РЕТЕСТ: Сейчас проверим этого ублюдка, которого только что починили. response = login(username="test_user", password="") assert response.status_code == 400 # Должна быть ошибка, а не падение в тартарары assert "Password is required" in response.text def test_regression_existing_login_flows(): # РЕГРЕССИЯ: А теперь главный вопрос — не сломал ли я мимоходом что-нибудь ещё? # Нормальный логин должен работать response = login(username="test_user", password="correct_pass") assert response.status_code == 200 # Логин с левым паролем — должен отказывать response = login(username="test_user", password="wrong") assert response.status_code == 401 - Тестировщик, увидев, что автотесты зелёные, выдыхает. Но ненадолго. Потом проводит ручную санитарную проверку именно формы логина: «А ну-ка, сука, введу пустой пароль... так, ок, ошибку показывает, не падает. Красава». А потом бегло, дымовым тестом, пробегается по основным разделам приложения: «Главная открылась, в каталог зашёл, корзина не рассыпалась... вроде живое».
И главный принцип, блядь, без которого всё это — мартышлюшка и показуха: чтобы не сойти с ума, нужны хорошие автотесты, которые отловят половину проблем сами, и трезвая оценка — а на что ещё могло повлиять это изменение? Потому что если ты починил кнопку входа, а у тебя сломался экспорт отчётов — это, ёпта, сюрприз, от которого волосы дыбом встают.