Ответ
Абстракция — это принцип объектно-ориентированного программирования, который позволяет скрывать сложную внутреннюю реализацию объекта, предоставляя пользователю (другому коду) только его существенные характеристики и поведение через четко определенный интерфейс.
Пример в контексте тестирования: При написании автотестов мы часто используем абстракцию для создания Page Object Model (POM). Сложная логика поиска элементов и взаимодействия с ними скрывается за простыми методами.
// Абстрактный класс или интерфейс, определяющий контракт для страницы
public abstract class BasePage {
protected WebDriver driver;
public BasePage(WebDriver driver) {
this.driver = driver;
}
// Абстрактный метод, который должен быть реализован для проверки загрузки конкретной страницы
public abstract boolean isPageLoaded();
// Конкретный метод, предоставляющий общую функциональность
public String getPageTitle() {
return driver.getTitle();
}
}
// Конкретная реализация, скрывающая детали локаторов и действий
public class LoginPage extends BasePage {
private By usernameField = By.id("username");
private By passwordField = By.id("password");
private By submitButton = By.id("submit");
public LoginPage(WebDriver driver) {
super(driver);
}
@Override
public boolean isPageLoaded() {
return driver.findElement(submitButton).isDisplayed();
}
// Публичный метод — простая абстракция для действия "выполнить вход"
public HomePage login(String user, String pass) {
driver.findElement(usernameField).sendKeys(user); // Сложность скрыта
driver.findElement(passwordField).sendKeys(pass);
driver.findElement(submitButton).click();
return new HomePage(driver);
}
}
Преимущества для QA-инженера:
- Упрощение тестов: Тестовые сценарии становятся читаемыми:
loginPage.login("user", "pass"). - Устойчивость к изменениям: Если изменится локатор поля
username, правку нужно внести только в одном месте — в классеLoginPage. - Переиспользование кода: Общая логика (например, ожидание элемента) выносится в базовый класс.
- Четкое разделение ответственности: Тест-код занимается бизнес-сценариями, а Page Object — техническим взаимодействием с UI.
Видео-ответы
▶
Джун был тимлидом, разрабатывал телеграм ботов и стал миддлом? / Техсобес Middle Python Developer
▶
Открытое интервью на Middle Go-разработчика
▶
РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА BACKEND РАЗРАБОТЧИКА ПОЛУЧИЛ ЗП 280К ЗАВАЛИВ ПОЛОВИНУ ТЕХНИЧЕСКИХ ВОПРОСОВ
▶
Джун-самоучка получил оффер всего за день? / Техсобес Junior Python Developer / Mock interview
▶
Тестовое интервью Фёдора на позицию Junior Python-разработчик
▶
Собеседование Java Junior | История джуна который смог | Мои первые собеседования | Jetbulb
▶
Собеседование Java Junior | Артем М. vs. Максим Добрынин | Jetbulb
▶
Flutter. Открытое собеседование
▶
Техническое интервью Java Developer - Артем Никулин
▶
Техническое интервью Java Developer - Михаил Кончиц
▶
Тестовое собеседование Java разработчика #12 - Эдвард Левин