Ответ
Абстракция — это принцип объектно-ориентированного программирования, который позволяет скрывать сложную внутреннюю реализацию объекта, предоставляя пользователю (другому коду) только его существенные характеристики и поведение через четко определенный интерфейс.
Пример в контексте тестирования: При написании автотестов мы часто используем абстракцию для создания 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.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶