четверг, 13 декабря 2012 г.

Boundary Value Testing

Boundary Value Testing


Вступление

Boundary Value Testing (техника анализа граничных значений) наиболее известная и простая техника тест дизайна, призванная  помогать рядовому тестировщику выбирать наиболее эффективные значения для тестирования. Эта техника применима на всех уровнях тестирования - unit, integration, system, and system-integration test levels.

Подход

Шаги использования техники анализа граничных значений:

  1. Определите диапазон значений (как правило это класс эквивалентности).
  2. Определите границы диапазонов.
  3. На каждую границу создайте 3 тест кейса - один, проверяющий значение границы, второй на значение ниже границы и третий на значение выше границы.
"выше" и "ниже" границы значения относительные. Например, если мы говорим о границе 6$, то значение "ниже" будет 5$, а значение "выше" 7$. А если мы говорим о границе 6.00$, то значение "ниже" будет 5.99$, а значение "выше" 6.01$.

Примечание: значение "ниже" или "выше" границы может быть другим классом эквивалентности. В этом случае нет смысла создавать дубликаты тест кейсов.

Опять же, будем разбирать эту технику тест дизайна на примерах.


Пример

Анализ граничных значений фокусируется на границах диапазонов потому что как раз на границах обитает больше всего ошибок. Возьмем для примера программу для HR, которую мы разбирали в примерах применения классов эквивалентности. Напомним, что мы тестируем модуль для HR, который определяет брать на работу кандидата или нет, базируясь на возрасте кандидата. Требования такие:

  • 0–16 : Не нанимать
  • 16–18 : Можем нанять только на part time
  • 18–55 : Можем нанять на full time
  • 55–99 : Не нанимать
Представим, что наш девелопер написал такой код по этим требованиям:

      If (applicantAge >= 0 && applicantAge <=16)
                hireStatus="NO";
      If (applicantAge >= 16 && applicantAge <=18)
                hireStatus="PART";
      If (applicantAge >= 18 && applicantAge <=55)
                hireStatus="FULL";
      If (applicantAge >= 55 && applicantAge <=99)
                hireStatus="NO";
Хотя если попробовать предварительно оценить границы диапазонов требований, то сразу видна ошибка - диапазоны пересекаются, накладываются. На самом то деле имелось ввиду:

  • 0–15 : Не нанимать
  • 16–17 : Можем нанять только на part time
  • 18–54 : Можем нанять на full time
  • 55–99 : Не нанимать
Что по поводу значений -3 или 101? Мы можем только догадываться как они будут влиять на нашу программу, но угадывание требований плохая практика :) 

Код для наших требований в итоге должен быть таким:

      If (applicantAge >= 0 && applicantAge <=15)
                hireStatus="NO";
      If (applicantAge >= 16 && applicantAge <=17)
                hireStatus="PART";
      If (applicantAge >= 18 && applicantAge <=54)
                hireStatus="FULL";
      If (applicantAge >= 55 && applicantAge <=99)
                hireStatus="NO";

Следуюя технике граничных значений, значения, на которые мы должны составить тест кейсы, в этом случае будут {-1, 0, 1}, {15, 16, 17}, {17, 18, 19}, {54, 55, 56}, и {98, 99, 100}(не забудьте удалить дубликаты значений :)). Негативные тест кейсы со значения вроде {-42, 1001, FRED, %$#@} могут тоже быть составлены, в зависимости от реализации этого компонента и требований.

Заимствованно с http://w1zle.blogspot.ru

Комментариев нет:

Отправить комментарий