Анализ граничных значений (BVA) — это метод тестирования программного обеспечения, используемый для определения тестовых примеров на основе границ входных значений. Он направлен на выявление ошибок, которые происходят на границах или вблизи них, а не в пределах диапазона допустимых входных данных. BVA обычно используется как при ручном, так и при автоматизированном тестировании, чтобы расширить охват тестированием и повысить вероятность обнаружения дефектов.
Вот несколько методов, которые можно использовать для анализа граничных значений, а также примеры кода на Python:
-
Разделение по эквивалентности:
- Разделите входной домен на эквивалентные разделы.
- Выберите репрезентативные значения из каждого раздела.
- Проверьте граничные значения каждого раздела.
Пример:
def calculate_grade(score): if score >= 90: return "A" elif score >= 80: return "B" elif score >= 70: return "C" elif score >= 60: return "D" else: return "F" # Boundary values for the partition [0-100] print(calculate_grade(59)) # Expected output: "F" print(calculate_grade(60)) # Expected output: "D" print(calculate_grade(89)) # Expected output: "B" -
Анализ границ:
- Определите границы входного домена.
- Выберите тестовые примеры, находящиеся в пределах этих границ или сразу за ними.
Пример:
def is_triangle(side1, side2, side3): if side1 <= 0 or side2 <= 0 or side3 <= 0: return False elif side1 + side2 <= side3 or side1 + side3 <= side2 or side2 + side3 <= side1: return False else: return True # Boundary values for side lengths print(is_triangle(0, 2, 3)) # Expected output: False print(is_triangle(1, 2, 3)) # Expected output: True print(is_triangle(2, 2, 5)) # Expected output: False print(is_triangle(3, 4, 5)) # Expected output: True -
Индивидуальное тестирование:
- Проверьте значения, находящиеся чуть ниже и чуть выше границ.
Пример:
def is_leap_year(year): if year % 400 == 0: return True elif year % 100 == 0: return False elif year % 4 == 0: return True else: return False # Off-by-one values print(is_leap_year(1999)) # Expected output: False print(is_leap_year(2000)) # Expected output: True print(is_leap_year(2001)) # Expected output: False -
Тестирование надежности:
- Проверьте значения, выходящие далеко за границы.
Пример:
def calculate_discount(price): if price >= 100: discount = price * 0.2 elif price >= 50: discount = price * 0.1 else: discount = 0 return price - discount # Robustness testing values print(calculate_discount(-10)) # Expected output: -10 print(calculate_discount(150)) # Expected output: 120 print(calculate_discount(30)) # Expected output: 30