Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
трпп_2012.docx
Скачиваний:
63
Добавлен:
30.08.2019
Размер:
727.99 Кб
Скачать

13 Тестирование программных продуктов. Классы эквивалентности. Условия принадлежности тестов к классу эквивалентности. Поиск классов эквивалентности

Одними из ключевых понятий теории тестирования являются классы эквивалентности и граничные условия. Классический тест граничных условий позволяет с наибольшей вероятностью выявить имеющуюся в программе ошибку. Обдумывая наборы таких тестов, специалист разделяет все возможные тесты на группы, выделяя в каждой из них наиболее эффективные.

Разбиение по эквивалентности — самый популярный способ тестирования «черного ящика».

В этом способе входная область данных программы делится на классы эквивалентности. Для каждого класса эквивалентности разрабатывается один тестовый вариант.

Класс эквивалентности - набор данных с общими свойствами. Обрабатывая разные элементы класса, программа должна вести себя одинаково. Иначе говоря, при обработке любого набора из класса эквивалентности в программе задействуется один и тот же набор операторов (и связей между ними).

Если от выполнения двух тестов ожидается один и тот же результат, они считаются эквивалентными.

Группа тестов представляет собой класс эквивалентности, если выполняются следующие условия:

  • Все тесты предназначены для выявления одной и той же ошибки.

  • Если один из тестов выявит ошибку, остальные, скорее всего, тоже это сделают.

  • Если один из тестов не выявит ошибки, остальные, скорее всего, тоже этого не сделают.

Практические критерии, позволяющие отнести к одному классу конкретную группу тестов:

  • Тесты включают значения одних и тех же входных данных.

  • Для их проведения выполняются одни и те же операции программы.

  • В результате всех тестов формируются значения одних и тех же выходных данных.

  • Либо ни один из тестов не вызывает выполнения блока обработки ошибок программы, либо выполнение этого блока вызывается всеми тестами группы.

Поиск классов эквивалентности. Поиск классов эквивалентности - процесс субъективный. Два человека, анализирующих одну и ту же программу, составят различные перечни классов. Выявление как можно больше классов эквивалентности позволяет сэкономит время в дальнейшем и сделать тестирование более эффективным, избавляя от ненужного повторения эквивалентных тестов. Разбив все предполагаемые тесты на классы, можно затем выделить в каждом из них один или несколько тестов, которые покажутся наиболее эффективными - остальные выполнять ни к чему.

Обычно классов эквивалентности оказывается очень много, так что не обойтись без удобного и продуманного способа организации собранной информации. Обычно вся информация сводится в большую таблицу, или представляется в форме плана. Оба способа организации информации, и таблица и план, достаточно удобны. У каждого из них есть преимущества и недостатки.

Табличный формат информации более понятен, его легче читать, и одним взглядом можно охватить больше информации. В нем более очевидно разделение на допустимые и недопустимые варианты. Когда информация представлена в таком виде, ее легче анализировать, чтобы выяснить, все ли недопустимые варианты входных данных охвачены перечисленными классами эквивалентности. К сожалению, таблицы часто бывают очень громоздки. Например,

Входное или выходное событие

Допустимые классы эквивалентности

Недопустимые классы эквивалентности

Ввод числа

Числа от 1 до 99

0

> 99

Выражение, результатом которого является недопустимое число, например, 5-5, результат которого равен 0.

Отрицательные числа

Буквы и другие нечисловые символы

Ввод первой буквы имени

Первый символ является заглавной буквой

Первый символ является прописной буквой

Первый символ не является буквой

Рисование прямой

От одной точки до четырех сантиметров длиной

Отсутствие рисунка.

Длиннее четырех сантиметров.

Линия не является прямой

Формат плана классов эквивалентности:

  1. Ввод числа

    1. Допустимые варианты

      1. Числа от 1 до 99

    2. Недопустимые варианты

      1. 0

      2. > 99

      3. Выражение, результатом которого является недопустимое число, например, 5 - 5, результат которого равен 0.

      4. Отрицательные числа

      5. Буквы и другие нечисловые символы

        1. Буквы

        2. Арифметические операции, такие как +, * , -

        3. Остальные нецифровые символы

  2. Ввод первой буквы имени

    1. Допустимые варианты

      1. Первый символ является заглавной буквой

      2. Первый символ является прописной буквой

    2. Недопустимые варианты

      1. Первый символ не является буквой

        1. Первый символ имеет ASCII-код, меньший кода буквы “А”

        2. Первый символ имеет ASCII-код, лежащий между кодами букв “Я” и “а”

        3. Первый символ имеет ASCII-код, больший кода буквы “я”

  3. Рисование прямой

    1. Допустимые варианты

      1. От одной точки до четырех сантиметров длиной

    2. Недопустимые варианты

      1. Отсутствие рисунка

      2. Длиннее четырех сантиметров

      3. Линия не является прямой

Планы выглядят компактнее, и в них легче разбивать информацию на составляющие. Однако и повторения при использовании планов случаются чаще.

Как же поступать с пересекающимися классами? Примечание в схеме, указывающее на подобные накладки, поможет тестировщику избежать повторений при тестировании.

Границы классов эквивалентности

Для каждого класса эквивалентности достаточно провести один-два теста. И лучшими из них будут те, которые проверяют значения, лежащие на границах класса. Они могут быть наибольшими, наименьшими, быстрейшими, кратчайшими, самыми громкими, самыми красивыми - но в любом случае это должны быть предельные значения параметров класса. Неправильные операторы сравнения (например, > вместо >=) вызывают ошибки только на граничных значениях аргументов. В то же время программа, которая сбоит на промежуточных значениях диапазона, почти наверняка будет сбоить и на граничных.

Необходимо протестировать каждую границу класса эквивалентности, причем с обеих сторон. Программа, которая пройдет эти тесты, скорее всего, пройдет и все остальные, относящиеся к данному классу

Следует иметь в виду, что между граничными значениями входных и выходных данных нет непосредственного соответствия. Показательным примером могут служить простейшие тригонометрические функции. Многие тестировщики включают в наборы тестовых данных и средние значения диапазонов. Это хорошая практика, особенно когда достаточно времени.

Вопросы для самопроверки:

  1. Поясните суть способа разбиения по эквивалентности.

  2. Что такое класс эквивалентности?

  3. Какие правила формирования классов эквивалентности вы знаете?

  4. Как выбирается тестовый вариант при тестировании по способу разбиения по эквивалентности?