- Эквивалентное разбиение
- Введение в разделение эквивалентности
- Как работает разделение эквивалентности?
- Примеры эквивалентного разбиения
- Пример № 1
- Пример № 2
- Пример № 3
- Важность тестирования эквивалентности
- Вывод
- Рекомендуемые статьи
- MT1102: Линейная алгебра (введение в математику)
- Классы эквивалентных элементов и их свойства
- Пример
- Свойства классов эквивалентности
- Свойство 1
- Свойство 2
- Свойство 3
- Свойство 4
- Разбиение множества
- Примеры
- Тестирование областей определения или нечто большее, чем анализ граничных значений
- Классы эквивалентности
- Выбор значений
- Сочетания значений
Эквивалентное разбиение
Введение в разделение эквивалентности
Разделение по эквивалентности также можно назвать разделением по классу эквивалентности. В этом тестировании входные данные, предоставленные системе, делятся на разные группы, и ожидается, что они будут вести себя определенным образом. Чтобы проверить это, лучше выбрать один вход из каждой группы и разработать конкретные контрольные примеры. Это стратегия разработки тестового примера, которая используется в тестировании черного ящика. Это направлено на сокращение избыточных тестовых случаев. Это делается путем удаления тех тестовых случаев, которые дают одинаковый результат. Причина в том, что они не вызовут никаких новых дефектов в функциональности.
Как работает разделение эквивалентности?
Это тестирование включало тестирование только для одного условия для каждого создаваемого раздела. Причина этого заключается в том, что мы считаем, что все условия в одном разделе должны обрабатываться программным обеспечением одинаково. Это потому, что у нас есть предположение, что если одно условие работает для раздела, оно будет работать и для других условий. Это оставляет нам экономию наших усилий в тестировании. Если определенное условие не работает, то можно сделать вывод, что другие условия также не будут работать, и нет смысла проверять другие условия в этом разделе. Созданные разделы могут быть созданы для действительных данных, то есть для значений, которые могут быть приняты, а также для недействительных данных, что означает значения, которые должны быть отклонены. В разделе выбирается одно репрезентативное значение, которое охватывает все элементы в одном и том же разделе, которые можно рассмотреть. Должен быть выбран набор данных, который может действовать как условие ввода. Результат выполнения программы можно классифицировать как набор эквивалентных данных для всего этого раздела.
Примеры эквивалентного разбиения
Давайте посмотрим на несколько примеров, которые дадут нам представление о том, как работает эквивалентное разбиение.
Пример № 1
- Тестовые случаи для поля ввода, принимающего алфавиты от A до Z с использованием Equivalence Partitioning.
В тестовом примере должны быть все допустимые входные данные для этого раздела. Под этим мы подразумеваем выбор алфавита nay между A и Z. Если между этими 26 алфавитами будет выбран любой другой алфавит, результат даст нам те же результаты. Следовательно, мы можем сделать вывод, что для проверки этого условия достаточно одного входа.
- Входные данные, отличные от этих алфавитов, считаются неверными. Эти входные данные могут быть либо числовыми значениями, либо специальными символами.
Таким образом, вы можете классифицировать и разделять все возможные тестовые случаи, которые можно разделить на три класса. Значения в тестовых примерах, отличные от выбранных из любого класса, должны давать тот же результат. Из каждого входного класса выбирается один представитель, который помогает нам в разработке тестовых случаев. Значения тестовых наборов выбираются таким образом, чтобы наибольшее число значений было проверено, и одинаковые результаты должны быть получены для всех тестовых наборов, присутствующих в классе. Это может быть как для действительных, так и для недопустимых значений.
Пример № 2
Текстовое поле поддерживает только числовые символы, а их длина должна быть от 6 до 10 символов. Для этого условия может быть три раздела или класса, которые могут быть созданы. Первый раздел, в котором присутствуют числовые значения, имеет длину от 6 до 10. Это допустимое условие. Второй раздел, где присутствуют числовые значения, но они имеют длину от 0 до 5. Это недопустимое условие. Третий раздел, имеющий числовые значения, имеющие длину от 11 до 14. Это также недопустимое условие. При оценке этих разделов мы можем брать случаи из каждого из этих разделов и проверять все тестовые случаи, присутствующие в этих разделах. Если мы проверим одно условие для каждого из этих разделов, все случаи будут проверены для каждого раздела.
Пример № 3
Как и в предыдущих примерах, мы также можем проверять данные на наличие десятичных разрядов. Можно предположить, что мы рассматриваем либо ноль десятичных знаков, либо более двух десятичных знаков. Когда для этого приложения должны быть разработаны контрольные примеры, необходимо обеспечить охват всех трех разделов. Неверный раздел должен быть проверен хотя бы один раз. Мы можем выбрать для расчета процентов на сумму рупий. -10, 00, рупий 50, 00, рупий 280 и рупий 1354, 00. Если это не было упомянуто конкретно, есть вероятность, что один из них может быть пропущен из-за тестирования другого несколько раз. Разделение также может применяться к выходам.
Важность тестирования эквивалентности
Ниже приведены важные моменты для проверки эквивалентности:
- Эквивалентное тестирование является одним из эффективных способов подготовки тестовых случаев. Это тип тестирования «черного ящика», который в основном фокусируется на тестировании функциональности программного обеспечения. Проверка на эквивалентность сокращает количество контрольных примеров. Кроме того, это не ставит под угрозу тестовое покрытие программного обеспечения.
- Качество не подвергается риску, и усилие уменьшается из-за созданных разделов. Это важно, так как это экономит время, и можно без труда работать над общими тестовыми примерами, созданными для разделов или классов. Это важно для тестовых случаев, которые имеют огромное количество тестовых случаев, и это утомительно, чтобы проверить их.
- Это также обеспечивает тестовое покрытие, которое необходимо поддерживать и заботиться. Как только контрольные примеры созданы для действительных и недействительных входных данных, они могут быть проверены, и разделы будут иметь аналогичные результаты.
Вывод
Эквивалентное разделение — это способ разделения и разделения данных для эффективного тестирования. Разделенные наборы известны как разделы или классы. Разделение данных облегчает тестирование, а также уменьшает количество тестовых случаев. Этот метод увеличивает общий охват тестирования и гарантирует, что тестирование черного ящика выполняется легко и эффективно. Эквивалентное разбиение, таким образом, выполняется быстро, и если выполняется одно условие в разбиении, то все условия для этого условия будут выполнены. Точно так же, если одно условие не выполняется, то в совокупности оно будет не выполнено для всего раздела. Этот метод может использоваться на всех уровнях тестирования, и можно гарантировать, что большое количество тестовых случаев может быть охвачено путем разделения их на куски.
Рекомендуемые статьи
Это руководство по разделению эквивалентности. Здесь мы обсуждаем введение в разделение эквивалентности, как оно работает, с его примерами и важно. Вы также можете просмотреть другие наши статьи, чтобы узнать больше —
- Отрицательное Тестирование
- Генератор случайных чисел в Python
- Оператор разрыва в Java
- цикл выполнения в Java
- Генератор случайных чисел в Matlab
- Генератор случайных чисел в C #
- Оператор разрыва в JavaScript
- Генератор случайных чисел в JavaScript
Источник
MT1102: Линейная алгебра (введение в математику)
Классы эквивалентных элементов и их свойства
Пусть %%R%% — отношение эквивалентности на множестве %%M%% и %%a%% — некоторый элемент из %%M%%. Рассмотрим множество всех элементов из %%M%%, находящихся в отношении %%R%% к элементу %%a%%.
Классом эквивалентности %%M_a%%
называется множество всех элементов %%M%%, находящихся в отношении %%R%% к элементу %%a%%, то есть множество
Пример
Пусть %%M%% — множество всех жителей России и %%R%% — отношение эквивалентности «проживать в одном городе». Найти классы эквивалентных элементов %%M_a%% для %%a \in M%%.
Класс элементов, эквивалентных элементу %%a%%, имеет вид: $$ M_a = \
В зависимости от элемента %%a%% получаем несколько классов эквивалентности. Например, класс эквивалентности жителей Москвы или Санкт-Петербурга.
Свойства классов эквивалентности
Пусть %%R%% — отношение эквивалентности на множестве %%M%% и %%M_a, M_b, \dotsc, M_z, \dotsc%% — все классы эквивалентности для отношения %%R%%. Тогда эти классы имеют следующие свойства.
Свойство 1
Для любого элемента %%a \in M%% выполняется условие $$ a \in M_a $$
Действительно, по определению, класс %%M_a = \ a\>%%. Тогда для элемента %%a%% должно выполняться условие %%a \in M_a \leftrightarrow a a%%, которое выполняется в связи с тем, что отношение %%R%% рефлексивно по определению отношения эквивалентности. Следовательно, %%a \in M_a%%. Как следствие этого свойства можно сказать, что всякий класс %%M_a%% является непустым множеством. Пусть %%M_a%% и %%M_b%% классы эквивалентности для отношения %%R%%. Классы %%M_a%% и %%M_b%% равны тогда и только тогда, когда элемент %%a%% находится в отношении %%R%% к элементу %%b%%. $$ M_a = M_b \leftrightarrow a Пусть %%M_a%% и %%M_b%% классы эквивалентности для отношения %%R%%. Тогда классы %%M_a%% и %%M_b%% не имеют общих элементов. $$ M_a \neq M_b \rightarrow M_a \cap M_b = \varnothing $$ Объединение всех классов эквивалентности множества %%M%% равно множеству %%M%%. $$ \bigcup_ Совокупностью подмножеств %%M_i%%, где %%i \in I%% (множеству индексов), множества %%M%% называется разбиением множества %%M%% если выполняются следующие условия: Теорема. Пусть %%R%% — отношение эквивалентности на множестве %%M%%. Тогда совокупность классов эквивалентности множества %%M%% образует его разбиение. Действительно, если в качестве подмножеств %%M_i%% взять классы эквивалентности %%M_a%%, то все три условия выполняются: Все условия определения разбиения выполнены. Следовательно классы эквивалентности есть разбиение множества %%M%%. Пусть дано множество %%M = \<1, 2, 3, 4, 5, 6, 7, 8, 9, 0 \>%%, тогда разбиением этого множества могут быть следующие совокупности множеств: Но следующие совокупности не являются разбиением: Совокупность множеств %%C_i%% не является разбиением, т.к. оно не удовлетворяет условию 3 разбиения множеств: множества %%C_1%% и %%C_3%% имеют общий элемент %%3%%. Совокупность множеств %%D_i%% не является разбиением, т.к. оно не удовлетворяет условию 1 разбиения множеств: множество %%D_4%% пусто. Совокупность множеств %%E_i%% не является разбиением, т.к. оно не удовлетворяет условию 2 разбиения множеств: объединение множеств %%E_1, E_2%% и %%E_3%% не образует множество %%M%%. Источник Область определения — математический термин — совокупность всех возможных значений переменной. Тестирование областей определения рассматривает программу как функцию многих переменных, каждая из которых принимает конечное множество значений. Каждое такое множество можно разбить как минимум на два класса эквивалентности — валидные и невалидные значения. Тестирование областей определения предполагает три шага: Опытные (и не очень) тестировщики сейчас скептически заметят, что задачи выше решаются тремя техниками тест-дизайна — разбиением на классы эквивалентности, анализом граничных значений и попарным перебором. Это действительно так, потому дальше речь пойдет о некоторых особенностях применения этих техник, которые помогут обнаружить больше ошибок и/или сократить время тестирования, при этом максимально сохранив уровень тестового покрытия, а значит, и уверенность в качестве программы. Несколько простых правил. В примере выше используется очевидный способ дробления на подклассы, но он не единственный. Такое разбиение не всегда целесообразно в том смысле, что с его помощью не так уж часто находятся ошибки. Вот некоторые другие приемы: Различают линейные (упорядоченные) и нелинейные (неупорядоченные) классы эквивалентности. Очевидно, к последним невозможно применить анализ граничных значений, т.е. нет логического способа выделить элементы, с большей вероятностью приводящие к ошибке. Примером такого класса может быть множество специальных символов, которые можно ввести с клавиатуры. Для дробления такого класса может пригодиться второй прием. Входным параметром для его применения будет количество подклассов, которые планируется использовать в тестировании: из каждого будет взято по одному значению. Типичные ошибки этого этапа тестирования областей определения: слишком много или слишком мало классов, классы выделены неправильно (по отношению к функциональности программы). После того, как завершено разбиение на классы эквивалентности, необходимо выбрать значения из каждого класса, которые будут использоваться в тестах. Анализ граничных значений — только один из способов, причем подходящий только для линейных классов. Что же предпринять в других случаях? При анализе граничных значений и выделении классов эквивалентности для числовых параметров следует уделить особенное внимание результату вычислений. Такое разбиение и выбор значений для тестирования поможет найти важные ошибки. Какие ограничения накладываются на область значений, т.е. результат вычислений, и какие значения при этом должны принимать входные параметры? Какие нужно задать значения на вход, чтобы выйти за границы этой области? Например, если результат вычисления должен быть положительным, стоит выделить три класса эквивалентности и соответствующие им граничные значения: Может оказаться, что значения, оказавшиеся при таком разбиении в невалидных классах, разрешены для ввода согласно спецификации. Это может быть ошибкой составления требований, на которую стоит указать бизнес-аналитикам. Дефекты, зависящие от входных данных, можно поделить на те, которые возникают при конкретном значении одного параметра, и те, для возникновения которых нужно сочетание конкретных значений более чем одного параметра. Для обнаружения последних применяют комбинаторные техники тестирования, одной из которых является попарное тестирование (pairwise). Комбинаторные техники можно применить, когда выделены классы эквивалентности для каждого параметра, и выбраны значения, на которых будут проводиться тесты для каждого параметра по отдельности. Для составления комбинаций можно воспользоваться несколькими стратегиями: Это независимые взаимодополняющие характеристики, т.е., например, можно применить слабое нормальное комбинирование. Такая стратегия предполагает составление тестов, в которых хотя бы один раз встречаются все валидные значения каждого параметра, выбранного для тестирования. Пример: Слабое нормальное комбинирование выдаст такие тесты: Сильное нормальное комбинирование — все возможные комбинации валидных значений каждого из параметров: Аналогично можно составить наборы тестов, используя стратегии слабого надежного и сильного надежного комбинирования (попробуйте сделать это для примера выше). Очевидно, что при использовании сильного и/или надежного комбинирования количество тестов будет резко возрастать при увеличении количества значений какого-либо из параметров и, конечно, при увеличении количества самих параметров. Техника попарного перебора (pairwise) — один из способов уменьшить количество тестов, при этом попытавшись сохранить качество тестирования, т.е. свести к минимуму количество необнаруженных ошибок. Но применяя эту технику, важно понимать, что ошибки на стыке более чем двух значений параметров останутся ненайденными. Другой способ уменьшить количество тестов — узнать, есть ли зависимости между входными параметрами, и учесть это в тестах. Это возможно далеко не всегда: часто тестирование черного ящика не позволяет «заглянуть внутрь». В этом случае можно попытаться выявить зависимости эмпирически и учесть их в комбинаторных тестах. Однако, есть риск ошибиться при выделении таких закономерностей. Комбинаторные тесты можно и нужно составлять с помощью соответствующих инструментов, чтобы избежать человеческого фактора. Искренне надеюсь, что вышеизложенное поможет вам проектировать эффективные тесты. ИсточникСвойство 2
Свойство 3
Свойство 4
Разбиение множества
Примеры
Тестирование областей определения или нечто большее, чем анализ граничных значений
Все тестировщики как минимум наслышаны о таких техниках тест-дизайна, как классы эквивалентности и анализ граничных значений. Казалось бы, что может быть проще: выделить классы, взять по одному значению в каждом, проверить границы классов и значения слева и справа от границ. Но всегда ли дела обстоят настолько просто? Как быть, если после разбиения на классы оказывается, что с границами, в общем-то, проблема — их нельзя определить, поскольку данные невозможно упорядочить? Что если тестируемые параметры связаны между собой некоей логикой и зависят друг от друга? Сколько тестов достаточно? Ниже будут рассмотрены возможности двух основных техник тест-дизайна, превышающие те, что заложены в их непосредственном определении.
Классы эквивалентности
Выбор значений
Сочетания значений