четверг, 12 ноября 2009 г.

Для начинающих: Анализ граничных значений aka Boundary Analysis


Что же это такое, анализ граничных значений? Да-да, техника написания сценариев тестирования. Этот подход очень тесно связан с разбиением на классы эквивалентности, т.к. именно классы являются источником тех самых границ!
Почему может быть полезен данный подход? Как в коде задаются ограничения? Ага, обычно знаками больше, меньше, равно. И ошибку можно «накодить» (практически, можно нашкодить :)) запросто, поставить не то значение в выражении, не тот знак. Вернемся к нашим карандашам (см. Разбиение на классы эквивалентности), в зависимости от заказанного количества карандашей различается стоимость:
  • 1 – 100 – 10 руб. за карандаш;
  • 101 – 200 – 9 руб. за карандаш;
  • 201 - 300 – 8 руб. за карандаш и т.д. С каждой новой сотней, цена уменьшается на рубль.

Максимально можно заказать – 1000 штук. Анализ граничных значений очень интересуют границы интервалов значений, на то он и «анализ граничных». Используя метод эквивалентного разбиения, были выделены следующие классы:

  1. Невалидное значение: >1000 штук;
  2. Невалидное значение: <=0;
  3. Валидное значение: от 1 до 100;
  4. Валидное значение: от 101 до 200;
  5. Валидное значение: от 201 до 300;
  6. Валидное значение: от 301 до 400;
  7. Валидное значение: от 401 до 500;
  8. Валидное значение: от 501 до 600;
  9. Валидное значение: от 601 до 700;
  10. Валидное значение: от 701 до 800;
  11. Валидное значение: от 801 до 900;
  12. Валидное значение: от 901 до 1000.

Самое время взяться за граничные значения этих самых классов. Нужно брать не только само граничное значение, но и отступать на шаг вверх/вниз (на самый, самый малюсенький из возможных шажков). Для выше написанных классов получаем:

  1. 999; 1000; 1001;
  2. 1; 0; -1;
  3. 99; 100; 101;
  4. 199; 200; 201;
  5. 299; 300; 301;
  6. 399; 400; 401;
  7. 499; 500; 501;
  8. 599; 600; 601;
  9. 699; 700; 701;
  10. 799; 800; 801;
  11. 899; 900; 901;
  12. аналогично классу №1.

Итак, получаем по 3 значения для границ, а также берем по одному значению из «тел» классов эквивалентности, итого: 33 + 12 = берем для проверки 45 значений. М-м-м-м-м, это больше 12, но гораздо меньше 1000. Да еще и проверяем не только валидные значения, но и невалидные! Но это только две техники из… продолжение следует…

8 комментариев:

Unknown комментирует...
Этот комментарий был удален автором.
Unknown комментирует...

Правильно 36, а не 33? Там где 33 + 12.

Галина Романова комментирует...

Граничных значений 11: 0; 100; 200; 300; 400; 500; 600; 700; 800; 900 и 1000. 3*11 = 33.

bugsclock комментирует...

Скорее всего значения 99,199,299...999 здесь лишние.

miig комментирует...

А продолжение вашего описания тестирования интернет-магазина есть?
А то я что-то не смог найти.
PS. разбиения на классы и граничные значение очень помогли, разобрался, что к чему.

Галина Романова комментирует...

руки дошли до блога, оказалось я его совсем забросила :( бедненький покрылся слоем пушистой пыли

Родион комментирует...

Не могли бы вы мне помочь вот такое задание!Магазин предоставляет скидки. Если покупка была совершена на сумму более 2000 рублей, то покупатель получает единовременную скидку 5%, на сумму 10000 и более получает дисконт в размере 7%. При каждой новой покупке на сумму, которая составляет 15000 рублей, увеличивается скидка на дисконтной карте на 1%. И это все надо разбить на классы...помогите если не трудно

Галина Романова комментирует...

Уважаемый Родион, давайте попробуем по другому, вы описываете свой вариант решения и его мы обсуждаем.