← Тестирование ПО: профессия QA с нуля
Lesson
Урок 3. Переходы состояний и (обзорно) покрытие операторов/ветвей
Проектировать проверки по диаграмме переходов состояний и понимать идею покрытия операторов и ветвей.
Переходы состояний и покрытие кода
Автоматы состояний и белый ящик
Многие системы можно описать как конечный автомат: набор состояний, события, которые вызывают переходы между ними. Тестирование переходов состояний строится на диаграмме: рисуем состояния (например, «Вышел из системы», «Авторизован», «Заблокирован»), события (ввод верных данных, ввод неверных данных, нажатие «Выйти») и стрелки-переходы.
Валидные переходы — те, что предусмотрены системой: ввод верного пароля переводит пользователя из «Вышел из системы» в «Авторизован». Невалидные переходы — попытки перейти туда, куда система перехода не предусматривает: попытка вернуться в «Авторизован» из «Заблокирован» напрямую, без разблокировки администратором. Тестировщик проверяет и те, и другие, чтобы убедиться: система реагирует правильно и не позволяет лишних переходов.
Обзорно о белом ящике. Когда у тестировщика есть доступ к коду, он может применять метрики покрытия. Покрытие операторов (statement coverage) — каждая строка кода выполнена хотя бы раз. Покрытие ветвей (branch coverage) — каждая ветка условия if прошла хотя бы по истинному и по ложному пути. Покрытие ветвей строже: если в коде есть if без else, одного теста недостаточно — нужны минимум два, чтобы условие выполнилось и не выполнилось. На этом курсе мы не пишем код, но понимать разницу важно для общения с разработчиками и чтения отчётов о покрытии.
Lesson notes
Автоматы состояний и белый ящик
Многие системы можно описать как конечный автомат: набор состояний, события, которые вызывают переходы между ними. Тестирование переходов состояний строится на диаграмме: рисуем состояния (например, «Вышел из системы», «Авторизован», «Заблокирован»), события (ввод верных данных, ввод неверных данных, нажатие «Выйти») и стрелки-переходы.
Валидные переходы — те, что предусмотрены системой: ввод верного пароля переводит пользователя из «Вышел из системы» в «Авторизован». Невалидные переходы — попытки перейти туда, куда система перехода не предусматривает: попытка вернуться в «Авторизован» из «Заблокирован» напрямую, без разблокировки администратором. Тестировщик проверяет и те, и другие, чтобы убедиться: система реагирует правильно и не позволяет лишних переходов.
Обзорно о белом ящике. Когда у тестировщика есть доступ к коду, он может применять метрики покрытия. Покрытие операторов (statement coverage) — каждая строка кода выполнена хотя бы раз. Покрытие ветвей (branch coverage) — каждая ветка условия if прошла хотя бы по истинному и по ложному пути. Покрытие ветвей строже: если в коде есть if без else, одного теста недостаточно — нужны минимум два, чтобы условие выполнилось и не выполнилось. На этом курсе мы не пишем код, но понимать разницу важно для общения с разработчиками и чтения отчётов о покрытии.