Тестирование программ - процесс обнаружения ошибок в программном продукте. Предлагаю Вашему вниманию простую программу для составления тестов

Тестирование – процесс анализа программы или контролируемого выполнения программы на конечном множестве входных данных с целью обнаружения ошибок

Статическое – анализ текста программы

Динамическое – анализ контролируемого выполнения

Методы тестирования – совокупность правил, регламентирующих последовательность шагов по тестированию

Критерии тестирования – оценки, позволяющие судить о достаточности выполненного тестирования

Результативным считается тест, который приводит к обнаружению ошибки. Тестирование – деструктивный процесс.

Тест – набор входных данных, набор ожидаемых результатов, набор условий, разработанных для проверки определенного пути выполнения программы.

Особенности

1) Частое отсутствие полностью определенного эталона, которому должны соответствовать результаты

2) Высокая сложность программ исключает исчерпывающее тестирование (проверка всех возможных маршрутов выполнения)

3) Невысокая формализация критериев завершения тестирования

Основные принципы тестирования

1) Нельзя планировать тестирование в предположении, что ошибки отсутствуют

2) Следует избегать тестирования программы ее автором

3) Описание предполагаемых значений результатов должно быть неотъемлемой частью теста

4) Тесты для неправильных входных данных следует разрабатывать также тщательно, как и для правильных

5) Следует понимать, сто вероятность наличия необнаруженных ошибок пропорциональна числу уже обнаруженных

6) Не следует выбрасывать тесты, даже если программа уже не используется

Объекты тестирования. Категории тестов

1) Спецификации программных модулей, групп программ и программных комплексов

Полнота и согласованность функций программных компонент

Согласованность интерфейсов программных компонент (для групп программ и комплексов)

2) Программные модули

Структура

Преобразование данных, выполняемое модулем

Полнота функций, выполняемых модулем

3) Группы программ, объединенные для решения законченной функциональной задачи

То же, что и для модулей

Интерфейс между программами

4) Программный комплекс, используемый для решения нескольких функциональных задач

Полнота решения функциональных задач

Функционирование программ в критических ситуациях

Тестирование потребления ресурсов

Оценка надежности работы комплекса

Эффективность защиты от искажения общих данных

5) Программное средство, сдаваемое в опытную эксплуатацию

То же, что и для 4)

Удобство инсталляции рабочей версии программы

Проверка работы при изменении конфигурации оборудования

Проверка наличия и корректности документации

Испытание на соответствие техническому заданию

6) Программное средство на стадии сопровождения

Удобство модификации, типа расширения функциональности и повышения эффективности

1 – Спецификации

2 – Модули

3 – Группы программ

4 – Программные комплексы на стадии отладки

5 – Программные комплексы как продукты

Виды и методы тестирования

Особенности нисходящего тестирования:

Достоинства:

С самого начала выполняется проверка главных функций – концептуальная проверка

Недостатки:

Необходимость разработки заглушек, часто достаточно интеллектуальных

Параллельная разработка модулей различных уровней не всегда обеспечивает возможность нужной последовательности тестирования модулей разных уровней

Особенности восходящего тестирования

Достоинства:

Для тестирования используются готовые модули нижних уровней

Недостатки:

Необходимость разработки тест-драйверов для управления работой нижних уровней с верхних

Отложенная проверка основной концепции функционирования комплекса

1) Модульное тестирование. Включает проверку:

Корректности структуры модуля

Корректности основных конструктивных компонент

Полноты и качества реализации функций обработки данных

Структурная корректность проверяется структурными методами по принципу «белого ящика»

2) Интеграционное тестирование. Проверка:

Корректности объединения модулей в группу или комплекс программ

Проводится на основе 2-х подходов:

Монолитное тестирование, при котором модули сразу объединяются в единый комплекс и после этого вместе тестируются

Инкрементальное (пошаговое), модули подключаются друг к другу последовательно (снизу вверх или сверху вниз)

Использует структурную проверку подключаемых модулей и функциональную проверку полноты и качества реализации функций. Функциональные проверки осуществляются по принципу «черного ящика»

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

Тестирование функциональности

Стрессовое тестирование (тестирование на повышенных нагрузках по использованным ресурсам)

Тестирование безопасности (защита от несанкционированного доступа)

Тестирование восстановления при сбоях

В последнее время стало широко применяться альфа и бета тестирование – это виды тестирования, выполняемые с участием заказчика. Альфа тестирование выполняется на территории разработчика в условиях ограниченного времени (не более недели). Бета тестирование выполняется после введения программы в опытную эксплуатацию на территории заказчика, проводится достаточно долго (норма 1 год).

Статистика ошибок в программных продуктах по типам.

Методы тестирования

Все методы делятся на две неравнозначных группы:

Статическое (ручное)

Динамическое (машинное)

Основные методы ручного:

Инспекция кода

Сквозной просмотр

Методы динамического:

Структурные

Функциональные

Методы статического тестирования

Общая черта – они используют визуальный контроль программы по ее тексту группой из 3-4 человек, один из которых автор программы. Целью проверки является обнаружение ошибок, но не их устранение. Основная концепция – наличие ошибок не есть вина автора программы, а несовершенство средств разработки программы и сложность программы как некоторой системы. При нормальном проведении статические методы тестирования позволяют обнаруживать 30-70% первоначальных ошибок в программе. Они, в отличие от машинных, позволяют обнаруживать типовые группы ошибок автора.

Инспекция кода. В группу входит 4 человека: руководитель проведения инспекции, автор программы, проектировщик и тестировщик. За неделю до инспекции руководитель раздает всем участникам листинг программ, которые будут инспектироваться.

2) программа анализируется по типовому списку часто встречающихся ошибок:

Ошибки обращения к данным (неинициализирование данных, выход индексов за границы массивов, ссылки на пустую память)

Ошибки описания данных, соответствие заданных типов и значений

Ошибки вычислений

Ошибки передач управления (зацикливание, корректность завершения программы)

Ошибки интерфейса (ошибки, связанные с взаимодействием частей друг с другом)

Ошибки ввода/вывода

Результат инспекции кода:

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

Динамическое тестирование

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

При структурном тестировании проверяется

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

В последнее время проверяется прохождение потока данных по информационному графу программы, которое выявляет аномалии в обработке данных

Тестирование на основе потока управления

Вводят критерии отбора элементов для тестирования:

1) покрытие операторов (покрытие вершин УГП, покрытие строк кода). Необходимо проверить выполнение каждого оператора хотя бы один раз. Нужно реализовать путь a-c-e (например при тестовом наборе a=2, b=0, x=3, результат x=2.5). Не проверяется прохождение пути a-b-d. Не проверяются отдельные условия, например OR вместо &. Является самым слабым критерием и используется только при первоначальной проверке.

2) Покрытие ветвей (решений). Необходимо проверить каждую дугу выполнения программы. Этот критерий включает в себя предыдущий.

1) Покрытьдугиa-c-e, a-b-d

2) Покрытьдугиa-c-d, a-b-e. A=3, B=0, X=3иA=2, B=1, X=1

Не выполняет обнаружения всех ошибок, например, если вместо x>1 будет x<1. Критерий не является исчерпывающим

3) Критерий покрытия условий. Каждое условие, используемое в программе должно выполняться хотя бы один раз. Используются следующие условия: A>1, B=0, A=2, x>1. Нужно реализовать проверки: A>1, A<=1, B=0, B!=0, A=2, A!=2, x>1, x<=1. Для проверки этого достаточно следующей пары тестов: (A=1, B=0, X=3) идет по пути a-b-e и (A=2, B=1, x=1) идет по пути a-b-e. Оба теста проверяют один и тот же путь.

4) Комбинированный критерий «условий/решений», который должен проверять все условия в программе и хотя бы один раз пройти по каждой дуге.

Следующие тестовые наборы: (A=2, B=0, x=4) a-c-e, (A=1, B=1, x=1) a-b-d.

5) Комбинаторное покрытие условий. Должны быть покрыты следующие комбинации условий:

(2) A>1, B!=0

(3) A<=1, B=0

(4) A<=1, B!=0

(6) A=2, x<=1

(7) A!=2, x>1

(8) A!=2, x<=1

Тестовые наборы:

(A=2, B=0, x=4) (1,5)

(A=2, B=1, x=1) (2, 6)

(A=1, B=0, x=2) (3, 7)

(A=1, B=1, x=1) (4, 8)

6) Критерий покрытия вызовов. Обеспечивает проверку корректности вызова каждой процедуры или функции в программе.

7) Критерий покрытия путей. Применяется в ограниченном варианте, когда при использовании циклов рассматриваются только отдельные варианты проверки цикла: тело цикла не выполняется ни разу, тело цикла выполняется один раз, тело цикла выполняется k раз (k<=n – максимально возможное число повторений), тело цикла выполняется n раз, тело цикла выполняется n+1 раз. Является очень сложным и громоздким, применяется только при очень тщательном тестировании.

Структурное тестирование на основе потока данных

Работа любой программы представляется как обработка потока данных, передаваемых от ее входа на выход. Если имеется управляющий граф программы вида

Информационный граф программы представляется пунктирными линиями.

Для каждой вершины i УГП можно определить множество def(i) – данных, определенных в этой вершине и множество use(i) – данных, используемых в этой вершине.

Для тестирования надо выделить DU цепочки, которые имеют следующий вид DU=(Data, i, j), Data – данное, i – вершина, в которой создается данное, j – вершина, в которой используется данное.

Для нашего примера множество DU цепочек:

DU={(a, 1, 4), (b, 1, 3), (b, 1, 6), (c, 4, 6)}.

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

Для цепочки (a, 1, 4) путь 1-2-3-4. По информационному графу программы порождается путь в управляющем графе программы, который тестируется. Этот способ называется «стратегия требуемых пар»

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

Функциональное тестирование (ФТ)

Структурное тестирование не позволяет проверить все функции, возлагаемые на программу, потому что некоторые функции могут просто отсутствовать в предложенной реализации.

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

1) некорректные или отсутствующие функции

2) ошибки интерфейса

3) ошибки потребления ресурсов (превышение занимаемых памяти или времени выполнения)

4) ошибки инициализации или завершения программы

Для проведения ФТ необходимо иметь: наборы входных данных, приводящих к аномалиям выполнения программы, наборы выходных данных, позволяющих обнаруживать дефекты в работе программы.

Методы ФТ должны обеспечивать:

1) сокращение необходимого числа тестовых вариантов (проверки выполняются динамически)

2) выявлять классы ошибок, а не отдельные ошибки

Методы ФТ как правило применяются на более поздних стадиях тестирования, чем структурные.

Метод разбиения на классы эквивалентности.

Область входных данных разбивается на классы эквивалентности (КлЭ), представляющие собой набор данных с общими свойствами, обработка которых программой производится совершенно одинаково. При обработке используются одни и те же операторы и одни и те же связи. КлЭ делятся на правильные (допустимые) и неправильные. КлЭ определяются по спецификации на программу, например следующим образом: 20000<=x<=80000, правильный КлЭ - 20000<=x<=80000, 2 неправильных КлЭ – x<20000, x>80000. Разработка тестов состоит из 2 этапов:

1) разбиение на КлЭ

2) построение тестов

Выделение КлЭ по спецификации – процесс эвристический

1) если проверяемое входное данное представлено в виде диапазона значений, то строится один правильный класс (внутри диапазона) и два неправильных

2) если конкретное значение, то строится один правильный и два неправильных КлЭ

3) если входное условие описывает множество значений m={a,b,c}, то строится по одному правильному классу для каждого из значений и один неправильный класс для значений, не принадлежащих множеству (m!=a)&(m!=b)&(m!=c)

Построение тестов.

1) Каждому КлЭ присваивается уникальный номер

2) Строятся тесты для правильных КлЭ, чтобы каждый тест покрывал как можно больше этих классов

3) Строятся тесты для неправильных классов, которые должны быть индивидуальны, поскольку проверки с ошибочными входами могут скрывать друг друга.

Анализ граничных условий.

Метод является развитием предыдущего в том смысле, что под граничными условиями понимаются ситуации, возникающие на границах входных и выходных КлЭ.

Отличается от предыдущего

1) при выборе элементов КлЭ используются значения на и вблизи границ классов -1.0<=x<=1.0 x={-1.0, 1.0, -1.01, 1.01}

2) метод должен рассматривать не только входные, но КлЭ для выходных значений.

Общее правило использования метода:

1) построить тесты для значений, лежащих на границе области, и тесты с неправильными данными, немного выходящих за пределы границ

2) если обрабатывается определенное количество файлов в заданном диапазоне, то построить тесты для граничных значений файлов, на 1 больше и меньше верхней и нижней границы соответственно

3) применить подходы 1, 2 для каждого из выходных значений

4) если проверяется упорядоченное множество значений, то необходимо выполнить проверки первого и последнего элементов.

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

Метод функциональных диаграмм (метод диаграмм причинно-следственных связей ДПС)

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

Функциональная диаграмма – это формальный графо-аналитический язык, позволяющий описывать спецификации, написанные на естественном языке.

Методика построения функциональных диаграмм

1) спецификация разбивается на «рабочие участки», т.е. такие участки, для которых диаграмма не будет слишком громоздкой

2) спецификации выделяются причины и следствия. Причина – отдельное входное условие или КлЭ входных условий, следствие – выходное условие, результат выполнения программы. Каждой причине и следствию присваивается уникальный номер

3) анализируется семантика информации, заданной в спецификации, и строится булевский граф, связывающий причины и следствия, который является функциональной диаграммой. Каждый узел графа может принимать 2 значения: 1 – присутствует (выполняется)

Для представления диаграмм используются следующие базовые символы:

Задана спецификация. Файл обновляется, если символ, считываемый в позиции 1 равен а А или Б, а символ в позиции 2 стоит цифра. Если первый символ ошибочный, то сообщение Х1, если второй не цифра, то сообщение Х2.

1) символ в позиции 1 равен А

2) символ в позиции 1 равен Б

3) символ в позиции 2 цифра

Следствия

1) файл обновляется

2) выдается сообщение Х1

3) выдается сообщение Х2

В приведенной диаграмме есть проблема: никак не ограничено применение причин 1 и 2.

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

Е – не могут быть одновременно

I – не могут быть одновременно 0

R – требует (a=1, то и b=1)

M – запрещает (a=1, то b=0)

С учетом этого:

Генерация таблицы решений

Использование столбцов таблицы решений в качестве тестов

Генерация таблицы решений:

1) Формируются строки, соответствующие причинам и следствиям

2) Выбирается некоторое следствие, которое имеет значение 1

3) Находятся комбинации причин, которые обеспечивают такое значение следствия

Незаполненные элементы строк причин могут принимать любые значения

Используемые тесты будут иметь следующий вид

Метод, основанный на предположении об ошибке (метод отрицательного тестирования)

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

1) запуск на другой платформе

2) перестановка значений в файле

3) отсутствие данных в БД

4) неверные или отсутствующие значения параметров конфигурации

Общая стратегия разработки тестов

1) проверить логику программу с помощью методов структурного тестирования по критериям покрытия операторов, покрытия ветвей (условий), покрытие решений условий, комбинаторное покрытие условий

2) проверка функциональности программы с помощью методов ФТ. Если есть комбинации входных условий, то надо начинать с метода функциональных диаграмм, затем разбиение на КлЭ, анализ граничных условий, метод отрицательного тестирования.

Критерии завершения тестирования

Обычно применяется 3 группы

1) критерии, основанные на определенной методологии тестирования, определяющей процент покрытия тестами логики и функциональности программы.

2) критерии, основанные на экспертных оценках возможного числа ошибок, имеющихся в программе данного класса и целевого назначения.

3) критерий, основанный на временной диаграмме тестирования для каждой фазы разработки программы

Бесплатная программа . С ней Вы сможете организовать тест, анкетирование, опрос, проверку и контроль знаний . В содержании вопросов можно использовать картинки и форматирование текста (цвет букв и фона, шрифт, использование формул и таблиц). Варианты ответов в могут быть с одиночным и множественным выбором, "да/нет" (ложь или истина), ввод числа или слова, порядок следования, соответствие, выбор области ответа на изображении, перестановка букв. В программе реализованы обучающий (сообщения об ошибках), штрафной (отнимаются баллы, пропуск задания), свободный (любая последовательность вопросов) и монопольный (окно программы занимает весь экран и его не свернуть) режимы обучения. В программе реализовано приятное оформление и легкое управление всеми необходимыми функциями и настройками для проведения теста .

Тестирование, редактор и журнал тестирования

Утилита MyTestX включает в себя три модуля - тестирование, редактор и журнал тестирования. Модуль тестирования проводит тест из сохраненного файла, содержащего вопросы, ответы и настройки теста, подсчитывает и сверяет правильные и неправильные ответы. Используя модуль редактирования тестов даже начинающий пользователь без особого труда составит новый тест или опрос. Журнал тестирования хранит результаты проведенных тестов в форме подробного отчета.

Тестирование по сети

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

Защита тестов и их результатов

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

В архиве MyTestX:
  • программа MyTestX 10.2;
  • модуль тестирования для терминальных классов;
  • модуль для создания автономных тестов;
  • программа для импорта тестов из текстовых файлов в формат программы MyTestX 10.2;
  • программы для преобразования тестов для MyTestX из одного устаревшего формата в другой.

Официальный сайт: http://mytest.klyaksa.net
Операционные системы: Windows All
Поддерживаемые языки: Многоязычная платформа включая русский
Версия: 10.2.0.3
Лицензия: freeware (бесплатно )

Размер файла 16,9 Мб
Пароль на архив loadboard

омпьютер как средство для тестирования имеет свои достоинства и недостатки. Однако в объективности оценки ему отказать трудно. Видимо, именно этот фактор способствует расширению сферы применения компьютерного тестирования — оно успешно используется в школах, вузах, при поступлении на работу, при сдаче экзаменов в ГИБДД и т.д.

При этом набор методик тестирующих комплексов достаточно ограничен:

Обычно в тестах возможно использование пяти следующих типов вопросов:

  1. Выбор единственно правильного ответа.
  2. Выбор нескольких возможных правильных ответов.
  3. Установка последовательности правильных ответов.
  4. Установка соответствий ответов.
  5. Ввод ответа вручную с клавиатуры.

Учитывая небольшое количество методик тестирования, целесообразно разработать универсальную программу, которая позволила бы преподавателям различных дисциплин создавать свои базы данных и быстро получать контрольные задания для своего предмета. На рынке предлагается несколько подобных программ, и в настоящей статье мы сделаем их обзор. На CD-ROM вы найдете ознакомительные версии некоторых из рассмотренных программ.

Способ распространения: shareware

Цена:

В пакет SunRav TestOfficePro входят программы для создания тестов, проведения тестирования и обработки результатов тестирования. С его помощью можно организовать и провести тестирования и экзамены в образовательных учреждениях (вузы, колледжи, школы), а предприятия и организации могут осуществлять аттестацию и сертификацию своих сотрудников.

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

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

Вопросы и варианты ответа можно форматировать, используя для этого встроенный текстовый редактор, близкий по своим функциям к MS WORD. В редакторе можно вставлять изображения, формулы, схемы, таблицы, аудио- и видеофайлы, HTML-документы и любые OLE-документы.

В тестах возможно использование пяти вышеперечисленных типов вопросов.

Тест может быть разделен на несколько тем. При этом возможно оценивать знания тестируемого как по каждой теме в отдельности, так и по тесту в целом.

Вопросы в тесте можно перемешивать. Более того, создатель теста может определить, сколько вопросов из каждой темы получит пользователь для тестирования. Допустим, каждая тема состоит из 100 вопросов. Если выбрать случайным образом только 10 вопросов, то тестируемые получат совершенно разные наборы вопросов из одного и того же теста. Варианты ответов также можно перемешать.

Порядок следования вопросов может быть не только линейным, но и зависеть от ответов пользователя.

Каждый вопрос и вариант ответа может иметь свой «вес». Это позволяет начислять пользователю больше баллов за правильные ответы на сложные вопросы и меньше баллов за ответы на легкие вопросы.

Каждый вопрос может быть снабжен комментарием, содержащим информацию о правильном ответе и т.п.

Возможна следующая реакция на ответ пользователя:

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

Тестирование можно ограничить по времени — как для теста, так и для каждого вопроса. При этом количество времени, выделяемое для каждого вопроса, может быть разным.

В пакет SunRav TestOfficePro входят следующие программы:

  • tMaker — программа, позволяющая создавать и редактировать тесты. Возможно импортирование тестов, созданных в текстовом редакторе или в редакторе электронных таблиц;
  • tTester — программа для проведения тестирования;
  • tAdmin — программа для удаленного администрирования пользователей и обработки результатов тестирования. Позволяет просматривать/печатать результаты тестирования, а также создавать, печатать, редактировать, экспортировать отчеты по тестированию групп пользователей. Возможно создание матрицы ответов.

Технические данные SunRav TestOfficePro:

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

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

Способ распространения: shareware

Цена: 5900 руб. (для всех образовательных учреждений предоставляется 20% скидка, то есть цена для них — 4720 руб).

SunRav TestOfficePro.WEB — это приложение для тестирования по сетям Интернет и интранет. Вся информация (тесты, разделы тестов, результаты и т.д.) хранится в базе данных и защищена от несанкционированного доступа. Если у пользователя нет соответствующих прав, то он не сможет просматривать, редактировать и удалять свои или чужие результаты тестирования.

Пакет подходит для тестирования удаленных сотрудников, студентов, школьников и т.д. Пользователю для тестирования ничего на своем компьютере устанавливать не нужно — достаточно браузера (Microsoft Internet Explorer, Opera, Mozilla и т.п.).

Возможности тестов аналогичны возможностям тестов из программы SunRav TestOfficePro, которые можно использовать и в программе SunRav TestOfficePro.WEB.

Для организации тестирования требуются:

  • Web-сервер — в качестве такового можно использовать Apache или и MS IIS. По сведениям авторов программы, разработка велась с использованием бесплатного сервера Apache версии 1.3 и 2.0. Его можно свободно скачать с сайта http://www.apache.org ;
  • база данных MySQL — по сведениям авторов программы, разработка велась с применением версии 3.23. Ее можно свободно скачать с сайта http://www.mysql.com ;
  • PHP-интерпретатор — по сведениям авторов, разработка велась с использованием версии 4.3. Его можно свободно скачать с сайта http://www.php.net .

Если у пользователя нет собственного Web-сервера, можно использовать обычный хостинг, который предоставляет услуги по применению БД MySQL и PHP.

С помощью SunRav TestOfficePro.WEB можно:

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

Разработчик: Keepsoft

Способ распространения: shareware

Цена: Стандартная лицензия — 300 руб.; студенческая лицензия — 200 руб.; корпоративная лицензия на 10 компьютеров — 1000 руб.; корпоративная лицензия на 20 компьютеров — 1500 руб.; корпоративная лицензия на неограниченное число компьютеров — 3000 руб.

«Конструктор тестов» — это универсальная программа для проверки знаний. Приложение можно применять для проведения тестирования дома и в учебных заведениях. Программа позволяет использовать неограниченное количество тем, вопросов и ответов.

Возможности программы:

  • вопросы могут содержать музыку (файлы WAV, MID. RMI), изображения (файлы JPG, BMP, ICO, EMF, WMF), видеоролики (файлы AVI);
  • поддерживаются вопросы всех пяти вышеперечисленных типов;
  • печать на принтере и сохранение в файл тем, вопросов и ответов;
  • печать на принтере и сохранение в файл результатов тестирования;
  • экспорт тем, вопросов и ответов в файлы различных форматов (MS Excel, MS Word, MS Access, Paradox, DBase, текстовый файл, HTML, XML, RTF (RichText format), PDF (Adobe Acrobat), буфер обмена MS Windows, Lotus 1-2-3 и др.);
  • тестирование на одном компьютере нескольких пользователей. Для каждого пользователя заводится персональная карточка пользователя, поля в которой являются настраиваемыми;
  • установка различных прав доступа к редактированию базы данных в «Редакторе» для разных пользователей;
  • задание вопросов в произвольном порядке;
  • задание цены каждому вопросу в баллах;
  • ограничение времени на ответ;
  • возможность прервать тестирование и продолжить его в другое время;
  • выставление оценки по окончании тестирования. Система оценок настраивается в «Редакторе». Шкалу оценок можно настроить от 2- до 100-балльной системы;
  • синхронизация базы данных; при помощи этой функции можно легко обмениваться данными с другими пользователями и переносить данные с компьютера на компьютер;
  • проверка орфографии в «Редакторе»;
  • поиск по базе данных в «Редакторе»;
  • сжатие базы данных;
  • настраиваемый интерфейс;
  • функция проверки обновления через Интернет.

«Конструктор тестов» можно загрузить с сайта разработчика и ознакомиться с программой бесплатно в течение 30 дней. Для дальнейшей работы с программой необходима регистрация с оплатой. Зарегистрированным пользователям предоставляются персональный регистрационный ключ и бесплатная техническая поддержка по e-mail.

В зарегистрированной версии можно использовать готовые тесты, которые можно скачать с сайта разработчика по адресу: http://www.keepsoft.ru/simulator_download.htm . На момент написания статьи были доступны следующие готовые тесты: по правилам дорожного движения, единый государственный экзамен для выпускников средних школ, по английскому и французскому языку, по информатике, математике и др.

Разработчик: ООО «Техносервис плюс»

Способ распространения: заказ по e-mail

Цена: 5200 руб.

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

Программный комплекс содержит три модуля:

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

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

Программа позволяет:

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

В пакет программ «Конструктор тестов» входят:

  • модуль создания тестов и учебников;
  • модуль тестирования;
  • модуль обучения;
  • модуль для просмотра учебников.

Ограничений по количеству компьютеров, на которые устанавливается программа, нет.

Заказать программу можно по адресу: [email protected] .

Разработчик: Павел Козловский

Издательство: ИД «Равновесие»

Способ распространения: CD-ROM

Цена: 123 руб.

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

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

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

На CD-диске с программой выложены готовые проверочные тесты по наиболее актуальным темам: единому государственному экзамену, предметам школьной программы, правилам дорожного движения и др.

Любые данные можно распечатать на принтере и экспортировать в файлы различных форматов (Word, Excel, HTML, XML и др.).

Разработчик: Георгий Гуляев

Способ распространения: shareware

Программа AnyTest — средство для организации тестирования людей. Она позволяет поддерживать базу тем и заданий для тестов, создавать на ее основе любые тесты и проводить тестирование как одного человека на отдельном компьютере, так и группы людей (класса, курса, отдела фирмы или учреждения и т.д.) в локальной сети. С помощью этой программы легко организовать автоматизированный прием зачетов и экзаменов в учебных заведениях, тестирование работников при их приеме на работу на интеллект или знание конкретной специальности, аттестационное тестирование сотрудников предприятий, психологическое тестирование коллектива и т.п. Программа позволяет хранить результаты всех тестирований, группируя их по конкретным людям, по группам людей, по дате, конкретному тесту и в любой момент печатать отчеты, а также видеть все детали тестирования (какие задания выпали, какие ответы были даны, правильные ответы, баллы, полученные за каждый ответ). Широкие возможности администрирования, встроенные в программу, позволяют настроить ее так, что процесс тестирования будет проходить даже без участия преподавателя или организатора тестирования. Все попытки сдачи того или иного теста будут оценены и сохранены с указанием всех подробностей и могут быть проанализированы позднее в любой удобный момент.

Загрузить программу можно с нашего CD-ROM или в Сети, например, по адресу: http://soft-search.ru/programs/25-398-anytest-download.shtml .

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

Тестирование программного обеспечения является неотъемлемой частью цикла разработки программного обеспечения.

Что такое тестирование программного обеспечения?

Тестирование программного обеспечения - это не что иное, как испытание куска кода к контролируемым и неконтролируемым условиям эксплуатации, наблюдение за выходом, а затем изучение, соответствует ли он предварительно определенным условиям.

Различные наборы тест-кейсов и стратегий тестирования направлены на достижение одной общей цели - устранение багов и ошибок в коде, и обеспечения точной и оптимальной производительности программного обеспечения.

Методика тестирования

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

3) Системное тестирование

4) Приемочные испытания

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


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

Системное тестирование

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

Приемочные испытания

Это последний тест, который проводится перед передачей программного обеспечения клиенту. Он проводится, чтобы гарантировать, что программное обеспечение, которое было разработано отвечает всем требованиям заказчика. Существует два типа приемо-сдаточных испытаний - то, которое осуществляется членами команды разработчиков, известно, как внутреннее приемочное тестирования (Альфа-тестирование), а другое, которое проводится заказчиком, известно, как внешнее приемочное тестирования.

Если тестирование проводится с помощью предполагаемых клиентов, оно называется приемочными испытаниями клиента. В случае если тестирование проводится конечным пользователем программного обеспечения, оно известно, как приемочное тестирование (бета-тестирование).

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

Тестирование методом черного ящика

Тестирование методом черного ящика осуществляется без каких-либо знаний внутренней работы системы. Тестер будет стимулировать программное обеспечение для пользовательской среды, предоставляя различные входы и тестируя сгенерированные выходы. Этот тест также известен как Black-box, closed-box тестирование или функциональное тестирование.

Тестирование методом белого ящика

Тестирование методом "Белого ящика", в отличие от "черного ящика", учитывает внутреннее функционирование и логику работы кода. Для выполнения этого теста, тестер должен иметь знания кода, чтобы узнать точную часть кода, имеющую ошибки. Этот тест также известен как White-box, Open-Box или Glass box тестирование.

Тестирование методом серого ящика

Тестирование методом серого ящика или Gray box тестирование, это что-то среднее между White Box и Black Box тестированием, где тестер обладает лишь общими знаниями данного продукта, необходимыми для выполнения теста. Эта проверка осуществляется посредством документации и схемы информационных потоков. Тестирование проводится конечным пользователем, или пользователям, которые представляются как конечные.

Нефункциональные тесты

Безопасность приложения является одной из главных задач разработчика. Тестирование безопасности проверяет программное обеспечение на обеспечение конфиденциальности, целостности, аутентификации, доступности и безотказности. Индивидуальные испытания проводятся в целях предотвращения несанкционированного доступа в программный код.

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


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


Как подсказывает название, эта методика тестирования проверяет объем кода или ресурсов, которые используются программой при выполнении одной операции.

Это тестирование проверяет аспект удобства и практичности программного обеспечения для пользователей. Легкость, с которой пользователь может получить доступ к устройству формирует основную точку тестирования. Юзабилити-тестирование охватывает пять аспектов тестирования, - обучаемость, эффективность, удовлетворенность, запоминаемость, и ошибки.

Тесты в процессе разработки программного обеспечения

Каскадная модель использует подход "сверху-вниз", независимо от того, используется ли она для разработки программного обеспечения или для тестирования.

Основными шагами, участвующими в данной методике тестирования программного обеспечения, являются:

  • Анализ потребностей
  • Тест дизайна
  • Тест реализации
  • Тестирование, отладка и проверка кода или продукта
  • Внедрение и обслуживание

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

Agile Model

Эта методика основана на избирательном сочетании последовательного и итеративного подхода, в дополнение к довольно большому разнообразию новых методов развития. Быстрое и поступательное развитие является одним из ключевых принципов этой методологии. Акцент делается на получение быстрых, практичных, и видимых выходов. Непрерывное взаимодействие с клиентами и участие является неотъемлемой частью всего процесса разработки.

Rapid Application Development (RAD). Методология быстрой разработки приложений

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

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

Спиральная модель

Как видно из названия, спиральная модель основана на подходе, в котором есть целый ряд циклов (или спиралей) из всех последовательных шагов в каскадной модели. После того, как начальный цикл будет завершена, выполняется тщательный анализ и обзор достигнутого продукта или выхода. Если выход не соответствует указанным требованиям или ожидаемым стандартам, производится второй цикл, и так далее.

Rational Unified Process (RUP). Рациональный унифицированный процесс

Методика RUP также похожа на спиральную модель, в том смысле, что вся процедура тестирования разбивается на несколько циклов. Каждый цикл состоит из четырех этапов - создание, разработка, строительство, и переход. В конце каждого цикла продукт/выход пересматривается, и далее цикл (состоящий из тех же четырех фаз) следует при необходимости.

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

Значительная часть производственного процесса опирается на тестирование программ. Что это такое и как осуществляется подобная деятельность обсудим в данной статье.

Что называют тестированием?

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

Эффективность

То, насколько хорошо и быстро находятся ошибки, существенным образом влияет на стоимость и длительность разработки программного обеспечения необходимого качества. Так, несмотря на то, что тестеры получают заработную плату в несколько раз меньшую, чем программисты, стоимость их услуг обычно достигает 30 - 40 % от стоимости всего проекта. Это происходит из-за численности личного состава, поскольку искать ошибку - это необычный и довольно трудный процесс. Но даже если программное обеспечение прошло солидное количество тестов, то нет 100 % гарантии, что ошибок не будет. Просто неизвестно, когда они проявятся. Чтобы стимулировать тестеров выбирать типы проверки, которые с большей вероятностью найдут ошибку, применяются различные средства мотивации: как моральные, так и материальные.

Подход к работе

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

Что такое тест?

Это немаловажный аспект деятельности проверяющего, который необходим для успешного выявления недочетов программного кода. Они необходимы для того, чтобы контролировать правильность приложения. Что входит в тест? Он состоит их начальных данных и значений, которые должны получиться как результирующие (или промежуточные). Для того чтобы успешнее выявлять проблемы и несоответствия, тесты необходимо составлять после того, как был разработан алгоритм, но не началось программирование. Причем желательно использовать несколько подходов при расчете необходимых данных. В таком случае растёт вероятность обнаружения ошибки благодаря тому, что можно исследовать код с другой точки зрения. Комплексно тесты должны обеспечивать проверку внешних эффектов готового программного изделия, а также его алгоритмов работы. Особенный интерес предоставляют предельные и вырожденные случаи. Так, в практике деятельности с ошибками часто можно выявить, что цикл работает на один раз меньше или больше, чем было запланировано. Также важным является тестирование компьютера, благодаря которому можно проверить соответствие желаемому результату на различных машинах. Это необходимо для того, чтобы удостовериться, что программное обеспечение сможет работать на всех ЭВМ. Кроме того, тестирование компьютера, на котором будет выполняться разработка, является важным при создании мультиплатформенных разработок.

Искусство поиска ошибок

Программы часто нацелены на работу с огромным массивом данных. Неужели его необходимо создавать полностью? Нет. Широкое распространение приобрела практика «миниатюризации» программы. В данном случае происходит разумное сокращение объема данных по сравнению с тем, что должно использоваться. Давайте рассмотрим такой пример: есть программа, в которой создаётся матрица размером 50x50. Иными словами - необходимо вручную ввести 2500 тысячи значений. Это, конечно, возможно, но займёт очень много времени. Но чтобы проверить работоспособность, программный продукт получает матрицу, размерность которой составляет 5x5. Для этого нужно будет ввести уже 25 значений. Если в данном случае наблюдается нормальная, безошибочная работа, то это значит, что всё в порядке. Хотя и здесь существуют подводные камни, которые заключаются в том, что при миниатюризации происходит ситуация, в результате которой изменения становятся неявными и временно исчезают. Также очень редко, но всё же случается и такое, что появляются новые ошибки.

Преследуемые цели

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

Проверка в различных условиях

Как правило, тестирование программ происходит в объемах, которые необходимы для минимальной проверки функциональности в ограниченных пределах. Деятельность ведётся с изменением параметров, а также условий их работы. Процесс тестирования можно поделить на три этапа:

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

Тестирование ПО: виды

Создавать программное обеспечение без ошибок весьма трудно. Это требует значительного количества времени. Чтобы получить хороший продукт часто применяются два вида тестирования: «Альфа» и «Бета». Что они собой представляют? Когда говорят об альфа-тестировании, то под ним подразумевают проверку, которую проводит сам штат разработчиков в «лабораторных» условиях. Это последний этап проверки перед тем, как программа будет передана конечным пользователям. Поэтому разработчики стараются развернуться по максимуму. Для легкости работы данные могут протоколироваться, чтобы создавать хронологию проблем и их устранения. Под бета-тестированием понимают поставку программного обеспечения ограниченному кругу пользователей, чтобы они смогли поэксплуатировать программу и выявить пропущенные ошибки. Особенностью в данном случае является то, что часто ПО используется не по своему целевому назначению. Благодаря этому неисправности будут выявляться там, где ранее ничего не было замечено. Это вполне нормально и переживать по этому поводу не нужно.

Завершение тестирования

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

Автоматизированное тестирование

Ранее считалось, что динамический анализ разработанного ПО - это слишком тяжелый подход, который неэффективно использовать для обнаружения дефектов. Но из-за увеличения сложности и объема программ появился противоположный взгляд. Автоматическое тестирование применяется там, где самыми важными приоритетами является работоспособность и безопасность. И они должны быть при любых входных данных. В качестве примера программ, для которых целесообразным является такое тестирование, можно привести следующие: сетевые протоколы, веб-сервер, sandboxing. Мы далее рассмотрим несколько образцов, которые можно использовать для такой деятельности. Если интересуют бесплатные программы тестирования, то среди них качественные найти довольно сложно. Но существуют взломанные «пиратские» версии хорошо зарекомендовавших себя проектов, поэтому можно обратиться к их услугам.

Avalanche

Этот инструмент помогает обнаружить дефекты, проходя тестирование программ в режиме динамического анализа. Он собирает данные и анализирует трассу выполнения разработанного объекта. Тестеру же предоставляется набор входных данных, которые вызывают ошибку или обходят набор имеющихся ограничений. Благодаря наличию хорошего алгоритма проверки разрабатывается большое количество возможных ситуаций. Программа получает различные наборы входных данных, которые позволяют смоделировать значительное число ситуаций и создать такие условия, когда наиболее вероятным является возникновение сбоя. Важным преимуществом программы считается применение эвристической метрики. Если есть проблема, то ошибка приложения находится с высокой вероятностью. Но эта программа имеет ограничения вроде проверки только одного помеченного входного сокета или файла. При проведении такой операции, как тестирование программ, будет содержаться детальная информация о наличие проблем с нулевыми указателями, бесконечными циклами, некорректными адресами или неисправностями из-за использования библиотек. Конечно, это не полный список обнаруживаемых ошибок, а только их распространённые примеры. Исправлять недочеты, увы, придётся разработчикам - автоматические средства для этих целей не подходят.

KLEE

Это хорошая программа для тестирования памяти. Она может перехватывать примерно 50 системных вызовов и большое количество виртуальных процессов, таким образом, выполняется параллельно и отдельно. Но в целом программа не ищет отдельные подозрительные места, а обрабатывает максимально возможное количество кода и проводит анализ используемых путей передачи данных. Из-за этого время тестирования программы зависит от размера объекта. При проверке ставка сделана на символические процессы. Они являются одним из возможных путей выполнения задач в программе, которая проверяется. Благодаря параллельной работе можно анализировать большое количество вариантов работы исследуемого приложения. Для каждого пути после окончания его тестирования сохраняются наборы входных данных, с которых начиналась проверка. Следует отметить, что тестирование программ с помощью KLEE помогает выявлять большое количество отклонений, которых не должно быть. Она может найти проблемы даже в приложениях, которые разрабатываются десятилетиями.



Понравилась статья? Поделиться с друзьями: