В мире тестирования и обеспечения качества мы часто слышим слова Test Oracles и Test Heuristics, но что они собой представляют и как мы можем внедрить их в нашу повседневную деятельность по тестированию?
Давайте посмотрим на очень хорошее объяснение тестовых оракулов и тестовых эвристик от Катрина Клоки
Представьте, что я хочу съесть рассол. Мои соленья хранятся в большой стеклянной банке. В моем доме последним, кто ел маринованные огурцы, был мой муж. Он плотно закрыл банку. С первой попытки мне не удалось его открыть.
Что мне делать дальше?
Я проверяю, поворачиваюсь ли я влево, чтобы ослабить крышку, и пытаюсь снова. Затем я беру кухонное полотенце, чтобы лучше удерживать его при скручивании крышки банки. Наконец, в некотором разочаровании, я иду и ищу своего мужа. Он успешно открывает банку.
Когда вы сталкиваетесь с банкой, которая не открывается, я знаю, что есть ряд вещей, которые стоит попробовать. Это моя эвристика открытия банки. Когда меня просят протестировать приложение, я знаю, что есть ряд вещей, которые стоит попробовать. Это мои тестовые эвристики.
Эвристика - это просто основанные на опыте техники решения проблем, обучения и открытия. Там, где исчерпывающий поиск нецелесообразен, используются эвристические методы, чтобы ускорить процесс поиска удовлетворительного решения. Примеры этого метода включают использование эмпирического правила, обоснованного предположения, интуитивного суждения или здравого смысла.
Пример:
Предположим, вы тестируете веб-сайт электронной коммерции. Страница результатов поиска большинства веб-сайтов электронной коммерции содержит фильтры и функции сортировки. Благодаря многолетнему опыту тестирования веб-сайтов электронной коммерции я пришел к выводу, что комбинирование фильтров и параметров сортировки может выявить интересные ошибки, как это происходило много раз, поэтому в моем следующем проекте я интуитивно протестирую некоторые сценарии. связанных с объединением фильтров и опций сортировки.
Представьте, что я иду обедать с другом. Я захожу в ресторан в 12 часов четверга. После часа наслаждения едой я выхожу из ресторана в 13:00 в пятницу. Хотя я пережил всего один час, мир вокруг меня изменился на день.
Как я узнаю, что здесь проблема?
На мой мобильный телефон может приходить несколько уведомлений от друзей и родственников, которым интересно, где я. У меня может быть парковочный талон. Я могу заметить, что кто-то читает пятничную газету.
Есть несколько способов определить, что я пропустил день своей жизни. Это мои оракулы, путешествующие во времени. Есть несколько способов, которыми я могу определить, что обнаружил ошибку в программном приложении. Это мои тестовые оракулы.
Оракулы - это просто принцип или механизм, с помощью которого мы распознаем проблему. Тестовые оракулы - это в основном ваши ожидаемые результаты.
Пример:
Предположим, вы тестируете функцию входа на веб-сайт. Во-первых, вы можете проверить действительное имя пользователя и действующий пароль и ожидать чтобы увидеть либо перенаправление на страницу моей учетной записи, либо перенаправление на страницу до входа в систему. Однако после того, как вы попытаетесь войти в систему и увидите ответ с ошибкой 500, вы знать что что-то пошло не так.
И тестовые оракулы, и тестовые эвристики жизненно важны, когда дело доходит до исследовательского тестирования в гибкой среде. Когда у нас нет достаточно времени для создания тестовых примеров, а продукт постоянно развивается, мы не можем полагаться только на заранее разработанные тестовые сценарии, мы должны использовать наши знания предметной области (Test Oracles) и предыдущий опыт тестирования (Test Heuristics ), чтобы иметь возможность быстро разрабатывать и выполнять тесты одновременно, одновременно изучая продукт.