Пример на двухфакторную аутентификацию.
Предположим, чтобы войти в систему, пользователю нужно ввести сначала логин и пароль, а затем еще подтвердить свою личность присланным в смс кодом.
Какие возможны сценарии:
1. Правильный логин и правильный пароль.
2. Правильный логин, неправильный пароль.
3. Неправильный логин, правильный пароль.
4. Неправильный логин, неправильный пароль.
Первый из этих сценариев сопровождается либо правильным, либо неправильным вводом смс-кода, итого у нас получается 5 тестов. При этом только один из сценариев приведет к положительному результату (пользователь успешно авторизуется), а остальные закончатся неудачей.
Однако, может быть так, что система выдает разные сообщения в зависимости от того, на каком этапе была допущена ошибка, скажем: invalid login, invalid password. Соответственно, групп потребуется больше, а таблица станет обширнее.
#техникатестдизайна #таблицапринятиярешений #таблицарешений
Предположим, чтобы войти в систему, пользователю нужно ввести сначала логин и пароль, а затем еще подтвердить свою личность присланным в смс кодом.
Какие возможны сценарии:
1. Правильный логин и правильный пароль.
2. Правильный логин, неправильный пароль.
3. Неправильный логин, правильный пароль.
4. Неправильный логин, неправильный пароль.
Первый из этих сценариев сопровождается либо правильным, либо неправильным вводом смс-кода, итого у нас получается 5 тестов. При этом только один из сценариев приведет к положительному результату (пользователь успешно авторизуется), а остальные закончатся неудачей.
Однако, может быть так, что система выдает разные сообщения в зависимости от того, на каком этапе была допущена ошибка, скажем: invalid login, invalid password. Соответственно, групп потребуется больше, а таблица станет обширнее.
#техникатестдизайна #таблицапринятиярешений #таблицарешений
👍1
#FYI
Обзор пирамид тестирования - примеры из книг по тестированию, методологиям разработки:
http://www.testingreferences.com/here_be_pyramids.php
Основание пирамиды составляет модульное тестирование (unit tests) – процесс проверки отдельных модулей исходного кода.
За ним следует интеграционное тестирование (integration tests) – на этом этапе отдельные программные модули тестируются в группах.
Далее следует приемочное тестирование (acceptance tests), определяющее пригодность продукта к предстоящей эксплуатации. На вершине пирамиды обосновалось тестирование пользовательского интерфейса (UI tests), которое может проводиться как автоматизированно, так и вручную.
Над вершиной часто располагают ручное тестирование в форме облака, поскольку оно не считается неотъемлемой частью пирамиды, хоть и взаимосвязано с ней. Данная пирамида считается типичной для автоматизации тестирования, хотя может быть перевернута и модифицирована в зависимости от специфики работ.
Обзор пирамид тестирования - примеры из книг по тестированию, методологиям разработки:
http://www.testingreferences.com/here_be_pyramids.php
Основание пирамиды составляет модульное тестирование (unit tests) – процесс проверки отдельных модулей исходного кода.
За ним следует интеграционное тестирование (integration tests) – на этом этапе отдельные программные модули тестируются в группах.
Далее следует приемочное тестирование (acceptance tests), определяющее пригодность продукта к предстоящей эксплуатации. На вершине пирамиды обосновалось тестирование пользовательского интерфейса (UI tests), которое может проводиться как автоматизированно, так и вручную.
Над вершиной часто располагают ручное тестирование в форме облака, поскольку оно не считается неотъемлемой частью пирамиды, хоть и взаимосвязано с ней. Данная пирамида считается типичной для автоматизации тестирования, хотя может быть перевернута и модифицирована в зависимости от специфики работ.
👍2
Статьи:
О пирамидах в тестировании и реальных сложностях автоматизатора - https://otus.ru/nest/post/592/
Пирамида тестов (тестирования) - https://www.qastart.by/mainterms/64-piramida-testov-testirovaniya
О пирамидах в тестировании и реальных сложностях автоматизатора - https://otus.ru/nest/post/592/
Пирамида тестов (тестирования) - https://www.qastart.by/mainterms/64-piramida-testov-testirovaniya
Техника тест-дизайна "#Эквивалентноеразбиение".
Разделение на #классыэквивалентности – это техника, при которой диапазон возможных входных значений разделяется на группы значений эквивалентных по воздействию на систему.
Имеются три возрастных группы:
1️⃣старше 0 и младше 18 лет,
2️⃣старше 18 и младше 45 лет,
3️⃣старше 45 и младше 99 лет.
❗️ При этом главное требование:
в поле для ввода возраста помещается всего два символа, поэтому указать возраст более 99 лет технически невозможно.❗️
Тем более, есть еще недопустимые значения (спецсимволы, отрицательные числа, буквы и т.п.), ввод которых нужно проверить.
В данном случае не нужно писать 99 тестов для каждого возраста, хватит трёх значений: по одному для каждой возрастной группы (это и есть эквивалентное разбиение), например,
🖍12 лет,
🖍28 лет,
🖍66 лет.
Дополнительно можно ввести следующие проверки:
🖍если возраст человека превышает 99 лет.
🖍Буквы "ро"
🖍Спецсимволы "-#"
🖍Отрицательное число "-2"
🔴
🔶Шаги применения техники разделения на классы эквивалентности следующие:
🔸Определить классы эквивалентности. От правильности выполнения данного шага зависит эффективность предстоящего тестирования.
🔸Выбрать представителя каждого класса.
🔸Выполнить тесты.
‼️#Анализграничныхзначений – #техникатестдизайна, которая направлена на проверку поведения системы на граничных значениях входных данных (границах классов эквивалентности).
❗️Техника граничных значений основана на предположении, что большинство ошибок может возникнуть на границах эквивалентных классов. Она тесно связана с вышеописанной техникой эквивалентного разбиения, из-за чего часто используется с ней в паре.
❗️На каждой границе диапазона нужно проверить 3 значения: граничное значение, значения до и после границы.❗️
Для примера из предыдущего пункта границами будут являться значения 0, 18, 45 и 99.
❗️Граничными значениями будут -1, 0, 1, 17, 18, 19, 44, 45, 46, 98, 99, 100.❗️
‼️‼️‼️Из комментариев Инстаграма дополню, что 1 и 17 , 19 и 44, 46 и 98 относятся к одному классу эквивалентности, и , например, 17, 44 и 98 вероятно будут избыточными
-1 и 100 на границе,
100 по условию требования - недопустимое значение,
а -1 негативная проверка, о которой не нужно забывать.
🔶Алгоритм использования техники граничных значений следующий:
🔸Определить классы эквивалентности.
🔸Определить граничные значения для каждого класса (важно понимать к какому классу относится значение).
🔸Провести тесты по проверке значения до границы, на границе и сразу после границы.
Разделение на #классыэквивалентности – это техника, при которой диапазон возможных входных значений разделяется на группы значений эквивалентных по воздействию на систему.
Имеются три возрастных группы:
1️⃣старше 0 и младше 18 лет,
2️⃣старше 18 и младше 45 лет,
3️⃣старше 45 и младше 99 лет.
❗️ При этом главное требование:
в поле для ввода возраста помещается всего два символа, поэтому указать возраст более 99 лет технически невозможно.❗️
Тем более, есть еще недопустимые значения (спецсимволы, отрицательные числа, буквы и т.п.), ввод которых нужно проверить.
В данном случае не нужно писать 99 тестов для каждого возраста, хватит трёх значений: по одному для каждой возрастной группы (это и есть эквивалентное разбиение), например,
🖍12 лет,
🖍28 лет,
🖍66 лет.
Дополнительно можно ввести следующие проверки:
🖍если возраст человека превышает 99 лет.
🖍Буквы "ро"
🖍Спецсимволы "-#"
🖍Отрицательное число "-2"
🔴
На практике последние три проверки негативны, а а проверка выше 99 невозможна, поскольку в поле возраста невозможно ввести более двух знаков, а про буквы и спецсимволы не следует забывать.
🔷Все значения одного класса эквивалентности одинаково влияют на систему, т.е. допустимые значения система принимает, а недопустимые – нет. В поле должен быть запрещен ввод недопустимых значений.🔷🔶Шаги применения техники разделения на классы эквивалентности следующие:
🔸Определить классы эквивалентности. От правильности выполнения данного шага зависит эффективность предстоящего тестирования.
🔸Выбрать представителя каждого класса.
🔸Выполнить тесты.
‼️#Анализграничныхзначений – #техникатестдизайна, которая направлена на проверку поведения системы на граничных значениях входных данных (границах классов эквивалентности).
❗️Техника граничных значений основана на предположении, что большинство ошибок может возникнуть на границах эквивалентных классов. Она тесно связана с вышеописанной техникой эквивалентного разбиения, из-за чего часто используется с ней в паре.
❗️На каждой границе диапазона нужно проверить 3 значения: граничное значение, значения до и после границы.❗️
Для примера из предыдущего пункта границами будут являться значения 0, 18, 45 и 99.
❗️Граничными значениями будут -1, 0, 1, 17, 18, 19, 44, 45, 46, 98, 99, 100.❗️
‼️‼️‼️Из комментариев Инстаграма дополню, что 1 и 17 , 19 и 44, 46 и 98 относятся к одному классу эквивалентности, и , например, 17, 44 и 98 вероятно будут избыточными
-1 и 100 на границе,
100 по условию требования - недопустимое значение,
а -1 негативная проверка, о которой не нужно забывать.
🔶Алгоритм использования техники граничных значений следующий:
🔸Определить классы эквивалентности.
🔸Определить граничные значения для каждого класса (важно понимать к какому классу относится значение).
🔸Провести тесты по проверке значения до границы, на границе и сразу после границы.
👍2
А/В тестирование — это метод исследования, при котором разным группам посетителей сайта одновременно показаны две версии одной и той же веб-страницы для определения, какая из них работает эффективнее.
Один из самых популярных примеров A/B тестирования — 41 оттенок синего, когда Google не могли решить, какой из двух синих цветов они предпочитают для определенного элемента дизайна. По некоторым данным, они использовали A/B тестирование для оценки привлекательности 41 различных оттенков синего.
Познавательная и интересная статья: https://m.habr.com/ru/company/otus/blog/546168/
Один из самых популярных примеров A/B тестирования — 41 оттенок синего, когда Google не могли решить, какой из двух синих цветов они предпочитают для определенного элемента дизайна. По некоторым данным, они использовали A/B тестирование для оценки привлекательности 41 различных оттенков синего.
Познавательная и интересная статья: https://m.habr.com/ru/company/otus/blog/546168/
Forwarded from Серьезный тестировщик 🐞
Видеокурс: Тестирование ПО для начинающих
1. Введение
2. Тестирование ПО
3. Модели разработки ПО
4. Документация тестирования
5. Статистическое тестирование
6. Техники тест дизайна
7. Методолгоии разработки
8. Развитие и карьера
9. Полезные инструменты
10. Заключение
1. Введение
2. Тестирование ПО
3. Модели разработки ПО
4. Документация тестирования
5. Статистическое тестирование
6. Техники тест дизайна
7. Методолгоии разработки
8. Развитие и карьера
9. Полезные инструменты
10. Заключение
Domain testing
Домен: Набор, из которого могут быть выбраны корректные входные и/или выходные данные.
Доменное тестирование (domain testing, domain analysis) — техника создания эффективных и результативных тест кейсов в случае, когда несколько переменных могут или должны быть протестированы одновременно. – Определение доменного тестирования из «Тестирование программного обеспечения. Куликов"
Знания в предметной области играют ключевую роль в доменном тестировании
Отбор – ключевая идея данного тестирования. Из массива возможных тестов мы отбираем небольшое количество путем разбиения наборов в поднаборы (subdomains) и путем выбора одного или двух представителей из каждого поднабора (Сем Канер)
Лучшие 4 стратегии доменного тестирования
1. Выбор домена
2. Сгруппируйте входные данные в классы
3. Входные данные классов для тестирования
4. Проверка выходных данных
Доменное тестирование включает в себя:
✅декомпозицию
✅определение классов эквивалентности
✅анализ граничных значений
Если очертить подход к достижению цели доменного тестирования, то можно выделить следующие шаги:
✅Определить набор функций
✅Определить переменные
✅Разделить пространство значений на группы
✅Выбрать значения, представляющие каждую группу
✅Особое внимание обратить на граничные значения групп
✅Сформировать конечный набор «наиболее показательных» значений и провести тесты с их использованием
Пример,
Необходимо протестировать поле "Логин (ваш ИНН)"
В требованиях сказано, что значение "ИНН" должно состоять из строго из цифр. Ввод символов, отличных от цифр, невозможен.
Два условия:
1. Только цифры можно ввести в поле "Логин (ваш ИНН)"
2. Необходимо ввести строго 12 цифр
1. Определить классы эквивалентности для первого условия:
Цифры
Русские буквы (абвгдАБВГД…)
Латинские буквы (abcdeABCDE…)
Специальные символы (!@#%^&*()_+|}{":?<>/.,';][=\-`)
Символы пунктуации – «»“”‹›‘’–—§¶…•¿†¹²³<>−
Символы валют – ¢€£¤¥$
2. Определить классы эквивалентности для второго условия:
Равно 12 цифр
Не равно 12 цифр (больше или меньше)
Граничное условие:12 цифр
3. Выбрать представителя из каждого класса условия 1:
Цифры - 5, 7
Русские буквы (а, Д)
Латинские буквы (b, C)
Специальные символы # и пробел
Символы пунктуации «
Символы валют $
4. Выбрать представителя из каждого класса условия 2:
000000000000
167
1455555555557
На посте изображена таблица с входными данными для поля "Логин" и ожидаемыми результатами для сайта https://lkfl2.nalog.ru/lkfl/login
Домен: Набор, из которого могут быть выбраны корректные входные и/или выходные данные.
Доменное тестирование (domain testing, domain analysis) — техника создания эффективных и результативных тест кейсов в случае, когда несколько переменных могут или должны быть протестированы одновременно. – Определение доменного тестирования из «Тестирование программного обеспечения. Куликов"
Знания в предметной области играют ключевую роль в доменном тестировании
Отбор – ключевая идея данного тестирования. Из массива возможных тестов мы отбираем небольшое количество путем разбиения наборов в поднаборы (subdomains) и путем выбора одного или двух представителей из каждого поднабора (Сем Канер)
Лучшие 4 стратегии доменного тестирования
1. Выбор домена
2. Сгруппируйте входные данные в классы
3. Входные данные классов для тестирования
4. Проверка выходных данных
Доменное тестирование включает в себя:
✅декомпозицию
✅определение классов эквивалентности
✅анализ граничных значений
Если очертить подход к достижению цели доменного тестирования, то можно выделить следующие шаги:
✅Определить набор функций
✅Определить переменные
✅Разделить пространство значений на группы
✅Выбрать значения, представляющие каждую группу
✅Особое внимание обратить на граничные значения групп
✅Сформировать конечный набор «наиболее показательных» значений и провести тесты с их использованием
Пример,
Необходимо протестировать поле "Логин (ваш ИНН)"
В требованиях сказано, что значение "ИНН" должно состоять из строго из цифр. Ввод символов, отличных от цифр, невозможен.
Два условия:
1. Только цифры можно ввести в поле "Логин (ваш ИНН)"
2. Необходимо ввести строго 12 цифр
1. Определить классы эквивалентности для первого условия:
Цифры
Русские буквы (абвгдАБВГД…)
Латинские буквы (abcdeABCDE…)
Специальные символы (!@#%^&*()_+|}{":?<>/.,';][=\-`)
Символы пунктуации – «»“”‹›‘’–—§¶…•¿†¹²³<>−
Символы валют – ¢€£¤¥$
2. Определить классы эквивалентности для второго условия:
Равно 12 цифр
Не равно 12 цифр (больше или меньше)
Граничное условие:12 цифр
3. Выбрать представителя из каждого класса условия 1:
Цифры - 5, 7
Русские буквы (а, Д)
Латинские буквы (b, C)
Специальные символы # и пробел
Символы пунктуации «
Символы валют $
4. Выбрать представителя из каждого класса условия 2:
000000000000
167
1455555555557
На посте изображена таблица с входными данными для поля "Логин" и ожидаемыми результатами для сайта https://lkfl2.nalog.ru/lkfl/login
❤2
Доменное тестирование: признаки эквивалентности
Идея этого метода состоит в том, чтобы разделить набор условий тестирования на, которые можно считать одинаковыми (т. е. система должна обрабатывать их одинаково), таким образом, признаками эквивалентности можно считать (несколько тестов эквивалентны, если):
✅Они направлены на поиск одной и той же ошибки.
✅Если один из тестов обнаруживает ошибку, другие её тоже, скорее всего, обнаружат.
✅Если один из тестов НЕ обнаруживает ошибку, другие её тоже, скорее всего, НЕ обнаружат.
✅Тесты используют схожие наборы входных данных.
✅Для выполнения тестов мы совершаем одни и те же операции.
✅Тесты генерируют одинаковые выходные данные или приводят приложение в одно и то же состояние.
✅Все тесты приводят к срабатыванию одного и того же блока обработки ошибок («error handling block»).
✅Ни один из тестов не приводит к срабатыванию блока обработки ошибок («error handling block»).
Основная цель доменного тестирования — это предоставить стратегию по выбору минимального набора показательных тестов. Конечно, должен остаться не один тест, но минимум, при чем именно показательные тесты.
Плюсы и минусы доменного тестирования
Нужно признать, что Доменное тестирование имеет как достоинства так и недостатки, поэтому давайте их перечислим.
Плюсы:
🔅Обнаружение ошибок при минимальном количестве тестов.
🔅Интуитивно понятный, универсальный подход.
Минусы:
🔅Низкая вероятность обнаружения ошибок НЕ на граничных условиях.
🔅Низкая вероятность обнаружения ошибок в сложных взаимодействиях.
🔅Пространство значений часто бывает сложно формализовать.
И напоследок полезные трюки, которые можно применять при доменном тестировании и не только.
Делим или умножаем на два
✅Вводим в поле, не принимающее спецсимволы, полный набор таковых. Если что-то пошло не так, вводим половину, потом половину половины и т.д.
✅Если надо выяснить максимальную длину принимаемого текста, каждый раз удваиваем её. Когда нашли проблему, добавляем по ¼ от предыдущего успешного результата.
Читаем статьи:
Доменное тестирование (domain testing) – вид тестирования, направленный на анализ показательных значений и взаимосвязи элементов.
Функциональное и доменное тестирование
Тестирование домена
Идея этого метода состоит в том, чтобы разделить набор условий тестирования на, которые можно считать одинаковыми (т. е. система должна обрабатывать их одинаково), таким образом, признаками эквивалентности можно считать (несколько тестов эквивалентны, если):
✅Они направлены на поиск одной и той же ошибки.
✅Если один из тестов обнаруживает ошибку, другие её тоже, скорее всего, обнаружат.
✅Если один из тестов НЕ обнаруживает ошибку, другие её тоже, скорее всего, НЕ обнаружат.
✅Тесты используют схожие наборы входных данных.
✅Для выполнения тестов мы совершаем одни и те же операции.
✅Тесты генерируют одинаковые выходные данные или приводят приложение в одно и то же состояние.
✅Все тесты приводят к срабатыванию одного и того же блока обработки ошибок («error handling block»).
✅Ни один из тестов не приводит к срабатыванию блока обработки ошибок («error handling block»).
Основная цель доменного тестирования — это предоставить стратегию по выбору минимального набора показательных тестов. Конечно, должен остаться не один тест, но минимум, при чем именно показательные тесты.
Плюсы и минусы доменного тестирования
Нужно признать, что Доменное тестирование имеет как достоинства так и недостатки, поэтому давайте их перечислим.
Плюсы:
🔅Обнаружение ошибок при минимальном количестве тестов.
🔅Интуитивно понятный, универсальный подход.
Минусы:
🔅Низкая вероятность обнаружения ошибок НЕ на граничных условиях.
🔅Низкая вероятность обнаружения ошибок в сложных взаимодействиях.
🔅Пространство значений часто бывает сложно формализовать.
И напоследок полезные трюки, которые можно применять при доменном тестировании и не только.
Делим или умножаем на два
✅Вводим в поле, не принимающее спецсимволы, полный набор таковых. Если что-то пошло не так, вводим половину, потом половину половины и т.д.
✅Если надо выяснить максимальную длину принимаемого текста, каждый раз удваиваем её. Когда нашли проблему, добавляем по ¼ от предыдущего успешного результата.
Читаем статьи:
Доменное тестирование (domain testing) – вид тестирования, направленный на анализ показательных значений и взаимосвязи элементов.
Функциональное и доменное тестирование
Тестирование домена
🔥6