Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx54 / Записка(2).docx
Скачиваний:
22
Добавлен:
01.08.2013
Размер:
215.61 Кб
Скачать

3.Реализация всплывающей подсказки

4.Тестирование С++( Расчетная работа)

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

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

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

тесты на целостность и системные тесты;

2) определение предмета тестирования, тестовых примеров, процедур

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

3) выполнение тестов и обработка результатов каждого теста.

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

4.1.Планирование тестирования

Результатом проектирования системы является реализация компонентов, выполняющих один вариант использования «Зарегистрировать отчет». Вследствие этого, в ходе процесса тестирования необходимо провести ряд тестов, направленных на соответствие разработанных модулей требованиям, приведенным в разделе 2.2 и на корректность их структуры, описанной в разделе 3.2. В первом случае, это так называемые тесты «черного ящика», проверяющие свойства модуля, видимые извне. Во втором случае, это тесты«белого ящика», проверяющие реализацию модуля.

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

Для проведения тестирования создается модель тестирования. Модель состоит из:

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

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

3) компонент, являющийся средством автоматизации процедуры тестирования или ее части;

4.2. Средства автоматизации процедуры тестирования.

Модульное тестирование, или юнит-тестирование (англ.unit testing) — процесс впрограммировании, позволяющий проверить на корректность отдельные модулиисходного кодапрограммы.

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

Преимущества

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

Этот тип тестирования обычно выполняется программистами.

Поощрение изменений

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

Упрощение интеграции

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

Документирование кода

Модульные тесты можно рассматривать как «живой документ» для тестируемого класса. Клиенты, которые не знают, как использовать данный класс, могут использовать юнит-тест в качестве примера.

Отделение интерфейса от реализации

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

Ограничения

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

Тестирование программного обеспечения — комбинаторная задача. Например, каждое возможное значение булевской переменной потребует двух тестов: один на вариант TRUE, другой — на вариант FALSE. В результате на каждую строку исходного кода потребуется 3-5 строк тестового кода.

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

Основные принципы модульного тестирования:

  • Тесты должны быть небольшими.

  • Тесты должны быть автоматическими.

  • Тесты не должны зависеть друг от друга и от порядка их следования.

  • Структура тестов должна повторять иерархию проекта.

  • Для каждого вашего класса заводите отдельный тестовый класс.

  • Отделяйте тесты от основного проекта.

Соседние файлы в папке docx54