
- •Введение
- •1. Основные понятия процесса тестирования
- •1.1 Особенности тестирования программных компонент.
- •1.2. Виды и методы тестирования.
- •1.3. Структурное тестирование. Критерии структурного подхода
- •1.3.1. Тестирование на основе потока управления
- •1.3.2. Тестирование на основе потока данных
- •1.3.3. Методы проектирования тестовых путей.
- •1.3.4. Оценка степени тестированности программного проекта.
- •1.3.5. Примеры построения тестов «белого ящика» .
- •1.4. Функциональное тестирование – принцип «чёрного ящика»
- •1.4.1. Метод эквивалентного разбиения
- •1.4.2. Анализ граничных значений.
- •1.4.3. Метод функциональных диаграмм причинно-следственных связей.
- •1.4.4. Тестирование потока транзакций.
- •1.4.5. Метод предположения об ошибке.
- •1.4.6. Общая стратегия функционального тестирования
- •1.4.7.Примеры функционального тестирования.
- •Метод эквивалентного разбиения
- •Метод граничных условий.
- •Метод функциональных диаграмм причинно-следственных связей.
- •2. Разработка эффективных наборов тестов «чёрного ящика»
- •2.1. Характеристики хорошего теста
- •2.2. Тестирование переходов между состояниями
- •2.3.Условия гонок и другие временные зависимости
- •2.4. Нагрузочные испытания
- •2.5. Тестирование функциональной эквивалентности
- •2.6. Применение технологии эквивалентности
- •3. Задание для самостоятельной работы
2.6. Применение технологии эквивалентности
Тестирование математических функций — не единственная область применения эталонных программ. Путем сравнения с готовым и проверенным продуктом можно тестировать самые разные аспекты поведения программы. Вот несколько примеров.
• Если разрабатывается программа проверки правописания и в ее основе лежит тот же алгоритм, который используется в одной из уже существующих программ, можно предложить им проверить один и тот же набор слов.
• Если разрабатывается программа автоматического переноса слов и особенно если отрабатывается модификация ее алгоритма для другого языка, возьмите для сверки проверенную программу, продаваемую на том же рынке. Подготовьте узкий столбик текста и предложите его обеим программам.
• Для программы, выполняющей выравнивание текста по ширине строки, необходимо проверить, насколько равномерно она разделяет слова пробелами. Для образца можно взять обычный текстовый процессор и обеим программам предложить один и тот же текст, набранный одинаковыми шрифтами.
• Для отладки посылаемых на принтер управляющих последовательностей можно перенаправить вывод в файл и то же самое сделать в эталонной программе, распечатав в ней точно такой же документ. Затем оба файла можно сравнить — они должны быть идентичны.
Во всех случаях, когда необходимо протестировать выходные данные, которые легко можно направить в файл, и используется еще одна программа, умеющая генерировать те же данные. Их результаты легко можно сравнить. Разумеется, в каждом конкретном случае могут быть собственные аргументы "за" и "против" этой технологии. Например, на ее реализацию может потребоваться слишком много времени, средств или усилий. Кроме того, эталонная программа тоже вполне может содержать ошибки. Не забывайте включать в отчеты об ошибках выходные данные, полученные от обеих программ. Они очень важны для поиска причины ошибки.
3. Задание для самостоятельной работы
Выберите для тестирования какую-нибудь программу. Вполне подойдет и коммерческий продукт, создатели которого утверждают, что он полностью протестирован. Весь продукт тестировать не нужно, достаточно выбрать пять полей ввода данных — они обычно имеются в любой программе. Наиболее очевидным выбором может быть небольшая база данных, но и текстовый процессор как минимум позволяет ввести размеры отступов, размеры страницы документа и другие параметры настройки программы Особенно хорошо, если можно вводить такую конфигурационную информацию, как объем памяти, выделяемой для определенной функции программы. Обычно подобные опции протестированы хуже всего, и некоторые их установки могут привести к сбою системы. Поэтому перед экспериментами с памятью, портами и конфигурированием жесткого диска не забудьте сделать его резервную копию.
Для каждого поля ввода данных выполните следующее:
Проанализируйте значения, которые в него можно вводить. Сгруппируйте их в классы.
Проанализируйте возможные граничные условия. Их можно описать, исходя из определений классов, но возможно, что в ходе этого анализа добавятся и новые классы значений.
Нарисуйте таблицу, в которой перечислите все классы значений для каждого поля ввода и все интересные тестовые примеры (граничные и другие особые значения).
Протестируйте программу, используя записанные значения (а если их слишком много, то некоторое их подмножество). Протестировать программу, означает не только запустить ее, ввести данные и посмотреть, не произойдет ли сбой, — важно, чтобы программа правильно использовала введенные данные. Получаются ли, например, при печати указанные пользователем отступы? Обязательно придумайте тестовую процедуру, в которой программа использует введенную вами информацию.
Список литературы
Майерс Г. Искусство тестирования программ. Пер. с англ. М., “Финансы и статистика ”, 1982 г.
Котляров В.П., Пинаев Д.В. Методы и средства автоматизации тестирования программного проекта. Учебное пособие. Санкт-Петербург, С-ПГТУ, 1998г.
Канер С. И др. Тестирование программного обеспечения. ”ДиаСофт”,2000г.