Первый цикл тестирования
Шаг 1. Начало тестирования с простого и наиболее очевидного теста.
Для начала с программой нужно познакомиться и посмотреть, достаточно ли она стабильна, чтобы её можно было тестировать. В программах, предоставленных для первого формального тестирования, часто сразу же происходит сбой. В первом тексте складываются числа 2 и 3. Последовательность действий и результаты приведены в таблице 1.
Таблица 1 – Порядок действия и результаты сложения чисел 2 и 3
№ действия | Ввод | Вывод |
Вводите ADDER и нажимаете клавишу<Enter> | Экран мигает. Вверху экрана вы появляется знак вопроса. | |
Нажимаете 2 | За знаком вопроса появляется цифра 2. | |
Нажимаете <Enter> | В следующей строке появляется знак вопроса. | |
Нажимаете 3 | За вторым знаком вопроса появляется цифра 3. | |
Нажимаете <Enter> | В третьей строке появляется цифра 5. На несколько строк ниже появляется еще один знак вопроса. |
На рисунке 1 видно, как выглядит экран по окончанию теста. Курсор указывает, где будет отображаться следующее вводимое число.
? 2 ? 3 ? _ |
Рисунок 1 – Вид экрана по окончанию теста
Отчёт о проблемах, выявленных первым тестом:
“Программа работает – она приняла числа 2 и 3 и вернула 5.” Но проблемы, всё же, есть. Для их описания составляется отчёт, форма которого представлена в приложении A. Типы ошибок:
a) Ошибка проектирования. Нет никаких указаний на то, с какой программой работаете.
b) Ошибка проектирования. На экране нет никаких инструкций. Откуда знать, что нужно делать? Что, если вводите недопустимые числа? Отобразить инструкцию на экране не трудно, и она всегда будет перед глазами, в то время как печатная документация может потеряться.
c) Ошибка проектирования. Как остановить программу? Эта инструкция тоже должна быть на экране.
d) Ошибка кодирования. Сумма (число 5) выведена в стороне от слагаемых.
Примечание
Обязательно представляется отдельный “Отчёт о проблеме” (приложение A) по каждой ошибке. Описание всех четырех ошибок можно было бы поместить в один отчёт, но лучше этого не делать. Ошибки могут исправляться в разное время и сведения о тех из них, которые остались неисправленными, могут просто потеряться. Если программист захочет их сгруппировать, он сам рассортирует отчеты. Чтобы привлечь внимание к взаимосвязанным проблемам, просто поместите в отчеты соответствующие ссылки.
Шаг 2. Составление заметок о том, что ещё должно быть протестировано.
Выполнив первые, и самые очевидные тесты, следует подумать о том, что ещё следует протестировать. Свои соображения нужно записать: одни из записей примут форму заметок, другие же могут представлять собой достаточно строго формализованные описания серий тестов. Такие документированные группы тестов в дальнейшем могут послужить для проверки следующих версий программы. Примером может быть серия тестов, представленная в таблице 2, в которой для тестирования программы предлагается девять примеров. Тесты подобранны так, чтобы каждая цифра встречалась в них хотя бы один раз, чтобы было по одной комбинации чисел на каждую из вероятных проблем. А чтобы определить, на каких значениях вероятнее возникнут проблемы, эффективнее всего проверить граничные условия.
Таблица 2 – Серия тестов для программы сложения двух чисел
Входные данные | Ожидаемый результат | Замечания |
99 + 99 | Пара наибольших чисел, которые может складывать программа. | |
-99 + -99 | -198 | В документации не сказано, что нельзя складывать отрицательные числа. |
99 + -14 | Большое первое число может повлиятьнаинтерпретацию программой второго числа. | |
-38 + 99 | Сложение отрицательного числа с положительным числом. | |
5 + 99 | Проверка на то, влияет ли слишком большое второе число на интерпретацию первого. | |
9 + 9 | 9 является наибольшим числом из одной цифры. | |
0 + 0 | Программы часто дают сбои при вводе нулей. | |
0 + 23 | Программа может особым образом обрабатывать 0, поэтому его нужно проверить в виде первого слагаемого. | |
-78 + 0 | Программа может особым образом обрабатывать 0, поэтому его нужно проверить в виде второго слагаемого. |
Вычисление количества возможных тестов не всегда является простой задачей. В допустимом диапазоне от -99 до 99 всего 199 чисел. Любое из них может стоять на первом месте и любое на втором. Всего получается 1992 = 39601 пар чисел. Это без учёта более сложных действий пользователя. Если же допустить использование клавиши редактирования, количество возможных тестов вырастет многократно. Задача определения количества возможных тестов относится к области математики (комбинаторный анализ). Из огромного количества возможных тестов нужно выбрать только наиболее важные тесты. Как только удаётся выделить группу (класс) однотипных тестов, можно провести несколько из них и проигнорировать остальные. Для отбора проводимых тестов есть важное правило: для выполнения всегда выбирайте из группы те тесты, на которых вероятнее всего ожидается сбой программы. Лучше всего подходят для тестирования примеры, лежащие на границе представленного классом диапазона значений. Именно на граничных значениях программы сбоят чаще всего.
Классом можно назвать группу значений, которые программа обрабатывает одним и тем же способом. Ограниченными значениями класса являются те входные данные, на которых программа меняет своё поведение. Работа программиста – проверять те практические точки, которые можно определить по листингу. Задача тестировщика – проанализировать программу с другой точки зрения, чтобы выявить те критические точки, которые программист пропустил. Поэтому классы возможных тестов следует выделять, исходя, прежде всего, из внешнего поведения программы. В результате набор тестов будет отличаться от того, который можно составить по листингу программы (именно в этом суть задачи тестировщика).
Важным моментом здесь является то, что границу значений обязательно нужно протестировать с двух сторон.
Шаг 3. Проверка допустимых значений и наблюдение за реакцией программы.
В таблице 2 приведены только допустимые значения входных данных программы. На следующем этапе тестирования можно создать такую же серию тестов для недопустимых значений. Ещё одна серия тестов может быть предназначена для проверки редактирования чисел: вводите значение, затем изменяете его и только после этого нажимаете <Enter>.
Шаг 4. Немного тестирования в режиме «свободного полёта».
Всегда записывайте, что делаете, и что происходит во время исследовательских тестов.
От формальных тестов следует перейти к неформальным тестам. В таблице 3 видно, что при малейшей провокации программа работает неверно (она “зависает”). Это приводит к затрате большего времени на перезапуск компьютера, нежели чем на тестирование.
Таблица 3 – Неформальные тесты для программы сложения двух чисел
Тест | Особенности теста | Замечания |
100 + 100 | Граничное условие – числа больше максимального допустимого значения (99). | Программа приняла 10. Когда ввели второй 0, чтобы получилось 100, программа повела себя так, как будто вы нажали <Enter >. Так же было и со вторым числом 100. В результате по окончании теста на экране было следующее: ? 10 ? 10 |
<Enter> + <Enter> | Проверка реакции программы на отсутствие числовых данных. | Когда нажали <Enter>, программа напечатала 10 – последнее введенное вами число. То же было и после второго нажатия <Enter>, и в качестве суммы программа напечатала 20. |
123456 + 0 | Ввод более длинных чисел. | Программа приняла первые две цифры и проигнорировала остальные так же, как было с числом 100. В будущей версии программа будет принимать большие числа. |
1,2 + 5 | Числа с десятичной частью. | Реакция на десятичный разделитель такая же как и на <Enter>. |
A + b | Недопустимые символы. | Когда нажали <Enter> после <А> программа “зависла”. Для продолжения тестирования приходится перезапускать компьютер. |
<Ctrl + A>, <Ctrl + B>, <Ctrl + C>, <Ctrl + D>, <F1>, <Esc> | Управляющие символы и функциональные клавиши часто являются источниками проблем. | Для всех комбинаций клавиш, кроме <Ctrl + C>, программа отобразила графические символы, затем, после нажатия <Enter>, “зависла”. Нажатие <Ctrl + C> привело к завершению программы и выходу в операционную систему. |
Столкнувшись с очередной проблемой, составляете о ней отчет. О сданных отчётах лучше написать для себя итоговые заметки. На этом тестирование первой версии программы можно считать завершенным.
Шаг 5. Подведение итогов о программе и выясненных недостатках.
Эта работа не всегда необходима, но часто оказывается очень полезной. До этого времени все время были сконцентрированы на конкретных деталях – анализировали допустимые данные, продумывали граничные условия и составляли тестовые примеры. В будущем больше времени будет тратиться на выполнение уже подготовленных тестов, чем на придумывание новых. Сейчас же самое время мысленно отступить немного назад и окинуть взглядом программу в целом, увидеть ее недостатки и продумать стратегию будущего тестирования.