ПРОГНОЗИРОВАНИЕ ОШИБОК.pptx
- Количество слайдов: 6
ПРОГНОЗИРОВАНИЕ ОШИБОК Тестирование функций эквивалентности
Методы прогнозирования частоты ошибок человека основываются на классическом анализе и включают следующие этапы: - составление перечня основных отказов системы; - составление перечня и анализ действий человека; - оценивание частоты ошибок человека; - определение влияния частоты ошибок человека на интенсивность отказов рассматриваемой системы; - выработка рекомендаций, внесение необходимых изменений в рассматриваемую систему и вычисление новых значений интенсивности отказов. Одним из основных методов анализа надежности работы человека является построение дерева вероятностей (дерево исходов). При использовании этого метода задается некоторая условная вероятность успешного или ошибочного выполнения человеком каждой важной операции либо вероятность появления соответствующего события. Исход каждого события изображается ветвями дерева вероятностей. Полная вероятность успешного выполнения определенной операции находится суммированием соответствующих вероятностей в конечной точке пути успешных исходов на диаграмме дерева вероятностей. Этот метод с некоторыми уточнениями может учитывать такие факторы, как стресс, вызываемый нехваткой времени; эмоциональная нагрузка; нагрузка, определяемая необходимостью ответных действий, результатами взаимодействий и отказами оборудования.
Следует заметить, что данный метод обеспечивает хорошую наглядность, а связанные с ним математические вычисления просты, что в свою очередь снижает вероятность появления вычислительных ошибок. Кроме того, он позволяет специалисту по инженерной психологии легко оценить условную вероятность, которую в противном случае можно получить только с помощью решения сложных вероятностных уравнений. Для оценки надежности работы операторов технических систем необходимо учитывать следующие факторы: - качество обучения и практической подготовки; - наличие письменных инструкций, их качество и возможность неправильного их толкования; - эргономические показатели рабочих мест; - степень независимости действий оператора; - наличие операторов-дублеров; - психологические нагрузки. Оценивание частоты ошибок человека следует проводить только после рассмотрения всех этих факторов, так как они влияют на качество работы оператора. Полученные оценки должны затем включаться в процедуру анализа дерева отказов.
Сегодня мы поговорим о двух фундаментальных техниках тестирования – анализе классов эквивалентности и граничных значений. О них пишут практически во всех книгах по тестированию. Почему они считаются одними из самых важных? Потому что они могут использоваться на разных уровнях – от отдельных функций до целого продукта. Потому что многие тестировщики пользуются ими интуитивно каждый день. Потому что неправильное использование этих техник может привести к пропуску серьезных ошибок. Поэтому для тестировщика важно знать эти техники и уметь их правильно применять. Эквивалентные тесты Давайте договоримся о том, какие тесты мы будем считать эквивалентными. Два теста считаются эквивалентными, если: Они тестируют одну и ту же вещь (функцию, модуль, часть системы). Если один из тестов ловит ошибку, то другой скорее всего тоже её поймает. Если один из них не ловит ошибку, то другой скорее всего тоже не поймает Если же мы говорим об эквивалентности входных параметров программы, то входные параметры, которые приводят к одинаковому поведению программы, мы будем считать эквивалентными.
Классы эквивалентности Рассмотрим пример Требование 4. 2. 1. 1: Для чисел, каждое из которых меньше либо равно MAXINT и больше либо равно MININT, функция суммирования должна возвращать правильную сумму с точки зрения математики. Функция, которую будем тестировать: /// <summary> /// Сложение /// </summary> /// <param name="a">слагаемое</param> /// <param name="b">слагаемое</param> /// <returns>сумма</returns> public static long Add(long a, long b) По сравнению с предыдущим требованием у этого явно есть недостатки. Здесь ничего не говорится об ограничениях на сумму. Можно легко подобрать два таких числа, которые будут удовлетворять заявленному требованию, а их сумма будет выходить за границы int. Скорее всего, это ошибка проектирования программы. Тогда необходимо исправить спецификацию и сообщить об этом остальным участникам разработки, прежде всего ее составителю. После исправлений функциональное требование 4. 2. 1. 1. будет выглядеть так: Требование 4. 2. 1. 1: Для чисел, меньших либо равных MAXINT и больших либо равных MININT, сумма которых меньше либо равна MAXINT и больше либо равна MININT, функция суммирования должна возвращать правильную сумму с точки зрения математики. Тестирование на допустимые данные ничем не будет отличаться от тестирования функции деления. Составим классы эквивалентности.
В простейшем случае любое из слагаемых делится на 3 класса эквивалентности: MININT, MAXINT и промежуточное значение. Если подходить более серьезно, то можно выделить 7 допустимых классов эквивалентности: MININT, MININT+1, отрицательное не граничное число, 0, положительное не граничное число, MAXINT 1, MAXINT. Учитывая то, что у нас два идентичных входных параметра, для полного рассмотрения всех классов эквивалентности необходимо составить и проверить 7*7=49 тестовых примеров, что все равно гораздо меньше, чем полный перебор. При этом, как показал тест с делением, ошибка может проявиться лишь в нескольких из этих примеров, которые не сильно отличаются от остальных граничных классов эквивалентности. Некоторые классы эквивалентности не удовлетворяют требованию 4. 2. 1. 1. так как выводят сумму за допустимые пределы. Поведение метода на таких входных данных описано в требовании 4. 2. 1. 2. Иногда удобнее составить классы эквивалентности по выходному параметру (в данном случае их будет 7) и уже по ним подбирать входные данные и составлять тестовые примеры. Основной способ поиска дефектов – передача системе данных, не предусмотренных требованиями: слишком длинных или слишком коротких строк, неверных символов, чисел за пределами вычислимого диапазона и т. п. Неверные данные, как и допустимые, также можно разделять на различные классы эквивалентности. В качестве простого примера снова рассмотрим функцию сложения.
ПРОГНОЗИРОВАНИЕ ОШИБОК.pptx