tehnologia (1018792), страница 45
Текст из файла (страница 45)
Метод эквивалентного разбиения заключается вследующем. Область всех возможных наборов входных данных программы по каждомупараметру разбивают на конечное число групп - классов эквивалентности. Наборы данныхтакого класса объединяют по принципу обнаружения одних и тех же ошибок: если наборкакого-либо класса обнаруживает некоторую ошибку, то предполагается, что все другиетесты этого класса эквивалентности тоже обнаружат эту ошибку и наоборот.Разработку тестов методом эквивалентного разбиения осуществляют в два этапа: напервом выделяют классы эквивалентности, а на втором - формируют тесты.Выделение классов эквивалентности является эвристическим процессом, однакоцелесообразным считают выделять в отдельные классы эквивалентности наборы,содержащие допустимые и недопустимые значения некоторого параметра.
При этомсуществует ряд правил:• если некоторый параметр х может принимать значения в интервале [1, 999], товыделяют один правильный класс 1 < х < 999 и два неправильных: х < 1 и х >999;• если входное условие определяет диапазон значений порядкового типа,например, «в автомобиле могут ехать от одного до шести человек», тоопределяется один правильный класс эквивалентности и два неправильных: ниодного и более шести человек;• если входное условие описывает множество входных значений и естьоснования полагать, что каждое значение программист трактует особо,например, «типы графических файлов: bmp, jpeg, vsd», то определяютправильный класс эквивалентности для каждого значения и одиннеправильный класс, например, txt;• если входное условие описывает ситуацию «должно быть», например, «первымсимволом идентификатора должна быть буква», то определяется одинправильный класс эквивалентности (первый символ - буква) и одиннеправильный (первый символ - не буква);• если есть основание считать, что различные элементы класса эквивалентноститрактуются программой неодинаково, то данный класс разбивается на меньшиеклассы эквивалентности.Таким образом, классы эквивалентности выделяют, перебирая ограничения,установленные для каждого входного значения в техническом задании или при уточненииспецификации.
Каждое ограничение разбивают на две или более групп. При этомиспользуют специальные бланки - таблицы классов эквивалентности:Ограничение назначение параметраПравильные классыэквивалентностиНеправильные классыэквивалентности274Правильные классы включают правильные данные, неправильные классы неправильные данные. Для правильных и неправильных классов тесты проектируютотдельно.
При построении тестов правильных классов учитывают, что каждый тест долженпроверять по возможности максимальное количество различных входных условий. Такойподход позволяет минимизировать общее число необходимых тестов. Для каждогонеправильного класса эквивалентности формируют свой тест. Последнее обусловлено тем,что определенные проверки с ошибочными входами скрывают или заменяют другиепроверки с ошибочными входами.Анализ граничных значений. Граничные значения - это значения на границахклассов эквивалентности входных значений или около них. Анализ показывает, что в этихместах резко увеличивается возможность обнаружения ошибок.
Например, если в программеанализа вида треугольника было записано А + В ≥ С вместо А + В > С, то задание граничныхзначений приведет к ошибке: линия будет отнесена к одному из видов треугольника.Применение метода анализа граничных значений требует определенной степенитворчества и специализации в рассматриваемой проблеме. Тем не менее существуетнесколько общих правил для применения этого метода:• если входное условие описывает область значений, то следует построить тестыдля границ области и тесты с неправильными входными данными для ситуацийнезначительного выхода за границы области, например, если описана область[-1.0, +1.0], то должны быть сгенерированы тесты: -1.0, +1.0,-1.001 и +1.001;• если входное условие удовлетворяет дискретному ряду значений, то следуетпостроить тесты для минимального и максимального значений и тесты,содержащие значения большие и меньшие этих двух значений, например, есливходной файл может содержать от 1 до 255 записей, то следует проверить 0, 1,255 и 256 записей;• если существуют ограничения выходных значений, то целесообразноаналогично тестировать и их: конечно не всегда можно получить результат вневыходной области, но тем не менее стоит рассмотреть эту возможность;• если некоторое входное или выходное значение программы являетсяупорядоченным множеством, например, это последовательный файл,линейный список или таблица, то следует сосредоточить внимание на первом ипоследнем элементах этого множества.Помимо указанных граничных значений, целесообразно поискать другие.Анализ граничных значений, если он применен правильно, является одним изнаиболее полезных методов проектирования тестов.
Однако следует помнить, что граничныезначения могут быть едва уловимы и определение их связано с большими трудностями, чтоявляется недостатком этого метода.Оба описанных метода основаны на исследовании входных данных. Они непозволяют проверять результаты, получаемые при различных сочетаниях275данных. Для построения тестов, проверяющих сочетания данных, применяют методы,использующие булеву алгебру.Анализ причинно-следственных связей. Анализ причинно-следственных связейпозволяет системно выбирать высокорезультативные тесты.
Метод использует алгебрулогики и оперирует понятиями «причина» и «следствие». Причиной в данном случаеназывают отдельное входное условие или класс эквивалентности. Следствием - выходноеусловие или преобразование системы. Идея метода заключается в отнесении всех следствийк причинам, т. е. в уточнении причинно-следственных связей. Данный метод дает полезныйпобочный эффект, позволяя обнаруживать неполноту и неоднозначность исходныхспецификаций.Построение тестов осуществляют в несколько этапов. Сначала, поскольку таблицыпричинно-следственных связей при применении метода к большим спецификациямстановятся громоздкими, спецификации разбивают на «рабочие» участки, стараясь повозможности выделять в отдельные таблицы независимые группы причинно-следственныхсвязей. Затем в спецификации определяют множество причин и следствий.Далее на основе анализа семантического (смыслового) содержания спецификациистроят таблицу истинности, в которой каждой возможной комбинации причин ставится всоответствие следствие.
При этом целесообразно истину обозначать «1», ложь - «0», а дляобозначения безразличных состояний условий применять обозначение «X», котороепредполагает произвольное значение условия (0 или 1). Таблицу сопровождаютпримечаниями, задающими ограничения и описывающими комбинации причин и/илиследствий, которые являются невозможными из-за синтаксических или внешнихограничений. При необходимости аналогично строится таблица истинности для классаэквивалентности.И, наконец, каждую строку таблицы преобразуют в тест.
При этом рекомендуется повозможности совмещать тесты из независимых таблиц.Данный метод позволяет строить высокорезультативные тесты и обнаруживатьнеполноту и неоднозначность исходных спецификаций. Его недостатком являетсянеадекватное исследование граничных значений.Предположение об ошибке. Часто программист с большим опытом находит ошибки,«не применяя никаких методов». На самом деле он подсознательно использует метод«предположение об ошибке».Процедура метода предположения об ошибке в значительной степени основана наинтуиции.
Основная его идея заключается в том, чтобы перечислить в некотором спискевозможные ошибки или ситуации, в которых они могут появиться, а затем на основе этогосписка составить тесты. Другими словами, требуется перечислить те особые случаи, которыемогут быть не учтены при проектировании.Проиллюстрируем применение всех рассмотренных выше методов на примере.276Пример 9.1. Пусть необходимо выполнить тестирование программы, определяющейточку пересечения двух прямых на плоскости. При этом она должна определятьпараллельность прямой одной из осей координат.В основе программы лежит решение системы линейных уравнений:Ax + By = C,Dx + Ey = F.По методу эквивалентных разбиений формируем для каждого коэффициента одинправильный класс эквивалентности (коэффициент - вещественное число) и одиннеправильный (коэффициент - не вещественное число).
Откуда генерируем 7 тестов:1) все коэффициенты - вещественные числа (1 тест);2-7) поочередно каждый из коэффициентов - не вещественное число (6 тестов).По методу граничных значений можно считать, что для исходных данных граничныезначения отсутствуют, т. е. коэффициенты - «любые» вещественные числа. Для результатовполучаем, что возможны варианты: единственное решение, прямые сливаются - множестворешений, прямые параллельны - отсутствие решений.
Следовательно, целесообразнопредложить тесты с результатами внутри областей возможных значений результатов:8) результат - единственное решение (δ ≠ 0);9) результат - множество решений (δ = 0 и δx = δу = 0);10) результат - отсутствие решений (δ = 0, но δx ≠ 0 или δу ≠ 0);и с результатами на границе:11) δ = 0,01;12) δ = -0,01;13) δ = 0, δx = 0,01, δy = 0;14) δ = 0, δy = -0,01, δx = 0.По методу анализа причинно-следственных связей определяем множество условий:а) для определения типа прямой:a=0b=0c=0- для определения типа и существования первой прямой;277d=0e=0f=0- для определения типа и существования второй прямой;б) для определения точки пересечения:δ = 0,δx = 0,01,δy = 0.Выделяем три группы причинно-следственных связей (определение типа исуществования первой линии, определение типа и существования второй линии, определениеточки пересечения) и строим таблицы истинности для определения типа первой прямой(табл.
9.1) и для определения результата (табл. 9.2). В обеих таблицах X означаетнеопределенное значение. Для второй прямой таблица истинности будет выглядетьаналогично табл. 9.1.Каждая строка этих таблиц преобразуется в тест. При возможности (с учетомнезависимости групп) берутся данные, соответствующие строкам сразу двух или всех трехтаблиц.278В результате к уже имеющимся тестам добавляются:15-21) проверки всех случаев расположения обеих прямых - 6 тестов по первойпрямой совмещают с 6-ю тестами по второй прямой так, чтобы варианты не совпадали (6тестов);22) проверка несовпадения условия δx = 0 или δy = 0 (в зависимости от того, какойтест был выбран по методу граничных условий) - тест также можно совместить спредыдущими 6-ю тестами.По методу предположения об ошибке добавим тест:23) все коэффициенты - нули.Всего получили 23 теста по всем четырем методам. Для каждого теста передприменением необходимо указать ожидаемый результат.