Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
124563.rtf
Скачиваний:
33
Добавлен:
26.08.2019
Размер:
1.32 Mб
Скачать
  1. Практическое применение

    1. C чего начать?

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

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

Первое, что следует отметить в приведенном определении, так это то, что каждый тест состоит из двух компонентов:

– совокупность выполняемых вами действий,

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

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

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

Тесты могут объединяться в группы по функциональным признакам. Группа родственных тестов называется тестовым набором.

Для удобства выполнения тесты можно разбивать на тестовые случаи. Тестовый случай представляет собой совокупность входных данных теста, условий выполнения и ожидаемых результатов, которые разработаны для конкретной цели. Тестовый случай представляет наименьшую единицу тестирования, которую можно самостоятельно выполнить от начала до конца. Если некоторый тест требует выполнения пространной методики тестирования с множеством ожидаемых результатов, имеет смысл разбить такой тест на тестовые случаи. Однако при этом следует иметь в виду, что тестовый случай есть наименьший модуль тестирования, и что с каждым тестовым случаем должен быть связан, по меньшей мере, один ожидаемый результат.[3] Отношения, связывающие тестовые наборы, тесты и тестовые случаи, показаны на рисунке

Рисунок 1. Архитектура тестов.

Хороший тест должен удовлетворять следующим критериям:

  1. Существует обоснованная вероятность выявления тестом ошибки.

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

  1. Набор тестов не должен быть избыточным.

Если два теста предназначены для выявления одной и той же ошибки, зачем выполнять их оба?

  1. Тест должен быть наилучшим в своей категории.

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

  1. Он не должен быть слишком простым или слишком сложным.

Объединив два теста в один, можно сэкономить время на их выполнении. Но не переусердствуйте – огромный и сложный тест трудно понять, трудно выполнить и долго создавать. Поэтому лучше всего придерживаться золотой середины, разрабатывая простые, но все же не совсем элементарные тестовые примеры. Кроме трудоемкости, у сложных тестов есть и более серьезный недостаток. Скомбинировав несколько неверных входных значений, нельзя сказать наверняка, как программа интерпретирует каждое из них. После первого же недопустимого значения поведение программы может выйти из-под контроля, например, она может просто отказаться принимать все остальные данные.[6]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]