Основы разработки тестовых сценариев Составляющие теста
Скачать 0.91 Mb.
|
Основы разработки тестовых сценариевСоставляющие тестаЦель тестаМетод тестированияОкружение, данные, подготовка системыСценарий: Шаги, оформленные таблицей или списком
Ожидаемые результаты Опциональная дополнительная информация:Снимки экранаЛоги Файлы, сгенерированные в процессе теста Требования к хорошему тестовому сценариюСуществует обоснованная вероятность выявления тестом дефекта. Определены входные данные. Определен ожидаемый результат, считаемый «хорошим». Воспроизводимость. Независимость: может исполняться независимо. Оставляет систему в том же состоянии. Тест должен быть наилучшим в своей категории. Экономичный. Нет избыточных шагов. Слишком длинный сценарий. Неполное, неправильное или непоследовательное описание условий тестирования или подготовки тестового окружения. Пропущенные «очевидные» шаги. Использование устаревшей информации о тестируемой системе. Неочевидно, кто должен выполнить действие: пользователь или система. Неясно, что является успешным результатом. Отсутствие очистки системы. Слишком длинный сценарий. Неполное, неправильное или непоследовательное описание условий тестирования или подготовки тестового окружения. Пропущенные «очевидные» шаги. Использование устаревшей информации о тестируемой системе. Неочевидно, кто должен выполнить действие: пользователь или система. Неясно, что является успешным результатом. Отсутствие очистки системы. Методы выбора входных значенийБессистемный выбор входных значений не позволит найти большое количество дефектов. Необходимо использование методов для выбора набора входных значений.Основные методы выбора входных значений: Перебор всех возможных значений, Случайные входные данные, Предугадывание ошибки, Построение графов «причина-следствие», Использование классов эквивалентности, Исследование граничных значений. Метод перебораПеребираем все возможные значения входных параметров.Последовательный перебор всех возможных комбинаций входных значений.Попарный перебор. Перебираем комбинации пары 2х входных параметров. Работаем в предположении, что параметры попарно зависимы. На практике находит 80% функциональных дефектов низкого уровня.Случайные входные данныеГенерируются случайные входные данные. Либо данные случайным образом выбираются из большого тестового набора, который не успеваем проверить целиком.Часто используется в нагрузочном тестировании.Необходимо иметь метод определения корректности выхода.Пример: программа подсчета числа вхождений символа в строкуПредугадывание ошибкиСоставление тестовых сценариев на основании опыта предыдущего тестирования.Используйте знания об известных проблемных местах вашего продукта.Знайте распространенные ошибки программирования и пишите тесты для их поиска.Некорректная работа с памятью: переполнение, чтение за пределами, утечки памяти. Отсутствие обработки некорректных входных данных. Ошибки работы с типами данных: переполнение, приведение, приближение. Ошибки многопоточности: deadlock, data race. Отсутствие инициализации/сброса переменных. Недостаток привилегий, недоступность ресурсов. …. Графы причина-следствиеВыделяем причины и следствия в спецификациях. Строим граф, связывающий причины и следствия. Выписываем невозможные сочетания причин и следствий. Разрабатываем «таблицу решений», где в каждом столбце конкретная комбинация входов и выходов. Превращаем каждый столбец в тестовый сценарий. Преимущества и недостатки:
Позволяет систематизировать процесс построения сценариев. Используются эвристики для уменьшения числа комбинаций Пример графаКлассы эквивалентностиЕсли от двух тестов ожидается одинаковый результат, – они эквивалентны. Группа тестов представляет класс эквивалентности, если: Все тесты предназначены для выявления одной и той же ошибки. Если один тест выявит ошибку, то и остальные это сделают. Если один из тестов не выявит ошибку, то и остальные этого не сделают. Дополнительные практические критерии:Тесты включают значения одних и тех же входных данных.Для проведения теста выполняются одни и те же операции программы. В результате тестов формируются значения одних и тех же выходных данных. Ни один из тестов не вызывает выполнения конкретного блока обработки ошибок либо выполнение этого блока вызывается всеми тестами. Классы эквивалентности - примерыПрограмма классификации треугольников.
Равносторонние треугольники. Прямоугольные треугольники. Просто треугольники. Классы эквивалентности по некорректным входным данным:Отрезки не образуют треугольник.Числа больше sizeof(int). Строка, содержащая буквы. Классы эквивалентности - ПримерыПрограмма, говорящая дату следующего дня.
Последний день месяца; Последний день года; 28 февраля високосного года. Месяц > 12; День > 31; Неверная строка. Поиск классов эквивалентностиПостроение классов эквивалентности – субъективный процесс. Общие рекомендации:Не забывайте о классах некорректных данных. Формируйте классы в виде таблицы или плана. Определите диапазоны числовых значений входных данных. Проанализируйте варианты выбора из списков и меню. Поищите переменные, значения которых должны быть равными. Поищите классы значений, зависящих от времени. Выявите группы переменных, совместно участвующих в конкретных вычислениях. Посмотрите, на какие действия программа отвечает эквивалентными событиями. Продумайте варианты среды тестирования. Граничное тестированиеГраничное тестирование - применениеОпределяем границу класса эквивалентности. Проверяем значения, лежащие ровно на границе. Проверяем значения, лежащие максимально близко к границе с обоих сторон. Пример: При покупке более 100 единиц товара дается скидка 5%.Нужно проверить:
99 101 ОракулыОракул – эвристический принцип или механизм идентификации потенциальной проблемыОракулы – это эвристики. Они несовершненны и подвержены ошибкам Оракул лишь может указать нам на проблемное место, но не дать ответ, корректно ли поведение программы. Оракулы. Примеры-1
Оракулы. Примеры-2Оракулы. Примеры-3Оракулы. Примеры-4Оракулы. Примеры-5Оракулы. Примеры-6Оракулы. Примеры-7 |