четверг, 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. Да еще и проверяем не только валидные значения, но и невалидные! Но это только две техники из… продолжение следует…