Один из часто встречающихся вопросов на собеседовании на должность тестировщика – о классах эквивалентности и граничных значениях. В этой статье разберемся, как на него отвечать.
Один из часто встречающихся вопросов на собеседовании на должность тестировщика – о классах эквивалентности и граничных значениях. В этой статье разберемся, как на него отвечать.
Оглавление
ToggleТестировщик должен быть готов ответить на вопросы «Что такое граничные значения?» и «Что такое классы эквивалентности?». Их задают про одну из ключевых техник в QA. Понимание классов эквивалентности и граничных условий позволяет делать тестирование более эффективным.
Классы эквивалентности – это разбиение множества вводимых данных на отдельные подмножества, с которыми функционал ПО должен работать одинаково.
Например, посетители продуктового Интернет-магазина могут быть разного возраста. Но при покупке спиртного они разбиваются на 2 подмножества: младше 18 лет и старше. Для первых (тех, кто младше 18 лет) функционал магазина должен запретить приобретение алкогольных напитков, для вторых такого запрета нет.
Классы эквивалентности очень помогают тестировщикам тем, что экономят ресурсы тестирования. Достаточно проверить всего один элемент, а не все элементы из класса.
В нашем примере – можно проверить, что функционал запретит покупку спиртного, если указать, например, 10 лет. Значит, и для других значений возрастов до 18 – Интернет-магазин сработает так же. Вместо 18 тестов достаточно сделать 1 – это серьезный выигрыш.
Техника классов эквивалентности сокращает количество тестов в десятки и сотни раз. Вместо того, чтобы проверить, как поведет себя Интернет-магазин при введении, например, 100 возрастов, нам достаточно попробовать 2 – по одному из каждого класса, т.е. в 50 раз меньше.
С точки зрения логики программы, нет разницы между введением, например, 10 или 15 лет, в обоих случаях ПО должно сработать одинаково – запретить продажу алкоголя. Корректная проверка на одном значении позволит нам утверждать, что все значения из соответствующего класса эквивалентности будут обработаны так же корректно.
Граничные условия – это то значение, по которому идет разбиение на классы эквивалентности. Например, в нашем случае граничное значение – это 18.
Могут быть и другие случаи. Например, процент скидки на билеты авиакомпании в зависимости от количества совершенных полетов за год – 10, 20, 30, 50, 75 и 100.
Потому что граничные условия – это места с повышенным риском ошибки программиста, а, следовательно, возникновения дефекта ПО. Программа здесь должна изменить метод работы, а это возможно только программированием (изменением кода).
Разработчик потенциально мог ошибиться при кодировании этого условия, поэтому это место как раз должен проверить тестировщик.
Надо проверить по одному значению из каждого класса эквивалентности плюс каждое граничное условие. В нашем примере про требование невозможности продажи алкоголя несовершеннолетним получается 3 проверки (например, 10, 50 и 18 лет).
Получается, что 3 проверками закрываются все многообразие возрастов.
С помощью этих вопросов проверяют, что кандидат умеет системно подойти к тестированию (а не делать его абы как).
Допустим, ему дадут задание с условиями на вводимые параметры и попросят написать тесты. Тогда кандидат может их составить, основываясь на данном методе. Тем самым он докажет, что его тестов достаточно для покрытия всего диапазона параметров.
Граничные значения и классы эквивалентности – одна из техник тест-дизайна. Она позволяет значительно сэкономить на количестве проверок. На собеседовании QA-специалисту могут дать задачу на классы эквивалентности и граничные условия, чтобы посмотреть, насколько системно он умеет тестировать.
Автор Михаил Кулешов
Михаил, профессиональный партнерский маркетолог, является основателем компании South Media OÜ, которая была создана в 2018 году и базируется в Таллинне. С 2016 года Михаил уехал из Финляндии и жил как настоящий «цифровой кочевник» в IT-индустрии, путешествуя по миру только с ноутбуком. Михаил работает и пишет статьи, связанные с IT-индустрией.
© Copyright 2023 Testirovshik.com