Найти тему
Будни тестировщика

Заполняя тест-план.

Давайте начнем с первой секции — ввода. Я замечу, что здесь есть несколько возможных случаев:

1. Пользователь ввел один допустимый (valid) параметр.

2. Пользователь не ввел параметров.

3. Пользователь ввел один параметр, но он недопустимый.

4. Пользователь ввел два параметра (на один больше).

5. Пользователь вводит гораздо больше одного параметра.

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

У случаев 1, 3, 4 и 5 имеются варианты, которые могут быть протестированы. Существует множество значений для допустимых параметров в первом случае, которые вызовут различное поведение, как перечислено в требованиях. Существует практически бесконечное значение одиночных недопустимых параметров — от отрицательных значений до мнимых чисел и случайных строк любой длины. В четвертом случае может быть два допустимых параметра, два недопустимых, или же один допустимый и один недопустимый. Для пятого случая единственным ограничителем того, сколько параметров может ввести пользователь, является операционная система; он или она может ввести два, три, четыре и более. Во втором случае нет вариантов; не существует различных способов не ввести параметр.

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

ИДЕНТИФИКАТОР: VALID-PARAMETER-TEST

ТЕСТ-КЕЙС: Запустить программу с допустимым параметром

ПРЕДУСЛОВИЯ: Нет

ВХОДНЫЕ ЗНАЧЕНИЯ: 5

ШАГИ ВЫПОЛНЕНИЯ: В командной строке запустите "catweigher 5"

ВЫХОДНЫЕ ЗНАЧЕНИЯ: Нет в наличии

ПОСТУСЛОВИЯ: Программа завершает работу и отображает правильное выходное значение для пятикилограммового кота. Программа не выводит сообщение "Пожалуйста, введите правильное значение"

Для требования FUN-PARAMETER имеются четыре неуспешных случая, для которых я бы хотел добавить тесты. Они находятся вне счастливого пути, т. к. указывают, что пользователь работает с программой некорректно. Однако в этих случаях нам все еще необходимо гарантировать, что система следует требованиям. Давайте добавим дополнительные тест-кейсы для трех неуспешных способов:

ИДЕНТИФИКАТОР: INVALID-PARAMETER-TEST

ТЕСТ-КЕЙС: Запустить программу с недопустимым параметром

ПРЕДУСЛОВИЯ: Нет

ВХОДНЫЕ ЗНАЧЕНИЯ: "dog"

ШАГИ ВЫПОЛНЕНИЯ: В командной строке запустите "catweigher dog"

ВЫХОДНЫЕ ЗНАЧЕНИЯ: Нет в наличии

ПОСТУСЛОВИЯ: Программа выводит сообщение "Пожалуйста, введите правильное значение" и завершает работу, не выводя больше никакой информации

ИДЕНТИФИКАТОР: NO-PARAMETER-TEST

ТЕСТ-КЕЙС: Запустить программу без параметра

ПРЕДУСЛОВИЯ: Нет ВХОДНЫЕ ЗНАЧЕНИЯ: Нет

ШАГИ ВЫПОЛНЕНИЯ: В командной строке запустите "catweigher"

ВЫХОДНЫЕ ЗНАЧЕНИЯ: Нет в наличии

ПОСТУСЛОВИЯ: Программа выводит сообщение "Пожалуйста, введите правильное значение" и завершает работу, не выводя больше никакой информации

ИДЕНТИФИКАТОР: TWO-PARAMETER-TEST

ТЕСТ-КЕЙС: Запустить программу с двумя параметрами

ПРЕДУСЛОВИЯ: Нет

ВХОДНЫЕ ЗНАЧЕНИЯ: 1 2

ШАГИ ВЫПОЛНЕНИЯ: В командной строке запустите "catweigher 1 2"

ВЫХОДНЫЕ ЗНАЧЕНИЯ: Нет в наличии

ПОСТУСЛОВИЯ: Программа выводит сообщение "Пожалуйста, введите правильное значение" и завершает работу, не выводя больше никакой информации

ИДЕНТИФИКАТОР: TOO-MANY-PARAMETER-TEST

ТЕСТ-КЕЙС: Запустить программу c большим количеством параметров (в данном случае с четырьмя)

ПРЕДУСЛОВИЯ: Нет

ВХОДНЫЕ ЗНАЧЕНИЯ: 5 6 7 8

ШАГИ ВЫПОЛНЕНИЯ: В командной строке запустите "catweigher 5 6 7 8"

ВЫХОДНЫЕ ЗНАЧЕНИЯ: Нет в наличии

ПОСТУСЛОВИЯ: Программа выводит сообщение "Пожалуйста, введите правильное значение" и завершает работу, не выводя больше никакой информации

На данный момент имеется разумное тестовое покрытие для этого требования. Переходим к следующему — FUN-STARTUP-MESSAGE, которое оказывается очень простым для тестирования. Здесь две возможности: системе передали допустимые параметры и не передали допустимые параметры. В первом случае должно отображаться стартовое сообщение, а во втором не должно (как мы определили ранее, разбираясь с неоднозначностью в требовании к сообщению):

ИДЕНТИФИКАТОР: STARTUP-NO-MESSAGE-TEST

ТЕСТ-КЕЙС: Запустить программу без параметра, стартовое сообщение не должно отобразиться

ПРЕДУСЛОВИЯ: Нет

ВХОДНЫЕ ЗНАЧЕНИЯ: Нет

ШАГИ ВЫПОЛНЕНИЯ: В командной строке запустите "catweigher"

ВЫХОДНЫЕ ЗНАЧЕНИЯ: Нет в наличии ПОСТУСЛОВИЯ: Программа не выводит сообщение "Cat Weighing System" на экран перед завершением работы

ИДЕНТИФИКАТОР: STARTUP-MESSAGE-TEST

ТЕСТ-КЕЙС: Запустить программу c допустимым параметром, должно отобразиться стартовое сообщение

ПРЕДУСЛОВИЯ: Нет

ВХОДНЫЕ ЗНАЧЕНИЯ: 5

ШАГИ ВЫПОЛНЕНИЯ: В командной строке запустите "catweigher 5"

ВЫХОДНЫЕ ЗНАЧЕНИЯ: Нет в наличии

ПОСТУСЛОВИЯ: Программа выводит сообщение "Cat Weighing System" на экран перед отображением статуса веса кота

Теперь у нас покрыты две возможности. Обратите внимание, что постусловия фокусируются на специфических аспектах вывода, которые нужно протестировать вместо того, чтобы проверять весь вывод. Например, STARTUP-MESSAGE-TEST проверяет только то, что сообщение отображается, а не информацию о статусе веса пятикилограммового кота. Хотя добавление каких-то деталей кажется пустяком — и, возможно, даже поможет отловить дефект или парочку, — это заведет нас в ловушку в случае более сложных программ. Представьте, что мы в будущем решим изменить определение термина "избыточный вес". Если вы считаете, что это надуманный вопрос, то с людьми это уже однажды случалось — по крайней мере, в Соединенных Штатах. В 1998 году десятки миллионов людей вдруг оказались с "избыточным весом" в связи с тем, что Национальные институты здравоохранения (National Institutes of Health) изменили определение термина . А подобное может произойти и с нашими бедными котами! И если произойдет, нам придется пройтись по всем тестам и убедиться, что даже сторонние тесты случайно не пострадали от изменения определения статуса веса. Сохраняя фокусировку наших тестов на конкретном ожидаемом поведении, мы гарантируем, что наш набор тестов не становится хрупким.

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

Для того чтобы узнать больше, ознакомьтесь со статьей на сайте CNN по адресу http://www. cnn.com/HEALTH/9806/17/weight.guidelines/ или обратитесь к статье на сайте National Institutes of Health "Clinic Guidelines on the Identification, Evaluation, and Treatment of Overweight and Obesity in Adults" по адресу https://www.ncbi.nlm.nih.gov/books/NBK2003/.