Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Выбор языка программирования



На выбор языка программирования влияют четыре основных фактора.

  • Сравнительная пригодность языка программирования для данной задачи. Обзор языков, ориентированных на различные предметные области, будет сделан в разд. 4.5.2.
  • Избранная методология. Часто говорят, что язык поддерживает ту или иную методологию. Обычно это означает, что применение этого языка совместно с указанной методологией в совокупности дадут значительно больший эффект. Обзор языков, поддерживающих методологии, сделан в гл. 2.
  • Степень важности для разработчика многочисленных характеристик и свойств, которые могут быть присущи или не присущи избираемому языку программирования. Подробно характеристики будут рассмотрены в разд. 4.1.1.3.
  • Степень знакомства программистов с языком программирования. Результаты исследований говорят о том, что производительность программиста, работавшего на некотором языке более трех лет, возрастает на треть по сравнению с программистом такого же уровня, но без опыта работы на данном языке [Boehm 1981]. Исследование специалистов компании IBM показало даже более существенные результаты. Программисты с длительным опытом программирования на некотором языке имеют производительность в три раза большую, чем программисты с минимальным опытом программирования [Walston, Felix 1977].

Тестирование и отладка

Гораздо легче найти ошибку, нежели истину.
Гете

Введение в тестирование и отладку

Тестирование - процесс выполнения программ с целью обнаружения факта наличия ошибок. Это классическое определение тестирования, принадлежащее Гленфорду Майерсу. Обратим внимание, в определении указан лишь один способ проведения тестирования. Существуют и методы ручного тестирования (например, инспекции и сквозные просмотры программ). Поэтому слова "...процесс выполнения программ..." разумно заменить на "...любая деятельность, выполняемая..."

Отладка - процесс локализации и устранения ошибок.

Процессы тестирования и отладки схематически могут быть представлены следующим образом на рис. 3.4 [Липаев 1986]. Тестирование начинается с разработки множества тестов и их исполнения на основе одной из выбранных методик. После сравнения результатов с эталонными начинается либо диагностика проблемы (в случае расхождения результатов), либо оценка достаточности полноты тестирования. Подготовка дополнительных тестов потребуется при недостаточной полноте тестирования, невозможности локализовать проблему с помощью имеющихся тестов и необходимости выполнить контроль сделанного исправления (http: //www.testingfaqs.org/).

Тестирование программных продуктов

Существуют две основные стратегии тестирования.

  • Тестирование программы как черного ящика, при котором программа рассматривается как объект, внутренняя структура которого неизвестна.
  • Тестирование программы как прозрачного (белого) ящика подразумевает знание исходного кода программы и полный доступ к нему.

Существуют также разновидности тестирования.

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

Типичные ошибки

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

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

Тестовые данные

Для тестирования программ методом черного ящика [Канер, Фолк, Нгуен 2000] готовятся определенные группы тестов.

  • Для тестирования классов эквивалентностей. Классы эквивалентностей позволяют вместо большого количества тестов использовать лишь их небольшое подмножество. Каждый тест представляет набор тестов, на которых программа ведет себя одинаково. Существует два основных типа классов эквивалентностей.
    • Класс корректных тестовых случаев, отражающих типичную " нормальную" ситуацию.
    • Класс тестов, содержащих ненормальную ситуацию, т. е. описывающих ситуацию, которой быть не должно.
  • Для тестирования граничных значений.
  • Для анализа причинно-следственных связей. Эти тесты применяются для программ, в которых взаимодействуют объекты.
  • Для тестирования тех утверждений, которые приводятся в документации.

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

  • использование справочников;
  • вычисление вручную;
  • использование результатов, полученных при помощи другой программы, которой мы доверяем.

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

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


Поделиться:



Последнее изменение этой страницы: 2019-10-04; Просмотров: 184; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.01 с.)
Главная | Случайная страница | Обратная связь