Анализ на гранични стойности и разделяне на еквивалентност

⚡ Умно обобщение

Разделянето на еквивалентност и анализът на граничните стойности са техники за тестване „черна кутия“, които компресират големи входни диапазони в класове на еквивалентност и тестват ръбовете на разделянето, осигурявайки силно откриване на дефекти с ефективно покритие както на валидни, така и на невалидни входни данни.

  • Входове за дялове: Групирайте стойностите във валидни и невалидни класове, за да премахнете излишествата.
  • Target Граници: Тествайте минимални, почти минимални, номинални, почти максимални и максимални стойности.
  • Комбинирайте и двете: Първо използвайте еквивалентно разделяне, след това анализ на граничните стойности за дефекти по ръбовете.
  • Максимално покритие: Една стойност на клас валидира поведението за всички еквивалентни входни данни.
  • Използвайте AI Generators: Инструментите с изкуствен интелект автоматизират откриването на дялове и създаването на гранични случаи.

Петточков модел за анализ на гранични стойности

Изчерпателното тестване рядко е осъществимо поради времеви и комбинаторни ограничения. Разделянето на еквивалентността и анализът на граничните стойности решават това чрез групиране.ping подобни входни данни и насочване към техните граници за по-силно покритие с по-малко случаи.

Какво е еквивалентно разделяне?

Разделяне на еквивалентност (наричано още Equivalence Class Partitioning или ECP) ​​е техника на черна кутия, която разделя входните данни на групи с еквивалентни стойности. Тестерът избира по един представител за всеки клас, приемайки, че софтуерът се държи еднакво за всеки член.

  • Разделя входния домейн на валидни и невалидни класове на еквивалентност.
  • Прилага се изобщо нива на тестване—единица, интеграция, система и приемане.

Какво е анализ на граничните стойности?

Анализ на гранични стойности (BVA), наричана още проверка на диапазона, валидира крайните граници на всеки клас на еквивалентност. Тъй като дефектите се групират в границите на диапазона, BVA се фокусира върху пет ключови точки:

  1. Минимум
  2. Малко над минимума
  3. Номинална стойност
  4. Малко под максимума
  5. Максимален

Петточков модел за анализ на гранични стойности

BVA допълва еквивалентното разделяне: след като класовете са дефинирани, техните гранични стойности се появяват неравномерно и се появяват грешки на ръба.

Защо да използваме еквивалентно разделяне и анализ на граничните стойности?

Интелигентният избор на тестове е от съществено значение, когато комбинациите са твърде големи за изчерпателно тестване. Тези техники предлагат три предимства:

  1. Компресирайте големи обеми от тестови случаи в управляеми парчета.
  2. Осигурете ясни правила за избор на тестови данни, без да жертвате ефективността.
  3. Подходящи за приложения с интензивни изчисления и много числови променливи.

Как да се извърши еквивалентно разделяне (пример)

  • Разгледайте текстовото поле „Поръчай пица“ по-долу.
  • Количества 1–10 са валидни; появява се съобщение за успех.
  • Количества 11–99 са невалидни, задействат „Могат да се поръчат само 10 пици“.
Поръчайте пица:

Тестови условия:

  1. Всяко число над 10 е невалидно.
  2. Всяко число под 1 е невалидно.
  3. Numbers 1–10 са валидни.
  4. Всяко трицифрено число като -100 е невалидно.

Тестването на всяка стойност води до над 100 случая. Разделянето на еквивалентност групира домейна в класове с идентично поведение.

Групи за разделяне на еквивалентност за вход за пица

Тези групи се наричат Класове на еквивалентностИзберете по една стойност за всеки клас – ако тя е успешна, всички останали са успешни; ако е неуспешна, целият клас е неуспешен.

Представителни стойности на класа на еквивалентност

Как се извършва анализ на гранични стойности (пример)

Използвайки същото поле Pizza, BVA проверява ръбовете на дяловете, а не номиналните стойности. Тестерите оценяват 0, 1, 10 и 11 – покривайки валидни и невалидни граници.

Анализ на граничните стойности на входа за пица

За вход, приемащ от 1 до 10, граничните тестови случаи са:

Сценарий на теста Descriptйон Очакван резултат
Гранична стойност = 0 Системата НЕ трябва да приема
Гранична стойност = 1 Системата трябва да приеме
Гранична стойност = 2 Системата трябва да приеме
Гранична стойност = 9 Системата трябва да приеме
Гранична стойност = 10 Системата трябва да приеме
Гранична стойност = 11 Системата НЕ трябва да приема

Разделяне на еквивалентност спрямо анализ на гранични стойности

И двете намаляват обема на тестовете, но се различават по фокус и време.

Аспект Разделяне на еквивалентност Анализ на гранични стойности
Фокус Групи от еквивалентни входове Ръбове на всяка група
Избор на данни Една стойност на клас Мин., почти мин., номинал., почти макс., макс.
Най - доброто за Намаляване на излишните случаи Откриване на дефекти, които се различават един по един
Поръчка Приложено първо Приложено следващо

Пример: Валидиране на поле за парола

Поле за парола, приемащо от 6 до 10 знака, образува три дяла – 0-5, 6-10 и 11-14 – с еквивалентни резултати във всеки от тях.

Въведете паролата:
# Сценарий на теста Очакван резултат
1 Въведете от 0 до 5 знака Системата не трябва да приема
2 Въведете от 6 до 10 знака Системата трябва да приеме
3 Въведете от 11 до 14 знака Системата не трябва да приема

Най-добри практики за еквивалентно разделяне и BVA

Следвайте тези практики, за да поддържате силно покритие, като същевременно контролирате броя на тестовете:

  • Картографирайте всеки домейн: Първо избройте валидните, невалидните и специалните дялове.
  • Тествайте и двете страни на всяка граница: Включете стойности само вътре и отвън, за да уловите грешки, които се различават с едно по едно.
  • Комбинирайте техники: Свържете с таблици за решения или тестване на преходи от състояния за сложна логика.
  • Автоматизиране на гранични случаи: Параметризирайте граничните стойности, така че регресионните пакети да работят последователно.

Ключови храни за вкъщи

  • Разделянето на еквивалентност групира подобни входни данни; една стойност на клас е достатъчна.
  • Анализът на граничните стойности валидира границите на разделянето и валидните/невалидните ръбове.
  • И двете са техники на „черна кутия“ за числови или базирани на диапазон полета.
  • Комбинирането им намалява обема на тестовете, без да се губи качеството на откриване на дефекти.

Анализ на гранични стойности и тестване за разделяне на еквивалентност Видео

Кликнете тук ако видеото не е достъпно

Въпроси и Отговори

Разделянето на еквивалентност избира по един представител за всеки клас; анализът на граничните стойности е насочен към екстремни стойности на всеки ръб. Разделянето намалява обема, а граничният анализ улавя гранични дефекти.

Еквивалентното разделяне е техника на „черна кутия“, защото се фокусира върху поведението на входа и изхода без достъп до изходния код. Тестерите извличат разделянията от спецификациите, така че се прилага на нива на модул, интеграция, система и приемане.

Да. И двете се отнасят за API тестване, където параметрите и полетата за полезен товар често имат числови диапазони или ограничения за дължина. Тестерите дефинират дялове за валидни, невалидни и периферни входове.

Избягвайте BVA, когато входните данни не са числови диапазони – като например неподредени множества, булеви флагове или категориални стойности. Таблиците с решения или тестването на преходи от състояния работят по-добре, защото границите там нямат смисъл.

Надеждният BVA разширява стандартния подход, като добавя стойности точно извън валидния диапазон – една под минимума и една над максимума – за да провери как системата отхвърля очевидно невалидни входни данни.

Да. Генераторите на изкуствен интелект анализират изискванията и схемите, за да предложат класове на еквивалентност и гранични стойности. Инструменти като Testim намлява Мабл бързо се учете от историята на дефектите и случаите на гранични повърхности.

Изкуственият интелект открива припокриванеping дялове, излишни случаи и пропуснати ръбове, които тестерите пренебрегват. Машинното обучение класира високорисковите граници от историята на дефектите, което позволява по-интелигентен избор на тестове и по-бързо откриване на фини проблеми.

Да. JUnit, TestNG, а pytest поддържа параметризирано тестване, позволявайки на тестерите да дефинират дялове и гранични стойности като входни набори от данни. Това позволява систематично изпълнение на случаи на еквивалентност и гранични случаи в CI конвейери.

Обобщете тази публикация с: