Методы комбинаторного тестирования это скорее техники тест-дизайна, которые работают с комбинаторикой. И уж совсем никак ни комбинаторное тестирования как отдельный вид тестирования. На просторах встречается и такое. В современном мире программное обеспечение используется повсюду, и его качество становится критически важным. Один из способов обеспечить высокое качество ПО — это использовать методы комбинаторного тестирования.
Методы комбинаторного тестирования основаны на комбинаторике, которая позволяет эффективно генерировать тестовые данные, покрывающие максимальное количество возможных сценариев. Таким образом, комбинаторное тестирование ПО помогает улучшить покрытие кода и уменьшить количество ошибок.
Существует несколько методов комбинаторного тестирования, включая метод пар, метод n-wise и метод комбинирования параметров. Метод пар основан на том, что большинство ошибок возникают при взаимодействии двух параметров. Техника n-wise, как следует из названия, рассматривает n параметров, чтобы найти комбинации, которые могут привести к ошибкам. Метод комбинирования параметров использует комбинаторику, чтобы создавать тестовые сценарии на основе параметров и их значений.
Одним из основных преимуществ методов комбинаторного тестирования является экономия времени и ресурсов. Тестировщики могут использовать автоматизированные средства тест-дизайна: создания тестовых данных, что позволяет ускорить процесс тестирования и снизить затраты на тестирование. Однако, следует учитывать, что методы комбинаторного тестирования не являются универсальным решением для всех задач. В некоторых случаях может потребоваться более сложный подход, например, использование алгоритмов машинного обучения. В целом, методы комбинаторного тестирования являются важным инструментом для обеспечения высокого качества программного обеспечения. Они позволяют находить ошибки на ранних этапах разработки, ускорить процесс тестирования и снизить затраты на тестирование.
Что такое комбинаторика
Комбинаторика — это область математики, которая изучает комбинаторные структуры и методы для их анализа. Она занимается подсчетом, классификацией, перечислением и построением комбинаторных объектов, таких как перестановки, сочетания, разбиения, графы, деревья и многие другие. Комбинаторика имеет широкий спектр приложений в различных областях, включая информатику, теорию вероятностей, криптографию, физику, химию, экономику и т.д. В информатике комбинаторика играет важную роль в разработке алгоритмов, в теории сложности вычислений и в криптографии.
Методы комбинаторного тестирования
Метод парных комбинаций (Pairwise testing)
Данный метод позволяет сократить количество возможных комбинаций значений параметров тестируемого продукта. Он основан на том, что в большинстве случаев наличие дефекта зависит только от двух параметров. Поэтому для тестирования достаточно проверить все возможные комбинации пар параметров. Например, если в продукте есть 5 параметров, каждый из которых может принимать 10 значений, то без использования метода парных комбинаций количество комбинаций будет равно 10 в 5 степени (100000). А при использовании метода парных комбинаций количество комбинаций сократится до 1250. Для таких примеров существует масса он-лайн проектов.
Для примера рассмотрим ситуацию, когда мы тестируем функцию для конвертации даты и времени в строковый формат. Функция имеет следующие входные параметры:
- Формат даты (YYYY-MM-DD или DD-MM-YYYY)
- Формат времени (24-часовой или 12-часовой)
- Разделитель для даты (точка, дефис или слэш)
- Разделитель для времени (двоеточие или точка)
- Флаг AM/PM для 12-часового формата времени
Без использования комбинаторного тестирования нам бы потребовалось создать 2x2x3x2x2 = 48 тест-кейсов, чтобы протестировать все возможные комбинации параметров. Это может занять много времени и ресурсов.
Однако, с использованием техники pairwise, мы можем сократить количество тест-кейсов до 14. Например, можно выбрать следующие комбинации параметров:
Тест-кейс | Формат даты | Формат времени | Разделитель для даты | Разделитель для времени | Флаг AM/PM |
---|---|---|---|---|---|
1 | YYYY-MM-DD | 24-часовой | точка | двоеточие | AM |
2 | DD-MM-YYYY | 12-часовой | дефис | точка | PM |
3 | YYYY-MM-DD | 12-часовой | слэш | точка | PM |
4 | DD-MM-YYYY | 24-часовой | точка | точка | AM |
5 | YYYY-MM-DD | 12-часовой | дефис | двоеточие | AM |
6 | DD-MM-YYYY | 24-часовой | слэш | двоеточие | PM |
7 | DD-MM-YYYY | 12-часовой | точка | двоеточие | AM |
8 | YYYY-MM-DD | 24-часовой | дефис | точка | PM |
9 | DD-MM-YYYY | 24-часовой | слэш | точка | AM |
10 | DD-MM-YYYY | 12-часовой | точка | точка | PM |
11 | YYYY-MM-DD | 12-часовой | дефис | двоеточие | PM |
12 | DD-MM-YYYY | 24-часовой | точка | двоеточие | PM |
13 | YYYY-MM-DD | 24-часовой | слэш | точка | AM |
14 | DD-MM-YYYY | 12-часовой | дефис | двоеточие | PM |
Здесь мы используем пары параметров, которые могут взаимодействовать между собой, чтобы покрыть наибольшее количество возможных комбинаций, используя наименьшее количество тест-кейсов.
Метод полного перебора
Метод полный перебор (англ. exhaustive testing) ( или в научной среде многомерного комбинаторного тестирования (MCC)) — это метод комбинаторного тестирования, при котором все возможные комбинации параметров тестируются. Этот метод является наиболее надежным, но при этом может быть крайне трудоемким и затратным в плане времени и ресурсовДанный метод позволяет проверить все возможные комбинации значений параметров при тестировании продукта. Он используется для продуктов с большим количеством параметров, у которых взаимодействие между ними существенно влияет на работу продукта.
Для примера, рассмотрим задачу тестирования формы регистрации на сайте, которая имеет следующие поля: имя, фамилия, адрес электронной почты, пароль, подтверждение пароля, страна, город, пол, дата рождения.
Если мы будем использовать полный перебор для тестирования данной формы, нам потребуется создать тестовые данные для всех возможных комбинаций этих полей. Например, если в качестве значений для полей «имя», «фамилия», «адрес электронной почты» и «пароль» используются по 10 возможных значений, а для полей «подтверждение пароля», «страна», «город», «пол» и «дата рождения» — по 5 возможных значений, то нам потребуется создать 1010101055555=15 625 000 тестовых случаев.
Как видно, полный перебор может быть крайне затратным и может потребовать больших объемов ресурсов. Поэтому в некоторых случаях используются более эффективные методы комбинаторного тестирования, которые позволяют достичь высокого уровня покрытия тестами при более экономном использовании ресурсов.
Метод обязательных комбинаций
Метод обязательных комбинаций ( по научному называется Метод ортогонального тестирования (Orthogonal array testing)). Данный метод предлагает использовать специально разработанные таблицы для выбора оптимальных комбинаций значений параметров. Такие таблицы называются ортогональными массивами. Они позволяют покрыть все возможные комбинации значений параметров, при этом минимизируя количество тест-кейсов.
Техника в комбинаторике, когда каждое значение должно использоваться хотя бы раз, называется методом обязательных комбинаций или методом тестирования с обязательными параметрами (Mandatory Parameter Testing, MPT). Этот метод гарантирует, что все обязательные параметры будут протестированы в каждой комбинации.
Для примера, рассмотрим снова пример с карточками продукта, но добавим еще один параметр «Язык». Предположим, что английский язык является обязательным для всех продуктов, но также есть версии на других языках.
- Параметр 1: Тип продукта — A, B, C
- Параметр 2: Платформа — Windows, MacOS, Linux
- Параметр 3: Язык — Английский, Французский, Испанский
Используя метод MPT, мы можем создать следующие комбинации:
- A + Windows + Английский
- B + MacOS + Английский
- C + Linux + Английский
- A + MacOS + Французский
- B + Linux + Испанский
- C + Windows + Французский
Этот метод гарантирует, что в каждой комбинации будет использоваться английский язык, что может быть критически важно для определенных продуктов.
Метод размытого комбинаторного тестирования (Fuzzy Combinatorial Testing)
Метод размытого комбинаторного тестирования (Fuzzy Combinatorial Testing) — это метод, который позволяет рассматривать значения параметров тестовых данных как нечёткие множества, а не точные значения. Это позволяет получить более гибкое тестирование, при котором система проверяется на устойчивость к некоторым небольшим отклонениям значений параметров.
Для реализации метода размытого комбинаторного тестирования используются нечёткие алгоритмы, которые определяют, какие значения параметров следует использовать в тестах, чтобы они были максимально эффективными. Эти алгоритмы также могут определять, какие комбинации параметров нужно использовать, чтобы увеличить покрытие тестов.
Пример применения метода размытого комбинаторного тестирования: тестирование системы, которая занимается фильтрацией спама в электронной почте. В этом случае, одним из параметров является «частота вхождения слова в письмо». Вместо того чтобы использовать точные значения частоты вхождения слова, в методе размытого комбинаторного тестирования используются нечёткие значения, например, «низкая», «средняя» и «высокая». Таким образом, можно проверить, как система реагирует на разные уровни частоты вхождения слова в письмо.